第一篇文章已经发布,完整的Word版本和代码以及文本文件可在我上传的资源中下载
4、运行结果
4.2编码结果分析
输入一个文件,首先对文件中的字符总个数进行统计(忽略大小写),然后从文本头开始查找同一字符个数,并计算其概率最后由得出的字符概率求得信源熵。已知信源熵的计算公式如下:
由于文件太大,截取部分段落计算信源熵,并对段落中出现的字母次数和字母出现概率进行统计如下:
由运行结果可知,平均每个离散消息提供的自信息量是3.619738bit/sign
4.2编码结果分析
由结果可知,对七万余字的汤姆索亚历险记进行编码,共需要71秒,文本由337Kb压缩至74kb。
4.3解码结果分析
由结果可知,对压缩后的汤姆索亚历险记进行解压缩,共需要38秒,由74kb解压缩至307MB, LZ77压缩时需要做大量的匹配工作,而解压缩时需要做的工作很少,也就是说解压缩相对于压缩将快的多。这对于需要进行一次压缩,多次解压缩的情况,是一个巨大的优点。
4.4效率分析
文本字节 操作后字节 效率
压缩 334kb 74kb 77.8%
解压缩 74kb 304kb 91.01%
通过文本压缩和解压缩后的文本字节可看出,压缩效率为77.8%,解压缩效率为91.01%,用LZ77算法压缩的程度取决于很多因素,例如,选择滑动窗口的大小,为前向缓冲区设置的大小,以及数据本身的熵。最终,压缩的程度取决于能匹配的短语的数量和短语的长度。大多数情况下,LZ77比霍夫曼编码有着更高的压缩比,但是其压缩过程相对较慢。
用LZ77算法压缩数据是非常耗时的,国为要花很多时间寻找窗口中的匹配短语。然而在通常情况下,LZ77的解压缩过程要比霍夫曼编码的解压缩过程耗时要少。