is_semiconnected#
- is_semiconnected(G)[source]#
如果图是半连通的,则返回 True,否则返回 False。
当且仅当对于任意一对节点,其中一个节点可以到达另一个节点,或者它们相互可达时,该图是半连通的。
此函数使用一个定理:一个有向无环图 (DAG) 是半连通的当且仅当对于任何拓扑排序,在该排序中的节点 \(v_n\) 存在一条边 \((v_i, v_{i+1})\)。这允许我们通过凝聚图来检查非有向无环图
G
是否是半连通的:即构建一个新的图H
,其节点是G
的强连通分量,并且如果G
中存在一条边 \((v_1, v_2)\) 使得 \(v_1 \in scc_1\) 且 \(v_2 \in scc_2\),则存在一条边 (scc_1, scc_2)。这会生成一个有向无环图,因此我们计算H
的拓扑排序,并检查对于每个 \(n\) 是否存在一条边 \((scc_n, scc_{n+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