当前位置:首页 > 智能硬件 > 人工智能AI
[导读]   哈夫曼树的介绍   Huffman Tree,中文名是哈夫曼树或霍夫曼树,它是最优二叉树。   定义:给定n个权值作为n个叶子结点,构造一棵二叉树,若树的带权路径长度达到最小

  哈夫曼树的介绍

  Huffman Tree,中文名是哈夫曼树或霍夫曼树,它是最优二叉树。

  定义:给定n个权值作为n个叶子结点,构造一棵二叉树,若树的带权路径长度达到最小,则这棵树被称为哈夫曼树。 这个定义里面涉及到了几个陌生的概念,下面就是一颗哈夫曼树,我们来看图解答。

  

  (1) 路径和路径长度

  定义:在一棵树中,从一个结点往下可以达到的孩子或孙子结点之间的通路,称为路径。通路中分支的数目称为路径长度。若规定根结点的层数为1,则从根结点到第L层结点的路径长度为L-1。

  例子:100和80的路径长度是1,50和30的路径长度是2,20和10的路径长度是3。

  (2) 结点的权及带权路径长度

  定义:若将树中结点赋给一个有着某种含义的数值,则这个数值称为该结点的权。结点的带权路径长度为:从根结点到该结点之间的路径长度与该结点的权的乘积。

  例子:节点20的路径长度是3,它的带权路径长度= 路径长度 * 权 = 3 * 20 = 60。

  (3) 树的带权路径长度

  定义:树的带权路径长度规定为所有叶子结点的带权路径长度之和,记为WPL。

  例子:示例中,树的WPL= 1*100 + 2*50 + 3*20 + 3*10 = 100 + 100 + 60 + 30 = 290。

  比较下面两棵树

  

  上面的两棵树都是以{10, 20, 50, 100}为叶子节点的树。

  左边的树WPL=2*10 + 2*20 + 2*50 + 2*100 = 360

  右边的树WPL=290

  左边的树WPL 》 右边的树的WPL。你也可以计算除上面两种示例之外的情况,但实际上右边的树就是{10,20,50,100}对应的哈夫曼树。至此,应该对哈夫曼树的概念有了一定的了解了,下面看看如何去构造一棵哈夫曼树。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭