zt:文本压缩编码

基本定义
文本压缩(text compression) 是数据压缩(data compression) 的一个分支, 属于无损压缩(lossless compression) 。它的目标是通过对数据施加某种操作或变换使之长度变短的同时, 还必须保证原始数据能够从压缩产生的压缩码中得以精确的还原。主要的文本压缩编码有:Huffman 编码,算术编码,游程编码,LZ 编码,LZW编码等。
算法分类
文本压缩算法可以划分为统计方法和词典编码方法。
统计方法当以Huffman 编码( Huffman coding) 和算术编码(arithmetic coding) 为代表。这种方法需要统计信源符号的概率分布情况, 并根据统计结果产生压缩码。统计可以一次性完成(如静态Huffman 编码) , 也可以边编码边统计(如动态Huffman 编码) 。
Huffman
在50年代初提出的以具有前缀性质的变长码为特征的Huffman编码是数据压缩领域的一个重要里程碑, 曾经统治数据压缩领域达30 年之久, 至今研究它的文章仍旧源源不断。这种编码技术长期以来一直被许多工程技术人员视为最佳的编码方法。
算术编码
70 年代后期提出、80 年代末得以迅速流行的算术编码, 无论从编码效率上还是从时间性能上, 大有取代并淘汰Huffman 编码的趋势。算术编码绕过了用一个代码一一对应一个信源符号的做法, 它用一个单独的浮点输出数值给整个一条消息编码, 从而每个符号对于输出代码的净效应可以是一个小数位数。
算术编码与Huffman 编码本质上都假定信源中符号独立无关, 即信源系零阶Markov 信源。与事实上下文结构以及符号之间的存在相关性不符合。因此不可能成为所谓的最佳编码。并且当遇到信源符号趋于等概率时, 这两种方法的编码效率降低到极点。不能简单地用于汉语文本压缩。
词典编码(LZ77 算法,LZSS算法,LZ78 算法,LZW 算法)
词典编码方法则是基于数据中许多结构频繁重复再现这一事实, 人们可以对相同符号串分配同一码字、通过索引、或者其他诸如此类的方法编码。可以分为静态方法,半自适应方法,自适应方法。 这三类词典编码方法中, 目前占主导地位的是自适应方法。
70 年代末提出、80 年代中期走向实用化的LZ 压缩技术开创了现代词典编码方法, 并且已经牢固地统治着通用压缩世界。LZ 的基本思想是: 数据中的子串可以通过用指代先前已处理数据(即历史数据) 中相同子串的方式来描述。对历史数据的存储方式可以不同,例如,LZ77 采用滑动的缓冲区(或称窗口) 记录, LZ78 则选择词典方式进行登录。应该指出的是, 两者的压缩效率没有显著差异, 而且都是当重复的子串越长压缩效率越高。
http://baike.eepw.com.cn/baike/show/word/%E6%96%87%E6%9C%AC%E5%8E%8B%E7%BC%A9%E7%BC%96%E7%A0%81
原文地址:https://www.cnblogs.com/onlytiancai/p/1690478.html