我有以下列出的起点和节点以及它们之间的距离,我将它们输入到networkx中:
import networkx as nx
s, t = [], [] # int lists assuming long lists of starting and ending nodes forming a meshed network
d = [] # float list of distance between each starting and ending node
G = nx.Graph()
for i, j, k in zip(s,t,d):
G.add_edge(s,t, weight=d)
c是一个列表,它是G.nodes()的子集,我想找到仅c个节点的最小生成树,但要考虑网络的权重和拓扑。因此,我首先从以下找到最短路径开始:
for i in range(len(c)):
for j in range(len(c)):
for i != j
path.append(nx.dijkstra_path(G, source=c[i], target=c[j])
或: path.append(nx.shortest_path(G,source = c [i],target = c [j])
由此,我将采用最短路径的长度在c个节点之间生成一个简化图,但以最短路径长度作为c个节点之间的权重,然后找到该简化图的最小生成树。
但是,当我尝试dijkstra时出现错误
TypeError: unsupported operand type(s) for +: 'int' and 'list'
当我尝试时,shortest_path我没有得到重量
对找到加权最短路径有何想法?
总体上有更好的策略来找到图中nbunch节点的加权最小生成树吗?
感谢您的帮助!