Skip to content

模型Model

正交范围查询

施工中 · 内容逐步修订

Orthogonal range searching

在固定维点集中对轴对齐盒执行报告、计数、判空或聚合查询。

形式陈述 ​

问题族 ​

在计算几何中,先固定正整数维数 d。输入是一份含 n 条记录的静态点表 P,每条记录给出 Rd 中的有限坐标和唯一 ID。查询输入是轴对齐盒 Q=∏j[aj,bj],每个坐标轴上的端点比较采用全序。下文以 P∩Q 简写坐标落入 Q 的记录集合。Reporting 输出 P∩Q,成本必须含 k=|P∩Q|;counting 只返回 k,emptiness 返回布尔值。若不同记录坐标相同,用稳定 ID 区分,计数与报告保留每条记录。空输入直接给空报告或计数零;以下对数渐近界针对 n≥2,更小输入直接检查。

聚合版本额外给每条记录权重,取值于一个交换半群,并返回命中权重之和。交换律让无序点集的聚合不依赖枚举顺序;只有结合律的字符串连接会因 ab 与 ba 而不同,必须另定顺序后再谈相应查询。半群未必有单位元,所以空命中返回单独的空标记;若接口要求它仍是权重域中的元素,需额外指定幺元。也允许一侧端点为无穷的查询变体,例如三边区域 [a,b]×(−∞,c]。

二维地图点集在矩形视窗内报告是标准实例。边界点是否计入由闭区间约定决定;旋转矩形、圆盘与半空间不是 orthogonal 查询,不能沿用坐标轴分解。

二维报告的一种实现 ​

范围树的主树按 x 坐标建立平衡搜索树,每个节点保存其子树点按 y 排序的关联表。查询 [x1,x2]×[y1,y2] 先找两个 x 端点的分叉位置,把横向范围分解为 O(log⁡n) 个规范子树,再在各关联表中用二分查找定位 y 区间。

点集

(1,4),(2,1),(3,3),(5,2)

查询 [2,5]×[2,3] 时,横向候选是后三点,关联表再按 y 过滤出 (3,3),(5,2),输出 k=2。任何 reporting 结构都至少要为这两个输出付出 Ω(k) 时间。

每个点出现在主树一条祖先路径的关联表中,总空间为 O(nlog⁡n)。查询访问 O(log⁡n) 张表,每表一次二分,朴素 counting 为 O(log2⁡n),reporting 为 O(log2⁡n+k)。分数级联共享后续定位,把二维报告降到 O(log⁡n+k),但不消除输出项。

直觉

轴对齐查询可沿每个坐标独立切分。Range tree 先把横向区间分解成少量完整子树,再在各子树预存的纵向次序中筛选;分数级联还能让同一纵向端点在这些相关目录之间连续传递,而不重复二分。

例子与边界

二维视窗查询若命中 k 个点,任何结构都至少要输出这 k 项;计数接口则可以只聚合规范子树摘要。边界取开区间还是闭区间、重复坐标怎样打破平局,以及点集能否动态更新,都会改变端点处理与维护成本。

维数与结构边界 ​

d 维递归 range tree 的典型空间达到 O(nlogd−1⁡n)。只有 d 固定时,才能把指数依赖藏进多对数记号;高维中必须显式写出维数。

静态循环轴 k-d tree也实现固定维矩形报告,空间和最坏查询界与范围树不同;优先搜索树则实现二维三边报告变体。报告与计数也有不同空间权衡,静态关联表不自动支持点插删。把这些结构统称“空间树”会丢失可比较的保证。

semigroup query 还取决于权重运算是否可逆。若只能结合不能相减,不能随意把 counting 的前缀差技巧搬来;接口必须连同代数假设一起说明。

推论与应用

正交范围查询是地图视窗、数据库多列过滤和几何报告结构的基础接口。Range tree、k-d tree 与 priority search tree 分别选择不同的空间、查询形状和最坏界;应用时应先固定 reporting、counting 或 semigroup 聚合,而不是只按“多维搜索”选结构。

CDQ三维支配统计在全部记录已知时,把第一维变成更新在查询之前的顺序,再用分治唯一分配跨半贡献。第二维扫描配合第三维前缀和,能够处理重复坐标和正负权事件;它返回本批统计结果,并不建立可接收未来未知查询的范围树索引。

参考资料
  • Jon Bentley, “Multidimensional Binary Search Trees,” CACM, 1975.
  • Agarwal, Erickson, “Geometric Range Searching and Its Relatives,” 1999.
关系图谱11 个相邻概念 · 3 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组
类型化关系