is_aperiodic#

is_aperiodic(G)[source]#

如果 G 是无周期的,则返回 True。

有向图是无周期的,如果图中不存在一个大于 1 的整数 k,使得 k 能整除图中每个环的长度。

Parameters:
GNetworkX 有向图

一个有向图

Returns:
bool

如果图是无周期的,则返回 True,否则返回 False

Raises:
NetworkXError

如果 G 不是有向图

Notes

这使用了 [1] 中概述的方法,该方法在给定 G 中有 \(m\) 条边的情况下,运行时间为 \(O(m)\)。请注意,如果图是无环的,则它不是无周期的,因为每个整数都能整除长度为 0 的环。

References

[1]

Jarvis, J. P.; Shier, D. R. (1996), “Graph-theoretic analysis of finite Markov chains,” in Shier, D. R.; Wallenius, K. T., Applied Mathematical Modeling: A Multidisciplinary Approach, CRC Press.

Examples

一个由长度为 2 的单个环组成的图。因此 k = 2 能整除图中每个环的长度,因此该图是 有周期的:

>>> DG = nx.DiGraph([(1, 2), (2, 1)])
>>> nx.is_aperiodic(DG)
False

一个由两个环组成的图:一个长度为 2,另一个长度为 3。环的长度互质,因此不存在一个大于 1 的 k 值能整除每个环的长度,因此该图是 无周期的:

>>> DG = nx.DiGraph([(1, 2), (2, 3), (3, 1), (1, 4), (4, 1)])
>>> nx.is_aperiodic(DG)
True

一个由两个环组成的图:一个长度为 2,另一个长度为 4。环的长度有一个公共因子 k = 2 ,因此该图是 有周期的:

>>> DG = nx.DiGraph([(1, 2), (2, 1), (3, 4), (4, 5), (5, 6), (6, 3)])
>>> nx.is_aperiodic(DG)
False

一个无环图,因此该图是 有周期的:

>>> DG = nx.DiGraph([(1, 2), (2, 3)])
>>> nx.is_aperiodic(DG)
False