Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在networkx中加速随机最小生成树?_Python_Optimization_Networkx - Fatal编程技术网

Python 在networkx中加速随机最小生成树?

Python 在networkx中加速随机最小生成树?,python,optimization,networkx,Python,Optimization,Networkx,下面是一些代码,其目标是使用贪婪和随机边权重构建随机生成树。它的运行速度比我希望的要慢得多。有什么加速的方法吗 随机生成的权值和最小生成树的采样速度都比较慢。。。第一个对我来说特别奇怪,因为只有179400条边和np.random.uniform(0,1179400)执行得非常快 (此处“慢”的意思是秒。) (我很乐意使用networkx以外的东西,但这并不可取。) 如果随机数的批量生成在测试中更快,那么就这样做吧 rand = np.random.uniform(0, 1, graph.edg

下面是一些代码,其目标是使用贪婪和随机边权重构建随机生成树。它的运行速度比我希望的要慢得多。有什么加速的方法吗

随机生成的权值和最小生成树的采样速度都比较慢。。。第一个对我来说特别奇怪,因为只有179400条边和np.random.uniform(0,1179400)执行得非常快

(此处“慢”的意思是秒。)

(我很乐意使用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

为什么要投否决票?我能做些什么来改进这个问题吗?这大约是速度的两倍,但对我来说仍然很奇怪,需要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