您是否使用旅行推销员算法来解决问题?

时间:2008-11-05 00:56:19

标签: algorithm traveling-salesman np-hard

我在NP完整性的背景下在大学学习TSP。我实际上从未遇到过适用于实际问题的情况。一些研究表明,它已被用来选择最便宜的移动钻头的路径,即在电路板上钻孔。这几乎是我能找到的全部。

你正在使用它吗? TSA还有哪些其他实际应用?

14 个答案:

答案 0 :(得分:8)

我曾经被赋予了编写程序的任务,该程序使用“波浪线”相当均匀地填充矩形区域 - 曲线不会自相交。我的第一次尝试是在矩形内生成随机点并尝试找到它们的游览(不一定是绝对最短的)。不幸的是,这种方法效果不好,我放弃了。

我最终解决了这个问题:

alt text

我的成功方法与TSP无关,但对于好奇的我会总结一下:

从单个线段开始。现在循环:如果一行“太长”,则将其分成两行。随机移动每个点,但使点相互排斥。当可以取得很少进展时结束循环。有细节,但希望你能得到这个想法。

当然这会产生一个角度路径(这是可以接受的),但是很容易将角落变成平滑的弧线。

是的,我保留了代码。

答案 1 :(得分:7)

我从来没有亲自使用它,但除了钻孔电路板之外的另一个应用是,如果你想去许多不同的地方,比如卖真空吸尘器。您可以使用问题的解决方案来确定最便宜的方式到处访问一次。

答案 2 :(得分:7)

知道问题何时是NP-hard对于排除涉及解决该问题的解决方案是有用的。每当你看到TSP(或任何其他NP难题)将其丑陋的头脑置于非平凡大小的问题上时,你知道你正朝着错误的道路前进。你不仅知道它,而且知道为什么,并且可以自信地告诉你的老板/队友/任何人。

有人说http://en.wikipedia.org/wiki/CONCORDE表明:

  

协和飞机已经应用于问题   基因定位,[1]蛋白质功能   预测,[2]车辆路线,[3]   将位图图像转换为   连续线图,[4]   安排地震的船舶运动   调查,[5]和研究   组合的缩放特性   优化问题。[6]

答案 3 :(得分:6)

是的我在Geocaching应用程序中用它进行路径规划。

它目前使用点之间的直线距离,但应该正确(当我绕过它时)使用道路来计算点之间的距离。

http://code.google.com/p/gpsturbo/

答案 4 :(得分:5)

大多数情况下,您不想使用解决NP-Complete / Hard问题的算法。你只需要一个“足够好”的算法。这些通常基于启发式并给出合理的近似值。

我有一个问题是独立集(NP-Complete)的一个实例,但我发现了一个贪婪的算法,在绝大多数情况下都给出了相当不错的结果,并且运行时间很长。

答案 5 :(得分:3)

许多类型的优化订购,例如汽车池提取,UPS包裹递送等,无论节点遍历要求在哪个方面都可以表达,例如时间或距离。

答案 6 :(得分:3)

和这个帖子中的其他人一样,我在大学里建立了一个NP完全问题的解决方案(这是一个朋友的辅助项目) - 一个调度程序。在我同意处理他的问题时,我不知道NP完成了什么。我后来意识到我已经提出了一些相当好的启发式方法来解决问题 - 当然真正的诀窍是知道何时告诉用户没有解决方案并且他们过度约束了问题。

这是将我最终的理论课和现实世界结合在一起的好方法。

同样,启发式和“足够接近”通常适用于现实世界的用途,其中由于寻找和实施理想解决方案的成本,优选接近最优的解决方案。

答案 7 :(得分:3)

TSP是NP完整问题的 hello world 。在它的纯粹规范形式中,你不会经常在野外找到它(demos like this one not included),但NP完整问题的一大部分是相关的,甚至是基于TSP,例如:

  • Vehicle routing(包括供应卡车路线)
  • 航空公司/航班路线
  • 列车路线
  • 滑雪坡犁机路线

每个都有额外的,特定于域的约束,这使得它们更难以解决。 所以TSP是对NP完整问题的一个很好的介绍,了解它们的本质。

答案 8 :(得分:2)

现实生活中很少有问题与你在数学课上学到的东西相匹配。问题被简化和抽象,以便您可以看到数学而不会被细节分散注意力。正如您所提到的,大型TSP的最佳实际示例实际上并不涉及任何旅行推销员:它涉及调度具有sequence-dependent setup times作业的计算机。这包括手臂在不同位置移动工具的机器,以及一些涂装应​​用(红色 - >橙色 - >黄色比红色 - >黄色 - >橙色更容易)。在x-ray crystallography中还有一些应用,你必须在几个不同的角度定位一些晶体样品。

答案 9 :(得分:2)

该公司基于改进的TSP算法。

http://www.pointserve.com/

他们为纽约市周围的有线电视安装人员和维修人员提供其他问题。

答案 10 :(得分:1)

由于人类通常可以解决与20-60个节点的地图大多数算法相比或更好的TSP问题,因此让计算机解决问题并不常见。当成本足够高时,让计算机比人类提高1-2%可能值得进行计算。如果路线没有改变,那么可以证明花一些时间来优化它。这在集成电路设计中很常见。

航空公司旅行网站在向您显示航空公司列表和每条航线的价格时会使用特定版本的TSP问题。不同的是距离,而不是距离,他们优化成本,当然没有要求访问每个城市一次!假设您想从LGA飞往洛杉矶国际机场。大约有半打直达路线,以及无数其他路线。它可以建议LGA-> ORD-> LAX或LGA-> DWF-> LAX。可以手动为路线定价的人类有时可以找到比旅游网站搜索的票价更低的票价。通常,人们不希望连接超过两个,但给定航班的连接数没有上限。

我用它来解决Travelling Salesman iPhone Game的路线。有趣的是人们非常善于解决最短的路线,但不是解决最长的路线。最长和最短的路线具有相同的复杂性,但人们似乎受过训练,能够找到最短的路线,通常比计算机更快,更好。

答案 11 :(得分:1)

在我的第一份工作中,我们建立了家庭护理安排应用程序 我们用一些非线性时间约束和一个额外的非线性成本函数解决了TSP问题 我们使用非最优解算器来解决问题。

答案 12 :(得分:0)

谷歌地图(以及其他所有基于地图的路线软件)难道不会使用某种旅行推销员来解决行车路线吗?

答案 13 :(得分:0)

据我所知,我还没有使用过TSP,但我已经研究过一些自主机器人来穿越迷宫。所以我想知道TSP是否可以应用于迷宫解决。