CN107565973B - 一种结点可扩展的哈夫曼编码的实现方法及电路结构 - Google Patents

一种结点可扩展的哈夫曼编码的实现方法及电路结构 Download PDF

Info

Publication number
CN107565973B
CN107565973B CN201710649560.3A CN201710649560A CN107565973B CN 107565973 B CN107565973 B CN 107565973B CN 201710649560 A CN201710649560 A CN 201710649560A CN 107565973 B CN107565973 B CN 107565973B
Authority
CN
China
Prior art keywords
nodes
node
father
weight values
leaf
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201710649560.3A
Other languages
English (en)
Other versions
CN107565973A (zh
Inventor
陈海燕
吴健虢
刘胜
郭阳
雷元武
陈俊杰
安天乐
黄成龙
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
National University of Defense Technology
Original Assignee
National University of Defense Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by National University of Defense Technology filed Critical National University of Defense Technology
Priority to CN201710649560.3A priority Critical patent/CN107565973B/zh
Publication of CN107565973A publication Critical patent/CN107565973A/zh
Application granted granted Critical
Publication of CN107565973B publication Critical patent/CN107565973B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本发明公开了一种结点可扩展的哈夫曼编码的实现方法及电路结构,该方法的步骤为:S1:以统计好的n个权重值作为叶子结点的权重值,并对结点权重值按从小到大的顺序排序;S2:排序完成后开始生成哈夫曼树,每次取出两个权重值最小的结点,生成父结点,直到生成n‑1个父结点;S3:哈夫曼树生成后采用自顶向下的方式对结点进行编码,叶子结点编码即为哈夫曼编码。该电路结构用来实现上述方法。本发明具有结点可扩展、易于硬件实现且编码效率高等优点。

Description

一种结点可扩展的哈夫曼编码的实现方法及电路结构
技术领域
本发明主要涉及到数字信号处理领域,具体涉及一种结点可扩展的哈夫曼编码的实现方法及电路结构。
背景技术
随着互联网、移动计算等应用需求的急剧增长,全世界的数据信息量约每20个月就会增加1倍。在无线通信中常需传输大量音频、视频等流媒体数据,尤其在远程通信中,海量数据的传输和实时处理需求,与通讯线路的传输延迟和带宽形成了尖锐的矛盾。解决这一矛盾的有效方法就是使用数据压缩处理技术。
数据压缩是一种通过去除数据冗余信息以减少数据存储空间的技术,被广泛用于文件存储、图像处理和数字通信当中。数据压缩技术的方法多种多样,本质无非有两种:一种以信息论为基础的冗余位消除法;一种是引进某些特殊算法,像哈夫曼算法、正交变换等。冗余位消除法由于误差限制,总要丢失一部分信息,而特殊算法采用全信息的压缩方式,能够保证信息的完整性。
哈夫曼编码(Huffman Coding)由David Huffman在1952年提出,是一种基于概率统计原理的变长无损压缩编码,其软件实现一直是研究热点。有学者提出了一种快速自适应哈夫曼编码算法,对传输数据进行处理,提高了编码效率。Schwartz在1964年提出了一种改进的范式哈夫曼编码,该编码有助于降低编码过程中的存储空间开销。还有研究者提出用一维数组来建立哈夫曼树各结点之间的关系,使得任何编程语言都可实现哈夫曼编码。吴晨辉等人提出了一种自顶向下的哈夫曼编码方法,编码时对哈夫曼树的每个结点进行一次扫描,就可得到各叶子结点的哈夫曼编码,解决了原编码过程中大量指针移动的问题。但以上研究都是基于软件方法实现的,其运算速度慢,难以满足日益增长的数字信号处理需求,采用硬件电路实现则能明显提高哈夫曼编码的性能。
对于一组确定权重的叶子结点,构造出的不同二叉树的带权路径长度各不相同,把具有最短带权路径长度的二叉树称为最优二叉树,最优二叉树也称哈夫曼树。根据哈夫曼树的定义,要使二叉树的带权路径长度最短,必须使权重值越大的叶子结点越靠近根结点,而权值越小的叶子结点越远离根结点。根据这一思想构造最优树的算法,即哈夫曼算法,原理及过程如下:
(1)根据n个统计权重值{w1,w2,...wn}构造包含n个二叉树的集合F={T1,T2,...Tn},其中每棵二叉树Ti只包含权重为wi的结点,且其左、右子树为空。
(2)从集合F中选两棵根结点权重值最小的二叉树Ti和Tj作为左、右子树构造一棵新的二叉树Tk,新二叉树Tk根结点权重值为其左、右子树根结点权重值之和。
(3)从集合F中删除新二叉树的左、右子树,将新的二叉树Tk加入F。
(4)重复(2)和(3),直到F中只有一棵树为止,这棵树即为哈夫曼树。
(5)对哈夫曼树的各分支编码,左、右分支可分别用0、1编码,根结点到所有叶子结点路径的二进制编码即为各叶子结点的哈夫曼编码。
发明内容
本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种结点可扩展、易于硬件实现且编码效率高的结点可扩展的哈夫曼编码的实现方法及电路结构。
为解决上述技术问题,本发明采用以下技术方案:
一种结点可扩展的哈夫曼编码的实现方法,其步骤为:
S1:以统计好的n个权重值作为叶子结点的权重值,并对结点权重值按从小到大的顺序排序;
S2:排序完成后开始生成哈夫曼树,每次取出两个权重值最小的结点,生成父结点,直到生成n-1个父结点;
S3:哈夫曼树生成后采用自顶向下的方式对结点进行编码,叶子结点编码即为哈夫曼编码。
作为本发明方法的进一步改进:在步骤S1中,将n个叶子结点分为p组,对n个权重值的排序分p站进行,其中p>0,使得每站实现一组叶结点的并行全比较排序运算。
作为本发明方法的进一步改进:在步骤S1中,所有n个叶子结点权重值和除自身外的其余n-1个叶子结点权重值两两并行比较,分别将n-1个比较结果累加作为该结点权重的排序位置。
作为本发明方法的进一步改进:在步骤S2中,采用一维数组结构来存储哈夫曼树,即采用一维数组来存储各个树结点的信息;对于n个叶子结点的哈夫曼编码电路,该数组的深度为2n-1,数组前n个单元用于存储n个叶子结点,后n-1个单元用于存储父结点;经排序后叶子结点已按权重值由小到大的顺序存放;每次构建父结点时,需要从权重值集合中选择最小两个权重结点,因此每次只需要从2个最小叶结点和2个最小父结点共4个结点中找到权重值最小的两个结点来构建新的父结点。
作为本发明方法的进一步改进:所述叶子结点的信息包括结点编号、结点权重值、结点编码和编码长度;每个父结点除了记录以上这些信息外,还记录其左、右子结点编号,子结点编号建立了父结点和子结点之间的联系。
作为本发明方法的进一步改进:在步骤S3中,采用自顶向下的编码方式对各结点进行编码,通过自顶向下遍历一次父结点就得到每个叶子结点的哈夫曼编码。
本发明进一步提供一种结点可扩展的哈夫曼编码的电路结构,其包括:
叶子结点权重值排序单元,用来将统计好的n个权重值作为叶子结点的权重值,并对结点权重值按从小到大的顺序排序;
哈夫曼树构建单元,用来在排序完成后开始生成哈夫曼树,每次取出两个权重值最小的结点,生成父结点,直到生成n-1个父结点;
哈夫曼编码单元,用来在哈夫曼树生成后采用自顶向下的方式对结点进行编码,叶子结点编码即为哈夫曼编码。
作为本发明的进一步改进:所述哈夫曼树构建单元采用多个一维数组分别存储各项结点信息,构成了哈夫曼树;数组前n个存储单元存储n个叶子结点的相关信息,包括结点编号、权重值、编码及编码长度;后n-1个存储单元存储n-1个父结点的相关信息,为建立父结点和其子结点的对应关系,每个父结点还存储其左、右子结点的编号信息。
作为本发明的进一步改进:所述哈夫曼树构建单元根据输入的n个权重值生成n-1个父结点,通过设置两个标记flagl和flagr,flagl记录当前叶子结点中未使用的第一个叶子结点编号,flagr记录当前父结点中未使用的第一个父结点编号;每次分别从flagl和flagr的编号位置开始,各取出两个相邻结点的权重值,对取出的4个结点的权重值进行比较找出权重值最小的两个结点,分别作为左、右子结点生成新的父结点,父结点记录左、右子结点编号,根据结点计数器的值将父结点信息存储到数组对应位置,最后更新flag标记和计数器;控制器根据输入的权重值的个数控制循环次数,发出生成父结点的相关控制信号,完成哈夫曼树的构建。
作为本发明的进一步改进:所述哈夫曼编码单元采用自顶向下的编码方式对各个结点进行编码,从根结点到第一个父结点一次遍历便得到所有叶子结点的哈夫曼编码;首先将根结点的编码和码长都设置为0,通过计数器控制父结点的遍历,从最后一个父结点开始向前遍历各个父结点,每遍历到一个父结点,根据该父结点记录的左、右子结点编号,对其两个子结点同时编码,将该父结点编码末尾补0作为左子结点编码,末尾补1作为右子结点编码,父结点码长加1作为子结点码长;当所有父结点的左、右子结点都编码后,叶子结点的编码即为各个权重值对应的哈夫曼编码。
与现有技术相比,本发明的优点在于:
1、本发明提出了一种结点可扩展、易于硬件实现且编码效率高的哈夫曼编码电路结构,该结构采用一维数组形式存储哈夫曼树的各结点信息,可根据设计需求灵活的增加或减少叶子结点数目,而电路的主要控制逻辑保持不变,极大降低了硬件实现的复杂度,在只需要增加少量存储开销的情况下实现了电路的可扩展性。对于n(n为大于1的整数)个叶子结点的哈夫曼编码电路,该电路同时也支持叶子结点数小于n,即叶子结点数为1~(n-1)情况下的哈夫曼编码,提高了电路的灵活性和适用性。
2、本发明的结点可扩展的哈夫曼编码的实现方法及电路结构,采用分站的并行全比较的排序算法,即根据性能要求,将n个叶子结点分为p组,对n个权重值分p(p>0)站完成所有叶子结点的权重排序,实现了硬件资源的复用,在满足性能要求的基础上降低了硬件开销。
3、本发明的结点可扩展的哈夫曼编码的实现方法及电路结构,采用特殊的一维数组构建和存储哈夫曼树结点信息,数组前n个单元用于存储n个叶子结点,后n-1个单元用于存储父结点,叶子结点和父结点数组按权重值大小排序,因此每次最多只需比较4个结点的权重值,即可从剩余结点中找到权重值最小的两个结点,采用自底向上流水化的方式每拍生成一个新的父结点,最多需要n-1拍即可构建整棵哈夫曼树,极大地降低了算法复杂度和时间开销。
4、本发明的结点可扩展的哈夫曼编码的实现方法及电路结构,采用自顶向下的编码方式,同时对父结点的左、右子结点编码,只需自顶向下一次遍历父结点就能得到所有叶子结点的哈夫曼编码。
附图说明
图1是本发明实现哈夫曼编码的方法流程示意图。
图2是实现权重值排序而设计的排序位置计算单元结构图。
图3是存储哈夫曼树结点信息的数组结构图。
图4是n个叶子结点构建哈夫曼树的控制结构图。
图5是计算哈夫曼树各个结点编码的控制结构图。
具体实施方式
以下将结合说明书附图和具体实施例对本发明做进一步详细说明。
如图1所示,本发明的一种结点可扩展的哈夫曼编码的实现方法,其步骤为:
S1:以统计好的n个权重值作为叶子结点的权重值,并对结点权重值按从小到大的顺序排序;为节省硬件开销可根据应用需求对排序做分站处理,提高资源复用率;
S2:排序完成后开始生成哈夫曼树,每次取出两个权重值最小的结点,生成父结点,直到生成n-1个父结点;
S3:哈夫曼树生成后采用自顶向下的方式对结点进行编码,叶子结点编码即为哈夫曼编码。
在上述步骤中,设叶子结点数量为n(n为大于1的整数),其结点对应的权重值集合分别为{w1,w2,...wi,...wn},(0<wi≤m,i=1,2...n,m为正整数)。根据哈夫曼编码的原理,为了生成新的父结点,需从该权重值集合中生成新的父结点,并将父结点加入到结点权重集合中,下次再从该权重集合剩余未使用过的权重值中找出两个权重值最小的结点,生成下一个父结点,再将新生成的父结点加入权重值集合,依此自底向上反复构建新的父结点,直到完成哈夫曼树根结点的构建。
为了降低寻找权重值最小的结点的复杂度和开销,本发明先对电路的叶子结点按其权重值由小到大进行一次排序。常规的排序方法由于有限的并行性,运算速度慢,往往会成为电路的关键路径。为此,本发明采用一种分站的并行全比较的排序算法、实现各权重值的排序,提高了资源复用率,减少了硬件开销。
本实施例中,在所述步骤S1中,根据性能要求,将n个叶子结点分为p组,对n个权重值的排序分p(p>0)站进行,使得每站实现一组叶结点的并行全比较排序运算,所需的比较器和加法器硬件资源相同或接近,因此排序算法的总硬件开销最多可减少至近原来的1/p。所述步骤S1中排序的具体步骤为:在并行全比较的排序中,所有n个叶子结点权重值和除自身外的其余n-1个叶子结点权重值两两并行比较,分别将n-1个比较结果累加作为该结点权重的排序位置,因此共需要n(n-1)个位宽为log2(m)的比较器和加法器,包括n(n-1)/2个“大于”(>)比较器和n(n-1)/2个“大于等于”(≥)比较器,其中
Figure BDA0001366947530000051
为向上取整运算操作符。
本实施例中,在所述步骤S2中,本发明采用了易于硬件实现的一维数组结构来存储哈夫曼树,即采用一维数组来存储各个树结点的信息。对于n个叶子结点的哈夫曼编码电路,该数组的深度为(2n-1),数组前n个单元用于存储n个叶子结点,后n-1个单元用于存储父结点。经排序后叶子结点已按权重值由小到大的顺序存放。每次构建父结点时,需要从权重值集合中选择最小两个权重结点,因此每次只需要从2个最小叶结点和2个最小父结点共4个结点中找到权重值最小的两个结点来构建新的父结点。叶子结点的信息包括结点编号、结点权重值、结点编码和编码长度;每个父结点除了记录以上这些信息外,还需记录其左、右子结点编号,子结点编号建立了父结点和子结点之间的联系。由于一维数组寻址简单的特点,使得电路具有很高的可扩展性,电路的可扩展性体现在两方面:当需要增加或减少叶子结点时,只需相应的增加或减少数组的深度即可满足新的编码需求,采用参数化的设计很容易将电路扩展到支持更多叶子结点的应用场景;另一方面,对于支持n(n=1,2....)个叶子结点的哈夫曼编码电路,该电路也支持叶子结点数小于n情况下的哈夫曼编码,输入时只需将多余的叶子结点权重值置为0,就使得同一个电路设计满足更多的应用需求。
本实施例中,在所述步骤S3中,为了提高编码速度,本发明采用自顶向下的编码方式对各结点进行编码,只需要自顶向下遍历一次父结点就能得到每个叶子结点的哈夫曼编码。由于在构建哈夫曼树时采用的数组分别记录了每个父结点的左、右子结点编号,因此遍历父结点时可以同时对左、右子结点进行编码,如果每拍遍历一个父结点,至多需要n-1拍即可完成整棵哈夫曼树的编码,提高了编码速度。
本发明进一步提供一种结点可扩展的哈夫曼编码的电路结构,包括:
叶子结点权重值排序单元,用来将统计好的n个权重值作为叶子结点的权重值,并对结点权重值按从小到大的顺序排序;为节省硬件开销可根据应用需求对排序做分站处理,提高资源复用率;
哈夫曼树构建单元,用来在排序完成后开始生成哈夫曼树,每次取出两个权重值最小的结点,生成父结点,直到生成n-1个父结点;
哈夫曼编码单元,用来在哈夫曼树生成后采用自顶向下的方式对结点进行编码,叶子结点编码即为哈夫曼编码。
如图2所示,为本发明在具体应用实例中根据排序算法设计的排序位置计算单元结构示意图,包含权重值并行比较和比较结果累加两个部分。设n个叶子结点权重值分别为{w1,w2...,wi,wj,...wn-1,wn},则计算第j个权重值wj的排序位置时,需要将wj和其余n-1个权重值两两比较,权重值相等时须保持原来的顺序,所以使用了两类不同的比较器。通过多个排序位置计算单元能全并行的比较本权重值和其它权重值的大小关系,最后分别将比较结果累加作为各权重值的排序位置,排序位置译码后实现n个权重值的升序排列。实现时为了提高资源复用率也可将权重值分为多组,分别计算各组权重值的排序位置,表1和表2分别为对10个权重值分两站计算排序位置的计算结果,比较和加法逻辑相对减少了近一半硬件开销。
下表1所示为对随机的10个权重值按排序算法计算排序位置得出的第一站计算结果。为了减少硬件开销,采用资源复用的方式对10个权重值分两站分别计算各权重值的排序位置,每站计算其中5个权重值的排序位置,每个权重值和其余9个权重值并行两两比较,将比较结果累加作为该权重值的排序位置。
表1
Figure BDA0001366947530000061
下表2所示为对随机的10个权重值按排序算法计算排序位置得出的第二站计算结果。
表2
Figure BDA0001366947530000071
如图3所示,为本发明在具体应用实例中根据存储哈夫曼树结点信息的数组结构示意图,其采用多个一维数组分别存储各项结点信息,构成了哈夫曼树。数组前n个存储单元存储n个叶子结点的相关信息,包括结点编号、权重值、编码及编码长度。后n-1个存储单元存储n-1个父结点的相关信息,为建立父结点和其子结点的对应关系,每个父结点还需存储其左、右子结点的编号信息。
图4所示,为本发明在具体应用实例中根据n个排序后的叶子结点构建哈夫曼树的控制器结构示意图,根据输入的n个权重值生成n-1个父结点。为了降低每次寻找两个权重值最小结点的复杂度和开销,设置两个标记flagl和flagr,flagl记录当前叶子结点中未使用的第一个叶子结点编号,flagr记录当前父结点中未使用的第一个父结点编号。每次分别从flagl和flagr的编号位置开始,各取出两个相邻结点的权重值,对取出的4个结点的权重值进行比较找出权重值最小的两个结点,分别作为左、右子结点生成新的父结点,父结点记录左、右子结点编号,根据结点计数器的值将父结点信息存储到数组对应位置,最后更新flag标记和计数器。控制器根据输入的权重值的个数控制循环次数,发出生成父结点的相关控制信号,完成哈夫曼树的构建。
如图5所示,为本发明在具体应用实例中计算哈夫曼树各个结点编码的控制器结构示意图,采用自顶向下的编码方式对各个结点进行编码,只需要从根结点到第一个父结点一次遍历便可得到所有叶子结点的哈夫曼编码。首先将根结点的编码和码长都设置为0,通过计数器控制父结点的遍历,从最后一个父结点开始向前遍历各个父结点,每遍历到一个父结点,根据该父结点记录的左、右子结点编号,对其两个子结点同时编码,将该父结点编码末尾补0作为左子结点编码,末尾补1作为右子结点编码,父结点码长加1作为子结点码长。当所有父结点的左、右子结点都编码后,叶子结点的编码即为各个权重值对应的哈夫曼编码。下表3所示为上述10个权重值按照本发明的哈夫曼编码算法实现后,各个数组存储的结点信息,包括各个结点的编号、权重值、左、右子结点编号、编码和码长等信息。前10个结点为叶子结点,后9个结点为生成的父结点,叶子结点的编码即为对应的哈夫曼编码。
表3
Figure BDA0001366947530000081
以上仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,应视为本发明的保护范围。

Claims (8)

1.一种结点可扩展的哈夫曼编码的实现方法,其特征在于,步骤为:
S1:以统计好的n个权重值作为叶子结点的权重值,并对结点权重值按从小到大的顺序排序;
S2:排序完成后开始生成哈夫曼树,每次取出两个权重值最小的结点,生成父结点,直到生成n-1个父结点;
S3:哈夫曼树生成后采用自顶向下的方式对结点进行编码,叶子结点编码即为哈夫曼编码;
在步骤S2中,采用一维数组结构来存储哈夫曼树,即采用一维数组来存储各个树结点的信息;对于n个叶子结点的哈夫曼编码电路,该数组的深度为2n-1,数组前n个单元用于存储n个叶子结点,后n-1个单元用于存储父结点;经排序后叶子结点已按权重值由小到大的顺序存放;每次构建父结点时,需要从权重值集合中选择最小两个权重结点,因此每次只需要从2个最小叶结点和2个最小父结点共4个结点中找到权重值最小的两个结点来构建新的父结点;
所述哈夫曼树通过哈夫曼树构建单元生成,所述哈夫曼树构建单元根据输入的n个权重值生成n-1个父结点,通过设置两个标记flagl和flagr,flagl记录当前叶子结点中未使用的第一个叶子结点编号,flagr记录当前父结点中未使用的第一个父结点编号;每次分别从flagl和flagr的编号位置开始,各取出两个相邻结点的权重值,对取出的4个结点的权重值进行比较找出权重值最小的两个结点,分别作为左、右子结点生成新的父结点,父结点记录左、右子结点编号,根据结点计数器的值将父结点信息存储到数组对应位置,最后更新flag标记和计数器;控制器根据输入的权重值的个数控制循环次数,发出生成父结点的相关控制信号,完成哈夫曼树的构建。
2.根据权利要求1所述的结点可扩展的哈夫曼编码的实现方法,其特征在于,在步骤S1中,将n个叶子结点分为p组,对n个权重值的排序分p站进行,其中p>0,使得每站实现一组叶结点的并行全比较排序运算。
3.根据权利要求2所述的结点可扩展的哈夫曼编码的实现方法,其特征在于,在步骤S1中,所有n个叶子结点权重值和除自身外的其余n-1个叶子结点权重值两两并行比较,分别将n-1个比较结果累加作为该结点权重的排序位置。
4.根据权利要求1或2或3所述的结点可扩展的哈夫曼编码的实现方法,其特征在于,所述叶子结点的信息包括结点编号、结点权重值、结点编码和编码长度;每个父结点除了记录以上这些信息外,还记录其左、右子结点编号,子结点编号建立了父结点和子结点之间的联系。
5.根据权利要求1或2或3所述的结点可扩展的哈夫曼编码的实现方法,其特征在于,在步骤S3中,采用自顶向下的编码方式对各结点进行编码,通过自顶向下遍历一次父结点就得到每个叶子结点的哈夫曼编码。
6.一种结点可扩展的哈夫曼编码的电路结构,其特征在于,包括:
叶子结点权重值排序单元,用来将统计好的n个权重值作为叶子结点的权重值,并对结点权重值按从小到大的顺序排序;
哈夫曼树构建单元,用来在排序完成后开始生成哈夫曼树,每次取出两个权重值最小的结点,生成父结点,直到生成n-1个父结点;
哈夫曼编码单元,用来在哈夫曼树生成后采用自顶向下的方式对结点进行编码,叶子结点编码即为哈夫曼编码;
所述哈夫曼树构建单元根据输入的n个权重值生成n-1个父结点,通过设置两个标记flagl和flagr,flagl记录当前叶子结点中未使用的第一个叶子结点编号,flagr记录当前父结点中未使用的第一个父结点编号;每次分别从flagl和flagr的编号位置开始,各取出两个相邻结点的权重值,对取出的4个结点的权重值进行比较找出权重值最小的两个结点,分别作为左、右子结点生成新的父结点,父结点记录左、右子结点编号,根据结点计数器的值将父结点信息存储到数组对应位置,最后更新flag标记和计数器;控制器根据输入的权重值的个数控制循环次数,发出生成父结点的相关控制信号,完成哈夫曼树的构建。
7.根据权利要求6所述的结点可扩展的哈夫曼编码的电路结构,其特征在于,所述哈夫曼树构建单元采用多个一维数组分别存储各项结点信息,构成了哈夫曼树;数组前n个存储单元存储n个叶子结点的相关信息,包括结点编号、权重值、编码及编码长度;后n-1个存储单元存储n-1个父结点的相关信息,为建立父结点和其子结点的对应关系,每个父结点还存储其左、右子结点的编号信息。
8.根据权利要求6所述的结点可扩展的哈夫曼编码的电路结构,其特征在于,所述哈夫曼编码单元采用自顶向下的编码方式对各个结点进行编码,从根结点到第一个父结点一次遍历便得到所有叶子结点的哈夫曼编码;首先将根结点的编码和码长都设置为0,通过计数器控制父结点的遍历,从最后一个父结点开始向前遍历各个父结点,每遍历到一个父结点,根据该父结点记录的左、右子结点编号,对其两个子结点同时编码,将该父结点编码末尾补0作为左子结点编码,末尾补1作为右子结点编码,父结点码长加1作为子结点码长;当所有父结点的左、右子结点都编码后,叶子结点的编码即为各个权重值对应的哈夫曼编码。
CN201710649560.3A 2017-08-01 2017-08-01 一种结点可扩展的哈夫曼编码的实现方法及电路结构 Active CN107565973B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710649560.3A CN107565973B (zh) 2017-08-01 2017-08-01 一种结点可扩展的哈夫曼编码的实现方法及电路结构

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710649560.3A CN107565973B (zh) 2017-08-01 2017-08-01 一种结点可扩展的哈夫曼编码的实现方法及电路结构

Publications (2)

Publication Number Publication Date
CN107565973A CN107565973A (zh) 2018-01-09
CN107565973B true CN107565973B (zh) 2020-07-14

Family

ID=60975029

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710649560.3A Active CN107565973B (zh) 2017-08-01 2017-08-01 一种结点可扩展的哈夫曼编码的实现方法及电路结构

Country Status (1)

Country Link
CN (1) CN107565973B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111384967B (zh) * 2018-12-28 2022-12-09 上海寒武纪信息科技有限公司 数据编码方法
CN111384966B (zh) * 2018-12-28 2022-05-10 上海寒武纪信息科技有限公司 数据解码方法
CN110032470B (zh) * 2019-03-18 2023-02-28 长安大学 一种基于哈夫曼树的异构部分重复码的构造方法
CN110727414B (zh) * 2019-09-30 2023-12-08 安徽问天量子科技股份有限公司 基于哈夫曼编码的随机数生成方法
CN112566255B (zh) * 2020-11-26 2022-11-18 华南理工大学 一种加权哈夫曼树、主用户带宽分配方法和次级用户信道感知方法
CN112529102B (zh) * 2020-12-24 2024-03-12 深圳前海微众银行股份有限公司 特征拓展方法、设备、介质及计算机程序产品
CN113407484A (zh) * 2021-06-16 2021-09-17 杭州加速科技有限公司 基于fpga的数组排序方法、系统及数据压缩方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002027472A (ja) * 2000-07-10 2002-01-25 Fuji Xerox Co Ltd 画像符号化装置および画像復号化装置、ならびに画像符号化方法および画像復号化方法
CN102983866A (zh) * 2012-11-14 2013-03-20 无锡芯响电子科技有限公司 一种动态Huffman编码硬件实现系统及其实现方法
CN104679775A (zh) * 2013-12-02 2015-06-03 上海联影医疗科技有限公司 一种基于Huffman表的数据处理方法
CN106067824A (zh) * 2016-06-02 2016-11-02 洛阳晶云信息科技有限公司 一种基于二联密码子的测序数据压缩方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7358870B2 (en) * 2003-09-02 2008-04-15 Nokia Corporation Huffman coding and decoding based upon sectioning of a Huffman coding tree
US7612692B2 (en) * 2008-02-27 2009-11-03 Red Hat, Inc. Bidirectional context model for adaptive compression
US9209833B1 (en) * 2015-06-25 2015-12-08 Emc Corporation Methods and apparatus for rational compression and decompression of numbers

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002027472A (ja) * 2000-07-10 2002-01-25 Fuji Xerox Co Ltd 画像符号化装置および画像復号化装置、ならびに画像符号化方法および画像復号化方法
CN102983866A (zh) * 2012-11-14 2013-03-20 无锡芯响电子科技有限公司 一种动态Huffman编码硬件实现系统及其实现方法
CN104679775A (zh) * 2013-12-02 2015-06-03 上海联影医疗科技有限公司 一种基于Huffman表的数据处理方法
CN106067824A (zh) * 2016-06-02 2016-11-02 洛阳晶云信息科技有限公司 一种基于二联密码子的测序数据压缩方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
一种哈夫曼编码的改进算法;王防修等;《武汉轻工大学学报》;20160331;第35卷(第1期);第88-91页 *
基于 FPGA 的并行全比较排序算法;师廷伟等;《数学技术与应用》;20131031;第126-127页 *

Also Published As

Publication number Publication date
CN107565973A (zh) 2018-01-09

Similar Documents

Publication Publication Date Title
CN107565973B (zh) 一种结点可扩展的哈夫曼编码的实现方法及电路结构
CN107291785A (zh) 一种数据查找方法及装置
CN113473127B (zh) 一种点云几何编码方法、解码方法、编码设备及解码设备
US20140188893A1 (en) Data retrieval apparatus, data storage method and data retrieval method
CN105608135B (zh) 一种基于Apriori算法的数据挖掘方法及系统
US20130046793A1 (en) Fast matching of image features using multi-dimensional tree data structures
CN110457317B (zh) 一种基于状态视图的Hilbert曲线编码和解码方法
CN110943797B (zh) 一种sdh网络中的数据压缩方法
CN110505218B (zh) 基于json的栅格数据自适应压缩传输方法及计算机存储介质
KR100484137B1 (ko) 개선된 허프만 디코딩 방법 및 장치
US20230101072A1 (en) Nearest neighbour search method, encoder, decoder and storage medium
CN114900193A (zh) 适应性霍夫曼编码系统及方法
CN112035586A (zh) 基于可扩展学习索引的空间范围查询方法
CN116016951A (zh) 点云处理方法、装置、设备及存储介质
KR20240004518A (ko) 노드 정보를 사용하여 신경망 파라미터를 업데이트하는 디코더, 인코더, 제어부, 방법 및 컴퓨터 프로그램
CN113467949B (zh) 边缘计算环境下用于分布式dnn训练的梯度压缩方法
CN105207793A (zh) 一种树状拓扑结构中节点信息的获取方法和系统
US9529835B2 (en) Online compression for limited sequence length radix tree
CN113487036B (zh) 机器学习模型的分布式训练方法及装置、电子设备、介质
CN112217521A (zh) 一种基于gzip的大文件分布式压缩方法
CN107026652B (zh) 基于分区的正整数序列压缩方法
Chen et al. A hardware design method for canonical huffman code
CN101437016A (zh) ip地址结构树的构建方法
CN110362580A (zh) 一种bim建筑工程数据检索优化归类方法及其系统
CN113726342B (zh) 面向大规模图迭代计算的分段差值压缩与惰性解压方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant