Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 在图中找到到多个目的地的最短距离点_Algorithm_Search_Graph_Breadth First Search - Fatal编程技术网

Algorithm 在图中找到到多个目的地的最短距离点

Algorithm 在图中找到到多个目的地的最短距离点,algorithm,search,graph,breadth-first-search,Algorithm,Search,Graph,Breadth First Search,我一直在为面试练习算法问题。我遇到了这个问题,不知道我是否以最佳方式解决了它: 给定一个包含多个目的地的图。找到到达所有目的地的旅行距离之和最短的起点 我试图通过对每个点执行广度优先搜索并搜索目的地来解决这个问题。但这只是野蛮的强迫。是否有更好的解决方案,或者是否有其他相关材料?这被称为“旅行推销员”问题。在这里寻找答案: 我一直认为这些类型的问题最容易回答,找到所有点的中心点,然后形成一个奇怪的圆圈。你所要做的就是绕着圆圈走。然而,美国宇航局的一位数学家告诉我,这并不总是最好的选择。确实是一

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

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

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

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

我一直认为这些类型的问题最容易回答,找到所有点的中心点,然后形成一个奇怪的圆圈。你所要做的就是绕着圆圈走。然而,美国宇航局的一位数学家告诉我,这并不总是最好的选择。确实是一次非常有趣的讨论。:-)

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

我想说的是:

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


现在是关键时刻。达利和我说话的方式只不过是旅行推销员问题的可能结果。在Dali's,销售员只需回到原点(你想从哪里开始),然后销售员就前往下一个点。在我的公司里,销售员一次只去一个地方。这个问题的实际答案是什么?还不知道。或者换一种说法,最好的答案是未知的。通常情况下,除非所有点彼此距离相等,否则销售人员会来回交叉以获得最佳路径。

不,这不是TS问题。@Salvadodali-是的。TSP有多个目的地可到达。TSP的答案是找到通往所有目的地的最短最简单的最佳路径。海报的第二段也是这样说的。注意,他还尝试了我发布的SO网页上提到的暴力方法。所以是一样的。只是换一种说法而已。不,不是。在TSP中,您需要找到覆盖所有指定顶点(最小和)的路径。在这里,他需要从v到v1+v到v2+v再到vn求和。如果可以应用bfs n次来解决,它怎么可能是TSP呢?TSP是NP难的,n次bfs有多项式运行时间…@萨尔瓦多达利:你是说他总是从一个顶点开始,然后到每个顶点。我认为这意味着他想要从一个顶点到下一个顶点的最短路径。因此-v->v1->v2。。。。只有海报才能说明他想做什么。你可以基于所有对(),而不是多个单源最短路径,但对于实际算法,我怀疑这是否能为你获得一个常数因子。那么图中的所有边都具有相同的权重?所以你在寻找比O(N*(N+M))更好的东西?你们有几个目的地?