【发布时间】:2022-11-23 06:27:17
【问题描述】:
问题
我有一个大约 200000 个节点的列表,这些节点代表一个城市中的纬度/经度位置,我必须计算最小生成树。我知道我需要使用 Prim 算法,但首先我需要一个连通图。 (我们可以假设这些节点在欧几里德计划中)
要构建这个连通图,我首先想到要计算完整的图,但是 (205000*(205000-1)/2 大约有 190 亿条边,我无法处理。
选项
然后我遇到了 Delaunay 三角剖分:事实上,如果我构建这个“Delauney 图”,它包含一个子图,即最小生成树,根据 Wikipedia,我总共有大约 600000 条边[..]它最多有 3n-6 条边。所以它可能是最小生成树算法的一个很好的起点。
另一种选择是在某种程度上构建一个近似连通图,但这样我可能会错过影响我的最小生成树的重要边。
我的问题
在这种情况下,Delaunay 是可靠的解决方案吗?如果是这样,除了这个问题的 delaunay 三角剖分之外,还有其他可靠的解决方案吗?
更多信息:这个问题必须在 C 中解决。
【问题讨论】:
-
边缘成本只是欧氏距离吗?
-
@EdwardPeters 我们可以假设是的。
-
作为一项规则,虽然维基百科并不完全准确,但它通常比 StackOverflow 的答案更可靠 - 所以如果维基百科说它,你可能只是相信它而不是问我们。不过,我认为这并不容易实施。如果你有一个图书馆可以为你做这件事,那就太好了。
-
拜托,德朗一个y。
标签: algorithm graph graph-theory minimum-spanning-tree