identified_nodes#

identified_nodes(G, u, v, self_loops=True, copy=True)#

返回收缩结果的图表 uv .

节点收缩将两个节点标识为单个节点,该节点与原始两个节点上的任何边缘相关联。

参数
G网络X图表

其节点将被收缩的图。

u, v节点

必须是中的节点 G

self_loops布尔值

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

copy布尔值

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

返回
网络图

如果Copy为True,则为类型相同的新图形对象 G (离开 G 未修改)具有 uv 在单个节点中标识。右侧节点 v 将合并到节点中 u ,仅限如此 u 将出现在返回的图形中。如果复制为FALSE,则修改 G 使用 uv 在单个节点中标识。右侧节点 v 将合并到节点中 u ,仅限如此 u 将出现在返回的图形中。

笔记

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

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

此功能也可用作 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)]