2022黄文嵩商盛兰张阳徐铭信息论课程作业 哈夫曼编码(Huffman Coding)简介

目录

5G,华为,土耳其——我花了两个月,搞懂了5G背后的秘密_哔哩哔哩_bilibili

一、什么是编码?

 二、哈夫曼编码

1、编码过程 

2、码方差

3、编码特点

4、人无完人,码无完码

三、总结


 

5G,华为,土耳其——我花了两个月,搞懂了5G背后的秘密_哔哩哔哩_bilibili

       上学期看到一个热门视频,是关于华为在5G领域的核心技术技术:Polar code在5G eMBB (增强移动宽带)场景的信道编码技术方案中,Polar码作为控制信道的编码方案,LDPC码 (高通)作为数据信道的编码方案,使得华为在专利技术方面得以大幅提升,得以成为5G最大赢家之一。该视频也为我揭开了通信技术领域的面纱,原来编码在这场通信领域如此重要。作为一名通信专业的学生,本学期开设了《信息论与编码》这门课,开始逐步学习编码的定义、过程、性能指标等等。

本篇文章我想对比较经典的信源编码:哈夫曼编码进行介绍。

一、什么是编码?

   谈起哈夫曼编码,首先我们要知道什么是编码

   人类先有自己的语言,比如说汉语、英语、俄语等等。随后才出现了计算机,但计算机内部只有01信号。那就必须要有一个从文字到0、1的映射了,从文字到0、1的映射称为编码。

   而在通信系统中,模型框图如下:

 

在通信系统中编码主要针对的是信源和信道,有利于传输。哈夫曼编码就是一种信源编码。而且编码方式也分为变长编码与定长编码。变长编码比定长编码更有效率,出现概率高的信息对应码长短,概率低的信息对应码长长,典型例子就是哈夫曼编码。

 

二、哈夫曼编码

       哈夫曼编码(Huffman Coding),又称霍夫曼编码,是Huffman于1952年提出一种编码方法,一种可变字长编码(VLC)。该方法完全依据字符出现概率来构造异字头的平均长度最短的码字,有时称之为最佳编码。 其基本原理是基于二叉树的编码思想,每一个输入符号都是哈夫曼树的一个节点,但这样就有可能出现不是唯一可以的情况。(一个符号的分支包含于另一符号的所有分支)

如下图的例子,当整个序列中出现0010的部分序列,可以理解成A或者B的一部分,造成歧义。

1、编码过程 

为了构造出唯一可译码,符号出现的节点应该位于哈夫曼树的终极节点上,不再延伸,不会出现前缀码。具体的编码方式如下:

 (1)将信源消息符号按其出现的概率大小依次排列为

 

(2)取两个概率最小的字母分别配以0和1两个码元,并将这两个概率相加作为一个新字母的概率,与未分配二进符号的字母一起重新排队。
(3)对重排后的两个概率最小符号重复步骤(2)的过程。
(4)不断继续上述过程,直到最后两个符号配以0和1为止。
(5)从最后一级开始,向前返回得到各个信源符号所对应的码元序列,即相应的码字。

空泛的文字往往不太好理解,下面有一个图例:

  该种哈夫曼编码的平均码长为:

  编码效率:

       横向比较与香农编码,香农编码的平均码长为3.14码元/符号,效率为83.1%。由此可见,哈夫曼编码在香农编码的基础上码长和效率都有所提升,在压缩信源信息率的实用设备中,哈夫曼编码仍很常见。

      虽然哈夫曼编码唯一可译,但不唯一,原因如下:

(1)每次对信源缩减时,赋予信源最后两个概率最小的符号,用0和1是可以任意的,所以可以得到不同的哈夫曼码,但不会影响码字的长度。
(2)对信源进行缩减时,两个概率最小的符号合并后的概率与其他信源符号的概率相同时,这两者在缩减信源中进行概率排序,其位置放置次序可以是任意的,故会得到不同的哈夫曼码。此时将影响码字的长度,一般将合并的概率放在上面,这样可获得较小的码方差。

    对于第二点,合并的概率放上面可以减少编码的次数,充分利用短码,而且码方差很小,质量更高。

2、码方差

图例如下:

上图是合并后的概率放在下面,下图的合并后的概率放上面。

根据码方差的的求解公式:

 得:码1 的方差为1.36,而码2的方差仅为0.16。

  可见码2的质量要比码1好很多。

3、编码特点

        哈夫曼码是用概率匹配方法进行信源编码。它有两个明显特点:一是哈夫曼码的编码方法保证了概率大的符号对应于短码,概率小的符号对应于长码,充分利用了短码;二是缩减信源的最后二个码字总是最后一位不同,从而保证了哈夫曼码是即时码。
       哈夫曼变长码的效率是相当高的,它可以单个信源符号编码或用L较小的信源序列编码,对编码器的设计来说也将简单得多。但是应当注意,要达到很高的效率仍然需要按长序列来计算,这样才能使平均码字长度降低。

4、人无完人,码无完码

       哈夫曼码在实际中已有所应用,但它仍存在一些分组码所具有的缺点。例如概率特性必须精确地测定,以此来编制码表,它若略有变化,还需更换码表。因而在实际的编码过程中,需要对原始数据扫描两遍,第一遍用来统计原始数据中各字符出现的概率,创建码表存放起来,第二遍则依据码表在扫描的同时进行编码,才能传输信息。如果将这种编码用于网络通信中,两遍扫描会引起较大的延时;如果用于数据压缩,则会降低速度。因此出现了自适应哈夫曼编码方法,其码表不是事先构造,而是随着编码的进行,不断动态地构造、调整,所以码表不仅取决于信源的特性,还与编码、解码过程相关。
       另外,对于二元信源,常需多个符号合起来编码,才能取得好的效果,但当合并的符号数不大时,编码效率提高不多,尤其对于相关信源,不能令人满意,而合并的符号数增大时,码表中的码字数很多,设备将越来越复杂。在大多数情况下,哈大要编码用工发珊也可以用于有失真情况。例如在符号数很多且有部分符号的概率非常小时,为了减小码表,可以将这些小概率符号合并对应同一个码字,在解码时出现的错误概率即为这些符号概率之和。

三、总结

        哈夫曼编码是可变字长编码(VLC)的一种,是 Huffman于1952年提出一种编码方法,该方法完全依据字符出现概率来构造异字头的平均长 度最短的码字,有时称之为最佳编码,一般就称Huffman编码。在变字长编码中,如果码字长度严格按照对应符号出现的概率大小逆序排列,则其平均码字长度为最小。虽然其在实际应用中存在着延迟和速率方面的问题,但它不失为是一种优秀的编码方式。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值