8哈夫曼树与哈夫曼编码最优树的定义如何构造最优树前缀编码赫夫曼编码一、最优树的定义树的路径长度定义为:树中每个结点的路径长度之和
结点的路径长度定义为:从根结点到该结点的路径上分支的数目
树的带权路径长度定义为:树中所有叶子结点的带权路径长度之和WPL(T)=wklk(对所有叶子结点)
假设有n个权值{w1,w2,…wn},构造一棵有n个叶子结点的二叉树,每个叶子结点带权为Wi,则其中带权路径长度取最小值的二叉树称为“最优树”
例如:27975492WPL(T)=72+52+23+43+92=60WPL(T)=74+94+53+42+21=8954根据给定的n个权值{w1,w2,…,wn},构造n棵二叉树的集合F={T1,T2,…,Tn},其中每棵二叉树中均只含一个带权值为wi的根结点,其左、右子树为空树;二、如何构造最优树(1)(赫夫曼算法)以二叉树为例:在F中选取其根结点的权值为最小的两棵二叉树,分别作为左、右子树构造一棵新的二叉树,并置这棵新的二叉树根结点的权值为其左、右子树根结点的权值之和;(2)从F中删去这两棵树,同时加入刚生成的新树;重复(2)和(3)两步,直至F中只含一棵树为止
(3)(4)9例如:已知权值W={5,6,2,9,7}5627527697671395276713952795271667132900001111000110110111从根结点到叶子结点的路径上分支字符组成的字符串,可以作为每个叶子结点编码
约定左分支表示字符‘0’,右分支表示字符‘1’
若要设计不等长的编码,则必须任何一个字符的编码都不是同一字符集中另一个字符的编码的前缀,这种编码称为前缀编码
三、前缀编码以传送的电文为例比较等长编码和不等长编码方法:一、等长编码:电文中所需传送的字符有A、B、C、D,编码分别为00、01、10、11,若要发送‘A