“这是三维的闭前缀支配统计,是正交范围查询的一种批量接口。权重可以为负;坐标完全相同的更新仍是不同记录,分别贡献自己的权。每个查询保留输入编号,不因排序而改变输出身份。所有记录在计算前已知,记…”
形式陈述
问题族
在计算几何中,先固定正整数维数
聚合版本额外给每条记录权重,取值于一个交换半群,并返回命中权重之和。交换律让无序点集的聚合不依赖枚举顺序;只有结合律的字符串连接会因 ab 与 ba 而不同,必须另定顺序后再谈相应查询。半群未必有单位元,所以空命中返回单独的空标记;若接口要求它仍是权重域中的元素,需额外指定幺元。也允许一侧端点为无穷的查询变体,例如三边区域
二维地图点集在矩形视窗内报告是标准实例。边界点是否计入由闭区间约定决定;旋转矩形、圆盘与半空间不是 orthogonal 查询,不能沿用坐标轴分解。
二维报告的一种实现
范围树的主树按
点集
查询
每个点出现在主树一条祖先路径的关联表中,总空间为
直觉
轴对齐查询可沿每个坐标独立切分。Range tree 先把横向区间分解成少量完整子树,再在各子树预存的纵向次序中筛选;分数级联还能让同一纵向端点在这些相关目录之间连续传递,而不重复二分。
例子与边界
二维视窗查询若命中
维数与结构边界
静态循环轴 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.