【问题标题】:How to find the farthest point (from a set of points) from a given point efficiently?如何有效地找到距给定点最远的点(从一组点)?
【发布时间】:2019-06-06 19:05:57
【问题描述】:

我正在寻找一种算法或数据结构来解决以下问题: 给定一组点 S。 并且以另一点的形式向您提供 Q 查询。 对于每个查询,找到集合中距给定点最远的点。

集合中最多有 10^5 个点和 10^5 个查询。所有点的坐标都在 0 到 10^5 的范围内。

我想知道是否有一种方法可以存储点集,以便我们可以在必要时回答 O(log n) 或 O(log^2 n) 中的查询。

【问题讨论】:

  • 如果让我实现它,我会亲自尝试找到平面的中心([所有点的平均X,所有点的平均Y])并尝试将平面分成N具有已知最大距离(直径)的径向截面,以便您至少知道从哪里开始寻找答案以及期待什么。它可以提供一些改进,但仍在O(n*n) 渐近时间内,所以我不会将其发布为答案。可能有某种更快的算法,分治法或找到凸多边形的外点。确实很有趣的问题! :)
  • 这有帮助吗? codeforces.com/blog/entry/50466
  • 欧几里得平面?
  • 另外,查询是在线还是离线?
  • @גלעדברקן 三元搜索答案不起作用。最远点 Voronoi 是一个合理的答案,但我想知道如何在不编写大量代码的情况下在图中构建和执行点定位。

标签: algorithm data-structures computational-geometry euclidean-distance


【解决方案1】:

引自“Approximate Furtheest Neighbor with Application 到环形查询”:

二维中的最远邻问题 可以使用点位置在线性空间和对数查询时间中求解 最远点 Voronoi 图(例如,参见 de Berg 等人 [5])。

其中[5]指的是“Marks教科书”:

Berg、Mark de、Otfried Cheong、Marc van Kreveld 和 Mark Overmars。 计算几何:算法和应用。 Springer-Verlag TELOS,2008 年。



一组八个点的最远邻 Voronoi 图。
图片来自 Jacometti,Welson。 “关于操作一般细分和计算 Voronoi 图的原语的注释。” (1992)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-10
    • 2023-03-27
    • 2019-03-03
    • 1970-01-01
    • 2010-12-09
    • 2021-08-20
    • 1970-01-01
    相关资源
    最近更新 更多