哈夫曼编码
列:假设某模型机共有7条指令,使用频度如图所示。
| 指令 | 使用频度 | 指令 | 使用频度 |
|---|---|---|---|
| I1 | 0.15 | I5 | 0.05 |
| I2 | 0.03 | I6 | 0.3 |
| I3 | 0.4 | I7 | 0.03 |
| I4 | 0.04 |
1)若操作码用定长码表示,求操作码的码长、信息源熵H和信息冗余率。
2)采用哈夫曼编码,构造哈夫曼树,并求操作码平均码长和信息冗余率。
3)采用扩展操作码编码,求操作码平均码长和信息冗余率。
相关公式:
-
H:信息源商或者说最小冗余率
-
信息冗余率=
-
平均码长=;n是有多少条指令,pi是平度,li是哈夫曼编码之后的一个长度
-
画哈夫曼树时:
- 从小到大按顺序排列频度
- 原始频度排最下面一行,
- 完成图后,标左1右0,
解1:
7个指令向上2的指数倍,定长码:
信息源熵
信息冗余率=
解2:

| 指令 | 频度 | 哈夫曼操作码 | 哈夫曼码长 |
|---|---|---|---|
| I3 | 0.4 | 0 | 1 |
| I6 | 0.3 | 10 | 2 |
| I1 | 0.15 | 110 | 3 |
| I5 | 0.05 | 11100 | 5 |
| I4 | 0.04 | 11101 | 5 |
| I2 | 0.03 | 11110 | 5 |
| I7 | 0.03 | 11111 | 5 |
平均码:
信息冗余率:
解3:
| 指令 | 频度 | 哈夫曼操作码 | 哈夫曼码长 | 扩展码 | 扩展码长 |
|---|---|---|---|---|---|
| I3 | 0.4 | 0 | 1 | 00 | 2 |
| I6 | 0.3 | 10 | 2 | 01 | 2 |
| I1 | 0.15 | 110 | 3 | 10 | 2 |
| I5 | 0.05 | 11100 | 5 | 1100 | 4 |
| I4 | 0.04 | 11101 | 5 | 1101 | 4 |
| I2 | 0.03 | 11110 | 5 | 1110 | 4 |
| I7 | 0.03 | 11111 | 5 | 1111 | 4 |
- 前三个频度较高的指令,用2()位二进制表示,留出11作为扩展码,参与剩下频度编码
平均码长:
信息冗余率:
非特殊说明,本文版权归 Mr.yang 所有,转载请注明出处.
本文标题: 19:哈夫曼编码
本文网址: https://www.yangmingchao.com/articleInfo?Uuid=7d5f8d25-26ac-4821-a6e7-ff1bee49326f