我一直试图弄清楚如何使用回溯来解决TSP问题。 你如何计算“成本”?
矩阵:
∞ 20 30 10 11
15 ∞ 16 4 2
3 5 ∞ 2 4
19 6 18 ∞ 3
16 4 7 16 ∞
费用:
3 -> 1 -> 2 -> 4 -> 5 -> 3 cost = 37
3 -> 1 -> 2 -> 5 -> 4 -> 3 cost = 59
3 -> 1 -> 5 -> 2 -> 4 -> 3 cost = 50
3 -> 1 -> 5 -> 4 -> 2 -> 3 cost = 62
3 -> 1 -> 4 -> 2 -> 5 -> 3 cost = 28
3 -> 1 -> 4 -> 5 -> 2 -> 3 cost = 36
我发现它是用Bellmans方程计算的,我只是不知道 这样做的方法。
任何帮助都将受到高度赞赏!
答案 0 :(得分:2)
为了计算成本,您只需要总结所有边际成本。例如,对于路线3 -> 1 -> 2 -> 4 -> 5 -> 3
,这会产生
(3,1) => 3
(1,2) => 20
(2,4) => 4
(4,5) => 3
(5,3) => 7
------------
sum 37
因此,基本上您必须生成第一个样本路径并计算其成本。一旦这样做,您就知道最终的成本可能是最佳解决方案。
如果你现在进行回溯并且你遇到了已经有更高成本的情况,你知道这不会带来更好的路线,因此,你可以停止探索路线并回溯一步。
示例:您在第一次运行中发现路由1 2 3 4 5 6 7 8 9 1
产生的费用为40
。现在,在一些回溯步骤中,您有一条路线的开头:1 2 4 5 6 ...
并且看到到目前为止,费用已经是41
。这意味着,如果您探索以这些数字开头的任何路线,您的路线成本将超过40
,因此不是最佳路线!现在,您只需丢弃以1 2 4 5 6
开头的所有路径。
(请注意,上述考虑因素仅在使用非负边际成本时才有效!)