@ 2014.06.15 , 20:29
72

Quora 精选:史上最牛压缩包和最牛压缩算法

[-]

提问:我想了解一下文件压缩的极限。请给出原始文件和压缩后的大小。包括其所用的算法/过程。

【以下回答按得票数由高到低排列】:

Wenceslao Terra (2.4k 票):

有一个核弹级压缩包,文件名叫 42.zip。

这个压缩包只有 42.374 KB,但解压后的文件容量高达 4.503.599.626.321.920 bytes (4.5 PB)!!

( ⊙ o ⊙ )!

也就是说,4,718,592 GB 的数据被压缩成了 42KB。

这个压缩包里包括 16 个 zip 文件,每一个又打包 16 个打包了 16 个打包了 16 个打包了一个 4.3G 的单一文件的 zip 文件的 zip 文件的 zip 文件。

猛击这里下载这个神级压缩包(解压密码 42)。

高能警告: 玩耍前请务必关闭各种杀毒软件,扫描这个压缩包可能会让它们疯狂榨干你的系统资源导致假死。

好吧,其实还有更变态的,来拜见这枚大小只有 28KB,叫做 Droste 的「屠神级」压缩包。因为它可以无限自解压(占满你的硬盘为止……):请用虔诚的心抚摸这个链接。

好学的蛋友可以访问以下链接获得算法介绍:

ZIP File Quine
Zip Files All The Way Down

Mike MacHenry (19 票):

向制造了 42.zip 的程序员 Wenceslao Terra 脱帽致敬。

是的,这里有必要指出的是任何一种算法对于任何的数据,都没有一个理论上的压缩上限。在有些病态的案例里,我们可以很容易得到任意的压缩率。

「圆周率(Pi)压缩法」就是一个例子,常被用来开压缩算法的玩笑 —— 但不止是玩笑而已,理论上确实管用。方法是你把想要的压缩文件二进制化,然后在二进制化的 Pi 序列里找这段数据。由于 Pi 是无限不循环小数,所以任何你所选择的二进制数据最终都会在Pi里被找。这是个疯狂的但是尚未被彻底推翻的理论上可行的算法。但是如果我们只是要对单个文件进行压缩,而不是多个,这个方法一定管用。

于是你只需要标记 Pi 的起始位置和你文件的大小,压缩过程就愉快地完成了。这可以把任意的文件压缩到非常小的地步,而且可能会用掉你海量的时间来找到对应的二进制串,完全是拼人品的算法。

不过,理论上,如果你人品不够,找到的数据位于非常遥远的地方,那用这逗比算法得到的压缩包也可能会非常大。但是最近有一些逗比孩子对此还发表了论文,指出你可能得到比你要压缩的数据还大的压缩包。github 上就有一个这样的玩意儿叫 PIFS(Pi文件系统),这个开源项目声称不管怎么说, 100% 的压缩率在数学上是不可能的。

不过,Pi 压缩算法的确能把一些数据压缩的很小很小。在一些案例文件中,它能完成你想要任何压缩率。

所以,对于一个精心选择的文件能得到多大的压缩率?我可以在你任何的答案上在加上个 0.1%。

本文译自 Quora,由译者 Junius 基于创作共用协议(BY-NC)发布。


给这篇稿打赏,让译者更有动力
支付宝打赏 [x]
您的大名: 打赏金额:

4.7
赞一个 (23)

TOTAL COMMENTS: 72+1

[2] 1 »
  1. Tosha Copstead
    @1 year ago
    3199003

    http://www.autotuningcars.com/

  2. 雨纷飞
    @2 years ago
    3019423

    说的意思其实就是拿Pi当字典,但是! 不算字典大小的压缩率都是耍流氓。
    其他结论同@Miu

  3. 末法时代
    @3 years ago
    2448432

    @ee: 为什么现在还没有方便自动的分别压缩音频和文本的压缩软件出现? 因为音频视频格式,绝大多数已经是压缩算法压过一次的啊蛋友,再次压缩没啥用的啊

  4. sknfldf
    @3 years ago
    2441755

    42那个最后一层是一个dll文件,4.2G

  5. 2441518

    理论上任何无理数都可以用来表达任意信息。

    但问题在于无理数可以看成是一个完全随机的数字序列——不好彩,与你要表达的信息吻合的数字序列在“小数点后S位到E位”这个S和E就可能是两个极大的数,这个两个数所需的存储空间都可能比你所要表达的信息更多。

    可以预见的是——你要通过无理数压缩的信息长度越大,在一定位数之后找到吻合数字序列的概率就越低。原始信息每增加一个二进制位,你在一定位数之后找到对应数字序列的概率就减小一半。

  6. 梧桐树
    @3 years ago
    2440917

    42.zip解压后电脑会炸掉吗

  7. QepSSKVVF
    @3 years ago
    2440905

    一解压就被eset给删了

  8. Pakchon
    @3 years ago
    2440549

    叠加压缩

  9. 2440368

    @卢瑟天行者 密码就是42

  10. Anubis
    @3 years ago
    2440366

    @Aero: Silicon valley 超好看的:)

  11. lefteris
    @3 years ago
    2440359

    果然出现算法大家都鸡冻了,一群程序猿呀

  12. 罗曼蒂克
    @3 years ago
    2440349

    几年前见过一个 一段3D动画(我看了10分钟没看完)。只有几百K,不知道是不是你说的这个

  13. 2440345

    那个for循环的一看就不懂编程,人家是用zip算法压缩,你那个for循环能当压缩算法?能压个普通文件?弄出这个zip的人肯定对zip的压缩过程很了解

  14. 齐天大圣
    @3 years ago
    2440344

    见过一张照片,好像是世界最大CCD拍的,相机好像是徕卡,那个大家伙要两个人抬。

  15. 丢猫
    @3 years ago
    2440329

    最大压缩成什么样取决于内容的信息量
    怎么压缩取决于编码和算法
    压缩再压缩是没有用的,无损压缩不会低于原本的信息量
    那些夸张的压缩实际上是利用到本来就存在系统库里的资源
    或者有些是用算法生成一段资源
    这段资源的信息量取决于生成它的算法的精度

  16. iManuQiao
    @3 years ago
    2440211

    RAS硬盘版

  17. 处女难寻
    @3 years ago
    2440168

    谁记得那个几百KB的XP安装镜像压缩文件..

  18. 2440155

    活生生看最牛成压缩面包

  19. 想胖
    @3 years ago
    2440150

    之前有看到过一张类似的图片,是一张鸭子,修改后缀后,是一个压缩包,解压后好几G,当时觉得特牛

  20. 银河系总书记
    @3 years ago
    2440050

    再来个:http://www.etherdream.com/Test/GZip.ASP?file=x.jpg

  21. 银河系总书记
    @3 years ago
    2440048

    哈哈 崩溃了吧~~

  22. 银河系总书记
    @3 years ago
    2440044

    试试:

    [1] XX [14] 回复 [0]
[2] 1 »

发表评论


24H最赞