首页 > 试题广场 >

对于字符串"ABCDADA"的二进制哈夫曼编码有多少位?

[单选题]
对于字符串"ABCDADA"的二进制哈夫曼编码有多少位?
  • 11
  • 12
  • 13
  • 14
推荐
选 C
分析如下: 
这题是考察哈夫曼的编码方式,它是根据字符出现频率构建的带权重二叉树确定每个字符编码的。
首先我们统计“ABCDADA”各个字符出现的频率:A-3,B-1,C-1,D-2。由出现的频率我们有以下哈夫曼二叉树:
所以最终“ABCDADA”整个字符串的编码为0 110 111 10 0 10 0。也就是说该字符串二进制哈夫曼编码位数为13位。
编辑于 2019-02-22 14:04:27 回复(0)
先分析各字母出现频率:
A  3
B  1
C  1
D  2

然后画出哈夫曼树,图略...
得出A的编码1位,B 3位 , C 3位,D 2位
故字符串哈夫曼编码数为:
A  3*1=3
B  1*3=3
C  1*3=3
D  2*2=4
3+3+3+4=13

发表于 2019-02-21 20:56:33 回复(0)
答案选13 第一步:理解题意,二进制哈夫曼编码? 哈夫曼编码学过计算机的都知道撒,关键是加个二进制,懵了? 于是回想一下哈夫曼编码,无非就是按照贪心算法原则来构造的一棵二叉树,二叉树的枝枝上标有0,1,于是就把二进制联系起来了。 第二步:哈夫曼过程: A 3 B 1 C 1 D 2 A:1 D:01 B:000 C:001 最后 A的长度为1 B是3 C是3 D是2 乘起来求和:1x3+3x1+3x1+2x2=13
发表于 2019-02-21 16:16:46 回复(0)

首先统计字符串中各字符出现的概率:

A:3/7

B:1/7

C:1/7

D:2/7

找出其中出现概率最低的两个,BC,构成概率为2/7的子树。在A:3/7,BC:2/7,C:2/7中在选择概率最低的两个,(BC)和D,构成概率4/7的子树,再与A构成完整的哈弗曼树。至此可以得到树{XXAXDXXBC},进行编码可得
A:1;
B:000;
C:001;
D:01;
用以上编码对字符串进行编码,可得13位哈夫曼编码“1000001011011”(根据树的画法生成,不唯一)
发表于 2019-02-21 14:58:19 回复(0)