Python 在networkx中加速随机最小生成树?
下面是一些代码,其目标是使用贪婪和随机边权重构建随机生成树。它的运行速度比我希望的要慢得多。有什么加速的方法吗 随机生成的权值和最小生成树的采样速度都比较慢。。。第一个对我来说特别奇怪,因为只有179400条边和np.random.uniform(0,1179400)执行得非常快 (此处“慢”的意思是秒。) (我很乐意使用networkx以外的东西,但这并不可取。)Python 在networkx中加速随机最小生成树?,python,optimization,networkx,Python,Optimization,Networkx,下面是一些代码,其目标是使用贪婪和随机边权重构建随机生成树。它的运行速度比我希望的要慢得多。有什么加速的方法吗 随机生成的权值和最小生成树的采样速度都比较慢。。。第一个对我来说特别奇怪,因为只有179400条边和np.random.uniform(0,1179400)执行得非常快 (此处“慢”的意思是秒。) (我很乐意使用networkx以外的东西,但这并不可取。) 如果随机数的批量生成在测试中更快,那么就这样做吧 rand = np.random.uniform(0, 1, graph.edg
如果随机数的批量生成在测试中更快,那么就这样做吧
rand = np.random.uniform(0, 1, graph.edges.size())
i = 0
for edge in graph.edges():
graph.edges[edge]["weight"] = rand[i]
i += 1
为什么要投否决票?我能做些什么来改进这个问题吗?这大约是速度的两倍,但对我来说仍然很奇怪,需要4秒钟来浏览179400条边的列表并设置它们的权重变量…@Lorenzo如果问题在循环中,那么可能是因为在每次迭代中都会有一到两次字典查找?“这可能很慢。@networkx文档说,在边上迭代的快速方法是直接使用邻接列表:
rand = np.random.uniform(0, 1, graph.edges.size())
i = 0
for edge in graph.edges():
graph.edges[edge]["weight"] = rand[i]
i += 1