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


Python NetworkX contracted_nodes用法及代码示例


本文简要介绍 networkx.algorithms.minors.contracted_nodes 的用法。

用法:

contracted_nodes(G, u, v, self_loops=True, copy=True)

返回收缩 uv 产生的图形。

节点收缩将这两个节点识别为与原始两个节点相关的任何边的单个节点。

参数

GNetworkX 图

节点将被收缩的图。

u, v节点

必须是 G 中的节点。

self_loops布尔值

如果这是 True,则在 G 中连接 uv 的任何边都将成为返回图中新节点上的自循环。

copy布尔值

如果这是 True(默认为 True),则复制 G 并将其返回,而不是直接更改 G

返回

Networkx 图

如果 Copy 为 True,则一个与 G 类型相同的新图形对象(保持 G 未修改)在单个节点中标识 uv。右侧节点 v 将合并到节点 u 中,因此返回的图形中只会出现 u。如果 copy 为 False,则使用在单个节点中标识的 uv 修改 G。右侧节点 v 将合并到节点 u 中,因此返回的图形中只会出现 u

注意

对于多重图,重新对齐边的边键可能与旧边的边键不同。这是很自然的,因为边键仅在每对节点中是唯一的。

对于 uv 与第三个节点 w 相邻的非多重图,边(vw)将收缩到边(uw),其存储到“contraction” 属性中的属性。

此函数也可用作 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)]

相关用法


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