霍夫曼编码的实际应用是什么?

时间:2010-02-04 11:55:15

标签: algorithm compression huffman-code

我被告知霍夫曼编码被用作作为无损数据压缩算法,但我也被告知真正的数据压缩软件采用霍夫曼编码,因为如果密钥分散不够分散,压缩文件甚至可能比orignal文件大。

这让我想知道是否存在霍夫曼编码的真实应用?

6 个答案:

答案 0 :(得分:29)

Huffman广泛用于您可能遇到的所有主流压缩格式 - 从GZIP,PKZIP(winzip等)和BZIP2到JPEG和PNG等图像格式。

所有压缩方案都具有无法有意义压缩的病态数据集;上面列出的存档格式只是在遇到这些文件时“存储”这些文件未压缩。

由于arithmetic and range coding,通常会避免使用较新的patent issues计划,这意味着霍夫曼仍然是压缩行业的主力军。

答案 1 :(得分:5)

请参阅Wikipedia有关此主题的文章:

  

今天的霍夫曼编码经常被用作其他压缩方法的“后端”。 DEFLATE(PKZIP的算法)和多媒体编解码器(如JPEG和MP3)具有前端模型和量化,然后是霍夫曼编码。

答案 2 :(得分:3)

霍夫曼编码有很多实际应用。 ZIP可能是使用Huffman编码作为其基础的最广泛使用的压缩工具。谷歌上个月发布的最新的最有效的无损压缩算法Brotli Compression也使用了霍夫曼编码。除此之外,Brotli还使用LZ77和一些其他基本的无损压缩算法。请参阅Brotli.

答案 3 :(得分:2)

当考虑压缩算法时,每种算法通常都有其优点和缺点。给定一组输入是压缩的本质,对于该数据存在更好和更差的压缩算法。

霍夫曼真的很擅长某些事情。最值得注意的是,重复订单的数据包含字符空间的子集。例如英语语言文本文件。英语倾向于使用相同的字母,后跟相同的其他字母。

如果你的教授或书给你的印象是不使用霍夫曼,那就错了。例如,几乎所有与互联网进行通信的通信都是霍夫曼编码的。 (许多通信协议使用它。)大多数图像文件(jpegs)是霍夫曼编码的。大多数音乐文件(mp3)都是霍夫曼编码的。还有很多其他例子。

使用霍夫曼的一个原因是因为它可以通过称为自适应霍夫曼的稍微不同的算法“发现”。当您阅读文件时,您将学习霍夫曼代码并“随时压缩”。这是一个简化的概述,但你明白了。

为解决使用情境问题的最佳算法,zip文件允许使用多种不同的压缩,具体取决于给定文件的最佳压缩。

答案 4 :(得分:0)

霍夫曼代码用于将固定长度代码转换为可变长度代码,从而导致无损压缩。可以使用JPEG和MPEG技术进一步压缩可变长度代码以获得所需的压缩比。

答案 5 :(得分:0)

一种非常普遍的应用是HPACK中的字符串编码,这是 http / 2 header compression技术。

RFC确实直接提供了一个Huffman Code Table,该地址针对压缩HTTP标头进行了优化。