仅给出顶点

时间:2017-08-14 14:13:38

标签: algorithm performance graph minimum-spanning-tree processing-efficiency

经典MST问题

在最小生成树(MST)问题的经典公式中,我们给出了一组顶点V和一组边E。虽然有

enter image description here

给定V个顶点的可能边,边数通常比M小得多。

我的问题:暗示了一组边缘,未给出

在我的例子中,我有一组V顶点,其中每个顶点是2-D平面上的坐标(x,y)。我根本没有任何边缘,即集合E是空的。实际上,我知道所有M个边和它们的距离:它是每个可能的顶点对之间的距离。因此,已知边缘的大小是最大的,即| E | = M.

这是我的困境:如果V的大小| V |非常大(例如10,000),则M的值会非常快地增长。尝试使用带| V |的MST算法= 10,000和| E | = M = 50,000,000会导致严重的算法效率问题。

是否有一种方法可以在运行MST算法之前从最大边集E中删除/修剪/删除边缘,从而减少找到“满意”(即不一定是最佳)MST所需的时间?

可能的启发式

这是一种可能性:

  • 给定顶点的集合V,计算边界矩形
  • 将矩形划分为R个较小的矩形
    • 例如,将矩形垂直和水平分成四(4)个范围,产生十六(16)个较小的矩形
  • 对于每个子矩形,从位于子矩形中的所有顶点计算MST。
  • 连接生成的MST以生成一个大型MST。

任何人都可以提出一种有效的算法来仅在给定顶点集的情况下生成令人满意的MST吗?

1 个答案:

答案 0 :(得分:2)

听起来您正在尝试计算Euclidean minimum spanning tree

基于关键理念,维基百科包含更高效的O(nlogn)算法:

  

在平面中找到EMST的更好方法是注意它是n个点的每个Delaunay三角剖分的子图,这是一个大大减少的边集: