k_edge_components#

k_edge_components(G, k)[source]#

生成图 G 中每个最大 k 边连通分量的节点。

Parameters:
GNetworkX 图
k整数

所需的边连通性

Returns:
k_edge_components一个 k 边连通分量的生成器。每个返回的节点集合

在图 G 中将具有 k 边连通性。

Raises:
NetworkXNotImplemented

如果输入图是多重图。

ValueError:

如果 k 小于 1

See also

local_edge_connectivity()
k_edge_subgraphs()

与本函数类似,但由节点定义的子图 也必须具有 k 边连通性。

k_components()

与本函数类似,但使用节点连通性 而不是边连通性

Notes

尝试基于 k 使用最有效的实现。 如果 k=1,对于有向图,这仅仅是连通分量, 对于无向图,则是连通分量。 如果 k=2,将基于链分解运行来自 _[1] 的高效桥连通分量算法。 否则,将使用来自 _[2] 的算法。

References

[2]

Wang, Tianhao, et al. (2015) 一个简单的算法,用于找到所有 k 边连通分量。 http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0136264

Examples

>>> import itertools as it
>>> from networkx.utils import pairwise
>>> paths = [
...     (1, 2, 4, 3, 1, 4),
...     (5, 6, 7, 8, 5, 7, 8, 6),
... ]
>>> G = nx.Graph()
>>> G.add_nodes_from(it.chain(*paths))
>>> G.add_edges_from(it.chain(*[pairwise(path) for path in paths]))
>>> # 注意这与 k_edge_subgraphs 不同,返回 {1, 4}
>>> sorted(map(sorted, nx.k_edge_components(G, k=3)))
[[1, 4], [2], [3], [5, 6, 7, 8]]