旅行商问题11种算法的简述与动画演示

介绍

本文内容出处:https://stemlounge.com/animated-algorithms-for-the-traveling-salesman-problem/
由于动画比较有趣,比较感兴趣,就“摘”了过来。

对于视觉学习者来说,这里有一些著名的启发式方法和算法的动画集合。

在这里插入图片描述

TSP算法与启发式

虽然我们还没有能够快速找到像旅行商问题这样的NP问题的最优解,但可以很快找到NP问题的“足够好”的解决方案。

对于视觉学习者来说,这里有一些著名的启发式方法和算法的动画集合。研究人员经常将这些方法用作他们自己的算法和启发式方法的子程序。这不是一份详尽的清单。

为了便于直观比较,我们在欧几里德空间中使用Dantzig49作为常见的TSP问题。Dantzig49有49个城市——美国各州各一个城市,加上华盛顿特区。

算法

1、贪心算法

贪心算法是试图在每次迭代中添加尽可能低的成本的算法的总称,即使它们导致次优组合。

在这个例子中,所有可能的边都按距离排序,从最短到最长。然后,添加既不会创建具有多于2条边的顶点,也不会创建小于城市总数的循环的最短边。重复这个过程,直到我们有一个包含所有城市的循环。

在这里插入图片描述

尽管这里的所有启发式方法都不能保证最优解,但贪婪算法对于TSP来说尤其是次优的。

2、最近邻算法

最近邻启发式算法是另一种贪婪算法,或者有些人可能会称之为幼稚算法。它从一个城市开始,与最近的未参观城市相连。它会一直重复,直到每个城市都被参观过。然后返回起始城市。
在这里插入图片描述

Karl Menger首先定义了TSP,他指出最近邻是一种次优方法:

“首先从起点到最近的点,然后到最接近这个点的点,以此类推的规则通常不会产生最短的路线。”

最近邻算法的时间复杂度为O(n^2)。所需的计算数量增长速度不会超过n^2

3、最近插入法

插入算法随着行程的增长在现有点之间添加新点。

最近插入的一个实施始于两个城市。然后,它会反复找到距离旅游中任何城市最近的尚未在旅游中的城市,并将其放置在两个城市之间,以使最终的旅游尽可能短。当不再有插入时,它就会停止。

在这里插入图片描述

最近的插入算法是O(n^2)

4、低成本插入

与最近插入一样,低成本插入也始于两个城市。然后,它会找到尚未在行程中的城市,当将其放置在子行程中的两个相连城市之间时,将导致尽可能短的行程。它在两个相连的城市之间插入城市,并重复执行,直到没有更多的插入。

在这里插入图片描述

最便宜的插入算法是O(n^2 log2(n))

5、随机插入

随机插入也从两个城市开始。然后,它随机选择一个尚未在旅游中的城市,并将其插入旅游中的两个城市之间。冲洗,清洗,重复。

在这里插入图片描述
时间复杂度:O(n^2)

6、最远插入法

与其他插入不同,最远插入从一个城市开始,并将其与离它最远的城市连接起来。

然后,它会反复找到距离旅游中任何城市都最远的尚未在旅游中的城市,并将其放置在两个城市之间,以使最终的旅游尽可能短。

在这里插入图片描述

时间复杂度:O(n^2)

7、Christofides算法

Christofides算法是一种具有3/2近似保证的启发式算法。在最坏的情况下,行程不超过最佳行程长度的3/2。

由于其速度和3/2近似保证,Christofides算法通常用于构建一个上限,作为将使用旅行改进启发式方法进一步优化的初始旅行,或作为帮助限制搜索最优路线时使用的分支和切割技术的搜索空间的上限。

为了使其工作,它要求城市之间的距离是对称的,并遵守三角不等式,这是你在典型的x,y坐标平面(度量空间)中会发现的。它发表于1976年,继续保持度量空间最佳近似比的记录。

在这里插入图片描述

算法很复杂。其时间复杂度为O(n^4)

8、2-Opt

如果我们不能通过切换k个边来改进遍历,则一个问题称为k-Optimal。

每次k-Opt迭代需要O(n^k)时间。

2-Opt是Croes于1958年提出的一种局部搜索旅行改进算法[3]。它源于这样一种观点,即边缘交叉的旅游不是最佳的。2-opt将考虑每一种可能的2边交换,当交换2边时,可以改善行程。

在这里插入图片描述
2-opt每次迭代需要O(n^2)个时间。

9、3-Opt

3-opt是2-opt的推广,其中一次交换3条边。当删除3条边时,有7种不同的方法可以重新连接它们,因此它们都被考虑在内。

在这里插入图片描述
3-opt迭代的时间复杂度为O(n^3)

10、Lin-Kernighan启发式算法

Lin Kernighan是一个优化的k-Opt旅行改进启发式算法。它需要一次旅行,并试图改进它。

通过允许一些中间旅行比最初的旅行成本更高,Lin Kernighan可以远远超越简单的2-Opt会终止的点。

在这里插入图片描述

Lin Kernighan启发式算法的实现,如Keld Helsgoun的LKH,可以使用2-Opt、3-Opt、4-Opt、5-Opt、“kicks”的“行走”序列,来逃避局部最小值,使用灵敏度分析来指导和限制搜索,以及其他方法。

LKH有2个版本;原版和LKH-2随后发布。虽然这是一种启发式算法,而不是精确算法,但它经常产生最优解。它已经收敛到每次旅行的最佳路线,并具有已知的最佳长度。在某个时间点,它还为每个具有未知最优值的问题创造了记录,例如拥有1900000个位置的World TSP。

11、Chained Lin-Kernighan

Chained Lin Kernighan是一种建立在Lin-Kernighan启发式之上的旅游改进方法:

它采用Lin-Kernighan启发式产生的现有方式,通过丢弃它来修改它,然后再次将Lin-Kernighan启发式应用于它。如果新的旅程更短,它会保留它,丢弃它,并再次应用林-克尼汉启发式。如果原来的旅程较短,它会再次启动旧的旅程,并应用林克尼汉启发式。
在这里插入图片描述
根据其实施情况,当没有更多改进时,或者当它达到时间限制时,或者在最长时间内运行时,它可能会停止。

作为一种启发式方法,它并不能将TSP问题解决到最优性。然而,它是作为最先进的Concorde TSP求解器的精确求解过程的一部分使用的子程序。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值