contracted_edge#
- contracted_edge(G, edge, self_loops=True, copy=True)[source]#
返回由收缩指定边得到的新图。
边收缩将边的两个端点识别为一个单一节点,该节点连接到原有两个节点所连接的任何边。通过边收缩得到的新图称为原图的*子图*。
- Parameters:
- GNetworkX图
将要收缩边的图。
- edge元组
必须是
G
中的两个节点。- self_loops布尔值
如果为True,
G
中连接边端点的任何边(包括edge
)在返回的图中将成为新节点的自环。- copy布尔值(默认为True)
如果为True,将在
G
的副本上执行收缩操作,否则将在原地进行收缩。
- Returns:
- NetworkX图
一个与
G
类型相同的新图对象(G
保持不变),其中edge
的端点被识别为一个单一节点。edge
的右节点将被合并到左节点中,因此返回的图中只会出现左节点。
- Raises:
- ValueError
如果
edge
不是G
中的边。
See also
Examples
尝试收缩两个非相邻节点会引发错误:
>>> 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