Remove ads
组合优化问题 来自维基百科,自由的百科全书
旅行商问题(英語:Travelling salesman problem,縮寫:TSP)是组合优化中的一个NP困难问题,在运筹学和理论计算机科学中非常重要。问题内容为“给定一系列城市和每對城市之间的距离,求解访问每座城市一次并回到起始城市的最短回路。”
此條目可参照德語維基百科相應條目来扩充。 |
TSP是旅行购买者问题与车辆路径问题的一种特殊情况。
作为计算复杂性理论中一个典型的判定性问题,TSP的一个版本是给定一个图和长度 L,要求回答图中是否存在比 L 短的回路(英语:circuit或tour)。该问题被划分为NP完全问题。已知TSP算法最坏情况下的时间复杂度随着城市数量的增多而成超多项式(可能是指数)级别增长。
问题在1930年首次被形式化,為最佳化中被研究得最深入的问题之一,许多优化方法都奉其为基准。尽管问题在计算上很困难,但已经有了大量的启发式和精确方法,因此可以完全求解城市数量上万的实例,并且甚至能在误差1%范围内估计上百万个城市的问题。[1]
甚至纯粹形式的TSP都有若干应用,如企划、物流、芯片制造。稍作修改,就是DNA测序等许多领域的一个子问题。在这些应用中,“城市”的概念用来表示客户、焊接点或DNA片段,而“距离”的概念表示旅行时间或成本或DNA片段之间的相似性度量。TSP还被應用在天文学中,减少在不同光源之间转动望远镜的时间。在许多应用場景中(如资源或时间窗口有限等等),可能会需要加入额外的约束條件。
可以用无向加权图来对TSP建模,则城市是图的顶点,道路是图的边,道路的距离就是该边的长度。它是起点和终点都在一个特定顶点,访问每个顶点恰好一次的最小化问题。通常,该模型是一个完全圖(即每对顶点由一条边连接)。如果两个城市之间不存在路径,則增加一条非常长的边就可以完成图,而不影响计算最优回路。
在对称TSP问题中,两座城市之间来回的距离是相等的,形成一个无向图。这种对称性将解的数量减少了一半。在非对称TSP问题中,可能不是双向的路径都存在,或是来回的距离不同,形成了有向图。交通事故、单行道和出发与到达某些城市机票价格不同等都是打破这种对称性的例子。
单钻头的运动可以看成是典型的TSP问题。TSP可以用整数线性规划来形式化。[3][4][5] 用数字 0, ..., n 标记这些城市(打孔位置),并定义:
对于 i = 0, ..., n,令 为一人工变量,最后把 作为从城市 i 到 j 的距离。那么TSP可以写成下面的整数线性规划问题:
第一组等式要求每个城市都能另一个城市前来,而第二组等式要求每个城市都能出发。最后的约束迫使覆盖所有城市的路径只有一条,而不是两条或者多条分散的路径在一起覆盖的。要证明这一点,下面会去证 (1)每个可行解包含只有一条封闭城市序列,以及(2)对于每条覆盖所有城市的单独路径,虚拟变量 有值可以满足限制式。
证明可行解中的每个子回路经过0号城市(注意到等式保证了只有一条这样的路径),就能证明所有可行解只包含一个封闭城市序列。对于若我们对所有 对应的不等式求和的话,对 k 步不经过0号城市的任何子回路,我们得到:
这构成矛盾。
必须证明对每个覆盖所有城市的单独回路,虚拟变量 有值可以满足约束。
为了不失一般性,定义起始点为0号城市。如果在第 t 步访问城市 i 后 (i, t = 1, 2, ..., n) 选取 。则
由于 不大于 n 而 不小于1;因此,每当 时满足约束。对于 ,我们有:
满足约束。
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.