最优前缀编码,参见讲义8.4,也可参见课本“9.4 哈夫曼树及编码”,正确性证明部分选做。
解析
最优前缀编码,也称 Huffman 编码。这种编码组合的特点是对于较频繁使用的元素给与 较短的唯一编码,以提高通讯的效率。
做法:
1、 将每个字符的使用频率按照升序进行排序。
2、 每次从频率数组中取出频率最小的两个字符作为新节点的左右节点,新节点的值为左右节点的频率之和。
3、 将新节点放入频率数组中,重新按照升序排序。
4、 重复第2、3步骤,直到生成所有频率节点生成一棵二叉树,这棵树就是我们构建的哈夫曼树。
5、 通过哈夫曼树就字符集进行编码,对于所有节点来说,左孩子编码为0,右孩子编码为1。
举例:
设计
public static Node Huffman(ArrayList<Node> list