美文网首页
霍夫曼编码

霍夫曼编码

作者: NoFacePeace | 来源:发表于2017-10-05 19:38 被阅读0次

概念

霍夫曼编码(Huffman Coding),又译为哈夫曼编码、赫夫曼编码,是一种用于无损数据压缩的熵编码(权编码)算法。
在计算机数据处理中,霍夫曼编码使用变长编码表对源符号(如文件中的一个字母)进行编码,其中变长编码表是通过一种评估来源符号出现几率的方法得到的,出现几率高的字母使用较短的编码,反之出现机率低的则使用较长的编码,这便使编码之后的字符串的平均长度、期望值降低,从而达到无损压缩数据的目的。
霍夫曼树又称最优二叉树,是一种带权路径长度最短的二叉树。所谓树的带权路径长度,就是树中所有的叶节点的权值乘上其根结点的路径长度。树的路径长度是从树根到每一结点的路径长度之和,记为WPL=(W1L1+W2L2+W3L3+...+WnLn),N个权值Wi(i=1,2,...n)构成一棵有N个叶结点的二叉树,相应的叶结点的路径长度为Li(i=1,2,...n)。可以证明霍夫曼树的WPL是最小的。

示例

霍夫曼树常处理符号编写工作。根据整组数据中符号出现的频率高低,决定如何给符号编码。如果符号出现的频率越高,则给符号的码越短,相反符号的号码越长。假设我们要给一个英文单字“ F O R G E T”进行霍夫曼编码,而每个英文字母出现的频率分别为“2 3 4 4 5 7”。

演算过程

  • 进行霍夫曼编码前,我们先创建一个霍夫曼树。
    • 将每个英文字母依照出现频率由小排到大,最小在左。
    • 每个字母都代表一个终端节点(叶节点),比较F.O.R.G.E.T六个字母中每个字母的出现频率,将最小的两个字母频率相加合成一个新的节点。发现F与O的频率最小,故相加2+3=5.
    • 比较5.R.G.E.T,发现R与G的频率最小,故相加4+4=8。
    • 比较5.8.E.T,发现5与E的频率最小,故相加5+5=10
    • 比较8.10.T,发现8与T的频率最小,故相加8+7=15
    • 最后剩下10.15,没有可以比较的对象,相加10+15=25
      最后产生的树状图就是霍夫曼树。
  • 进行编码
    • 给霍夫曼树的所有左链接0与右链接1
    • 从树根至树叶依序记录所有字母的编码

相关文章

  • 霍夫曼编码

    概念 霍夫曼编码(Huffman Coding),又译为哈夫曼编码、赫夫曼编码,是一种用于无损数据压缩的熵编码(权...

  • 霍夫曼编码

    问题: 请设计一个算法,给一个字符串进行二进制编码,使得编码后字符串的长度最短 思路:使用霍夫曼编码构造字符串编码...

  • 霍夫曼(Huffman)编码

    一、定义 霍夫曼(Huffman)编码是一种编码方式,主要用于数据文件的压缩。它的主要思想是放弃文本文件的普通保存...

  • 构造霍夫曼编码

    最终结果如下:

  • 图解霍夫曼编码

    【转】图解霍夫曼编码 以下文章来源于沉默王二 ,作者沉默王二 今天来给大家普及一下霍夫曼编码(Huffman Co...

  • 哈夫曼树

    戴维·哈夫曼【David Huffman】 著名的“霍夫曼编码”的发明人戴维.霍夫曼 (David Albert ...

  • 学会霍夫曼编码后,再也不用担心硬盘存不下影片了!

    图解霍夫曼编码,教不会我吃一包辣条 大家好,我是沉默王二。 今天来给大家普及一下霍夫曼编码(Huffman Cod...

  • 哈夫曼编码

    哈夫曼编码(Huffman Coding),又称霍夫曼编码,是一种编码方式,哈夫曼编码是可变字长编码(VLC)的一...

  • 数据结构——哈夫曼(Huffman)树+哈夫曼编码

    哈夫曼编码(Huffman Coding),又称霍夫曼编码,是一种编码方式,哈夫曼编码是可变字长编码(VLC)的一...

  • 十七. java数据结构 - 赫夫曼编码概述

    1.基本介绍 赫夫曼编码也翻译为 哈夫曼编码(Huffman Coding),又称霍夫曼编码,是一种编码方式, 属...

网友评论

      本文标题:霍夫曼编码

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