哈夫曼编码是唯一的吗为什么 哈夫曼编码是唯一的吗对吗

哈夫曼编码是唯一的吗?

不唯一,同一层上的结点,位置是可以互换的。哈夫曼树不唯一,所以,编码也不唯一。

哈夫曼编码(Huffman Coding),又称霍夫曼编码,是一种编码方式,哈夫曼编码是可变字长编码(VLC)的一种。Huffman于1952年提出一种编码方法,该方法完全依据字符出现概率来构造异字头的平均长度最短的码字,有时称之为最佳编码,一般就叫做Huffman编码(有时也称为霍夫曼编码)。

1951年,哈夫曼和他在MIT信息论的同学需要选择是完成学期报告还是期末考试。导师Robert M. Fano给他们的学期报告的题目是,寻找最有效的二进制编码。由于无法证明哪个已有编码是最有效的,哈夫曼放弃对已有编码的研究,转向新的探索,最终发现了基于有序频率二叉树编码的想法,并很快证明了这个方法是最有效的。由于这个算法,学生终于青出于蓝,超过了他那曾经和信息论创立者香农共同研究过类似编码的导师。哈夫曼使用自底向上的方法构建二叉树,避免了次优算法Shannon-Fano编码的最大弊端──自顶向下构建树。

1952年,David A. Huffman在麻省理工攻读博士时发表了《一种构建极小多余编码的方法》(A Method for the Construction of Minimum-Redundancy Codes)一文,它一般就叫做Huffman编码。[1]

Huffman在1952年根据香农(Shannon)在1948年和范若(Fano)在1949年阐述的这种编码思想提出了一种不定长编码的方法,也称霍夫曼(Huffman)编码。霍夫曼编码的基本方法是先对图像数据扫描一遍,计算出各种像素出现的概率,按概率的大小指定不同长度的唯一码字,由此得到一张该图像的霍夫曼码表。编码后的图像数据记录的是每个像素的码字,而码字与实际像素值的对应关系记录在码表中。

赫夫曼编码是可变字长编码(VLC)的一种。 Huffman于1952年提出一种编码方法,该方法完全依据字符出现概率来构造异字头的平均长 度最短的码字,有时称之为最佳编码,一般就称Huffman编码。下面引证一个定理,该定理保证了按字符出现概率分配码长,可使平均码长最短。

延伸阅读

matlab中huffman函数怎么用?

哈夫曼编码是一种可变长无损编码,应用范围广。这里介绍利用matalb实现哈夫曼编码方法。matalb中带有相关函,下面一一介绍:

ENCO = huffmanenco(SIG, DICT) : 哈夫曼编码函数,SIG为输入编码信号,DICT为编码字典,由函数huffmandict()生成;

DECO = huffmandeco(COMP, DICT) :哈夫曼解码函数,COMP为哈夫曼编码向量,即上面的ENCO;

DICT = huffmandict(SYM, PROB) : 哈夫曼字典生成函数,SYM为信源符号向量,包含信息中所有符号,PROB为相应符号出现的概率;

哈夫曼编码运用到了哪种数据结构?

哈夫曼编码运用到的数据结构是树型结构。

哈夫曼编码(Huffman Coding),又称霍夫曼编码,是一种编码方式,哈夫曼编码是可变字长编码(VLC)的一种。Huffman于1952年提出一种编码方法,该方法完全依据字符出现概率来构造异字头的平均长度最短的码字,有时称之为最佳编码,一般就叫做Huffman编码(有时也称为霍夫曼编码)。

哈夫曼编码借助了数据结构当中的树型结构,在哈夫曼算法的支持下构造出一棵最优二叉树,我们把这类树命名为哈夫曼树。因此,准确地说,哈夫曼编码是在哈夫曼树的基础之上构造出来的一种编码形式,它的本身有着非常广泛的应用。

h码是什么意思啊汽车?

H码指的是哈夫曼编码(Huffman Coding),又称霍夫曼编码,是一种编码方式,哈夫曼编码是可变字长编码(VLC)的一种。

matlab赫夫曼编码怎么出结果?

赫夫曼编码是我们经常使用的一种类型编码,它是一种即时码,有很多优点,下面我们使用matlab语言来实现huffman编码的过程。

首先,我们输入一组概率,这里以[0.512 0.128 0.128 0.032 0.128 0.032 0.032 0.008]为例。

P=[0.512 0.128 0.128 0.032 0.128 0.032 0.032 0.008];%输入

l=length(P);

n=2*l-1;%节点总个数

1

2

3

1

2

3

并计算需要的节点数。

接着我们定义编码结果元胞,来记录一些信息。

cell=zeros(n,5);%节点,有编号、概率、分配的码元、组成1、组成2.

1

1

接着初始化元胞

for i=1:l

cell(i,:)=[i,P(i),3,0,0];%3,0,0是坏值

end

for i=l+1:n

cell(i,:)=[i,0,3,0,0];

end

1

2

3

4

5

6

1

2

3

4

5

6

上面的cell元胞是最终结果,而参与运算的是当前运算元胞,不是cell,我们来定义当前运算元胞

不等长编码的概念?

不等长编码有霍夫曼编码,Shannon编码,Fano编码等等,霍夫曼编码(Huffman Coding)是一种编码方式,是一种用于无损数据压缩的熵编码(权编码)算法。

在计算机数据处理中,霍夫曼编码使用变长编码表对源符号(如文件中的一个字母)进行编码,其中变长编码表是通过一种评估来源符号出现机率的方法得到的,出现机率高的字母使用较短的编码,反之出现机率低的则使用较长的编码,这便使编码之后的字符串的平均长度、期望值降低,从而达到无损压缩数据的目的

huffman编码步骤主要有哪五步?

霍夫曼(Huffman)编码原理
霍夫曼(Huffman)编码是1952年为文本文件而建立,是一种统计编码。属于无损压缩编码。
霍夫曼编码的码长是变化的,对于出现频率高的信息,编码的长度较短;而对于出现频率低的信息,编码长度较长。这样,处理全部信息的总码长一定小于实际信息的符号长度。
步骤进行:
l)将信号源的符号按照出现概率递减的顺序排列。
2)将两个最小出现概率进行合并相加,得到的结果作为新符号的出现概率。
3)重复进行步骤1和2直到概率相加的结果等于1为止。
4)在合并运算时,概率大的符号用编码0表示,概率小的符号用编码1表示。
5)记录下概率为1处到当前信号源符号之间的0,l序列,从而得到每个符号的编码。

版权声明