寻找最短的周期

时间:2012-10-30 14:52:42

标签: graph cycle dijkstra

基本上,我需要在图表中有一条覆盖所有顶点并返回源的最短路径。任何顶点的重复都是可以的,只要它是最短的路径。

我的算法从源头开始。我运行dijkstra算法来找到最短路径。然后我选择最小的加权未到达顶点并再次运行dijkstra作为选择的顶点作为源并继续执行直到所有顶点完成。然后从最后一个顶点再次使用dijkstra找到返回原始源的最短路径。

我试过,但似乎失败了,我找不到原因。

2 个答案:

答案 0 :(得分:1)

谷歌旅行销售员的问题,从源头开始找到最短的周期覆盖所有顶点。旅行销售员的代码也不难实现。

答案 1 :(得分:0)

一旦您基本上在图中寻找最短的闭路步行,就可以访问更多的顶点。你的方法的问题是dikstra只会找到从所选节点返回源的最短路径。这将生成星型解决方案,其中有多个路径从源顶点出来。哪个可以比走路更长。

这是一个NP问题,正如Vincent所说,但您可以尝试使用随机游走算法来实现它。或者看看旅行推销员行走问题(http://dspace.mit.edu/handle/1721.1/33668)