关于哈夫曼编码!!

作者&投稿:冷滢 (若有异议请与网页底部的电邮联系)
关于哈夫曼编码的!!!~

没错,哈弗曼跟你对应的编码树走变化,你从根结点开始编码就可以选择那个分支用0哪个用1,这样,你想要他是什么编码都可以,只是其他的编码也跟着变化,整体上,你每个字的编码位都不会有变化,4位的总是4位
你也可以给c编成标准答案,但是没有必要,因为你已经是正确的了,标准只是正确的一种情况

答案可能不唯一 取决于你的哈夫曼树是怎么建立的 但一般习惯是左边的数比右边的数小
----------------27
------------11------16
----------c----6---b----e
-------------d---a

-代表空格 排版需要
这是建立的哈夫曼树
按照一般习惯是左0右1 编码为
a011 b10 c00 d010 e11
还有 顶点是27...怎么会算个25出来啊...汗!

规则是先找两个最小的数作为最下一层的两个数求他们的和,把这个和作为一个新的节点替换掉两个最小的数。然后再找两个最小的数求和,依次类推直到所有的数都进行了一次。

我想你的问题是设计的哈夫曼树编码最短,上面有几位的哈夫曼树编码就是最短的,如“风骚的可乐”的,一般我们约定左分支表示'0',右分支表示“1”,对“风骚的可乐”画的图,左右子树都可交换,编码就不同,当一棵子树的左右孩子交换就多了一种编码。
如 上图编码是:011(a)10(b)00(c)010(d)11(e),把2,4交换下就多了一种010(a)10(b)00(c)011(d)11(e),即a,d的编码变了
总共的编码数为:2*2*2*2=16种

风骚的可乐 - 千总 五级

厉害,我服了你的,我想回答可是太麻烦了,佩服你的勇气,搂主,最佳答案就是他的,一定要给他阿

补充了下,之前没算一共多少种答案。

------------------------------

从低到高排列:
d->2 a->4 c->5 b->7 e->9
则haffman树如下(图中“。”是排版需要,忽略不计):
左右大小互换以后本质上属于一种树,但是将导致编码不同,因此说可能有多种答案。
。。。。。。。27
。。。。。。/。。\
。。。。。11。。。。16
。。。。。/。\。。。/。\
。。。。5。。。6。7。。。9
。。。。。。。/。\
。。。。。。2。。。4
编码方式则可以选择以下几种之一:
(1)d(010) a(011) c(00) b(10) e(11)
(2)d(101) a(100) c(11) b(01) e(00)
(3)d(001) a(000) c(01) b(10) e(11)
等等等等,编码方式由排列组合知识知道,一共48种。

平均码长2.4。


哈夫曼编码和译码怎么算
哈夫曼编码和译码是一种常用的数据压缩算法。下面我将简单介绍一下哈夫曼编码和译码的基本原理和步骤:1 哈夫曼编码:统计字符出现的频率:首先需要统计待编码的字符在文本中出现的频率。构建哈夫曼树:根据字符频率构建哈夫曼树,频率越高的字符离根节点越近。分配编码:从根节点开始,向左走为0,向右走...

哈夫曼编码
结论:哈夫曼编码是一种利用哈夫曼树构建的字符串编码方法,通过构建特殊的二叉树结构,为每个字符分配唯一的编码。以下是一个直观的示例来说明这一过程:哈夫曼编码是通过构造一个特殊的二叉树,即哈夫曼树,来为每个字符生成一个独特的编码。对于给定的字符串,如"deccaaa",我们首先构建如下的哈夫曼树...

哈夫曼编码的原理是什么?
设某哈夫曼树中有199个结点,则该哈夫曼树中有100个叶子结点。给定N个权值作为N个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。哈夫曼编码:哈夫曼静态编码:...

如何理解哈夫曼编码?
3、取一个使X>=Q的k,k可以取无数多个,但是我们取其中的最小值。4、s = X - Q (这一步的目的是:计算我们目前拥有的符号数目与每一步都用3个符号进行编码时所需要的符号数目相差多少个)5、则m-s的数值就是m进制哈夫曼编码第一部所需要取的符号个数。(既然我们与理想状况相差s个,那...

哈夫曼编码左边是0还是1
哈夫曼编码左边是0 根据数据使用的频率来生成对应的哈夫曼树 生成法则则是:把数据使用的频率当做权重,先将两个权重最低的相加。再在剩余的权重里面,再找出使用频率最低的两个,以此类推。权重小的放在左边,大的在右边。直到遍历完全部的数据,哈夫曼树就生成了。而哈夫曼编码,则是从根节点开始,...

哈夫曼的编码
哈夫曼在上世纪五十年代初就提出这种编码时,根据字符出现的概率来构造平均长度最短的编码。它是一种变长的编码。在编码中,若各码字长度严格按照码字所对应符号出现概率的大小的逆序排列,则编码的平均长度是最小的。(注:码字即为符号经哈夫曼编码后得到的编码,其长度是因符号出现的概率而不同,所以...

哈夫曼编码唯一吗
哈夫曼编码不是唯一的。哈夫曼编码是一种用于数据压缩的编码方式,通过将频率较高的字符用较短的二进制串表示,频率较低的字符用较长的二进制串表示,从而实现数据的高效压缩。尽管哈夫曼编码确保了每个字符都有唯一对应的二进制串,但是对于给定的权值集合,存在多种哈夫曼编码方案。

哈夫曼编码怎么算
哈夫曼编码是计算过程如下:1、计算源符号的频率:首先需要统计源符号(即需要编码的数据)中每个符号出现的频率。这个步骤需要根据实际数据集进行统计。2、构建概率树:根据源符号的频率,可以构建一个概率树。在概率树中,每个叶子节点代表一个源符号,其权重(即该符号出现的频率)与节点深度成反比。根...

为什么说哈夫曼编码是压缩率最高的编码?
假设用于通信的电文由字符集{a,b,c,d,e,f,g,h}中的字母构成,这8个字母在电文中出现的概率分别为{0.07,0.19,0.02,0.06,0.32,0.03,0.21,0.10}。哈夫曼编码 根据上面可得编码表: a:1001 b:01 c:10111 d:1010 e:11 f:10110 g:00 h:1000 用三位二进行数进行的...

哈夫曼编码(贪心算法)
参考: 哈夫曼编码 哈夫曼编码是一种十分有效的编码方法,广泛应用于 数据压缩 中 通过采用 不等长 的编码方式,根据 字符频率的不同 ,选择 不同长度的编码 ,对频率 越高 的字符采用 越短 的编码实现数据的高度压缩。 这种对频率越高的字符采用越短的编码来编码的方式应用的就是贪心算法的...

芗城区19224551018: 哈夫曼编码(可变字长编码的一种) - 搜狗百科
独肃达林: 哈夫曼编码(Huffman Coding),又称霍夫曼编码,是一种编码方式,哈夫曼编码是可变字长编码(VLC)的一种.Huffman于1952年提出一种编码方法,该方法完全依据字符出现概率来构造异字头的平均长度最短的码字,有时称之为最佳编码,一般就叫做Huffman编码(有时也称为霍夫曼编码).

芗城区19224551018: 如何叙述哈夫曼编码 -
独肃达林: 哈夫曼编码 哈夫曼树可用于构造最短的不等长编码方案,具体做法如下:设需要编码的字符集合为{d1,d2,…,d¬n},它们在字符串中出现的频率为{w1, w2,…, wn},以d1,d2,…,d¬n作为叶子结点, w1, w2,…, wn¬作为叶子结点的权值,构造一颗...

芗城区19224551018: 哈夫曼编码 -
独肃达林: //HC是一个字符串数组,HC[i]中保存的是第i字符的编码;n是haffman树的树高 HC=(HuffmanCode)malloc((n+1)*sizeof(char*));//cd是一个临时变量,临时保存编码 cd=(char*)malloc(n*sizeof(char));cd[n-1]='\0'; // 字符串的结束符为0 (0) for(i=1;i<=...

芗城区19224551018: 哈夫曼编码原理 -
独肃达林: 原发布者:a2420092945 Huffman树及其应用一、最优二叉树(霍夫曼树)预备知识:若干术语路d径:由一结点到另一结点间的分支所构成a→e的路径长度=2beacfg路径长度:路径上的分支数目树长度=10树的路径长度:从树根到每一结点的...

芗城区19224551018: 哈夫曼编码码长怎么算 -
独肃达林:[答案] 假设用于通信的电文由字符集{a,b,c,d,e,f,g,h}中的字母构成,这8个字母在电文中出现的概率分别为{0.07,0.19,0.02,0.06,0.32,0.03,0.21,0.10}.(1)为这8个字母设计哈夫曼编码.(2)若用这三位二进制数(0…7)对这8个字母进行等长编码,则哈夫曼编...

芗城区19224551018: 利用哈夫曼编码进行压缩压缩率一般达到多少? -
独肃达林: 哈夫曼编码压缩率很低的举个例子:用三位二进行数进行的等长编码平均长度为3,而根据哈夫曼树编码的平均码长为: 4*0.07+2*0.19+5*0.02+4*0.06+2*0.32+5*0.03+2*0.21+4*0.10=2.61 2.61/3=0.87=87% 其平均码长是等长码的87%. 所以平均压缩率为13%.所以应该是你算法有问题……

芗城区19224551018: 哈夫曼编码算法 -
独肃达林: 因为其中一个不能是另一个的前缀 所以只能是1111、1110、1101、1100

芗城区19224551018: 求哈夫曼编码,谢谢! -
独肃达林: 完整的程序 #include #include #include #define NULL 0 typedef struct huff_code_node //存储编码的链表 { char ch; //编码对应的字符 char code[100]; //字符对应的哈夫曼码 struct huff_code_node *next; }hnode,*huff; typedef struct tree_Node //二叉...

芗城区19224551018: 哈夫曼编码??
独肃达林: 哈夫曼树的构造原理,就是先选取概率最小的两个,就是0.02和0.03,相加,得到0.05,同时删去0.02和0.03,然后把0.05放到原来的集合里面,再次选取最小的两个(现在是0.05和0.06)..这样不断进行,直到只剩一个元素为止.. 举个简单例子..生成哈夫曼树之后,左子树为0,右子树为1,根节点不算在内..您的电文哈夫曼编码是:

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网