哈夫曼树

霍夫曼编码是一种无前缀编码。解码时不会混淆。其主要应用在数据压缩,加密解密等场合。

1. 由给定结点构造哈夫曼树

  (1)先从小到大排序(nlogn)

  (2)先用最小的两个点构造一个节点,父节点=两个节点的和,将父节点加入排序数组

  (3)重复(2)直到排序数组中只有一个节点为止

2. 由哈夫曼树构成哈夫曼编码

遵循左子树为0,右子树为1的规则,从root node->leaf node的edge产生01编码,带权路径值为:深度*数值(ps: 数值即排序时的值)

每个带权leaf node到root node的带权路径长度 = leaf node  -> root node 路径上所有节点的包含该带权叶节点权值组成部分之和。

整棵哈夫曼树的带权路径长度 WPL = 所有节点数值和

3. 哈夫曼应用案例

哈夫曼树在压缩含有大量不等长重复字符的文本中能起到很大作用。
例:2, 2, 3, 4
二进制表示 10, 10, 11, 100
huffman 压缩法则(二进制) 2 -> 0, 3 -> 1, 4 -> 10。
huffman 压缩结果(二进制)0, 0, 1, 10
如此一来占用空间某种程度上减少了。
其他例子:

Huffman Coding的更多相关文章

  1. hdu 1053 (huffman coding, greedy algorithm, std::partition, std::priority_queue ) 分类: hdoj 2015-06-18 19:11 22人阅读 评论(0) 收藏

    huffman coding, greedy algorithm. std::priority_queue, std::partition, when i use the three commente ...

  2. [IR] Huffman Coding

    为了保证:Block中,所有的叶子在所有的中间结点的前面.Static: Huffman coding Dynamic: Adaptive Huffman 一些概念 压缩指标 • Compress a ...

  3. 霍夫曼编码(Huffman Coding)

    霍夫曼编码(Huffman Coding)是一种编码方法,霍夫曼编码是可变字长编码(VLC)的一种. 霍夫曼编码使用变长编码表对源符号(如文件中的一个字母)进行编码,其中变长编码表是通过一种评估来源符 ...

  4. 哈夫曼编码(Huffman coding)的那些事,(编码技术介绍和程序实现)

    前言 哈夫曼编码(Huffman coding)是一种可变长的前缀码.哈夫曼编码使用的算法是David A. Huffman还是在MIT的学生时提出的,并且在1952年发表了名为<A Metho ...

  5. 【CodeForces】700 D. Huffman Coding on Segment 哈夫曼树+莫队+分块

    [题目]D. Huffman Coding on Segment [题意]给定n个数字,m次询问区间[l,r]的数字的哈夫曼编码总长.1<=n,m,ai<=10^5. [算法]哈夫曼树+莫 ...

  6. <Sicily>Huffman coding

    一.题目描述 In computer science and information theory, a Huffman code is an optimal prefix code algorith ...

  7. 哈夫曼编码的理解(Huffman Coding)

    哈夫曼编码(Huffman Coding),又称霍夫曼编码,是一种编码方式,可变字长编码(VLC)的一种.Huffman于1952年提出一种编码方法,该方法完全依据字符出现概率来构造异字头的平均长度最 ...

  8. Huffman coding & Huffman tree

    Huffman coding & Huffman tree Huffman coding 哈夫曼编码 / 最优二元前缀码 Huffman tree 哈夫曼树 / 最优二叉树 https://w ...

  9. jpeg huffman coding table

    亮度DC系数的取值范围及序号:                                                               序号(size) 取值范围 0 0  1 - ...

随机推荐

  1. shiro 前后端分离 seseeionId 问题

    http://www.cnblogs.com/cshhs/p/9269411.html https://www.w3cschool.cn/shiro/rmvk1if1.html http://www. ...

  2. win10 右键菜单很慢的解决方式

    本来想用 win7 的,不想花很多时间折腾了.现在新电脑主板硬盘CPU都在排挤 win7 ,真是可怜呀.正题: 新电脑的性能应该还算不错的, 18 年跑分 29w 以上,但在图标上面右键却都要转圈几秒 ...

  3. 3、lvs调度方法详解

    3.lvs类型和调度方法详解    http://www.178linux.com/13570 集群:将多台主机组织起来满足某一特定需求: 集群类型: LB:Load Balancing, 负载均衡集 ...

  4. 【NOIP 2018】Day2 T3 保卫王国

    Problem Description Z 国有\(n\)座城市,\(n - 1\)条双向道路,每条双向道路连接两座城市,且任意两座城市 都能通过若干条道路相互到达. Z 国的国防部长小 Z 要在城市 ...

  5. Jmeter工具

    开源,纯java,用于HTTP协议性能测试,接口协议测试工具,自动化测试工具 功能测试角度: 1.支持多种不同类型的协议.接口协议有多种 2.可以全面支持HTTP协议(后台交互) 3.其他非直接支持的 ...

  6. 【Django】【Shell】

    django-admin startproject guest python manage.py startapp sign python manage.py runserver 127.0.0.1: ...

  7. Java中String型与Date型数据的互相转换

    /** * Date类型转为指定格式的String类型 * * @param source * @param pattern * @return */ public static String Dat ...

  8. MD5加密与Hash加密

    一.Md5加密 MD5算法具有以下特点: 1.压缩性:任意长度的数据,算出的MD5值长度都是固定的. 2.容易计算:从原数据计算出MD5值很容易. 3.抗修改性:对原数据进行任何改动,哪怕只修改1个字 ...

  9. MAC office2016 安装及激活

    Office 下载地址: http://www.xitongtiandi.net/soft_yy/4285.html 破解补丁下载地址: https://bbs.feng.com/tencentdow ...

  10. js 捕获浏览器后退事件

    $(document).ready(function(e) {             var counter = 0;             if (window.history &&am ...