二维集的稀疏性
Sparseness of 2D set
定义元素(x,y)的集合S的稀疏性,x,y为实数最小实数 d,满足对于 S 中的任何元素 v,闭合的、穿孔的-以 v 为中心,半径为 d 的球是非空的(通过穿孔球,即球不包括它的中心)。很明显,这样的 d 存在,并且是唯一的,如果 S 非空。
找出给定集合的稀疏性。
显然,我们有朴素的二次时间解。
如果我理解正确的话,天真的解决方案是取距离每个点最近的点,答案是这些最小值中的最大值。
构建你的点的 MST(最小生成树)。 (形式上,这是一个完全图的MST,其中点是顶点,边的权重是对应点之间的距离。)MST有一个属性:对于每个顶点,入射到它的最小边是在 MST 中。所以只检查 MST 的边就可以找到答案。
构建一组点的 MST 的最快方法是在 Delaunay triangulation on it and then find the MST of it using Kruskal's algorithm 处构建。这两个步骤都需要 O(n log n) 时间,这是算法的总 运行 时间。
但是,构建 Delaunay 三角剖分相当复杂,因此请考虑搜索现有库而不是从头开始编码。
定义元素(x,y)的集合S的稀疏性,x,y为实数最小实数 d,满足对于 S 中的任何元素 v,闭合的、穿孔的-以 v 为中心,半径为 d 的球是非空的(通过穿孔球,即球不包括它的中心)。很明显,这样的 d 存在,并且是唯一的,如果 S 非空。
找出给定集合的稀疏性。
显然,我们有朴素的二次时间解。
如果我理解正确的话,天真的解决方案是取距离每个点最近的点,答案是这些最小值中的最大值。
构建你的点的 MST(最小生成树)。 (形式上,这是一个完全图的MST,其中点是顶点,边的权重是对应点之间的距离。)MST有一个属性:对于每个顶点,入射到它的最小边是在 MST 中。所以只检查 MST 的边就可以找到答案。
构建一组点的 MST 的最快方法是在 Delaunay triangulation on it and then find the MST of it using Kruskal's algorithm 处构建。这两个步骤都需要 O(n log n) 时间,这是算法的总 运行 时间。
但是,构建 Delaunay 三角剖分相当复杂,因此请考虑搜索现有库而不是从头开始编码。