python3求极大连通子图

最近学习图论的一串小结之二

数学概念见上一篇文章:最大完全子图和极大连通子图

networkx模块

C = sorted(nx.connected_components(G), key=len, reverse=True)
其中C是所有连通分量的降序排列,C[0]即为极大连通子图

【代码】

import matplotlib.pyplot as plt
import networkx as nx

nodes = ['a','b','c','d','e','f','g']
edges = [('a','b',1),('a','e',1),('a','d',1),('b','a',1),('b','d',1),('b','e',1),
         ('e','a',1),('e','b',1),('e','d',1),('d','a',1),('d','b',1),('d','e',1),
         ('c','f',1),('c','g',1),('f','c',1),('f','g',1),('g','c',1),('g','f',1)]

G = nx.Graph()
G.add_nodes_from(nodes)
G.add_weighted_edges_from(edges)

#极大连通子图
C = sorted(nx.connected_components(G), key=len, reverse=True)
print(C)
print(C[0])

#显示
nx.draw(G, with_labels=True, font_weight='bold')
plt.axis('on')
plt.xticks([])
plt.yticks([])
plt.show()

【运行结果】

python3求极大连通子图_第1张图片

最大完全子图代码见下一篇:python3回溯找最大团

你可能感兴趣的:(图,python,python,图论)