is_semiconnected#

is_semiconnected(G)[source]#

如果图是半连通的,则返回 True,否则返回 False。

当且仅当对于任意一对节点,其中一个节点可以到达另一个节点,或者它们相互可达时,该图是半连通的。

此函数使用一个定理:一个有向无环图 (DAG) 是半连通的当且仅当对于任何拓扑排序,在该排序中的节点 vn 存在一条边 (vi,vi+1)。这允许我们通过凝聚图来检查非有向无环图 G 是否是半连通的:即构建一个新的图 H,其节点是 G 的强连通分量,并且如果 G 中存在一条边 (v1,v2) 使得 v1scc1v2scc2,则存在一条边 (scc_1, scc_2)。这会生成一个有向无环图,因此我们计算 H 的拓扑排序,并检查对于每个 n 是否存在一条边 (sccn,sccn+1)

参数
GNetworkX 图

一个有向图。

返回
semiconnected布尔值

如果图是半连通的,则为 True,否则为 False。

引发
NetworkXNotImplemented

如果输入图是无向图。

NetworkXPointlessConcept

如果图是空的。

示例

>>> G = nx.path_graph(4, create_using=nx.DiGraph())
>>> print(nx.is_semiconnected(G))
True
>>> G = nx.DiGraph([(1, 2), (3, 2)])
>>> print(nx.is_semiconnected(G))
False