2、LZW与Ziv - Lempel压缩文本的模式匹配算法解析

LZW与Ziv - Lempel压缩文本的模式匹配算法解析

1. LZW压缩文本模式匹配基础

在处理LZW压缩文本的模式匹配问题时,我们先从基础的理论证明入手。对于集合 $V(u)$,根据其定义,对于任意 $u = u’a$(其中 $u’ \in \Sigma^*$ 且 $a \in \Sigma$),有:
$V(u) = V(u’) \cup { |u| \mid m \leq |u| \text{ 且 } m \in \overline{M}(u) }$。
这里引入了函数 $Prev(u)$,它返回字典树 $D$ 中代表 $u$ 的最长真前缀 $v$ 的节点,且满足 $|v| \in V(u)$。于是,$V(u)$ 又可表示为:
$V(u) = V(Prev(u)) \cup { |u| \mid m \leq |u| \text{ 且 } m \in \overline{M}(u) }$。
函数 $Prev(u)$ 可以在 $O(1)$ 时间内完成查询,不过需要 $O(|D|)$ 的时间和空间来实现。所以,在字典树 $D$ 的每个节点 $u$ 中,只需存储 $Prev(u)$ 的值以及一个布尔值来指示 $|u|$ 是否属于 $V(u)$ 即可。

基于引理4、5和6,我们得到定理2:以 $(S, u) \in 2^{ {1, \ldots, m}} \times D$ 为输入并枚举集合 $Output(S, u)$ 的过程,能够在 $O(|D| + m)$ 时间内使用 $O(|D|)$ 空间实现,并且该过程相对于 $|Output(S, u)|$ 是线性时间复杂度。

现在,我们可以完全模拟Shift - And算法在未

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值