“Word RAM 的字级比较、移位和位运算直接决定前驱查询能在多大字长下跳过逐键扫描,也让简洁数据结构在接近信息下界的空间内并行处理一个 word 的位模式。哈希、整数排序、位图和大多数数组…”
形式陈述 ​
空间基准 ​
若规模
查询不变量 ​
把 DFS 进入节点记为左括号、退出记为右括号,任意前缀中左括号数不小于右括号数,末尾两者总数相等。父子、兄弟和子树导航可归约为括号匹配、excess 与 rank/select;正确性来自嵌套不变量,不是从压缩率直接推出。
直觉
Succinct 不只是“占用线性空间”,而是相对对象族的信息下界只多低阶冗余。编码负责区分所有对象,索引再把可导航的局部摘要压进低阶空间;若查询仍需完整解压,或每个节点保留普通指针,便失去了这项接口保证。
例子与边界
模型边界 ​
Compact、succinct 与 compressed 也不同:压缩结构可按实例熵使用更少空间,succinct 以对象族最坏信息下界为基准;self-index 还要求不保存原文也能定位内容。三者可能重叠,但不是同义标签。
有序树的括号编码全过程 ​
DFS 进入节点输出 (,离开输出 )。根带两个叶的树编码为 (()());扫描任意前缀时 excess=左括号数减右括号数非负,末尾归零。节点的开括号位置代表节点,匹配右括号界定其整个子树区间。
父节点可由前一个 excess 更小的位置恢复,第一个孩子是紧随开括号的下一开括号,下一兄弟在匹配右括号之后。支持这些操作需要 rank/select、find-close 与 excess 搜索索引;主体 2n bits 之外的辅助结构必须合计
信息下界的核对 ​
推论与应用
查询时间与全局表 ​
Word-RAM 常数操作假设
与压缩、自索引、动态结构对照 ​
Entropy-compressed 结构按具体数据分布/零阶熵缩小,succinct 按对象族最坏下界;self-index 还能从索引恢复原对象。动态插入括号会移动后缀位置并修改 excess,静态常数查询不自动支持更新,通常要付对数时间或更多冗余。
参考资料
- Guy Jacobson, Space-efficient Static Trees and Graphs, PhD thesis, 1989.
- Raman, Raman, Rao, “Succinct Indexable Dictionaries,” TALG, 2007.