哈夫曼树 & 哈夫曼编码

哈夫曼树又称最优二叉树,是一种 带权路径长度 最短的二叉树。所谓的带权路径长度,就是树中所有叶节点的权值乘以其到根节点的路径长度之和。

假如树的n个叶节点权值分别为 w1,w2,w3...wn 。其到根节点的路径长度分别为 L1,L2,L3...Ln。

则带权路径长度 WPL = w1*L1 + w2*L2 + w3*L3 + ... + wn * Ln

哈夫曼编码编码步骤:

1.对给定的 n 个权值 {w1,w2,w3...wn} 构成二叉树的初始集合 F = {T1,T2,T3...Tn}

2.在 F 中选取两个权值最小的节点作为新构造的二叉树左右子树,新的二叉树的根节点的权值为其左右子节点的权值之和。

3.从 F 中删除这两个节点,并把新的节点权值(它们的和)加入到 F 中

4.重复 2 和 3步,直到 F 中只有一个节点为止。

 

举个例子,对 A B C D 进行哈夫曼编码, 它们的权值分别是 1,2,3,4

第一步,选取 A B 构成新的二叉树,左 0 右 1

如图:

 

在 fasttext中,利用了类别(class)不均衡这个事实(一些类别出现次数比其他的更多),通过使用 Huffman 算法建立用于表征类别的树形结构。因此,频繁出现类别的树形结构的深度要比不频繁出现类别的树形结构的深度要小,这也使得进一步的计算效率更高。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值