Dijkstra 算法能否适用于旅行商问题?

Can Dijkstra's algorithm be applicable to the Travelling Salesman Problem?

这是一般查询。 Dijkstra 算法能够找到每个节点之间的最短距离,而 TSP 问题表示通过使用最短路径至少遍历每个节点一次来在同一节点上开始和结束。 有什么方法可以使用 Dijkstra 的算法方法来解决它,因为我无法使用动态编程实现复杂的方法?

可以使用 Dijkstra 算法,但没有帮助(很多)。 首先你需要看到你 "need to use" 找到解决方案的图不是输入图 G=<V,E> 而是从输入图派生的图。哪个可以 Gd=<Vd,Ed> 其中 VdV 的有序子集,Ed 是来自 Vd 的一对子集,其中边 '([v1,..,vn] ,[v1,..,vn,vm]) 在 Ed 中存在,如果 (vn,vm)\in E。 现在 Gd 中边的成本对应于 G 中的成本。当一个节点包含来自 G

的所有节点时,它就是一个目标状态

蛮力 Depth/Bredth/Iterative 会奏效。迪杰斯特拉怎么样。你需要

a consistent heuristic which estimate is always less than or equal to the estimated distance from any neighboring vertex to the goal, plus the step cost of reaching that neighbor.

显然,常数零就是这样一种启发式算法。你能得到更好的启发式吗? 并不是因为 TSP 的 NP 性质。有趣的是,在现实世界的问题中,您有时会发现不一致的启发式方法,但仍然会产生良好的结果。