我正在寻找一种算法,该算法将连接大量地理坐标(100-1000),在它们之间创建尽可能短的路线,从任何地方开始并在其他任何地方结束。我正在使用Python。
我已经研究了可用的算法,但我的问题与“旅行推销员”相似,但是这需要我定义一个起点,并且最终会回到这一点。 我将把Uber带到任何起点,并从任何其他终点返回家中。我想要的是尽可能少地行走时覆盖所有点。我不在乎它的开始或结束。
Prim和Kruskal的算法似乎找到了很好的起点和终点,但是它们创建的是树,而不是像TSP那样的优化步行路线。
Prim的算法:
Kruskal算法:
基于Prim / Kruskal的预期结果,但使用TSP逻辑(手工绘制的示例,未优化):
答案 0 :(得分:2)
Prim和Kruskal是查找生成树的算法。您正在尝试解决TS的一个著名变体(旅行推销员问题),在这种变体中您不会回到起点。
根据您的定义,您住所的位置并不重要。您定义的问题是要访问旅行距离最短的每个位置,不返回起点。这在“文学”中有很好的介绍。
“快速打击”解决方案是采用任何标准的TS解决方案并删除最长的网段。尽管不能保证最佳解决方案,但这是一种很好的启发式方法。
答案 1 :(得分:2)