is_simple_path#

is_simple_path(G, nodes)[source]#

当且仅当 nodesG 中形成一条简单路径时返回 True。

图中的 简单路径 是一个非空节点序列,其中每个节点在序列中最多出现一次,并且序列中每对相邻节点在图中也是相邻的。

Parameters:
G

一个 NetworkX 图。

nodes列表

G 中的一个或多个节点的列表。

Returns:
bool

给定的节点列表是否表示 G 中的一条简单路径。

Notes

一个空的节点列表不是路径,但一个节点的列表是路径。以下是解释原因。

此函数操作于 节点路径。也可以考虑 边路径。节点路径和边路径之间存在一一对应关系。

路径的长度 是路径中的边数,因此长度为 n 的节点列表对应于长度为 n - 1 的路径。因此最小的边路径将是一个零边的列表,即空路径。这对应于一个节点的列表。

要转换节点路径和边路径,可以使用以下代码:

>>> from networkx.utils import pairwise
>>> nodes = [0, 1, 2, 3]
>>> edges = list(pairwise(nodes))
>>> edges
[(0, 1), (1, 2), (2, 3)]
>>> nodes = [edges[0][0]] + [v for u, v in edges]
>>> nodes
[0, 1, 2, 3]

Examples

>>> G = nx.cycle_graph(4)
>>> nx.is_simple_path(G, [2, 3, 0])
True
>>> nx.is_simple_path(G, [0, 2])
False

Additional backends implement this function

graphblas : OpenMP-enabled sparse linear algebra backend.