当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python NetworkX k_components用法及代码示例


本文简要介绍 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]。

参数

GNetworkX 图

无向图

min_densityFloat

密度松弛阈值。默认值 0.95

返回

k_componentsdict

以连接级别 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)

相关用法


注:本文由纯净天空筛选整理自networkx.org大神的英文原创作品 networkx.algorithms.approximation.kcomponents.k_components。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。