赫夫曼树(最优二叉树),又称最优树,是一“类”(并不一定是一棵)带权路径长度最短的树.

C语言实现最优二叉树——霍夫曼(Huffman)算法 赫夫曼(Huffman)又称最优二叉树最优搜索,是路径长度的二叉。在许多应用中,常常赋给中结点个有某种意义的实数,称此实数为该结点的。从根结点到该结点之间的路径长度与该结点上的乘积称为结点的路径长度(WPL)中所有叶子结点的路径长度之和称为该路径长度,通常记为: 阅读详情

例:已知某系统在通信联络中只可能出现八种字符,其概率分别为
   0.05,0.29,0.07,0.08,0.14,0.23,0.03,0.11  试设计赫夫曼编码。

1.排序
   A      B      C      D   E      F      G      H
  0.03 , 0.05 , 0.07 , 0.08 , 0.11 , 0.14 , 0.23 , 0.29

2.      
<1>: 
               1.00
           0/        /1  
         0.58         0.42
        0/   /1     0/    /1
       0.29   H   0.19     G
      0/  /1    0/    /1
     0.15  F    D      E 
   0/    /1
  0.08    C
0/   /1
A     B 

WPL = A*5 + B*5 + C*4 + F*3 + H*2 + D*3 + E*3 + G*2 = 2.71
前缀编码:
 A:00000
 B:00001
 C:0001
 D:100
 E:101
 F:001
 G:11
 H:01
<2>:
   
                1.00
           0/          /1
          0.42         0.58
        0/   /1       0/    /1
       0.19   G     0.29      H
      0/   /1     0/    /1
   0.08     E   0.15      F
 0/  /1       0/    /1
A     B       C      D 
WPL = A*4 + B*4 + E*3 + G*2 + D*4 + C*4 + F*3 + H*2 = 2.71
前缀编码:
 A:0000
 B:0001
 C:1000
 D:1001
 E:001
 F:101
 G:01
 H:11

这题有两解了,出现这种情况的原因是:
出现两个相等的权和一个比这两个都小的权,这种情况下不能确定选择哪
个权和那个更小的权组合(比如:0.11,0.12,0.12).
所以,如果我们用手工去
求解,可能会得出很多种不同答案,它们的WPL值都一样,但形状不一,其
赫夫曼编码当然也相关甚大,这就给网络传输、编码、解码带来了很大的
难度,为了确保对于同一个问题无论在什么情况下得到的赫夫曼编码都是
一样的,这就会规定一定的顺序,具体怎么的,就不知道了...

赫夫曼树定义:假设有n个权值{w1,w2,...wn},试构造一棵有n个叶子结点的二叉树,
              每个叶子结点带权为wi,则其中带权路径长度WPL最小的二叉树称做
              最优二叉树或赫夫曼树。
赫夫曼树可以用于构造赫夫曼编程(前缀编码)。


结论:
赫夫曼树(最优二叉树),又称最优树,是一“类”(并不一定是一棵)带权路径长度最短的树。

PS:当然,赫夫曼树不一定要用赫夫曼算法构造,特例:1,2,3,4,5

http://bbs.csai.cn/bbs/view.Asp?Id=%7BD0E15691-E9E4-4194-BD86-A0332D19358D%7D

15、构造最优二叉树-赫夫曼(Huffman)算法 、基本概念 1、赫夫曼(Huffman)又称最优二叉树最优搜索,是路径长度的二叉。在许多应用中,常常赋给中结点个有某种意义的实数,称此实数为该结点的。从根结点到该结点之间的路径长度与该结点上的乘积称为结点的路径长度(WPL)中所有叶子结点的路径长度之和称为该路径长度,通常记为: 2、两结点间的路径:从结点到另结点所经过的结点序列;路径... 阅读详情

相关推荐

数据结构之赫夫曼树算法介绍和实现

、基础知识: (1)最优二叉树赫夫曼树)的介绍: a、路径长度:从个结点到另个结点之间的分支构成这两个结点之间的路径,路径上分支数目称做路径长度。 b、路径长度:从根到每个结点之间的路径长度之和。上篇介绍的完全二叉就是这种路径长度的二叉。 c、路径长度:结点的路径长度为从该结点到根之间的路径产度与结点上的乘积。路径长度中所有叶子结点的

lfeng_coding的博客 7502

上课老师讲的经典贪心法问题:哈夫曼编码

【包含了:哈夫曼编码、问题描述、构造思想、算法设计、构造实例、算法描述及分析】

小鳴人的博客 8349

哈夫曼编码

已知系统通信联络中只可能出现8字符,其概率分别为0.05,0.29,0.07,0.08,0.14,0.23,0.03,0.11,试编写算法求其赫夫曼编码。完整代码,在vs2013中完美通过,费时周时间完成的成果

赫夫曼树、赫夫曼编码、赫夫曼译码

赫夫曼树、赫夫曼编码、赫夫曼译码 题目要求 () 给定n个节点的重,构建赫夫曼树,设计赫夫曼编码。给定赫夫曼编码,完成译码。 已知系统通信联络中只可能出现A,B,C,D,E,F,G,H8字符,分别给出其出现的概率。 构建赫夫曼树(这里约定左分支表示‘0’,右分支表示‘1’),并给出码表。 ------1.文本输入“input1.txt”:共8个概率值,示例如下: 0.23 0....

乾巽的博客 1189

数据结构-哈夫曼编码java实现

1.哈夫曼编码是种可变字长编码 如果组编码中任编码都不是其他任何个编码的前缀,我们称这组编码为前缀编码。哈夫曼可用于构造的不等长编码方案。 2.算法流程 (1)根据给定的n个值{w1,w2,w3…,wn}构成n棵二叉的集合F={T1,T2,…Tn},其中每棵二叉Ti中只有为wi的根结点,其左右子均空。 (2)在F中选取两棵根结点的小的作为左右子构造一棵新的二...

weixin_44462294的博客 1265

哈夫曼编码/译码器

哈夫曼编码/译码器 题目 哈夫曼编码/译码器。利用哈夫曼编码进行信息通信可以大大提高信道利用率,缩信息传输时间,降低传输成本。但是,这要求在发送端通过个编码系统对待传数据预先编码,在接收端将传来的数据进行译码(复原)。对于双工信道(即可以双向传输信息的信道),每端都需要个完整的编/译码系统。试为这样的信息收发站写个哈夫曼编/译码系统。 需求 (1)初始化(Initialization)。从终端读入字符集大小n,以及n个字符和n个值,建立哈夫曼,并将它存于文件hfmTree中。 (2)编码(

qq_52399817的博客 2169

6.6 哈夫曼

构造哈夫曼,求哈夫曼编码的方法 第步先构造哈夫曼,然后再构造哈夫曼编码 1.构造哈夫曼的方法: 算法:求哈夫曼和哈夫曼表 void HuffmanCoding(Huffman Tree &HT,HuffmanCode &HC,int *w,int n) { //w存放n个字符的数组,构造哈夫曼,求n个字符的哈夫曼编码表 if(n<=1)retur...

嗑盐工作室 1248

霍夫曼最优二叉树)的实现

文章目录、相关概念1.节点的路径及路径长度2.节点的路径长度3.路径长度4.霍夫曼二、构建步骤三、代码实现 、相关概念 1.节点的路径及路径长度 路径:在中,个节点向下到达另个节点的通路,称为路径。 路径长度:路径中经历的分支数。 图中节点1到节点4的路径就是:1->2,2->4。路径长度为2。 2.节点的路径长度中,可以定义某个节点的值,从根节点到此节点的路径长度与此节点的值的乘积就是该节点的路径长度。 例如:上图中若定义节点4的值为4,则其

weixin_47306988的博客 2281

数据结构与算法之Huffman tree(赫夫曼树 / 霍夫曼 / 哈夫曼 / 最优二叉树)

赫夫曼树概述 定义 构造赫夫曼树步骤 代码实现

努力让自己发光,对的人才能迎着光而来 2万+

简述最优二叉树赫夫曼树

什么是哈夫曼: 给定N个值作为N个叶子结点,构造一棵二叉,若该路径长度达到小,称这样的二叉最优二叉树,也称为哈夫曼(Huffman Tree)。哈夫曼路径长度值较大的结点离根较近。 哈夫曼被用来进行哈夫曼编码,下面来介绍哈夫曼编码: 假设需要传送的电文为“ABACCDA”,它只有四种字符,只需要用两个字符的串就可以分辨,假设A,B,C,D的编码分别是00,01,10,11,则该电文的编码便是:“00010010101100”,总长为14位,对方接收时,只需要二位

time_money的博客 1万+

了解赫夫曼树文就够了

赫夫曼树及其应用(必考) . 定义 二. 赫夫曼算法 1.基本思想 2.算法的实现 三.赫夫曼编码 1.编码和解码(考例题) 2.编码实现 四.边学边练

智的博客 4886

最优二叉树——哈夫曼

:什么是最优二叉树? 从我个人理解来说,最优二叉树就是从已给出的目标结点(单独的结点) 经过种方式的组合形成一棵.使. 最优二叉树路径长度的二叉。根据结点的个数,值的不同,最优二叉树的形状也各不相同。它们的共同点是:值的结点都是叶子结点。值越小的结点,其到根结点的路径越长 官方定义: 在为wl,w2,…,wn的n个叶子所构成的所有二叉中,路径

曹胜欢 5万+

数据结构之最优二叉树

最优二叉树又称为哈夫曼,它是路径长度。路径是从个结点到另个结点之间的通路,路径上的分支数目称为路径长度路径长度是从根到每个叶子之间的路径长度之和。

qq_33501207的博客 3813

哈夫曼与哈夫曼编码

 最优的定义:设有 n 个叶子结点,且每个叶子结点有值,则包含这n个叶子结点的所有 m 叉中,必存在一棵路径长度小值的,称为“最优”。最优可能不止个!  路径: 从个结点到另个结点之间的分支所构成的通路 。  路径长度: 路径上分支的数目。   结点的路径长度:从根到该结点之间的长度l与结点值w的乘积 ( l * w ) 。   路径...

liuxiang15的博客 2026

已知系统通信联络中只可能出现8字符,其概率分别为0.05,0.29,0.07,0.08,0.14,0.23,0.03,0.11,试编写算法求其赫夫曼编码。

已知系统通信联络中只可能出现8字符,其概率分别为0.05,0.29,0.07,0.08,0.14,0.23,0.03,0.11,试编写算法求其赫夫曼编码。 这个题目在数据结构中是个比较经典的例子,刚开始我看到的时候,就有了很大的兴趣,毕竟对未知的事物来说这个是吸引人的,什么是译文,怎么破解以为,为什么只有0 1就能解出很多的说法,这就是赫夫曼编码的重要之处,当然其中也讲了压缩,当然这都是

yuanhangLVli的专栏 2万+

离散数学()复习题

离散数学() 试题 、单项选择题(每小题3分,本题共15分) 1.若集合A={a,b},B= {a,b,{a,b}},则( ). 2.集合A={1,2,3,4,5,6,7,8}上的关系R={<x,y>∣x+y=10且x,yA},则R的性质为( ). A.自反的 B.对称的 C.传递且对称的 D.反自反且传递的 A.0 B.2 C.1 D. 3 4.如图所示,以下说法正确的是( ...

愤怒的阿木木的博客 5817

二叉的应用

1. 实验目的:掌握二叉的链式存储结构和常用算法。利用哈夫曼设计最优压缩编码。 2. 实验内容: 1) 编写函数,实现建立哈夫曼和显示哈夫曼的功能。 2) 编写函数,实现生成哈夫曼编码的功能。 3) 编写主函数,从终端输入段英文文本;统计各个字符出现的频率,然后构建哈夫曼并求出对应的哈夫曼编码;显示哈夫曼和哈夫曼编码。 选做内容:修改程序,选择实现以下功

AlienTech for better life!~ 1199

信息论II:最优二叉树与Huffman编码

本期内容览:JSON的“噪音”与“信噪比”噪音量的理论上限、逆波兰表达式信息论与压缩技术:字符串vs字节串最优二叉树、FPS/2.0Huffman编码...

全栈空间 1438
上一篇: 李开复给中国学生的第四封信:大学四年应是这样度过
下一篇: 什么是MIS?
Vigorcsdn
博客等级 码龄23年 0粉丝 28原创
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值