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

问题描述 投票:23回答:6

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

这让我想知道哈夫曼编码是否存在任何实际应用?

algorithm compression huffman-code
6个回答
29
投票

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

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

由于arithmetic and range coding,通常避免使用较新的patent issues方案,这意味着Huffman仍然是压缩行业的主力军。


5
投票

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

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


3
投票

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


2
投票

当考虑压缩算法时,每种算法通常都有利有弊。给定一组输入是压缩的本质,对于该数据存在越来越好的压缩算法。

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

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

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

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


0
投票

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


0
投票

一个非常广泛的应用是HPACK中的字符串编码,即http / 2的header compression技术。

RFC确实直接提供了针对压缩HTTP头进行优化的Huffman Code Table

© www.soinside.com 2019 - 2024. All rights reserved.