假设一台模型计算机共有10种不同的操作码,如果采用固定长操作码需要4位。已知各种操作码在程序中出现的概率如下表所示,计算采用Huffman编码法的操作码平均长度,并计算固定长操作码和Huffman操作码的信息冗余量(假设最短平均长度H=3.1位)。 指令序号 指令使用频度Pi 指令序号 指令使用频度Pi I1 0.17 I6 0.09 I2 0.15 I7 0.08 I3 0.15 I8 0.07
时间: 2024-03-19 15:41:28 浏览: 95
根据Huffman编码法,需要首先构建一棵哈夫曼树。将所有的操作码按照频率从小到大排序,然后将频率最小的两个操作码合并为一个新的节点,其频率为两个节点的频率之和。重复这个过程,直到所有节点都被合并为一棵树。最后,从根节点开始,对于每个节点,将其左子节点编码为0,右子节点编码为1,得到每个操作码的Huffman编码。
按照上述方法,得到的Huffman编码为:
I6:0
I8:10
I7:110
I3:1110
I2:11110
I1:11111
计算Huffman编码的平均长度:
L = 0.17*5 + 0.15*5 + 0.15*4 + 0.09*3 + 0.08*3 + 0.07*2 = 3.28
计算固定长操作码的信息冗余量:
H - log2(10) = 0.88
计算Huffman编码的信息冗余量:
H - L = 3.1 - 3.28 = -0.18
由于Huffman编码的平均长度小于最短平均长度H,因此信息冗余量为负值,表示采用Huffman编码可以减少信息冗余。
阅读全文