Networkx重复边缘

use*_*er0 4 python networkx

如果将相同的边缘添加两次到networkx边缘数据结构,那么它是否会在节点之间有两条边或者只有一条边?例如,弹簧布局是否会显示节点收敛的边缘[(a,b),(a,b),(a,b),(a,b)][(a,b),(a,b)]?如果我想加重优势,我该怎么做呢?

Ima*_*ngo 7

你可以很快地测试它,但它只添加一次.边和节点在图结构中表示为字典,只有在实际不存在时才添加它们.

对于现有边缘,再次添加它们无效.


小智 5

这个答案有点晚了,但是为了完整起见...

您将需要使用Networkx MultiGraph来允许两个节点之间的多个边缘。

创建图形:

G = nx.MultiGraph()
Run Code Online (Sandbox Code Playgroud)

然后使用添加边缘G.add_edge()。您可以测试重复的边缘是否重复:

for i in G.nodes:
    print(i, G.edges(i))
Run Code Online (Sandbox Code Playgroud)

相反,如果您不希望重复边缘,只需将图形创建为:

G = nx.Graph()
Run Code Online (Sandbox Code Playgroud)