2-opt算法,给定游览的邻域

时间:2017-06-11 18:06:10

标签: algorithm optimization traveling-salesman

我无法真正理解如何使用2-opt算法找到给定游览的邻居:

假设我们有T = 0-1-2-4-3-0

定义说:T的邻域被定义为所有的集合 通过改变T(2-interchange)中的两个不相邻边缘可以到达的旅行。

所以我们有这些不相邻的边缘:

(0,1)和(2,4)

(0,1)和(4,3)

(1,2)和(4,3)

(1,2)和(3,0)

(2,4)和(3,0)

我们必须找到5个邻居,我们如何通过进行这些2次交换来产生它们?

提前致谢。

1 个答案:

答案 0 :(得分:0)

您有正确的想法找到非相邻边对。然后,对于每一对,通过附加新边缘,只有一种可行的方式来形成新的游览。例如,如果我们删除(0,1)和(2,4),那么有三对边可以替换它们:

(0,1)和(2,4):但这与原始游览相同

(0,4)和(1,2):但是这会创建两个子面而不是一个游览

(0,2)和(1,4):这是胜利者

通常,如果我们删除边(i,j)和(k,l),那么我们用(i,k)和(j,l)替换它们 - 假设这降低了成本。请注意,这会改变游览一半的方向。

所以根据你的定义,T的邻域是可以通过这种方式获得的所有新旅游的集合。