is_aperiodic#

is_aperiodic(G)[source]#

如果 G 是非周期图,则返回 True。

如果不存在大于 1 的整数 k 能够整除图中每个圈的长度,则有向图是非周期的。

参数:
GNetworkX DiGraph

有向图

返回:
bool

如果图是非周期图则为 True,否则为 False

引发:
NetworkXError

如果 G 不是有向图

注意

此方法使用了[1]中概述的方法,给定图中 \(m\) 条边,运行时间为 \(O(m)\)。请注意,如果图是无环的,则它不是非周期的,因为任何整数都能整除长度为 0 的圈。

参考文献

[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.

示例

一个由一个长度为 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