networkx.algorithms.approximation.kcomponents.k_components
的用法。用法:
k_components(G, min_density=0.95)
返回图 G 的近似 k-component 结构。
k
- 组件是图 G 的最大子图,它至少具有节点连接性k
:我们需要至少删除k
节点才能将其分解为更多组件。k
- 组件具有固有的层次结构,因为它们在连接性方面是嵌套的:连接图可以包含多个 2 组件,每个组件都可以包含一个或多个 3 组件,依此类推。此实现基于快速启发法来近似图的
k
组件结构 [1]。反过来,它基于快速近似算法,用于找到两个节点之间的节点独立路径数量的良好下界 [2]。- G:NetworkX 图
无向图
- min_density:Float
密度松弛阈值。默认值 0.95
- k_components:dict
以连接级别
k
作为键的字典和形成级别k
的 k-component 作为值的节点集列表。
- NetworkXNotImplemented
如果 G 是有向的。
参数:
返回:
抛出:
注意:
用于计算
k
组件结构 [1] 的近似算法的逻辑基于对k
核心和双连通组件重复应用简单而快速的算法,以缩小我们所使用的节点对的数量。必须计算 White 和 Newman 的近似算法来查找节点独立路径 [2]。更正式地说,该算法基于惠特尼定理,该定理规定了任何图 G 的节点连通性、边连通性和最小度之间的包含关系。该定理意味着每个k
组件都嵌套在k
边内- 组件,而该组件又包含在k
核心中。因此,该算法计算每个k
核心的每个双连通部分中的节点对之间的节点独立路径,并对每个k
从 3 到输入图中节点的最大核心数重复此过程。因为在实践中,一个双分量内的
k
级核心的许多节点实际上是k级分量的一部分,因此算法所需的辅助图可能非常密集。因此,我们使用补图数据结构(参见AntiGraph
)来节省内存。 AntiGraph 仅存储实际辅助图中存在的not
边的信息。当将算法应用于此补图数据结构时,它的行为就好像它是密集版本一样。参考:
- 1(1,2)
Torrents, J. and F. Ferraro (2015) Structural Cohesion: Visualization and Heuristics for Fast Computation. https://arxiv.org/pdf/1503.04476v1
- 2(1,2)
White, Douglas R., and Mark Newman (2001) A Fast Algorithm for Node-Independent Paths. Santa Fe Institute Working Paper #01-07-035 https://www.santafe.edu/research/results/working-papers/fast-approximation-algorithms-for-finding-node-ind
- 3
Moody, J. and D. White (2003). Social cohesion and embeddedness: A hierarchical conception of social groups. American Sociological Review 68(1), 103-28. https://doi.org/10.2307/3088904
例子:
>>> # Petersen graph has 10 nodes and it is triconnected, thus all >>> # nodes are in a single component on all three connectivity levels >>> from networkx.algorithms import approximation as apxa >>> G = nx.petersen_graph() >>> k_components = apxa.k_components(G)
相关用法
- Python NetworkX k_clique_communities用法及代码示例
- Python NetworkX k_edge_components用法及代码示例
- Python NetworkX k_edge_augmentation用法及代码示例
- Python NetworkX k_edge_subgraphs用法及代码示例
- Python NetworkX katz_centrality用法及代码示例
- Python NetworkX kamada_kawai_layout用法及代码示例
- Python NetworkX katz_centrality_numpy用法及代码示例
- Python NetworkX kosaraju_strongly_connected_components用法及代码示例
- Python NetworkX karate_club_graph用法及代码示例
- 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用法及代码示例
- Python NetworkX single_source_dijkstra_path_length用法及代码示例
- Python NetworkX from_dict_of_dicts用法及代码示例
- Python NetworkX weisfeiler_lehman_subgraph_hashes用法及代码示例
- Python NetworkX transitive_closure_dag用法及代码示例
- Python NetworkX intersection用法及代码示例
- Python NetworkX MultiGraph.size用法及代码示例
- Python NetworkX Graph.size用法及代码示例
注:本文由纯净天空筛选整理自networkx.org大神的英文原创作品 networkx.algorithms.approximation.kcomponents.k_components。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。