Algorithm 哈夫曼压缩

Algorithm 哈夫曼压缩,algorithm,compression,huffman-code,lzw,Algorithm,Compression,Huffman Code,Lzw,我目前正在研究不同的压缩算法,如哈夫曼算法、自适应哈夫曼算法和莱姆佩尔-齐夫算法,但我不太明白它应该如何在随机文件上工作 所以我知道他们处理文本文件,但这是他们唯一处理的事情吗? 我可以使用哈夫曼压缩音频文件或图像吗?如果可以,我如何知道我将用于算法的“块”的大小?是的,您提到的算法在二进制文件上都同样有效-大多数论文在示例中使用字符数据只是为了方便 至于块大小,尽管这不是要求,但现代通用压缩算法总是将输入视为字节流(8位值) 请注意,虽然原则上可以尝试使用哈夫曼压缩来压缩音频文件,但结果可能是

我目前正在研究不同的压缩算法,如哈夫曼算法、自适应哈夫曼算法和莱姆佩尔-齐夫算法,但我不太明白它应该如何在随机文件上工作

所以我知道他们处理文本文件,但这是他们唯一处理的事情吗?
我可以使用哈夫曼压缩音频文件或图像吗?如果可以,我如何知道我将用于算法的“块”的大小?

是的,您提到的算法在二进制文件上都同样有效-大多数论文在示例中使用字符数据只是为了方便

至于块大小,尽管这不是要求,但现代通用压缩算法总是将输入视为字节流(8位值)


请注意,虽然原则上可以尝试使用哈夫曼压缩来压缩音频文件,但结果可能是徒劳的,因为哈夫曼依赖于某些符号比其他符号更频繁。特殊用途的压缩算法,如MPEGx,通常用于音频。

是的,您在这里提到的算法在二进制文件上都同样有效-只是为了方便起见,大多数论文在示例中使用字符数据

至于块大小,尽管这不是要求,但现代通用压缩算法总是将输入视为字节流(8位值)


请注意,虽然原则上可以尝试使用哈夫曼压缩来压缩音频文件,但结果可能是徒劳的,因为哈夫曼依赖于某些符号比其他符号更频繁。特殊用途的压缩算法,如MPEGx,通常用于音频。

哈夫曼和自适应哈夫曼是编码的示例,它们利用符号概率的统计偏差将符号编码为尽可能少的位。(还有其他类型的编码,如算术、范围和非对称数字系统。)

Lempel-Ziv是建模的一个例子,它利用被压缩的特定类型的数据(在本例中为文本)中发现的冗余,并将其转换为适合编码的一系列符号。Lempel Ziv的工作假设是文本中经常会重复不同长度的字符串,自然语言就是这样

这种假设对于音频或图像文件根本不起作用,因为在这些文件中,冗余的形式非常不同。作为建模的一部分,将对数据执行变换,以按频率分离出组件。此外,有损压缩对于人类消费的音频和图像数据都是可以接受的,其中数据可以根据其在频域中的位置进行大量压缩或丢弃,还可以使用其他方式利用心理声学或心理视觉有效冗余

一旦完成了这种建模,就可以应用类似的编码将生成的符号编码成最小大小的比特流


压缩包括建模,这在很大程度上取决于要压缩的数据的类型,以及在有损压缩的情况下数据的使用者,然后是编码,编码将产生的信息压缩成压缩比特流。

哈夫曼和自适应哈夫曼是编码的示例,它利用符号概率的统计偏差将它们编码为尽可能少的位。(还有其他类型的编码,如算术、范围和非对称数字系统。)

Lempel-Ziv是建模的一个例子,它利用被压缩的特定类型的数据(在本例中为文本)中发现的冗余,并将其转换为适合编码的一系列符号。Lempel Ziv的工作假设是文本中经常会重复不同长度的字符串,自然语言就是这样

这种假设对于音频或图像文件根本不起作用,因为在这些文件中,冗余的形式非常不同。作为建模的一部分,将对数据执行变换,以按频率分离出组件。此外,有损压缩对于人类消费的音频和图像数据都是可以接受的,其中数据可以根据其在频域中的位置进行大量压缩或丢弃,还可以使用其他方式利用心理声学或心理视觉有效冗余

一旦完成了这种建模,就可以应用类似的编码将生成的符号编码成最小大小的比特流


压缩包括建模,这在很大程度上取决于要压缩的数据类型,以及在有损压缩的情况下数据的使用者,然后是编码,它将生成的信息压缩成压缩比特流。

因为这个问题很模糊,所以最好使用。堆栈溢出主要关注与实际代码相关的问题。因为这个问题非常模糊,所以它是一个更好的解决方案。堆栈溢出主要关注与实际代码相关的问题。