articulation_points#
- articulation_points(G)[source]#
生成图的关节点或割点。
关节点或割点是指移除该节点(及其所有关联边)后,图的连通分量数量增加的任意节点。无向连通图如果没有关节点则是双连通的。关节点属于图的多个双连通分量。
注意,按照惯例,二元组被视为一个双连通分量。
- Parameters:
- GNetworkX 图
一个无向图。
- Yields:
- 节点
图中的一个关节点。
- Raises:
- NetworkXNotImplemented
如果输入图不是无向图。
Notes
查找关节点和双连通分量的算法是使用一个非递归的深度优先搜索(DFS)实现的,该算法跟踪回边在DFS树中达到的最高级别。节点
n
是关节点当且仅当存在一个以n
为根的子树,其中没有任何后继节点n
的回边链接到n
在DFS树中的前驱节点。通过跟踪DFS遍历的所有边,我们可以获得双连通分量,因为双连通分量的所有边将在关节点之间连续遍历。References
[1]Hopcroft, J.; Tarjan, R. (1973). “Efficient algorithms for graph manipulation”. Communications of the ACM 16: 372–378. doi:10.1145/362248.362272
Examples
>>> G = nx.barbell_graph(4, 2) >>> print(nx.is_biconnected(G)) False >>> len(list(nx.articulation_points(G))) 4 >>> G.add_edge(2, 8) >>> print(nx.is_biconnected(G)) True >>> len(list(nx.articulation_points(G))) 0