【发布时间】:2013-07-01 07:09:25
【问题描述】:
让我们假设一个包含 > 25000 个节点的完整图。每个节点本质上是平面上的一个点。 它有 625M 的边。每条边都有长度,应该存储为浮点数。
我需要一个算法来找到它的 MST(在普通 PC 上)。
如果我采用 Kruskal 算法,它需要先对所有边进行排序,但我什至无法同时将边完全存储在内存中。
如果我选择 Prim 的算法,很难评估同时将多少条边存储在一个堆中,但可能大部分边在算法开始后很快就会存在。
是否有任何内存足够的算法可以让我避免对存储在文件中的边进行排序?
另外,是否有任何已知的 MST 算法利用任何树边缘满足三角形不等式这一事实?
【问题讨论】:
-
图表是否完整? 625M 就是 25000**2。另外,这里en.wikipedia.org/wiki/Euclidean_minimum_spanning_tree
-
@ZiyaoWei:谢谢,看起来正是我想要的。
标签: algorithm graph computer-science minimum-spanning-tree