【发布时间】:2013-03-27 21:40:26
【问题描述】:
想象一下二维平面中的一组m 点,称为“候选点”。然后是以下两种情况之一:
还有一组
n点(“对象”)——见图1还有一组
n线与 X 或 Y 轴(“对象”)共线 - 见图 2
我想知道哪个候选对象对的笛卡尔距离最短。
请问,有谁知道这个问题在计算几何中是否有名称?有没有比 O(m*n) 更快的算法?如果对象保持不变,只有候选对象发生变化——通过一些巧妙的预计算,是否有可能比 O(m*n) 更快?
图。 1
c o
c
o c o
o c
c
c o
c o
c
o c
c
图。 2
| c |
-------------+----------------------------------+------
| |
| c | c
c |
| |
-------------+----------------------------------+------
| c c |
-------------+----------------------------------+------
| c |
【问题讨论】:
-
两个对象或线条是否可以与同一个候选对象配对?
-
另外,您真的关心对象与候选对象之间的距离是多少,还是只关心它们是否配对?
-
听起来很适合 k-d 树。
-
@CoreyOgburn:你的第一个问题:是的,第二个问题:嗯,好问题 - 有什么区别?如果我知道这对,我可以很快计算出实际距离,对吧?
-
我个人正在考虑优化代码。您可以通过简单地将 x 偏移量添加到 y 偏移量来获得距离的粗略估计,从而避免距离公式中的 sqrt。这不是一个准确的距离,但它会节省大量的处理时间。就像你说的,一旦他们配对,你就可以获得真正的距离。在它们配对之前,可能需要计算很多距离。
标签: algorithm geometry complexity-theory theory computational-geometry