假设我有一个list=[2,5,7]
(代表城市的访问顺序)。我想将节点插入6
此列表(或图表);但是,我正在寻找最好的插入位置(就总成本而言list
)。例如 Cost oflist1=[2,6,5,7]
低于 Cost of list2=[2,5,7,6]
。成本函数是节点之间的距离。例如,Cost[2,6,5,7] = Distance[2][6] + Distance[6][5] + Distance[5][7]
有什么快速的方法吗?Networkx 中是否有任何内置函数(例如nx.dijkstra_path_length(G, i, j, 'weight')
计算插入前的最短路径)或任何其他包?请注意,它list=[2,5,7]
可以被视为一个图表,并且很容易由 Networkx 生成(2---5---7)
PS:我将在下面提供一个玩具大小的实例:a=[6,10]
并且list=[2,5,7]
是我的输入。我想将a
(6 和 10)中的所有节点添加到最佳位置list
(例如将节点添加到 TSP 游览)。插入 6 in 有两个可能的位置list
。A:介于2
和5
B:介于5
和之间7
。由于Cost[2,6,5,7] < Cost[2,5,7,6]
,选项 A 提供最低成本。现在list=[2,6,5,7].
再次插入节点10
,应检查所有三个可能的位置 A: between 2
and 6
B: between 6
and 5
C: between 5
and 7
。输出将是一个类似的列表[2,6,5,10,7]