recursive_simple_cycles#
- recursive_simple_cycles(G)[source]#
查找有向图的简单环(基本回路)。
一个
简单环
,或称基本回路
,是一个封闭路径,其中没有节点出现两次。如果两个基本回路不是彼此的循环置换,则它们是不同的。此版本使用递归算法构建环列表。您可能应该使用名为 simple_cycles() 的迭代器版本。警告:此递归版本会占用大量内存!它出现在 NetworkX 中是出于教学价值。
- 参数:
- GNetworkX DiGraph
一个有向图
- 返回:
- 一个环列表,其中每个环都由一个节点列表表示
- 沿环的路径。
- 示例
>>> edges = [(0, 0), (0, 1), (0, 2), (1, 2), (2, 0), (2, 1), (2, 2)] ..
>>> G = nx.DiGraph(edges) ..
>>> nx.recursive_simple_cycles(G) ..
- [[0], [2], [0, 1, 2], [0, 2], [1, 2]]
另请参见
注释
此实现遵循 [1] 中第 79-80 页。
时间复杂度为 \(O((n+e)(c+1))\),其中 \(n\) 为节点数,\(e\) 为边数,\(c\) 为基本回路数。
参考文献
[1]查找有向图的所有基本回路。D. B. Johnson, SIAM Journal on Computing 4, no. 1, 77-84, 1975. https://doi.org/10.1137/0204007