图论里面求最小生成树的算法(如克鲁斯卡尔),怎样解决大数据量的计算与存储效率问题

问题的关键点其实在排序上面,可以根据你的边的权值的特点分成很多段,每段分别排序。如果值很密集,根据值把边取出来即可,都不用排了。
■网友
数据量:使用 Prim 算法,对于随机图而言,堆内的点数不会超过内存范围。如果使用 Kruskal 算法,可以调用外部排序算法,也可以在一定范围内解决存储问题。效率问题:严格最小生成树下界即为 【图论里面求最小生成树的算法(如克鲁斯卡尔),怎样解决大数据量的计算与存储效率问题】 图论里面求最小生成树的算法(如克鲁斯卡尔),怎样解决大数据量的计算与存储效率问题
,你可以使用一些非严格的随机、调整算法。
■网友
mapreduce大法好(Lattanzi 2011)。G=(V,E)Map: 把所有边hash成k份(为了分得均匀),E1到EkReduce:每一份得到一个树MSTi,这一份的其他边可以删掉合并剩下的边再分成多份,得到多个树,再合并...直到整个图里没有环,结束。至于得到树MST的过程,也可以不用Kruskal,有种叫paralleling MST的办法,删掉环里最大的边,形成新的环,继续删最大边...上面两个结合一下能跑O(logN)
■网友
排序nlogn的哪来的几何级数......你的PC配置怎么样,边全存下来也就几个G的内存,当然你也可以外存排序这个没问题合并的时候用并查集,要保证性能这个肯定要放内存,每个节点用32为整数也就400M的内存需求吧


    推荐阅读