如何使用随机权重创建一个随机的networkx图形

11

我想创建一个随机的networkx图,使每条边具有随机权重(代表长度)。

目前我正在使用networkx图形生成器中的gnm_random_graph函数:

g=nx.gnm_random_graph(5,5)

然而,我在添加随机权重方面遇到了困难。我的尝试基于这个问题的答案

for u,v,w in in g.edges(data=True):
     w = np.random.randint(0,10)

我这样做是为了探索和(希望)理解networkx库。

我的问题有两个部分:

1. 为了举例说明,生成简单的networkx图形的最佳方法是什么?

2. 对于现有的networkx图形,添加权重的最佳方法是什么?

1个回答

9

仅回答问题2(Q1很大程度上取决于上下文)

您可以使用(我相信无论是在networkx 1.x还是2.x中都适用):

import random
#code creating G here
for (u,v,w) in G.edges(data=True):
    w['weight'] = random.randint(0,10)

变量w是一个字典,其键是所有不同的边属性。
另外在networkx 2.x中,您可以执行以下操作:
for (u, v) in G.edges():
    G.edges[u,v]['weight'] = random.randint(0,10)

在networkx 1.x中,您可以这样做:

for (u, v) in G.edges():
    G.edge[u][v]['weight'] = random.randint(0,10)

1
考虑提到 import random - Zubo
1
@zubo 谢谢。完成了。 - Joel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接