• 熵与信息论


    1. 数据压缩

    假设任何文件都可以被压缩到 n 个二进制位(bit),那么其最多可以表示 2n 个不同的压缩结果。也即,如果存在 2n+1 个文件,根据鸽笼原理,必然至少有两个文件得到同一压缩效果。这就意味着,这两个文件不可能都无损地还原。

    因此,可以得出一个相对抽象的结论,并非所有文件都可以被压缩到 n 个bit 位以内。

    数据压缩的原理,压缩原理其实很简单,本质上,所谓压缩,就是找出文件内容的概率分布(probability distribution),将那些出现概率高的部分代替成更短的形式。相应地,如果内容毫无重复,就很难压缩。极端情况就是,遇到那些均匀分布的随机字符串,往往连一个字符都压缩不了。比如,任意排列的10个阿拉伯数字(5271839406),就是无法压缩的;再比如,无理数(比如π)也很难压缩

    2. 从数据压缩到熵的引出

    压缩可以分解成两个步骤(哈夫曼编码):

    • 第一步是得到文件内容的概率分布,哪些部分出现的次数多,哪些部分出现的次数少;
    • 第二步是对文件进行编码,用较短的符号替代那些重复出现的部分。

    如果文件内容只有两种情况(1/5 vs 1/5比如扔硬币的结果),那么只要一个二进制位就够了,1 表示正面,0表示表示负面。如果文件内容包含三种情况(比如球赛的结果),那么最少需要两个二进制位。如果文件内容包含六种情况(比如扔筛子的结果),那么最少需要三个二进制位。

    一般来说,在均匀分布的情况下,假定一个字符(或字符串)在文件中出现的概率是 p,那么在这个位置上最多可能出现 1/p 种情况。需要 log2(1/p)个二进制位表示替代符号。

    这个结论可以推广到一般情况。假定文件有 n 个部分组成,每个部分的内容在文件中的出现概率分别为 p1,p2,...,pn,显然有 ipi=1。那么,替代符号占据的二进制最少为下面这个式子。

    log21/p1+log21/p2++log21/pn=ilog2(1/pn)

    3. 信息熵

    对于两个相等(n)的文件,概率 p 决定了这个式子的大小:

    • p 越大,表明文件内容越有规律,压缩后的体积就越小;
    • p 越小,表明文件内容越随机,压缩的程度不会太高;

    为了便于文件之间的比较,将上式除以 n,可以得到平均每个符号所占用的二进制位:

    log2(1/pn)/n

    进一步将其转换(p 是根据概率统计得到的)为:

    pnlog2(1/pn)=E(log21/p)

    又可视为一种期望,可以理解为,每个符号所占用的二进制位,等于概率倒数的对数的数学期望

    4. 简单释例

    • 假定有两个文件都包含1024个符号,在ASCII码的情况下,它们的长度是相等的,都是 1KB。甲文件的内容 50%是a,30%b,20%是c,则平均每个符号要占用1.49个二进制位。

    .5log2(1/.5)+.3log2(1/.3)+.2log2(1/.2)=1.485

    • 乙文件的内容10%是a,10%是b,……,10%是j,则平均每个符号

    10×.1log2(1/.1)=3.322

  • 相关阅读:
    模糊查询的like '%$name$%'的sql注入避免
    在VS2010中使用Git(转)
    android WebView解析 调用html5
    git
    推荐!手把手教你使用Git
    羽毛拍十大品牌
    乒乓球拍板和皮子世界排名
    足球小记
    centos 网络启动 在/etc/sysconfig/network-scripts/ifcfg-eth1onboot=yes即可
    MyEclipseGen--------生成
  • 原文地址:https://www.cnblogs.com/mtcnn/p/9422853.html
Copyright © 2020-2023  润新知