如何在 networkx 中高效地生成多个具有随机边权重的随机图

How to efficiently generate multiple random graphs with random edge weights in networkx

我想生成多个具有随机边权重的 Erdos-Renyi 图。但是,我的代码运行起来很慢,因为有两个嵌套循环。我想知道是否有人可以帮助我改进我的代码。

import networkx as nx
import random

#Suppose I generate 1000 different random graphs
for _ in range(1000):
    #Let's say I will have 100 nodes and the connection probability is 0.4
    G= nx.fast_gnp_random_graph(100,0.4)
    #Then, I assign random edge weights.
    for (u, v) in G.edges():
            G.edges[u,v]['weight'] = random.randint(15,5000)

当我 运行 使用 igraph R 中的类似代码块时,无论网络大小如何,它都非常快。我可以通过哪些替代方法来完成相同的任务而不会遇到执行时间缓慢的问题?

This benchmark 展示了许多图形库(来自不同语言)的性能。它确认 NetworkX 非常慢。 graph-tool Python 包似乎比 NetworkX 快得多。请注意,给定包的性能取决于您想要实现的目标,因为图形算法的性能非常依赖于所选的内部表示。