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编码的.

  • 相关阅读:
    tomcat8.5配置redis实现session共享(tomcat-redis-session-manager-master)
    HDU4292(KB11-H 最大流)
    HDU4280(KB11-G 最大流)
    POJ1149(最大流)
    POJ3281(KB11-B 最大流)
    POJ3436(KB11-A 最大流)
    Codeforces841B
    Codeforces841A
    HDU2255(KB10-K 二分图最大权匹配)
    HDU1281(KB10-D 二分图最大匹配)
  • 原文地址:https://www.cnblogs.com/xkfz007/p/2664220.html
Copyright © 2011-2022 走看看