Course playlist
1. 定义与目的
哈夫曼编码是哈夫曼树在数据压缩领域的一个典型应用。它是一种可变字长编码,其目标是用最短的比特串来表示最常用的字符,从而达到压缩数据的目的。定长编码:如ASCII码,每个字符都用固定长度的比特表示。
变长编码:如哈夫曼编码,频率高的字符用短码,频率低的字符用长码。
2. 编码原理
统计频率:统计待编码文件中每个字符出现的频率(作为权值)。构建哈夫曼树:以字符为叶子节点,以其频率为权值,构建哈夫曼树。
分配编码:从根节点到每个叶子节点的路径,即为该叶子节点字符的哈夫曼编码。
约定:向左的分支标记为 0,向右的分支标记为 1(反之亦可)。
3. 性质与优点
前缀编码:任何一个字符的编码都不是另一个字符编码的前缀。重要性:这个性质保证了编码的唯一可译性。在解码时,不会出现歧义,无需使用分隔符。
最优编码:对于给定的字符频率分布,哈夫曼编码产生的平均码长(总位数/总字符数)是最短的,即它是一种最优编码。
给定 n 个权值(通常为字符出现频率),构造一棵带权路径长度(WPL)最小的二叉树,称为哈夫曼树。
1:从数据中选择出现最少的,写在左边,出现次小的写在右边
2:把他们加起来得到和
3:在剩下的数据,和新和中,重复步骤1,知道全部数据用完
4:按照左0右1的原则标识边
5:从根走向数据节点,中间经过的边即为编码
2:把他们加起来得到和
3:在剩下的数据,和新和中,重复步骤1,知道全部数据用完
4:按照左0右1的原则标识边
5:从根走向数据节点,中间经过的边即为编码
| 题目 | 对/错/率 | 难度 | 记录 | 通过 |
|---|