Lempel - Ziv 分解与离线压缩块合并技术解析
1. Lempel - Ziv 分解在语法构建中的应用
在数据处理领域,Lempel - Ziv(LZ)分解有着重要的应用。给定长度为 k 的 LZ 分解,我们能够在 O(k log n) 的时间内构建出大小为 O(k log n) 的对应语法。
具体证明过程如下:下一个因子 fi 会被分解成若干段 S1, S2, …, St(i)。假设已经有了 S1, S2, …, St(i) 对应的语法,我们要做的是在 O(log n) 时间内,通过向语法 G 中仅添加 O(log n) 个非终结符和产生式,为 S1, S2, …, St(i) 的连接创建一个 AVL 语法。
序列 (S1, S2, …, St(i)) 由右侧序列和左侧序列组成。根据引理 4,通过向 G 中添加对数级别的非终结符,可以计算出对应这些序列的语法 H′ 和 H′′,然后将它们连接起来。假设 R1, R2, …, Rk 是右侧子树,连接这些子树所需的总工作量和额外非终结符数量可以这样估算:
[
\sum_{i = 2}^{k} |height(R_i) - height(G_{i - 1})| \leq \sum_{i = 2}^{k} \max {height(R_i) - height(R_{i - 1}), 1} \
\leq \sum_{i = 2}^{k} (height(R_i) - height(R_{i - 1})) + \sum_{i = 2}^{k} 1 \leq height(R_k) + k = O(\log n)
]
对于左侧序列,情况是对称的。总体而言,处理每个因子 fi 会使语法以
超级会员免费看
订阅专栏 解锁全文
16

被折叠的 条评论
为什么被折叠?



