find_cliques_recursive#
- find_cliques_recursive(G, nodes=None)[源代码]#
返回图中的所有极大团。
对于每个节点 v ,A V的最大集团 是包含 v . 最大的集团有时被称为 最大团 .
此函数返回一个遍历团的迭代器,每个团是一个节点列表。它是一个递归实现,因此可能会遇到递归深度问题,但出于教学原因而包含在内。有关非递归实现的信息,请参见
find_cliques()
。此函数接受
nodes
只有包含所有这些的最大派系nodes
都被退回了。如果需要一些特定的小集团,它可以大大加快运行时间。- 参数
- G网络X图表
- nodes列表,可选(默认=无)
如果提供,则仅提供 最大团 包含中的所有节点
nodes
。如果nodes
本身不是一个集团,则会引发ValueError。
- 返回
- 迭代器
极大团上的迭代器,每个团都是中的节点列表
G
。如果nodes
中的所有节点的最大团nodes
都是屈服的。集团的顺序是武断的。
- 加薪
- ValueError
如果
nodes
不是一个小圈子。
参见
find_cliques
相同算法的迭代版本。
笔记
要获取所有极大团的列表,请使用
list(find_cliques_recursive(G))
。但是,请注意,在最坏的情况下,此列表的长度可能与图中的节点数成指数关系。该函数在搜索期间只将当前候选节点列表保存在内存中,从而避免将所有集团存储在内存中。该实现基于Bron和KerBosch(1973)发布的算法。 [1], 由富田、田中和高桥改编(2006) [2] 并在《卡泽尔与卡兰德》(2008)中进行了讨论 [3]. 有关非递归实现的信息,请参见
find_cliques()
。该算法忽略了自循环和平行边,因为通常不使用这些边定义群。
工具书类
- 1
bron,c.和kerbosch,j.“算法457:寻找无向图的所有组别”。 ACM的通信 16,9(1973年9月),575-577.<http://portal.acm.org/ci典.cfm?doid=362342.362367>
- 2
Etsuji Tomita、Akira Tanaka、Haruhisa Takahashi,“产生所有最大群体和计算实验的最坏情况下的时间复杂性”, 理论计算机科学 ,第363卷,第1期,计算与组合学,第10届计算与组合学国际年会(Cocoon 2004),2006年10月25日,第28-42页<https://doi.org/10.1016/j.tcs.2006.06.015>
- 3
F.Cazals,C.Karande,“关于报告最大派系问题的说明”, 理论计算机科学 ,第407卷,第1-3期,2008年11月6日,第564-568页,<https://doi.org/10.1016/j.tcs.2008.05.010>