zoukankan      html  css  js  c++  java
  • Huffman编码

    Huffman编码是一种比较好的变长编码的方式. 一般的方式中Huffman树的度为2, 一般采用的是Huffman树. 这个时候其实是对应的使用两个字符进行编码的方式. 但是如果采用的编码字符数多于两个的时候, 该怎么构建Huffman树呢?

    是所采用的编码的个数. 其实, 对于的情况, 第一次进行合并的时候应该合并个, 其中,并且.这样我们可以进行遍历, 找到合适的: .

    所以此时构建步骤如下:

    1. 根据上面的公式求出

    2. 将所有的结点放入到优先队列Q中, 然后不断的从Q中取出d个结点, 将这d个结点合并成一棵树,然后插入到Q中去.

    3. 下面是每棵子树合并成一棵树,不断的进行,直到只剩一棵树.

    伪代码如下:

    //计算d和k

    for(int i=2;i<=sigma;i++){

    k=(n-d)/(sigma-1)

    if(k*(sigma-1)==n-d)

    break;

    }

    //从Q中不断的取出d个子树,进行合并,然后再插入到Q中.

    for(int i=1;i<=d;i++){

    x=Q.top();

    ……

    }

    //不断的每sigma个进行合并.

    for(int i=1;i<=k-1;i++){

    for(int j=1;j<=sigma;j++)//从Q中取出sigma个进行合并

    {

    ….

    }

    }

    下面是一个课件,介绍Huffman编码的.

  • 相关阅读:
    Hadoop下面WordCount运行详解
    ubuntu下hadoop环境配置
    ubuntu下的jdk安装
    ASP.NET MVC4中用 BundleCollection使用问题手记
    Lab6: Paxos
    java命令行操作
    Mesos 入门教程
    Docker background
    找实习的日子
    九度 1557:和谐答案 (LIS 变形)
  • 原文地址:https://www.cnblogs.com/xkfz007/p/2664220.html
Copyright © 2011-2022 走看看