霍夫曼树与霍夫曼编码

本文介绍了霍夫曼树和霍夫曼编码的概念,通过实例展示了如何建立霍夫曼树并进行编码。霍夫曼编码是一种变长编码,根据字符出现的概率分配不同的编码长度,从而在相同数据量下提高传输效率。通过对比定长编码,说明了霍夫曼编码在特定场景下的优势,并简单证明了其最优性。最后,文章提供了霍夫曼树的代码演示。
摘要由CSDN通过智能技术生成

霍夫曼树以及哈夫曼编码

一、什么是哈夫曼树与哈夫曼编码

  1. 编码是什么
    答:
    在ASCII 编码中
    ‘a’ = 97 = ( 01100001 ) 2 (01100001)_2 (01100001)2
    ‘0’ = 48 = ( 00110000 ) 2 (00110000)_2 (00110000)2
    注意:任何信息,在计算机中,都是二进制存储的

ASCII编码规则下的信息:“aa00” = 0110 0001、01100001、00110000、00110000
信息的价值在于流通,从一台计算机 传输到 另外一台计算机,传输上面信息,需要传输32个比特位
假设:计算机的网络带宽是32bit/s, 传上述信息,用时:1s

在特定场景中:假设需要传输的只有a,b,0,1四种字符需要传输
重新编排编码a:00, b:01, 0:10, 1:11
自定义规则下的信息“aa00” = 00 00 10 10
在带宽不变的情况下,当前只需要传输0.25s
在相同传输的数据量下,越好的编码方式,传输的效率越快 -> (各个直播平台相同网络下,流畅度的区别)

  1. 定长与变长编码
    1. ASCII 编码和刚刚特定场景下的编码,都属于定长编码
    2. 对于每一种字符,编码长度相同,这就是定长编码
    3. UTF-8编码,是变长编码,UTF-16,是定长编码
    4. 对于每一个字符,编码长度不相同,这就是变长编码
    5. 将定长编码,看成时变长编码的特例
    6. 变长编码,一定不差于定长编码

变长编码应用场景
特定场景:

  1. 只有四种字符:ab01
  2. P(a) = 0.8, P(b) = 0.05, P© = 0.1, P(1) = 0.05
    平均编码长度:
    l i l_i li:第i中字符,编码长度
    p i p_i pi:第i中字符,出现概率
    a v g ( l ) = ∑ l i × p i avg(l) = \sum{l_i}\times{p_i} avg(l)=li×pi

假设,平均编码长度:1.16,估算传输100个字符,需要传输116个比特位
上述编码的平均编码长度: a v g ( l ) = 2 ∗ ∑ p i = 2 avg(l) = 2 * \sum{p_i} = 2 avg(l)=2pi=2
新建编码:出现概率大的编码长度短,出现概率小的编码长度长
新·编码 a : 1 b : 01 0:000 1:001 (问题1:为什么b的编码不能时‘10’)
平均编码长度: 1 ∗ 0.8 + 2 ∗ 0.05 + 3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值