【发布时间】:2014-06-20 22:02:54
【问题描述】:
我的目标是做与 here 发布的完全相同的事情。
我有一个如下所示的矩阵(DataFrame 或 df):
community A B C D
A 0 3 4 1
B 3 0 2 0
C 4 2 0 1
D 1 0 1 0
这是一个对称的df,每个权重代表每个社区之间连接的权重或强度。如链接中所述,我想生成一个矩阵,显示所有节点(或社区)之间的最短距离。我先把上面的矩阵取反,设置G图网络:
G = nx.Graph()
commu = list(df.index)
for i in range(0,len(commu)):
for j in range(0,len(commu)):
if i == j:
pass
else:
G.add_edge(str(i),str(j),weight=df.ix[df.index[i], df.columns[j]])
这给了我以下网络图: 边缘的不同颜色代表不同的权重。 (我更改了图表中数字的字母)
好的,到目前为止一切顺利。现在,我想要所有节点之间的最短距离。我正在考虑使用这个nx.dijkstra_shortest_path_length(G,source,target) 并遍历source 和target 的所有节点,并生成一个类似于上述链接的矩阵,其中包含矩阵每个单元格中所有节点的最短路径的所有值,但对于某些原因nx.dijkstra_shortest_path_length(G,source,target) 对我不起作用。
如果我执行nx.dijkstra_shortest_path_length(G,A,B) 或任何节点组合,我总是得到0。为什么?是否有一种有效的方法可以像使用Networkx 和nx.dijkstra 算法在链接中一样重现矩阵?
【问题讨论】: