网络 X 简单的嵌套视图



来自networkx.DiGraph.reverse文档。

DiGraph.reverse(copy=True)[source]返回图形的反面。 相反的是具有相同节点和边但边的方向相反的图形。

copy (bool optional (default=True))– 如果为 True,则返回保存反转边的新二元图。如果为 False,则使用原始图形的视图创建反向图形。

从 networkx 图形视图文档中:

注意:由于图形视图看起来像图形,因此最终可能会得到视图的视图链。小心链,因为它们在大约 15 个嵌套视图时变得非常慢。

问题

如果我反复调用图形上的G.reverse(copy=False)以在原始视图和反向视图之间交替,这是否会导致所谓的"嵌套视图链",即使视图是微不足道的循环?

看起来是这样的:

import networkx as nx
G = nx.directed_configuration_model([1,5]*30, [2,3,4]*20)  #a simple directed graph
H = G.reverse(copy = False)
H
>  <networkx.classes.graphviews.MultiReverseView at 0x10bf61c88>
I = H.reverse(copy = False)
I
>  <networkx.classes.graphviews.MultiReverseView at 0x10bf69a90>

如果你看一下源代码,在copy = False的情况下,它调用reverse_view,其代码在这里。 它不会做任何事情来检查它是否已经是一个反向视图。

如果不是这样,可能会带来问题。 您可能期望视图的行为与图形不同,如果它实际上返回了图形,则代码可能会行为异常。

最新更新