Networkx 重复边

Networkx duplicate edges

如果将同一条边添加到 networkx 边数据结构中两次,那么它会在节点之间有两条边还是只有一条边?例如,spring 布局是否会显示节点与边缘 [(a,b),(a,b),(a,b),(a,b)] 的收敛程度高于 [(a,b),(a,b)]?如果我想对边缘进行加权,我该怎么做?

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

对于已经存在的边,再次添加它们没有效果。

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

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

创建图表:

G = nx.MultiGraph()

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

for i in G.nodes:
    print(i, G.edges(i))

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

G = nx.Graph()