我想问一下递归压缩或反复压缩可能与否。请给我答案的理由
答案 0 :(得分:1)
我知道通过再次运行该代码并检查其长度可以实现递归压缩,但是我在互联网上看到的所有当前算法仅在第一次压缩并且在下一次压缩函数调用时增加了文件大小。
这是可以预料的。如果某个无损算法可以使用相同的方法从数据中挤出更多的压缩,那么在第一次运行时可能会这样做。再次对压缩数据应用相同的方法不太可能进一步减小尺寸。
然而,可以做的是组合几种不同的压缩算法。例如,LZ77与Huffman coding结合良好。
答案 1 :(得分:0)
假设你有一个压缩算法,你有一个input
。您可以通过在收到的input
上运行算法进行压缩。现在,如果您将算法的output
用作第二次调用的input
,则第二次调用算法的output
将被压缩两次。让我们考虑这个伪代码:
compress(input)
//do stuff
return output
compress end
recursiveCompression(input, depth)
if depth > 0
output <- compress(input)
return recursiveCompression(output, depth - 1)
else
return input
end if
recursiveCompression end
结束时,您使用recursiveCompression
和正整数input
来调用depth
。 depth
的值决定了压缩次数。当然,压缩可能在某个depth
之上效率低下。因此,几次压缩的可行性取决于depth
和算法。