【发布时间】:2018-01-30 23:00:54
【问题描述】:
许多压缩算法都利用了数据中存在冗余/模式这一事实。例如,aaaaaaaaaabbbbbbbbbbbcccccccccccc 可以压缩为 10'a'11'b'12'c'。
但是我的压缩数据中没有更多冗余,我无法进一步压缩它。但是,我可以对其进行加密或编码,然后将其转换为不同的字节串:xyzxyzxyzxyzxyz。
如果随机位碰巧在其中有一个模式,似乎很容易利用它:5'xyz'
我们的流程如下所示:
Original: aaaaaaaaaabbbbbbbbbbbcccccccccccc
Compressed: 10'a'11'b'12'c'
Encrypted: xyzxyzxyzxyzxyz
Compressed again: 5'xyz'
但是您拥有的数据越多,文件就越大,许多加密形式就越有效。尤其是霍夫曼编码,它似乎对随机数据位非常有效,尤其是当文件变得非常大时!
我想当您需要快速数据时这会很糟糕,但我认为它可能对存储档案或其他类似的东西有好处。也许通过网络下载一部电影只需要 1MB 的带宽,而不是 4MB。然后,您可以在下载时解压电影,在硬盘上获取完整的 4MB 文件,而不会破坏您的网络带宽。
所以我有几个问题:
人们是否曾经对数据进行编码以便更好地压缩?
人们是否曾经“双重压缩”他们的数据?
是否有任何众所周知的“双重”压缩示例,其中数据被压缩、加密或编码,然后再次压缩?
【问题讨论】:
-
为什么您认为 Huffman 编码对随机数据有效?它依赖于某些数据发生的概率不同于其他数据发生的概率。对于大量真正随机的数据,情况并非如此。
-
你是对的,如果数据真的是随机的,那么霍夫曼编码根本不起作用。这是我的逻辑。压缩利用数据中的模式,使其无模式。加密会扰乱数据,因为我们已经是无模式的,所以只有可能性或保持无模式,或将一些模式引入数据。
-
@EdmCoff 我很困惑:一旦经过霍夫曼编码,一条消息看起来就像一串随机位。但是一串随机位对霍夫曼编码效率不高。在最坏的情况下,霍夫曼编码不会向消息中添加任何位(除了标头表,是否有足够大的开销相关?)。我想我很难相信每次您使用 EVERY 算法加密/编码压缩数据时,您都无法找到可以利用任何压缩算法进行压缩的模式。
标签: encoding compression