首页 > 解决方案 > Networkx : 删除节点后的全局效率

问题描述

我也是networkx和Python的初学者,我想迭代一个图的节点,在每次迭代中我想删除一个节点,删除节点后计算图的全局效率,并在之前添加这个节点对其他节点进行相同的处理。我试过这个脚本,但我注意到在删除一些节点后,计算出的全局效率大于图的初始全局效率(没有删除任何节点)。这是正常的,还是我的脚本有错误?

提前致谢

a=nx.global_efficiency(H)

for elt in H.nodes():
       e=nx.global_efficiency(H.subgraph(set(H)-{i}))
       print ( e)

标签: performancenetworkx

解决方案


你的脚本看起来不错。通过删除节点可以获得更大的全局效率。

这是一个显示它的最小示例:

import networkx as nx

G = nx.Graph()
G.add_edges_from([(0, 2), (2, 1)])

# Efficiency of: 0 -> 2 -> 1 :
print(nx.global_efficiency(G)) # 0.8333333333333334

# Efficiency of: 2 -> 1
print(nx.global_efficiency(G.subgraph(set(G)-{0}))) # 1.0

该图的全局效率按此处解释的方式计算。


推荐阅读