目录
5G,华为,土耳其——我花了两个月,搞懂了5G背后的秘密_哔哩哔哩_bilibili
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编码。在变字长编码中,如果码字长度严格按照对应符号出现的概率大小逆序排列,则其平均码字长度为最小。虽然其在实际应用中存在着延迟和速率方面的问题,但它不失为是一种优秀的编码方式。