networkx.algorithms.components.biconnected_components
的用法。用法:
biconnected_components(G)
返回节点集的生成器,一个用于图的每个双连通分量的集合
双连通分量是最大子图,因此删除一个节点(以及该节点上的所有边)不会断开子图。请注意,节点可能是多个双连接组件的一部分。这些节点是关节点或切割顶点。关节点的去除将增加图的连通分量的数量。
请注意,按照惯例,二元组被认为是双连接组件。
- G:NetworkX 图表
一个无向图。
- nodes:生成器
节点集的生成器,每个双连接组件一组。
- NetworkXNotImplemented
如果输入图不是无向图。
参数:
返回:
抛出:
注意:
查找关节点和双连接组件的算法是使用非递归深度优先搜索 (DFS) 实现的,该算法跟踪后边在 DFS 树中达到的最高级别。当且仅当存在以
n
为根的子树使得在DFS中链接到n
的前驱的n
的任何后继没有后边时,节点n
是关节点树。通过跟踪 DFS 遍历的所有边,我们可以获得双连通分量,因为双分量的所有边将在关节点之间连续遍历。参考:
- 1
Hopcroft, J.; Tarjan, R. (1973). “Efficient algorithms for graph manipulation”. Communications of the ACM 16: 372-378. doi:10.1145/362248.362272
例子:
>>> G = nx.lollipop_graph(5, 1) >>> print(nx.is_biconnected(G)) False >>> bicomponents = list(nx.biconnected_components(G)) >>> len(bicomponents) 2 >>> G.add_edge(0, 5) >>> print(nx.is_biconnected(G)) True >>> bicomponents = list(nx.biconnected_components(G)) >>> len(bicomponents) 1
您可以使用排序生成双连通组件的排序列表,最大优先。
>>> G.remove_edge(0, 5) >>> [len(c) for c in sorted(nx.biconnected_components(G), key=len, reverse=True)] [5, 2]
如果你只想要最大的连接组件,使用 max 而不是 sort 更有效。
>>> Gc = max(nx.biconnected_components(G), key=len)
要将组件创建为子图,请使用:
(G.subgraph(c).copy() for c in biconnected_components(G))
相关用法
- Python NetworkX biconnected_component_edges用法及代码示例
- Python NetworkX binomial_graph用法及代码示例
- Python NetworkX bipartite_layout用法及代码示例
- Python NetworkX bidirectional_dijkstra用法及代码示例
- Python NetworkX boykov_kolmogorov用法及代码示例
- Python NetworkX bfs_edges用法及代码示例
- Python NetworkX bellman_ford_path用法及代码示例
- Python NetworkX bfs_beam_edges用法及代码示例
- Python NetworkX bfs_predecessors用法及代码示例
- Python NetworkX bfs_successors用法及代码示例
- Python NetworkX bridges用法及代码示例
- Python NetworkX bfs_tree用法及代码示例
- Python NetworkX bridge_components用法及代码示例
- Python NetworkX bethe_hessian_matrix用法及代码示例
- Python NetworkX bellman_ford_predecessor_and_distance用法及代码示例
- Python NetworkX bellman_ford_path_length用法及代码示例
- Python NetworkX negative_edge_cycle用法及代码示例
- Python NetworkX voronoi_cells用法及代码示例
- Python NetworkX numerical_edge_match用法及代码示例
- Python NetworkX inverse_line_graph用法及代码示例
- Python NetworkX LFR_benchmark_graph用法及代码示例
- Python NetworkX write_graph6用法及代码示例
- Python NetworkX DiGraph.__contains__用法及代码示例
- Python NetworkX average_degree_connectivity用法及代码示例
- Python NetworkX eulerian_circuit用法及代码示例
注:本文由纯净天空筛选整理自networkx.org大神的英文原创作品 networkx.algorithms.components.biconnected_components。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。