algorithm - 到矩形缓存的最短距离

标签 algorithm data-structures computational-geometry

我有一个不必与轴平行的矩形列表。我还有一个与轴平行的主矩形。
我需要一种算法来判断哪个矩形是最接近的点(该点必须位于主矩形中)。矩形列表和主矩形在算法过程中不会改变,并且会被很多点调用,因此应该创建一些数据结构以使查找更快。
需要明确的是:矩形到点的距离是矩形中最近的点到该点的距离。
可以使用什么算法/数据结构来实现此目的?内存对此具有更高的优先级,n log n 可以,但 n^2 不行。

最佳答案

您应该能够使用 Voronoi 图来完成此操作,其中预处理时间为 O(n log n),查询时间为 O(log n)。由于对象是矩形而不是点,因此单元格可能是弯曲的。尽管如此,Voronoi 图应该可以很好地满足您的目的。 (参见http://en.wikipedia.org/wiki/Voronoi_diagram)

对于一个快速而肮脏的解决方案,您实际上可以在一天内开始工作,您可以做一些受局部敏感哈希启发的事情。例如,如果矩形间隔较好,您可以将它们散列到具有几个不同偏移量的方形存储桶中,然后对于每个查询,检查属于包含查询点的少数存储桶之一的每个矩形。

关于algorithm - 到矩形缓存的最短距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6171553/

相关文章:

c++ - 给定磁盘上的 1 TB 数据集,每个数据记录大约 1 KB,如何使用 512 MB RAM 和无限磁盘空间找到重复项?

c - 强烈返回错误的值

algorithm - 最大堆化二叉树

c++ - 具有相交多边形边信息的多边形和线段的交集

matlab - 在matlab中计算闭合曲线(或多边形)的曲率

algorithm - 平方矩阵和运行时间

Swift:获取下一个以零结尾的最高数字

javascript - 使用javascript按元素与给定目标的距离对整数数组进行排序

algorithm - 模糊图比较

algorithm - 给定 n 个重叠的多边形,如何以最少的多边形数量获得覆盖范围最大的集合