【发布时间】:2011-05-25 12:10:01
【问题描述】:
travelling salesman problem (TSP) 和 Chinese postman problem (CPP) 之间的区别是什么?
对我来说,两者都想去一个目的地,然后再回来。
【问题讨论】:
标签: graph path traveling-salesman chinese-postman
travelling salesman problem (TSP) 和 Chinese postman problem (CPP) 之间的区别是什么?
对我来说,两者都想去一个目的地,然后再回来。
【问题讨论】:
标签: graph path traveling-salesman chinese-postman
从对这两篇文章的简短阅读(而且我从未上过图论课程,所以我可能会通过我的帽子说话),似乎“CPP”涉及访问所有边,而“TSP”涉及访问所有节点。
【讨论】:
我认为这只是计算机科学学院课程中路径问题的另一种变体。
中国旅行商问题(C-TSP)是一个典型的对称TSP问题。它的简单描述是:给定 31 个中国省会城市及其成对距离的列表,任务是找到每个城市恰好访问一次的最短路径。 C-TSP 是一个中等规模的 TSP 问题,有 (31−1)! / 2 = 1.326 *1032 条可能的路线。
【讨论】:
图由边和顶点组成。 CPP 需要访问所有边缘。 TSP 需要访问所有顶点。
【讨论】:
travelling salesman problem是每个城市去一次,走最短路线。
Chinese postman problem 是关于从每个城市到另一个城市的路径。
例如,对于 A、B、C 和 D 点,旅行商可以走 ABCDA,但中国邮递员需要一条具有 AB 和 AC 和的路线em> 广告等
旅行商路线在每个点之间没有直达(在上面的示例中没有 A-C 链接)。
每个城市都是一个顶点,每个城际链接都是一条边。所以,我想我只是重申Xodarap's answer。
【讨论】:
两者的主要区别在于:
travelling salesman problem 不能多次访问一个节点。生成的路径将包含所有不同的节点/城市。
Chinese postman/route inspection 问题可能在生成的路径中有重复的节点(但不是重复的边)。即,只要您采取的路线与您采取的路线不同,就可以多次访问节点。
【讨论】:
旅行推销员问题:
给定城市和城市之间的距离,找到最短距离的游览,以便它访问每个城市恰好一个。将此可视化为与每条边相关的图和成本或权重,找到最便宜或权重最小的游览(哈密顿路径),以使每个顶点或节点仅被访问一次。我们可以认为这是找到所有可能的哈密顿路径,然后找到其中最好的。寻找所有可能的路线是一个优化问题,在NP-complete 中表示该问题不存在多项式时间解
中国邮递员问题:
与旅行商问题相反,CPP 要求通过图找到成本最低或权重最小的旅行,以使每条边至少被访问一次。该问题有一个多项式解,如果图是欧拉图,则最优解需要通过图找到欧拉之旅。
否则,修改图形以使其成为欧拉曲线并定义欧拉曲线。中国邮递员问题的一个特殊例子是我们不需要遍历图的所有边,而只需要遍历其中的一些(必需边)。这种变化被称为农村邮递员问题,并且是 NP 完全的。换句话说,给定一个图,找到一个最小成本/最小权重的旅程,使得所有需要的边都至少被覆盖一次,可能正在使用不需要的边。
【讨论】:
保持超简单:
旅行推销员问题是关于每个城市只访问一次,同时返回原来的城市(因此沿着Hamiltonian cycle走),并且走其中最短的路线满足此标准的所有可能路线(如果存在这样的路线)。找到这样一个循环,强制找到距离最短的可能唯一的最优循环,是“困难的”。
中国邮递员问题或路检问题是关于城市之间的每条道路至少访问一次,同时返回原城市并采取满足此标准的所有可能路线中最短的路线(如果存在这样的路线)。每条路只走一次的解决方案自动是最优的,称为Eulerian cycle。找到这样的循环是“可行的”。
【讨论】: