2D集的稀疏性

时间:2017-11-16 21:52:11

标签: algorithm computational-geometry

将元素(x,y)的 S 稀疏度定义为x,y实数,为最小实数 d < / strong>,满足这一点,对于 S 中的任何元素 v ,封闭的穿孔球以 v 为中心,半径 d ,非空(通过穿刺球,即球不包括它的中心)。很明显,这样的 d 存在,并且如果 S 非空,则是唯一的。

找到给定集合的稀疏性

显然,我们有天真的二次时间解决方案。

1 个答案:

答案 0 :(得分:2)

如果我理解正确,天真的解决方案是将距离最近点指向每个点,答案是最小值。

构建积分的MST(最小生成树)。 (形式上,这是完整图形的MST,其中点是顶点,边缘的权重是相应点之间的距离。)MST具有以下属性:对于每个顶点,入射到它的最小边缘在MST中。因此,仅检查MST的边缘就足以找到答案了。

构建一组点的MST的最快方法是在其上构建Delaunay triangulation,然后使用Kruskal's algorithm找到它的MST。这两个步骤都需要O(n log n)时间,这就是算法的总运行时间。

然而,构建Delaunay三角剖分相当复杂,因此请考虑搜索现有的库而不是从头开始编码。