contracted_nodes#
- contracted_nodes(G, u, v, self_loops=True, copy=True)[源代码]#
返回收缩结果的图表
u和v.节点收缩将两个节点标识为单个节点,该节点与原始两个节点上的任何边缘相关联。
- 参数
- G网络X图表
其节点将被收缩的图。
- u, v节点
必须是中的节点
G。- self_loops布尔值
如果为True,则连接的任何边
u和v在……里面G在返回的图中的新节点上成为自循环。- copy布尔值
如果这为True(默认为True),则复制
G并返回它,而不是直接更改G。
- 返回
- 网络图
如果Copy为True,则为类型相同的新图形对象
G(离开G未修改)具有u和v在单个节点中标识。右侧节点v将合并到节点中u,仅限如此u将出现在返回的图形中。如果复制为FALSE,则修改G使用u和v在单个节点中标识。右侧节点v将合并到节点中u,仅限如此u将出现在返回的图形中。
笔记
对于多图表,重新对齐边的边键可能与旧边的边键不同。这是自然的,因为边缘键仅在每对节点内是唯一的。
对于非多重图,其中
u和v与第三个节点相邻w,边缘 (v,w)将收缩到边缘 (u,w),并将其属性存储到“收缩”属性中。此功能也可用作
identified_nodes.实例
在四个结点上收缩圈图的两个不相邻结点
C_4生成路径图(忽略平行边):>>> G = nx.cycle_graph(4) >>> M = nx.contracted_nodes(G, 1, 3) >>> P3 = nx.path_graph(3) >>> nx.is_isomorphic(M, P3) True
>>> G = nx.MultiGraph(P3) >>> M = nx.contracted_nodes(G, 0, 2) >>> M.edges MultiEdgeView([(0, 1, 0), (0, 1, 1)])
>>> G = nx.Graph([(1, 2), (2, 2)]) >>> H = nx.contracted_nodes(G, 1, 2, self_loops=False) >>> list(H.nodes()) [1] >>> list(H.edges()) [(1, 1)]