基本上,我需要在图表中有一条覆盖所有顶点并返回源的最短路径。任何顶点的重复都是可以的,只要它是最短的路径。
我的算法从源头开始。我运行dijkstra算法来找到最短路径。然后我选择最小的加权未到达顶点并再次运行dijkstra作为选择的顶点作为源并继续执行直到所有顶点完成。然后从最后一个顶点再次使用dijkstra找到返回原始源的最短路径。
我试过,但似乎失败了,我找不到原因。
答案 0 :(得分:1)
谷歌旅行销售员的问题,从源头开始找到最短的周期覆盖所有顶点。旅行销售员的代码也不难实现。
答案 1 :(得分:0)
一旦您基本上在图中寻找最短的闭路步行,就可以访问更多的顶点。你的方法的问题是dikstra只会找到从所选节点返回源的最短路径。这将生成星型解决方案,其中有多个路径从源顶点出来。哪个可以比走路更长。
这是一个NP问题,正如Vincent所说,但您可以尝试使用随机游走算法来实现它。或者看看旅行推销员行走问题(http://dspace.mit.edu/handle/1721.1/33668)