condensation#
- condensation(G, scc=None)[source]#
返回 G 的缩合图。
G 的缩合图是将每个强连通分量收缩为一个单一节点的图。
- Parameters:
- GNetworkX 有向图
一个有向图。
- scc: 列表或生成器(可选,默认=None)
强连通分量。如果提供,
scc
中的元素必须对G
中的节点进行分区。如果没有提供,将计算为 scc=nx.strongly_connected_components(G)。
- Returns:
- CNetworkX 有向图
G 的缩合图 C。节点标签是 G 的强连通分量列表中组件索引的整数。C 有一个名为 ‘mapping’ 的图属性,包含一个字典,将原始节点映射到它们所属的 C 中的节点。C 中的每个节点还有一个 ‘members’ 节点属性,包含形成该节点所代表的强连通分量的原始节点集合。
- Raises:
- NetworkXNotImplemented
如果 G 是无向图。
Notes
将所有强连通分量收缩为一个节点后,生成的图是一个有向无环图。
Examples
将两个强连通节点集合收缩为两个不同的强连通分量,使用杠铃图。
>>> G = nx.barbell_graph(4, 0) >>> G.remove_edge(3, 4) >>> G = nx.DiGraph(G) >>> H = nx.condensation(G) >>> H.nodes.data() NodeDataView({0: {'members': {0, 1, 2, 3}}, 1: {'members': {4, 5, 6, 7}}}) >>> H.graph["mapping"] {0: 0, 1: 0, 2: 0, 3: 0, 4: 1, 5: 1, 6: 1, 7: 1}
将一个完全图收缩为一个单一的强连通分量。
>>> G = nx.complete_graph(7, create_using=nx.DiGraph) >>> H = nx.condensation(G) >>> H.nodes NodeView((0,)) >>> H.nodes.data() NodeDataView({0: {'members': {0, 1, 2, 3, 4, 5, 6}}})