contracted_edge#

contracted_edge(G, edge, self_loops=True, copy=True)[源码]#

返回收缩指定边后生成的图。

边收缩将边的两个端点合并为一个节点,新节点与原先连接到这两个端点的所有边相连。通过边收缩得到的图称为原图的子式(minor)。

参数:
GNetworkX 图

将对其边进行收缩的图。

edge元组

必须是 G 中的一对节点。

self_loops布尔值

如果为 True,则在 G 中连接 edge 两个端点的任何边(包括 edge 本身)在返回的图中将成为新节点的自环。

copy布尔值 (默认为 True)

如果为 True,则在 G 的副本上执行收缩,否则将在原图上进行收缩(in place)。

返回:
Networkx 图

一个与 G 类型相同的新图对象(G 不会被修改),其中 edge 的端点合并为一个节点。edge 的右节点将合并到左节点中,因此返回的图中只会出现左节点。

抛出:
ValueError

如果 edge 不是 G 中的一条边。

示例

尝试收缩两个不相邻的节点将引发错误

>>> G = nx.cycle_graph(4)
>>> nx.contracted_edge(G, (1, 3))
Traceback (most recent call last):
  ...
ValueError: Edge (1, 3) does not exist in graph G; cannot contract it

在由 n 个节点组成的环图中收缩两个相邻节点将得到由 n - 1 个节点组成的环图

>>> C5 = nx.cycle_graph(5)
>>> C4 = nx.cycle_graph(4)
>>> M = nx.contracted_edge(C5, (0, 1), self_loops=False)
>>> nx.is_isomorphic(M, C4)
True