这是一个常规查询。迪克斯特拉(Dijkstra)的算法能够找到每个节点之间的最短距离,而Tsp问题则是通过以最短路径至少每个节点旅行一次来在同一节点上开始和结束。 我无法使用dijkstra的算法方法解决此问题,因为我无法使用动态编程来实现复杂的方法?
答案 0 :(得分:0)
可以使用Dijkstra的算法,但效果不佳(很多)。
首先,您需要看到“需要使用”的图来找到解决方案不是输入图G=<V,E>
,而是从输入图派生的图。哪个可以
Gd=<Vd,Ed>
,其中Vd
是V
的有序子集,而Ed
是Vd
的一对,其中边'([[v1,..,vn] Ed
中存在(vn,vm)\in E
中的,[v1,..,vn,vm])。
现在,Gd
中的边成本与G
中的成本相对应。当节点包含G
强力深度/深度/迭代将起作用。迪克斯特拉怎么样。您需要
一致的启发式方法,其估计值始终小于或等于 从任何相邻顶点到目标的估计距离,再加上 到达那个邻居的步骤成本。
很显然,常数零就是这种启发式方法。您能否获得更好的启发式? 并非完全出于TSP的NP性质。有趣的是,在现实世界中,有时您会发现不一致的启发式方法,但仍会产生良好的结果。