如何在图的边上分配权重?

2024-04-26 20:54:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用一堆边附加相同或不同的重量。但我在NetworkX中找不到这个函数。如果函数在Networkx中可用,那么它是什么?如果没有,那么建议我如何在python中使用边来附加权重? 例如:如果我有一些没有边的边列表

edges=[(1,2),(1,4),(3,4),(4,2)]

然后我要给所有边附加相同的权重(1)。在

预期输出是:weighted_edges=[(1,2,1),(1,4,1),(3,4,1),(4,2,1)]


Tags: 函数networkx列表建议权重重量edgesweighted
2条回答

请参阅networkx的tutorial。在

import networkx as nx
G = nx.Graph()
G.add_nodes_from([1, 2, 3, 4, 5])

G.add_edge(1, 2, weight=4.7 )
G.add_edges_from([(1,2), (2,3,{'weight':8})])
G[1][2]['weight'] = 4.7
G.edge[1][2]['weight'] = 4

在你的例子中

^{pr2}$

添加默认权重为1的所有边。在

最简单的版本是使用add_weighted_edges_from

import networkx as nx
G=nx.Graph()
G.add_weighted_edges_from([(1,2,1),(1,4,1),(3,4,1),(4,2,1)])
G.edges(data=True)  #print out the edges with weight
>[(1, 2, {'weight': 1}),
 (1, 4, {'weight': 1}),
 (2, 4, {'weight': 1}),
 (3, 4, {'weight': 1})]

如果您已经定义了edges,那么使用它们的权重创建边:

^{pr2}$

相关问题 更多 >