非对称旅行商问题:算法、实例生成器与测试
1. 算法概述
在解决非对称旅行商问题(ATSP)时,有多种算法可供选择,这些算法各有特点和适用场景。下面将详细介绍几种常见的算法。
1.1 路径构建算法
- 最近邻算法(Nearest Neighbor,NN) :从随机选择的城市开始,依次前往尚未访问过的最近城市。在本地搜索代码中使用时,运行时间可能会增加,因为需要构建每个城市的最近邻有序列表。与独立实现相比,运行时间大约增加 50%。
- 贪心算法(Greedy,GR) :将问题实例视为一个完整的有向图,边的长度等于城市间的距离。按边的长度递增顺序排序,选择符合条件(不会形成非哈密顿环,且入度和出度不超过 1)的最短两条边之一,重复此过程直到构建出一条路径。
1.2 修补循环覆盖算法(Patched Cycle Cover)
先使用加权二分匹配计算最小循环覆盖,然后重复选择两个最大的循环,通过断开每个循环中的一条边并拼接得到的有向路径,将它们合并成最短的整体循环。该算法的运行时间主要由构建初始循环覆盖的时间决定。与反复拼接两个最短循环的方法相比,此方法效果更好。
1.3 重复分配算法(Repeated Assignment)
该算法先构建最小循环覆盖,然后对当前图的每个连通分量选择一个代表顶点,计算由这些顶点诱导的子图的最小循环覆盖并添加到当前图中,直到得到一个连通图。最终得到的图是欧拉图,通过构建欧拉路径并进行捷径处理可得到 ATSP 路径。实现了两种变体:RA 随机选择代
超级会员免费看
订阅专栏 解锁全文
22

被折叠的 条评论
为什么被折叠?



