我正在使用Christofides算法来计算一个旅行商问题的解,实现是集成在networkx
库中的Python。
该算法接受一个无向networkx图,并返回一个按照TSP解的顺序排列的节点列表,我不确定我是否正确理解了该算法,所以我还不知道它是如何确定解的起始节点的。
所以,我的假设是:该解被认为是循环的,使得销售员一旦访问了所有节点就返回到他的起始节点。end
现在被认为是销售员在返回到start
节点之前最后访问的节点。
因此,我理解(如果我错了,请纠正我),对于每个具有N个节点的TSP解决方案(节点列表的顺序),都被认为是像这样的循环,存在N * 实际 * 解决方案,其中每个节点都可以是起始节点,而下面的路线保持不变。
A-B-C-D-E-F-G-H-〉A也可以是D-E-F-G-H-A-B-C-〉D,并且仍然是有效路由,并且基本上是相同的解决方案,只是具有不同的起始节点。
我需要在返回的顺序的所有可能的起始节点中找到一个特定的解,该解具有最大的结束和开始之间的距离--假设这还不能保证是networkx.algorithms.approximation.christofides
返回的解。
1条答案
按热度按时间nuypyhwy1#
在阅读了更多关于Christofides的内容后,似乎是由于作为第一步生成的最小生成树,访问的第一个和最后一个节点的预期结果是沿着路径相距最远的那些节点,这已经是事实。