可以实现递归压缩吗?

时间:2014-12-26 07:39:12

标签: compression

我想问一下递归压缩或反复压缩可能与否。请给我答案的理由

2 个答案:

答案 0 :(得分:1)

  

我知道通过再次运行该代码并检查其长度可以实现递归压缩,但是我在互联网上看到的所有当前算法仅在第一次压缩并且在下一次压缩函数调用时增加了文件大小。

这是可以预料的。如果某个无损算法可以使用相同的方法从数据中挤出更多的压缩,那么在第一次运行时可能会这样做。再次对压缩数据应用相同的方法不太可能进一步减小尺寸。

然而,可以做的是组合几种不同的压缩算法。例如,LZ77Huffman 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来调用depthdepth的值决定了压缩次数。当然,压缩可能在某个depth之上效率低下。因此,几次压缩的可行性取决于depth和算法。