旅行推销员,最小变化排列

时间:2015-01-09 06:42:09

标签: algorithm permutation traveling-salesman

我正在阅读Introduction to design and analysis of algorithms中的排列生成以及与旅行商问题的关系。

这里作者提到如下

  

我们可以在左边的先前生成的排列中插入n   向右或从右到左。事实证明,开始是​​有益的   将n插入12。 。 。 (n - 1)从右到左移动   然后每次{1,...的新排列时切换方向。 。 。 ,n -   1}需要处理。这种生成顺序的优点   排列源于它满足最小变化的事实   要求:每个排列都可以从它的直接获得   前身只交换了两个元素。

     

如果通过最小变化算法生成这样的排列,我们   可以从其长度计算新游览的长度   前身是恒定的而不是线性的。

我对上面的文字的问题:如果我们使用最小变化算法,我们如何在恒定时间内计算长度形式的前身?如果可能,请举例n=3

1 个答案:

答案 0 :(得分:1)

假设您将元素b与元素e交换,奇怪的选择字母,因为我们假设b是路径的中间元素a-> b-> c并且e是路径的中间元素d-> e - >˚F

4条边消失,它们被4条新边取代。消失的是那些将b和e连接到他们的旧邻居的人。新的是a-> e,e-> c,d-> b和b-> f。

所以新的总长度是

old - d(a, b) - d(b, c) - d(d, e) - d(e, f) + d(a, e) + d(e, c) + d(d, b) + d(b, f)