【问题标题】:Nearest trio of neighbours for non-intersecting ellipses非相交椭圆的最近邻三重奏
【发布时间】:2012-03-17 02:59:57
【问题描述】:

我正在解决一个问题,即为一组任意放置的非相交椭圆找到最近的三个邻居。作为一个新用户,我不允许包含图像标签,但我在页面底部包含了 URL,因为我一直认为我能够更好地使用视觉辅助工具来解释自己。这张图片展示了我所说的将 3 个最近的椭圆相互连接起来的阿波罗尼星圆的含义。

到目前为止,我已经尝试使用椭圆之间的最小距离并修改 Delaunay 三角剖分,通过增量和扫描线方法,使用各种技术涉及在每 3 个椭圆配置之间形成的三角形圆等,并尝试估计有边界的邻居盒子,并且完全没有关于如何真正有效地工作的想法

尽管我已经制定了一个解决方案,但它涉及详尽搜索并比较每个椭圆的三个椭圆与其他所有椭圆,并且时间复杂度为n(n-1)(n-2)/3!。最重要的是,每个计算都是迭代而不是代数完成的。

有没有人知道如何以代数方式完成这个并且低于n^2的时间复杂度?

即使是关于技术的建议也适合我尝试,因为现在我已经在这方面工作了将近 3 周,而且真的离一个体面的答案还差得远。

【问题讨论】:

  • 我在 MathOverflow link 上回答了这个问题。正如@zamazalotta 所说,但还有更多要说的。

标签: algorithm matlab computational-geometry ellipse nearest-neighbor


【解决方案1】:

您可以根据它们的边界框将椭圆打包到R-tree 中。 R-tree是一种二叉树状的空间对象数据结构,通过遍历支持高效的最近邻和kth最近邻查询。

对于具有许多椭圆的大型数据集,使用 R-tree 应该会显着减少距离测试的数量,只扫描查询附近树的子集。

希望这会有所帮助。

【讨论】:

  • Darren,谢谢您的建议,我想我将尝试按照@Joseph O'Rourke(数学溢出)的建议重新尝试计算 voronoi 图,以实际找到顶点与三重奏相关的将是我的下一步,所以我会同时得到答案。虽然如果我不能让它工作,就像我在论坛上发帖之前尝试过的那样,我会大胆地尝试你的建议,因为在看过它之后,我确实很喜欢它的声音,因为距离减少了搜索;搜索速度是我工作的关键。再次感谢您的帮助。罗斯。
【解决方案2】:

如果您为椭圆计算 Voronoi 图,那么您的圆中心点将放置在图的交点处。

http://ima.umn.edu/nuggets/voronoi.html

【讨论】:

  • 为此,我要尝试 voronoi 图的方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-12
  • 2011-06-18
  • 1970-01-01
相关资源
最近更新 更多