使用回溯解决TSP问题

时间:2011-06-05 00:18:39

标签: algorithm

我一直试图弄清楚如何使用回溯来解决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方程计算的,我只是不知道 这样做的方法。

任何帮助都将受到高度赞赏!

1 个答案:

答案 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开头的所有路径

(请注意,上述考虑因素仅在使用非负边际成本时才有效!)