Networkx_找出最大联通子图及联通子图规模排序

G = nx.path_graph(4)     #生成一个包含4个节点的线型网络(一字长蛇型),节点编号lebel从0到1


nx.draw(G,with_labels=True,label_size=1000,node_size=1000,font_size=20)
plt.show()

G.add_path([10,11,12])  #再来一个一字长蛇型网络,节点分别是10,11,12

import matplotlib.pyplot as plt
import networkx as nx
G=nx.path_graph(4)
G.add_path([10,11,12])
nx.draw(G,with_labels=True,label_size=1000,node_size=1000,font_size=20)
plt.show()
#[print(len(c)) for c in sorted(nx.connected_components(G),key=len,reverse=True)]
for c in sorted(nx.connected_components(G),key=len,reverse=True):
    print(c)      #看看返回来的是什么?结果是{0,1,2,3}
    print(type(c))   #类型是set
    print(len(c))   #长度分别是4和3(因为reverse=True,降序排列)


largest_components=max(nx.connected_components(G),key=len)  # 高效找出最大的联通成分,其实就是sorted里面的No.1
print(largest_components)  #找出最大联通成分,返回是一个set{0,1,2,3}
print(len(largest_components))  #4



你可能感兴趣的:(Python)