[英]Can Dijkstra's algorithm be applicable to the Travelling Salesman Problem?
这是一般查询。 Dijkstra 的算法能够找到每个节点之间的最短距离,而 TSP 问题说通过以最短路径至少遍历每个节点一次来在同一节点上开始和结束。 有什么办法可以使用 Dijkstra 的算法方法解决它,因为我无法使用动态编程来实现复杂的方法?
可以使用 Dijkstra 的算法,但它没有帮助(很多)。 首先,您需要看到您“需要使用”来找到解决方案的图形不是输入图形G=<V,E>
而是从输入图形派生的图形。 可以是Gd=<Vd,Ed>
其中Vd
是V
的有序子集, Ed
是来自Vd
一对,其中边为 '([v1,..,vn],[v1,..,vn,vm] ) 在Ed
存在如果(vn,vm)\\in E
。 现在Gd
边的成本对应于G
的成本。 当一个节点包含来自G
所有节点时,它就是一个目标状态
蛮力深度/Bredth/迭代会起作用。 迪杰斯特拉怎么样。 你需要有
一致的启发式,其估计值始终小于或等于从任何相邻顶点到目标的估计距离,加上到达该邻居的步骤成本。
显然,常量零就是这样一种启发式方法。 你能得到更好的启发式方法吗? 并不是真的由于 TSP 的 NP 性质。 有趣的是,在现实世界中的问题中,您有时会发现不一致的启发式方法,但仍然可以产生良好的结果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.