【发布时间】:2023-01-07 15:44:19
【问题描述】:
我正在使用 Christofides 算法来计算旅行商问题的解决方案。该实现是集成在 Python 的 networkx 库中的实现。
该算法接受无向 networkx 图并按 TSP 解决方案的顺序返回节点列表。我不确定我是否正确理解算法,所以我还不知道它如何确定计算解决方案的起始节点。
因此,我的假设是:解决方案被认为是循环的,以便销售员在访问所有节点后返回到他的起始节点。 end 现在被认为是销售员在返回 start 节点之前最后访问的节点。返回解的start节点是随机的。
因此,我理解(如果我错了请纠正我)对于每个 TSP 解决方案(节点列表的顺序),N 个节点被认为是圆形的,有 N实际的每个节点都可以是起始节点且以下路由保持不变的解决方案。
A-B-C-D-E-F-G-H->A 也可以是 D-E-F-G-H-A-B-C->D 并且仍然是一条有效的路线并且基本上是相同的解决方案,只是起始节点不同。
我需要找到返回顺序的所有可能起始节点的一个特定解决方案,该解决方案在结束和开始之间具有最大距离 - 假设这还不能保证是 networkx.algorithms.approximation.christofides 返回的解决方案。
【问题讨论】:
标签: python networkx traveling-salesman