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