networkx

时间:2018-07-03 15:37:16

标签: python-3.x graph networkx shortest-path minimum-spanning-tree

我有以下列出的起点和节点以及它们之间的距离,我将它们输入到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节点的加权最小生成树吗?

感谢您的帮助!

0 个答案:

没有答案