将TSP降低到哈密顿电路

时间:2012-11-13 17:02:51

标签: algorithm graph graph-algorithm np-complete reduction

如何将旅行商问题的(决策版)转换为汉密尔顿电路问题(即如何将TSP降低到HCP,这样如果我有HCP的解决方案,那么我将使用该解决方案解决TSP问题问题)?

6 个答案:

答案 0 :(得分:5)

NP中的每个问题都可以是多项式时间减少到任何NP完全问题 - 这就是NP完全问题如此重要的原因。

这是一系列减少:

  1. 顶点覆盖可以缩减为汉密尔顿电路。
  2. 3-SAT可以缩小为Vertex Cover。
  3. 可满足性可降至3-SAT。
  4. NP中的任何决策问题都可以降低到可满足性(Cook-Levin定理)
  5. TSP是NP中的一个问题,因此它可以在可笑的长多项式时间内减少到哈密顿电路。

    我从Computers and Intractability: A Guide to the Theory of NP-Completeness

    获得了减少

答案 1 :(得分:0)

汉密尔顿循环问题被证明是NP完全的(截至今天,已知要解决的最佳算法具有指数复杂性),

此外,哈密顿循环问题是一个决策问题(给定一个图,是否有一个非重叠边缘覆盖所有顶点的循环?)而TSP是一个搜索问题(在所有哈密顿周期中给我一个成本较低)。

所以....我不认为你要求的减少存在(直觉上TSP更复杂),如果确实如此,我认为它不会对你有所帮助,因为汉密尔顿问题是NP-完成(指数复杂性对于足够大的问题是不切实际的)。

如果您只是想解决TSP问题,那么只需使用known algorithms之一即可。其中一些设计用于少量顶点(这可能足够你)的表现相当不错。

注意:我假设您的意思是TSP搜索问题和哈密尔顿循环决策问题,可能不是这种情况。

答案 2 :(得分:0)

拍摄图表并移除所有边缘。如果添加的边缘目标不是距离v而不是来自tsp决策问题的长度常数,则从任意顶点v开始并添加从该顶点开始的有向边。

如果构造的图形具有哈密顿循环,那么它也是长度<1的游览。 k在原始图中,因此是TSP的解决方案。

反之,如果图中没有哈密顿循环: 因为你已经构建了所有长度的路径&lt; k从顶点v开始并且作为TSP的解决方案是长度<1的路径。 k从v开始,并且哈密顿循环,在原始图中没有TSP的解决方案。

答案 3 :(得分:-1)

来自维基百科关于Hamiltonian path problem的文章,可能会给你一个提示:

“汉密尔顿循环问题也是旅行商问题的一个特例,通过将两个城市之间的距离设置为1,如果它们相邻,另外两个,并验证行进的总距离等于n(如果所以,路线是哈密顿电路;如果没有哈密顿电路,那么最短的路线会更长。)

答案 4 :(得分:-1)

嗯,问题是你想要做什么。通常,TSP是关于找到smallest方式。如果你想找到最小的方法,那你就不能这样做。只有你有汉密尔顿问题的所有解决方案 因为汉密尔顿问题并不关心边缘重量,但这对于推销员来说是必要的。

实施例: 图A,B,C与A-(10)-B,B-(10)-C,C-(1)-A

显然,A-> B-> C是Hamilton方式,但TSP的最佳解决方案是A-> C-> B

如果您只想找到TSP的任何解决方案,不一定是最小的,那么您只需将TSP节点映射到Hamilton节点,解决它,返回映射就可以了。

答案 5 :(得分:-1)

TSP的输入实例是完整图,Ham_Cycle的输入实例是无向图G(u,v)。然后,转换函数必须将图形G映射到完整的图形。


  • 使用权重在G的相同顶点上构造完整的图G' fn w(u,v)
  • 如果边缘e(u,v)存在于G 中,则
  • w(u,v)= 1
  • w(u,v)= INF否则
  • 将权重k设为| V | (vi的数量)
  • 在G'
  • 上运行TSP问题