在o(n log n)中找到点的最短成对距离?


11

以下练习已分发给我指导的学生:

给定平面中的n个点,请设计一种算法,该算法可找到一对对所有点之间的距离最小的点。该算法应在时间o(n2)

有一个(相对)简单的分而治之算法,可以解决时间的任务Θ(nlogn)

问题1:是否有一种算法可以在最坏的情况下准确地解决给定的问题o(nlogn)

我怀疑这是有可能的是我记得在一些谈话中看到的结果(赞赏参考)。它指出沿着不超过恒定数目的线的东西cN点可被布置在周围的一些点处的平面p半径的圆内rRr所涉及的点的任何两个之间的最小距离。我认为c=7,这些点形成一个等边六边形,中心为p(在极端情况下)。

在这种情况下,以下算法应在n步之内解决它们的问题。

fun mindist [] | p::[] = INFINITY
|   mindist p1::p1::[] = dist(P[0], P[1])
|   mindist p::r = let m = mindist(r) in
                     min(m, nextNeighbour(p, r, m))
                   end

注意,这是(声称是)在线性时间内,因为在点只有一个恒定数量r可以是不大于较远远离mp(假设上面的语句); 只需调查这些点即可找到新的最小值。当然有一个陷阱。如何实现nextNeighbour(也许在线性时间内进行预处理)?

问题2:让一组点的和点p [R 。让[RRpRmR

mmin{dist(p1,p2)p1,p2R}

Rp,m:={ppRdist(p,p)m}

假设是有限的。是否有可能找到(在摊销后的时间与距离最小?(您可以假设是通过将调查点一一相加来构造的。)Rp,mpRp,mpO(1)Rp


2
我建议使用“最接近的对”作为关键字进行搜索。
冈本

到目前为止,这些都是标准的东西,请参见此处的前两章:goo.gl/pLiEO
Sariel Har-Peled

附言 如果您需要期望的时间,那么您甚至可以计算包含最小距离的Delaunay三角剖分。
domotorp 2012年

在问题1之后,您写出“在半径为r的圆内的某个点p周围的平面中,最多可以布置恒定数量的点,其中r是p与任何其他点之间的最小距离。” 这当然是不正确的:您可以在半径r的圆上取任意数量的点。如果r是任意两点之间的最小距离,则您的说法是正确的,在这种情况下,证明非常简单。
domotorp 2012年

正如已经指出的,第一个问题是教科书的内容:绝对不是研究水平。我不明白的第二个问题:对于任何,在你所要求的或者不存在,或者是最近的邻居在。那么这与问题1有什么不同?您要摊销什么(即,如果这是一个数据结构问题,什么是更新和查询)?p ' p řmppR
Sasho Nikolov

Answers:


12

在标准模型中,例如使用代数决策树,不可能在少于时间内解决问题。这是根据Yao和Ben-Or的工作得出的,该工作表明,在此模型中,无法确定一组输入数字是否全部不同(请参见http://people.bath.ac.uk/masnnv /Teaching/AAlg11_8.pdf)。遇到问题时,请想象所有这些都是真实的。如果两个点相同,那么您的输出将是距离为零的两个点,否则不然,因此解决您的问题也将解决DISTINCT NUMBERS问题。如果您想假设所有点都不同,则只需将添加到Ñ ε X Ñ ε 2 Ñ ε Ω Ñ 登录Ñ cnlognniϵxiDISTINCT NUMBERS问题的输入,在这种情况下,如果您的输出最多为,则数字不是全部都是不同的。(尽管在这种情况下,您必须使用一个Promise版本,其中任何两个不同数字的差至少,但我认为同一证明可以证明您在此还需要案件。)nϵ2nϵΩ(nlogn)


的确,谢谢。这也回答了问题2(否定)。
拉斐尔2012年

您提到的问题显然也称为元素区别问题
拉斐尔

@Sariel Har-Peled的参考文献(goo.gl/pLiEO)提供了一种实用的线性时间算法,用于查找最接近的配对。该文档直接解决了该论点,并解释说它不适用,因为该算法使用了更强大的计算模型。
凯文·克莱恩

1
是的,但是这个问题专门询问了最坏情况下的运行时间。但是我同意我所有的观察都已经出现在Sariel的论文中。
domotorp


0

据我了解的问题2一样,拉宾的算法也提供了一种答案。在每个时间步长处,数据结构都是一个网格,其单元格宽度小于到目前为止所看到的成对点之间的最小距离,并除以(这样,任何单元格都不能包含单个以上的点)。要回答问题2中的查询,您只需要将映射到网格中的一个单元并查看其周围恒定的单元数即可。通过算法分析,如果以随机顺序检查输入点集,则网格的摊销更新时间为预期的每个新点的。 pO12pO(1)


顺便说一句,我指的不是Lipton描述的算法版本,而是第一条评论(以及Kleinberg和Tardos的书)中描述的算法。
Sasho Nikolov

仅在期望中,请参阅domotorps答案。
拉斐尔2012年

我看不到任何您想将自己局限于确定性算法的地方。rabin的算法之所以有趣是因为它绕着决策树的下限(类似于比较排序与整数排序算法的下限)。顺便说一句,拉宾可能会使用更多的下限,即用于访问网格的哈希技巧
Sasho Nikolov 2012年

4
关于“ Rabin使用的更多内容”:还具有将实数输入舍入为整数的功能。需要对此格外小心:如果您建立了一个计算模型,在该模型中可以执行标准算术运算并对实数进行四舍五入,并且每次运算都在恒定时间内完成,那么就有可能在多项式时间内解决PSPACE完全问题。在这个模型中。但是Rabin仅将输入数字四舍五入(在不同的迭代中达到不同的精度水平),这种限定形式的舍入没有问题。
David Eppstein 2012年

@SashoNikolov我在中寻找最坏情况的时间,因此也在问题2 中寻找最坏情况的。这与确定性算法无关。我不确定如果将预期时间和摊销时间结合起来会怎样。O 1 o(nlogn) O(1)
拉斐尔2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.