关于哈夫曼编码的问题。
A 7
B 27
C 3
D 5
E 11
原理:取权重之和最小的两个节点(根节点)组成二叉树,如此循环,直到没有一个剩下。
第一步:
8
/ \
3 5
C D
第二步:
15
/ \
7 8
A / \
3 5
C D
第三步:
26
/ \
11 15
E / \
7 8
A / \
3 5
C D
第四步:
53
/ \
26 27
/ \ B
11 15
E / \
7 8
A / \
3 5
C D
最后一步——编码:
左分支为0,右分支为1,则结果为:
A: 010
B: 1
C: 0110
D: 0111
E: 00
先编造哈夫曼树,哈夫曼树构造规则:
假设有n个权值,则构造出的哈夫曼树有n个叶子结点。 n个权值分别设为 w1、w2、…、wn,则哈夫曼树的构造规则为:
(1) 将w1、w2、…,wn看成是有n 棵树的森林(每棵树仅有一个结点);
(2) 在森林中选出两个根结点的权值最小的树合并,作为一棵新树的左、右子树,且新树的根结点权值为其左、右子树根结点权值之和;
(3)从森林中删除选取的两棵树,并将新树加入森林;
(4)重复(2)、(3)步,直到森林中只剩一棵树为止
如下: ( 5364 )
/ \
(2251) ( 3113 )
/ \ / \
(1059) 1192 ( 1327 ) ( 1786 )
/ \ / \ / \
518 541 ( 650 ) 677 (835) ( 951)
/ \ / \ / \
(295) (355) (385) 450 462 (489)
/ \ / \ / \ / \
138 157 174 181 190 195 242 (247)
/ \
123 124
左边默认为0,右边为1得到编码是
123:111110 124:111111 138:10000 157: 10001 174:10010 181:10011
190:11000 195:11001 242:11110 450:1101 462:1110 518:000
541:001 677:101 1192:01
平均长度指所有叶子结点 频率*长度 /总频率 ?具体还是自己算吧。
你也可以给c编成标准答案,但是没有必要,因为你已经是正确的了,标准只是正确的一种情况
没问题,你的答案是正确的!是1100
哈夫曼编码问题?请详细点,谢谢?
权值w={5,29,7,8,14,23,3,11},画出哈夫曼树.个人认为, 图2的画法有不妥的地方.问题点就是:结点3和结点5组成新结点N8,那么新结点N8应该排在原有结点8的后面,还是前面?个人认为,应该按照图1的做法,将新结点N8排在原有结点8的后面.分析过程如下:八个权值从小到大排序是: 3 5 7 8 11 1...
哈夫曼编码问题
C D 最后一步——编码:左分支为0,右分支为1,则结果为:A: 010 B: 1 C: 0110 D: 0111 E: 00
哈夫曼编码的原理
一般,若将新合并后的支路排到等概率的最上支路,将有利于缩短码长方差,且编出的码更接近于等长码。这里图(a)的编码比(b)好。赫夫曼码的码字(各符号的代码是异前置码字,即任一码字不会是另一码宇的前面部分,这使各码字可以连在一起传送,中间不需另加隔离符号,只要传送时不出错,收端...
求解,关于数据结构的哈夫曼编码的问题
方案一应该指的就是下面那个图了.下面那个图是一棵二进制的哈夫曼树,其中因为是二进制编码,所以使用的是0\\1的边.那么对于每一个叶子节点来说,从根节点到叶子节点走过的边就是这个数字的编码.那么举一个例子,比如频数=2的也就是最左端的那个叶节点,根到它走了5个0,它的编号就是"00000";在比如...
请教一个哈夫曼编码问题
没错,哈弗曼跟你对应的编码树走变化,你从根结点开始编码就可以选择那个分支用0哪个用1,这样,你想要他是什么编码都可以,只是其他的编码也跟着变化,整体上,你每个字的编码位都不会有变化,4位的总是4位 你也可以给c编成标准答案,但是没有必要,因为你已经是正确的了,标准只是正确的一种情况 ...
Python算法之哈夫曼编码
问题: 哈夫曼编码,英文名称 Huffman Coding,有时也翻译为霍夫曼编码,在1952年提出的,是最好的编码方式。哈夫曼编码在电子通讯方面有着重要的应用,同时也广泛应用于数据压缩,其压缩率通常在20% 90%之间 赫夫曼码是可变字长编码(VLC)的一种。哈夫曼树是最优二叉树, 带权路径长度最小的二叉树。
关于哈夫曼编码的问题!急啊!!!
先将9个字符串全部编成哈夫曼码 1001000 1000101 1000011 1001000 1010101 1000001 01001110 1011010 1001001 这是二进制的编码 应该是对应十进制的 72 69 67 72 85 65 78 90 73 这么大的数字对应的明显不是字母表,如果没有猜错的话对应当应该是ASCLL码表 这九个数字对应的ASCLL码是:H E C H U...
信息论有关哈夫曼编码的问题
哈夫曼编码的MATLAB实现(基于0、1编码):clc;clear;A=[0.3,0.2,0.1,0.2,0.2];信源消息的概率序列 A=fliplr(sort(A));%按降序排列 T=A;[m,n]=size(A);B=zeros(n,n-1);%空的编码表(矩阵)for i=1:n B(i,1)=T(i);%生成编码表的第一列 end r=B(i,1)+B(i-1,1...
哈夫曼编码相同概率怎么分配
哈夫曼树中两个频率相同的字符不会有相同的哈夫曼编码,除非它们是相同的字符。哈夫曼编码采用定时清洗以消除误差扩散和采用缓冲存储以解决速率匹配以外,主要问题是解决小符号集合的统计匹配,例如黑(1)、白(0)传真信源的统计匹配,采用0和1不同长度游程组成扩大的符号集合信源。游程,指相同码元的...
数据结构哈夫曼编码问题,请高手帮忙
include <iostream.h> define MAX 21 typedef struct { char data; \/\/节点值 int weight; \/\/权重 int parent; \/\/父节点 int left;int right;} huffnode;typedef struct { char cd[MAX];int start;}huffcode;void main(){ huffnode ht[2*MAX];huffcode hcd[MAX],d;int i,k,...
左丘话依木: 两个最小的编码没有左右之分.是不同,哈夫曼编码不是唯一的,但是它们的WPL(带权路径长度)都是一样的.如果,最下面有两个二叉树,那么也不用考虑左右的问题,你只将最下面两个二叉树当作两个节点就可以了.记住:哈夫曼编码不...
茄子河区19728643032: 求解,关于数据结构的哈夫曼编码的问题 - ?
左丘话依木: 方案一应该指的就是下面那个图了.下面那个图是一棵二进制的哈夫曼树,其中因为是二进制编码,所以使用的是0\1的边.那么对于每一个叶子节点来说,从根节点到叶子节点走过的边就是这个数字的编码.那么举一个例子,比如频数=2的也就是最...
茄子河区19728643032: 一道关于哈夫曼编码的题该怎么做? - ?
左丘话依木: 首先,亲请记住,无论是数学题政治题C语言,任何情况下都不可以选“以上都不是”.哈夫曼编码是非常经典的一种变长编码方案.我偷个懒,方法描述如下:首先,将符号按照概率由大到小排队.编码时,从最小概率的两个符号开始,可选...
茄子河区19728643032: 求助有关哈夫曼树编码的问题?急! - ?
左丘话依木: 我去年数据结构课程设计做的就是这个,具体什么意思也忘得差不多了 反正做了好多天的 把这段代码复制给你void HuffmanCoding(HuffmanTree *HT,HuffmanCode *HC, LNode &L,int n){ //构造赫夫曼树HT,并求出n个字符的赫夫曼编码HC ...
茄子河区19728643032: 有关哈夫曼编码的问题!(请高手帮帮忙,谢谢了哦!)?
左丘话依木: 提问者只给了7个字母的权值,故,按7个字母求解. 由于各人不同,所构造的哈夫曼编码可能不同,先给出一种编码形式 a 0101 b 10 c 01000 d 00 e 01001 f 11 g 011 二进制表示易知. 与二进制比,此方法在保证准确的情况下,比较节省时间空间.
茄子河区19728643032: 哈夫曼树怎样构造编码? - ?
左丘话依木: 先编造哈夫曼树,哈夫曼树构造规则: 假设有n个权值,则构造出的哈夫曼树有n个叶子结点. n个权值分别设为 w1、w2、…、wn,则哈夫曼树的构造规则为: (1) 将w1、w2、…,wn看成是有n 棵树的森林(每棵树仅有一个结点); (2) ...
茄子河区19728643032: 哈夫曼编码原理 - ?
左丘话依木: 原发布者:a2420092945 Huffman树及其应用一、最优二叉树(霍夫曼树)预备知识:若干术语路d径:由一结点到另一结点间的分支所构成a→e的路径长度=2beacfg路径长度:路径上的分支数目树长度=10树的路径长度:从树根到每一结点的...
茄子河区19728643032: 如何证明哈夫曼编码一定是不重复的最优编码 - ?
左丘话依木: 哈夫曼编码完全依据字符出现概率来构造异字头的平均长度最短的码字,所以频率相同的编码可以互换,两种编码之后的字符串的平均期望长度是相同的.这里你和你同学做出的结果不同是因为哈夫曼树是二叉树,编码频率相同,但插入到二叉树的顺序不同,所以出现了不同的结果.
茄子河区19728643032: 哈夫曼树编码问题?
左丘话依木: 设8个字母依次为:a b c d e f g h 构成由8棵二叉树组成的集合F={a, b, c, d, e, f, g, h},如下图所示,圆圈代表二叉树节点,将字母出现的频率作为每棵二叉树的权重,写在节点的上方.构造哈夫曼树的过程如下: 1、 首先在二叉树集合F中取出...
茄子河区19728643032: 哈夫曼编码 - ?
左丘话依木: 哈夫曼编码(Huffman Coding)是一种编码方式,以哈夫曼树—即最优二叉树,带权路径长度最小的二叉树,经常应用于数据压缩. 在计算机信息处理中,“哈夫曼编码”是一种一致性编码法(又称"熵编码法"),用于数据的无损耗压缩....