“动态插删由顺序统计树维护大小摘要,流式受限空间则可采用分位数摘要并报告秩误差。这些是不同更新和误差接口。随机增量构造逐项加入并维护全局结构,Quickselect 则不断缩小一个秩子问题,两…”
形式陈述
通用框架
把
反向分析
这一步需要明确结构如何由当前对象集合决定。一种常用的充分条件是:事先固定特征
组合退化的选择规则也事先固定;
若所有这样的集合都满足
直觉
随机排列让第
例子与边界
有序点间隙的反向计数
先看实线上的三个点
梯形图例子
增量插入互不相交线段构造平面梯形分解。新线段只穿过与它相交的一串现有梯形,替换成新梯形;history DAG 记录旧梯形如何被替换,使点定位查询沿历史走到当前叶,而不是每次扫描全部梯形。
退化与边界
共线、相同端点或多对象同时定义特征会破坏“一般位置”计数,需符号扰动或明确 tie-breaking。只证明结构改变量小还不够,寻找冲突特征和更新 conflict graph 也要计时。若对手能根据已见随机顺序在线生成后续对象,固定输入的随机排列分析不再直接成立。
推论与应用
Conflict graph 与 history DAG
Conflict graph 将尚未插入对象连到它会破坏的当前特征。插入
History DAG 保留“旧特征被哪些新特征替代”的边。点定位从初始特征开始,只沿包含查询点的孩子前进;即使旧特征已不在当前结构,它仍提供搜索导航。删除全部旧节点会省空间,却失去查询路径。
LP-type 问题处理另一种压缩:保留优化值及未来违反关系,而不是保留全部几何特征。其极端元素是全部基的交,允许一份规范解有多种基;抽样恒等式计真正改变答案的删除,不把每条紧约束都当成唯一固定定义对象。
冲突图的一次更新
在计算几何的平面梯形图例子中,插入新线段时先沿当前点定位结构找到它穿过的梯形链。删除这些冲突梯形,按线段端点和上下边界切出新梯形,再把原来指向被删区域的查询 DAG 叶替换为局部判定节点;无关区域完全不动。
冲突图显式维护“未插入对象—当前特征”边时,处理步骤是:
- 从新对象的冲突邻接表收集将被删除的特征;
- 创建局部新特征并确定其边界;
- 只扫描旧冲突邻居,把仍冲突的对象转接到新特征;
- 删除失效特征及其冲突边。
在前述固定定义集/冲突集条件下,反向删除最后对象所破坏的特征,恰对应正向新建的特征。其定义集大小为常数,最后对象落在其中的概率才为
参考资料
- Kenneth L. Clarkson,A General Randomized Incremental Reconstruction Procedure,§3 的一般配置、定义对象与冲突条件。
- Kenneth Clarkson, Peter Shor, Applications of Random Sampling in Computational Geometry II, Discrete & Computational Geometry, 1989.
- Mark de Berg et al., Computational Geometry: Algorithms and Applications, 3rd ed., Springer, 2008, randomized incremental algorithms.