我无法真正理解如何使用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次交换来产生它们?
提前致谢。
答案 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的邻域是可以通过这种方式获得的所有新旅游的集合。