如何为 NetworkX 图中的节点列表获取排序的节点列表作为 TSP 的近似值

How to get sorted list of nodes for a list of nodes in a NetworkX graph as approximation of TSP

我有一个无向的 NetworkX 图(不一定完整,但已连接)。另外,我有一个来自上图中所有节点的几个节点的列表。我想根据 TSP 结果(或其近似值)获得行驶距离。

我尝试使用 networkx.approximation.traveling_salesman_problem(DS.G, nodes=['A0_S0_R0', 'A0_S14_R4', 'A0_S4_R4', 'A0_S14_R4', 'A0_S14_R4', 'A0_S7_R4']),但输出列表是一个节点列表,用于按照给定节点在给定输入列表中出现的顺序覆盖给定节点。

我想要总最小距离或节点列表的顺序,以便行进距离最小化,而不是根据它们在输入列表中的出现。

tsp 函数将return 与找到的最佳路径相对应的节点列表。

您可以使用

获得最小距离
nodes = [...] # list of nodes returned by traveling_salesman_problem()
# assuming you used `weight` key for edge weights
distances = [G.get_edge_data(nodes[i],node[i+1])['weight'] for i in range(len(nodes)-1)]
min_distance = sum(distances)