我正在尝试使用networkx的find_cliques方法查找所有3个集团。然而,结果显示,应该远远不止2个。请帮我弄清楚原因。在
import networkx as nx
G = nx.Graph()
edges_fig_4 = [('a','b'),('a','c'),('a','d'),('a','e'),
('b','c'),('b','d'),('b','e'),
('c','d'),('c','e'),
('d','e'),('e','d'),
('f','b'),('f','c'),('f','g'),
('g','f'),('g','c'),('g','d'),('g','e')]
G.add_edges_from(edges_fig_4)
cliques = nx.find_cliques(G)
cliques3 = [clq for clq in cliques if 3<=len(clq)<= 3]
print(cliques3)
根据文档,
find_cliques
返回所有最大的集团。在您的例子中,有大于3(abcde
)(cdeg
)的团,您还需要在更大的团中有所有可能的3-组合。这是因为一个集团的每个子集团也是一个集团,但它不是最大的。在编辑:你还需要使用集合来避免重叠的派系。在
使用以下代码:
或者,使用
enumerate_all_cliques
也将给出大小(基数)k = 1, 2, 3, ..., maxDegree - 1
的团。请参阅此处的文档:http://networkx.github.io/documentation/development/reference/generated/networkx.algorithms.clique.enumerate_all_cliques.html相关问题 更多 >
编程相关推荐