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