【问题标题】:Find the point of shortest distance to multiple destinations in the graph在图中找到到多个目的地的最短距离点
【发布时间】:2016-05-08 16:37:39
【问题描述】:

我一直在练习面试的算法问题。我遇到了这个问题,不知道我是否以最优化的方式解决了它:

给定一个包含多个目的地的图表。找出到所有目的地的旅行距离之和最短的起点。

我尝试通过对每个点执行广度优先搜索并搜索目的地来解决这个问题。但这只是暴力破解。有没有更好的解决方案,或者有没有其他相关材料?

【问题讨论】:

  • 您可以将其基于所有对 (en.wikipedia.org/wiki/…),而不是多个单源最短路径,但对于实际算法,我怀疑这是否能为您提供一个常数因子。跨度>
  • 所以图中的所有边都具有相同的权重?所以你正在寻找比 O(N*(N+M)) 更好的东西?你有几个目的地?

标签: algorithm search graph breadth-first-search


【解决方案1】:

这称为“旅行推销员”问题。在这里寻找答案:

TSP (Traveling Salesman Problem) solver Using GoogleMap

我一直认为这些类型的问题最容易通过找到所有点的中心点来回答,然后会形成一个看起来很奇怪的圆圈。那么你所要做的就是绕着圆圈走。然而,NASA 的一位数学家向我表明,这并不总是最好的选择。确实是一个非常有趣的讨论。 :-)

为了进一步阐明萨尔瓦多·达利所说的内容 - 以下是他所说的图表:

这就是我要说的:

记住 - 这只是随机点。两者都从原点 (0,0) 开始。

现在是关键。大理的方式和我所说的方式都只不过是旅行商问题的可能结果。在大理,推销员只是回到原点(你想从哪里开始),然后推销员前往下一个点。在我的,推销员一次只去一个点。这个特定问题的实际答案是什么 - 是未知的。或者换一种说法——最好的答案是未知的。不过,通常情况下,除非所有点彼此等距,否则推销员会前后交叉以达到最佳路径。

【讨论】:

  • 不,这不是TS问题。
  • @SalvadorDali - 是的。 TSP 有多个目的地要到达。 TSP 的答案是找到前往所有目的地的最短路径和最简单的路径。海报的第二段说了同样的话。请注意,他还尝试了我发布的 SO 网页上提到的蛮力方法。所以它是一样的。只是一种不同的表达方式。
  • 不,不是。在 TSP 中,您需要找到一条覆盖所有指定顶点(总和最小)的路径。在这里他需要从 v 到 v1 加上 v 到 v2 加上 v 到 vn。
  • 如果应用 bfs n 次就可以解决,怎么可能是 TSP? TSP 是 NP-hard 且 n 次 bfs 具有多项式运行时间...
  • @SalvadorDali:你是说他总是从一个顶点开始,然后到每个顶点。我认为这意味着他想要从一个顶点开始然后到下一个顶点的最短路径。因此 - v->v1->v2.... 只有发帖者才能说出他想要做什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-01
  • 2021-09-09
  • 1970-01-01
  • 2010-10-25
  • 1970-01-01
相关资源
最近更新 更多