16、字典压缩方法详解

字典压缩方法详解

1. 字典方法概述

在数据压缩领域,字典方法是一类重要的技术。不过,在搜索长匹配时,字典方法的速度往往较慢。搜索缓冲区的大小 S 也存在限制,虽然较大的搜索缓冲区能带来更好的压缩效果,但会减慢编码器的速度,因为搜索过程会花费更多时间,即便使用二叉搜索树也是如此。而且,增大两个缓冲区的大小意味着会生成更长的令牌,这反而会降低压缩效率。

例如,使用 2 字节令牌时,将一个 2 字符的字符串压缩成一个令牌,会得到 2 字节加上 1 个标志位;而将这两个字符以原始 ASCII 码形式写入,则是 2 字节加上 2 个标志位,二者在大小上差异很小。在这种情况下,编码器应选择后者,以未压缩的形式写入这两个字符,这样既能节省时间,又仅浪费 1 位。这就是所谓的编码器的 2 字节盈亏平衡点。当令牌变长时,盈亏平衡点会增加到 3 字节。

2. 重复时间编码方法

2.1 方法原理

该方法由 Frans Willems 开发,输入可以是任何符号,这里以二进制输入为例进行说明。输入符号会被分组成长度为 L 的单词,这些单词被放置在一个滑动缓冲区中。该缓冲区分为前瞻缓冲区和搜索缓冲区,前瞻缓冲区包含待压缩的单词,搜索缓冲区则包含最近处理的 B 个单词。

编码器会尝试将前瞻缓冲区最左边的单词与搜索缓冲区的内容进行匹配,每次只匹配前瞻缓冲区中的一个单词。若找到匹配项,该单词与匹配起始位置的距离(偏移量)用 m 表示,并通过一个 2 部分的前缀码进行编码,然后写入压缩流。由于每次只匹配一个单词,所以无需对匹配的符号数量进行编码。若未找到匹配项,则写入一个特殊代码,随后跟上未匹配单词的 L 个原始符号。

2.

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值