对于Lempel-Ziv-Welch和Huffman压缩算法,Big O表示法的空间和时间复杂度是多少?谷歌让我失望。
谢谢,
旧金山
答案 0 :(得分:8)
由于字典大小是固定的且与输入长度无关,LZW在O( n )中,因为每个字节只读取一次,并且每个字符的操作复杂度是不变的。
Huffman encoding也在O( n )中:首先计算每个输入字节的出现次数,然后对其进行排序并构建输出编码。
答案 1 :(得分:3)
取决于实施。他们总是变得更好。 “霍夫曼”这个术语有点过于普遍。例如,你可能意味着一个显式树,一个隐含的,一个动态的... 但无论如何,我想如果你这样做非常聪明你应该能够在 O(n)上实现alomost任何“Huffman”, n < / em>是文本长度。
LZW也依赖于实现。我不知道什么是“O”常见的实现。我猜大桌子你可能有类似 O(n log n)的东西,但这只是猜测。