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


Python NetworkX k_components用法及代码示例


本文简要介绍 networkx.algorithms.connectivity.kcomponents.k_components 的用法。

用法:

k_components(G, flow_func=None)

返回图 G 的 k-component 结构。

k - 组件是图 G 的最大子图,它至少具有节点连接性 k :我们需要至少删除 k 节点才能将其分解为更多组件。 k - 组件具有固有的层次结构,因为它们在连接性方面是嵌套的:连接图可以包含多个 2 组件,每个组件都可以包含一个或多个 3 组件,依此类推。

参数

GNetworkX 图
flow_func函数

执行底层流计算的函数。默认值 edmonds_karp() 。此函数在具有右尾度分布的稀疏图中表现更好。 shortest_augmenting_path() 在更密集的图中表现更好。

返回

k_componentsdict

字典,输入图表中的所有连接级别 k 作为键,形成级别 k 的 k-component 的节点集列表作为值。

抛出

NetworkXNotImplemented

如果输入图是有向的。

注意

Moody 和 White [1](附录 A)提供了一种识别图中 k-components 的算法,该算法基于 Kanevsky 算法 [2],用于查找图中的所有 minimum-size 节点 cut-sets(在 all_node_cuts() 中实现)函数):

  1. 计算输入图 G 的节点连通性 k。

  2. 使用 Kanevsky 算法识别当前连接级别的所有k-cutsets。

  3. 基于删除这些割集生成新的图组件。割集中的节点属于诱导割的两侧。

  4. 如果图既不完整也不平凡,返回1;否则结束。

此实现还使用一些启发式方法(有关详细信息,请参阅[3])来加速计算。

参考

1

Moody, J. and D. White (2003). Social cohesion and embeddedness: A hierarchical conception of social groups. American Sociological Review 68(1), 103-28. http://www2.asanet.org/journals/ASRFeb03MoodyWhite.pdf

2

Kanevsky, A. (1993). Finding all minimum-size separating vertex sets in a graph. Networks 23(6), 533-541. http://onlinelibrary.wiley.com/doi/10.1002/net.3230230604/abstract

3

Torrents, J. and F. Ferraro (2015). Structural Cohesion: Visualization and Heuristics for Fast Computation. https://arxiv.org/pdf/1503.04476v1

例子

>>> # Petersen graph has 10 nodes and it is triconnected, thus all
>>> # nodes are in a single component on all three connectivity levels
>>> G = nx.petersen_graph()
>>> k_components = nx.k_components(G)

相关用法


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