• 霍夫曼编码


    霍夫曼编码使用变长编码表对源符号(如文件中的一个字母)进行编码,其中变长编码表是通过一种评估来源符号出现机率的方法得到的,出现机率高的字母使用较短的编码,反之出现机率低的则使用较长的编码,这便使编码之后的字符串的平均长度、期望值降低,从而达到无损压缩数据的目的。

    霍夫曼编码具体步骤:

    1、将信源符号的概率按减小的顺序排序
    2、把两个最小的概率相加,始终将比较大的概率的分支放在右边,继续这一步骤(选取根节点权重最小的两棵树合并)
    3、画出到每个信源符号的路径,(左0右1)得到每个信源符号的霍夫曼码

    如:由6个不同字母组成的30个的字符串:CCABD EAFDD AACEE BBACA EFAAB CCCEA

    1、计算每个字母的概率

    A-----------------9
    C-----------------7
    E-----------------5
    B-----------------4
    D-----------------3
    F-----------------2

    2、将概率最小的相加并将较大概率分支放在右边

    3、按左0右1的原则画出每个信源符号路径,得下图

    获得每个字符的编码:

    A-----------------9-----------------10
    C-----------------7-----------------01
    E-----------------5-----------------111
    B-----------------4-----------------110
    D-----------------3-----------------001
    F-----------------2-----------------000

    EG:

    某通信码中只会出现8中字符,其概率分别是0.05,0.29,0.07,0.08,0.14,0.23,0.03,0.11,若对其进行霍夫曼编码,其霍夫曼树的高度是?

    计算字符概率:

    b-----------------29
    f-----------------23
    e-----------------14
    h-----------------11
    d-----------------8
    c-----------------7
    a-----------------5
    g-----------------3

    霍夫曼树为:

    所以高度是4

  • 相关阅读:
    Linux development tools
    Windows Live Mail: getting fewer ads
    美国签证(B1)经验总结
    谁要windows live messenger(msn8.0)的邀请?
    Use Google Calendar in Office
    C#中的ReaderWriterLock和LockFree Data Structure
    第一次看到“谷歌”出现在google.cn上
    解决SQL安装时提示挂起的方法
    asp 常见错误 不能打开注册表关键字 的处理方法
    Apache Web服务器安全配置全攻略
  • 原文地址:https://www.cnblogs.com/Mr-Wenyan/p/8665457.html
Copyright © 2020-2023  润新知