美文网首页Linux
常用压缩算法思想

常用压缩算法思想

作者: 追寻者的小憩书铺 | 来源:发表于2018-08-07 10:04 被阅读292次

    几种常见的压缩算法原理介绍

    LZ77算法

    如果文件中有两块内容相同的话,那么只要知道前一块的位置和大小,我们就可以确定后一块的内容。所以我们可以用(两者之间的距离,相同内容的长度)这样一对信息,来替换后一块内容。由于(两者之间的距离,相同内容的长度)这一对信息的大小,小于被替换内容的大小,所以文件得到了压缩。

    Huffman编码

    我们把文件中一定位长的值看作是符号,比如把8位长的256种值,也就是字节的256种值看作是符号。我们根据这些符号在文件中出现的频率,对这些符号重新编码。对于出现次数非常多的,我们用较少的位来表示,对于出现次数非常少的,我们用较多的位来表示。这样一来,文件的一些部分位数变少了,一些部分位数变多了,由于变小的部分比变大的部分多,所以整个文件的大小还是会减小,所以文件得到了压缩。

    RLE

    RLE 又叫 Run Length Encoding ,是一个针对无损压缩的非常简单的算法。它用重复字节和重复的次数来简单描述来代替重复的字节。尽管简单并且对于通常的压缩非常低效,但它有的时候却非常有用(例如, JPEG 就使用它)。

    Rice

    Rice 编码背后的基本思想是尽可能的用较少的位来存储多个字(正像使用哈夫曼编码一样)。实际上,有人可能想到 Rice 是静态的哈夫曼编码(例如,编码不是由实际数据内容的统计信息决定,而是由小的值比高的值常见的假定决定)。

    编码非常简单:将值 X 用 X 个‘ 1 ’位之后跟一个 0 位来表示。

    zip压缩算法

    综合运用了多种简单压缩算法,来达到一个合理的压缩比例

    如先LZ,后Huffman,然后RLE...详情见下图

    zip压缩算法详解

    下文是原始连接,讲得十分深入:

    https://www.cnblogs.com/esingchan/p/3958962.html

    相关文章

      网友评论

      • 阿蓬阿霞:看不懂😀
        为专业思维点赞👍👍
        阿蓬阿霞:@阿蓬阿霞 呵呵,激起大家好奇心了……不懂也要研读一番😄😃
        追寻者的小憩书铺:@阿蓬阿霞 谢谢点赞,本来是写给自己备忘的,结果阅读数最多😂
      • 千漫千寻:看得一头雾水😂😂😂
        千漫千寻:@Maker_Chen 无论写得多具体,我都不会看懂,不是你的问题……请原谅一个头脑里没有任何数字概念的画者……
        追寻者的小憩书铺:@千漫千寻 具体得可以自行搜索一下,应该可以看的比较明白⊙ω⊙
        追寻者的小憩书铺:@千漫千寻 不好意思,这个是我写来备忘的,可能抽象了点😂😂😂

      本文标题:常用压缩算法思想

      本文链接:https://www.haomeiwen.com/subject/lgkovftx.html