news 2026/6/10 18:36:47

两个老祖写的神奇算法,统治了全世界!

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
两个老祖写的神奇算法,统治了全世界!

作为普通人,你在浏览网页的时候,你并不会意识到,服务器发给你的网页,其实都是压缩过的。

如果你像程序员一样,在浏览器中按一下F12,就能找到这样的东西:

它的意思是:为了节省带宽提供网速,我(服务器)把内容用gzip做了压缩,你(浏览器)得解压缩一下才能看啊!

在HTTP压缩中,除了gzip之外,还有compress、deflate、br等算法,让人眼花缭乱。

但是,这些压缩算法,都有一个老祖宗:LZ算法

LZ来自两个人的名称:AbrahamLempel,JacobZiv。

两个人于2023年相继去世,都很长寿,Lempel活了86岁,Ziv一个活了91岁。

01

起源

数据压缩分为两种,一种是有损压缩,如MP3、JPEG,一些不重要的数据在压缩时会被删除。

另外一种是无损压缩,二进制位神奇的“消失”,文件显著变小,方便存储和传输。

1948年,香农创立了信息论以后,大家一直在折腾一件事情:如何找到最优编码,压缩一段信息。

香农和法诺率先出手,提出了香农-法诺编码

它通过符号分组的方式,自顶向下构建了一个二叉树。

但是这种方式不是最优解,并且编码不是前缀码,容易产生歧义。

法诺后来在麻省理工教信息论时,给学生们提出了一个挑战:要么参加期末考试,要么改进现有的数据压缩算法。

一个叫霍夫曼的研究生不喜欢考试,决定走后一条路。

霍夫曼并不知道,就连大名鼎鼎的香农也在这个问题上苦苦挣扎。他研究了几个月,开发了多种方法,都没有用。

就在他要放弃,把笔记扔到垃圾桶的那一刻,一个美妙而优雅的算法划过了他的脑海:按照字符出现的频率,从下往上构建二叉树,这就是著名的霍夫曼算法。

霍夫曼的算法被称为“最佳编码”,实现了两个目标:

(1) 任何一个字符编码,都不是其他字符编码的前缀。

(2) 信息编码的总长度最小。

霍夫曼算法虽然很好,但有个巨大的限制:需要先获得所有字符出现的概率,然后才能编码压缩,这在很多情况下是做不到的。

上世纪70年代,互联网出现以后,这个问题变得更为突出。

能不能实现一边读取数据,一边压缩?

02

突破

以色列理工学院的Ziv和Lempel一起向这一问题发起了挑战。

两人是很好的搭档,Ziv擅长统计学和信息论,Lempel则擅长布尔代数和计算机科学。

1977年,他们俩都来到了贝尔实验室做学术休假。

学术休假又称为“知识人才休假”,每工作几年就有一段很长的假期(比如半年),这段假期里想干什么就干什么,还是带薪的。

大佬们的学术休假很有意思,比如Unix发明人Ken Thomson在休假时就回到了母校伯克利,把Unix传播到了那里,启发Bill Joy等人开发了BSD。

Ziv和Lempel也是这样,他们到美国贝尔实验室去学术休假,在“休假”期间合作发表了一篇论文:《顺序数据压缩的通用算法》,提出了基于“滑动窗口”的算法,它不直接考虑字符频率,而是寻找重复的数据块(如字符串、字节序列等)并引用这些数据块之前出现的位置。

这算法就是LZ77,它适用于任何类型的数据,不需要做预处理(统计字符出现的概率),只需要一次遍历就可以实现极高的压缩比。

第二年,他们再接再厉,改进了LZ77,变成了LZ78,能够从压缩数据中完美实现数据解压重构,并且比以往的算法效率更高。

03

乱战

LZ算法这样的宝贝,居然停留在理论界好几年,没有大规模使用。

直到1984年,DEC公司的Terry Welch在LZ基础上,创造了LZW算法,用到了Unix的compress程序中。

伴随着Unix的广泛传播,LZ算法开始进入飞速发展的快车道。

但是,也进入了群雄并启的乱战时代。

1985年,Thom Henderson在BBS下载文件时,发现总得一个一个地下载,拨号上网太慢了,于是他写了一个叫做ARC的软件,可以将多个文件压缩成一个,这就方便多了。

1986年,Phillip Katz发现了ARC,喜欢的同时又觉得这玩意儿压缩速度太慢,于是就卷起袖子把关键的压缩和解压缩用汇编重写,形成了PKARC,开始卖钱。

Thom Henderson看到自己的生意被抢,一气之下把Phillip Katz告上法庭,理由很充分:你PKARC中的注释、拼写错误都和我的ARC一样,你这是在抄袭!还有,我的ARC虽然是开源的,但是协议规定只能看,不能改!

最终ARC胜诉,Phillip Katz赔了几万美元。

天才Phillip Katz当然不服,他研究了LZ77算法和Huffman算法,将二者结合,创造了新的压缩算法(deflate)和新的文件格式(zip),以及新软件PKZIP

PKZIP无论是在压缩比,还是在解压缩速度上都把ARC打得找不着北,迅速统治了DOS时代。

由于ZIP格式是公开的,开源界info-zip小组也发布了开源、免费的unzipzip,实现了deflate算法。

随后,Jean-loup Gailly和 Mark Adler基于deflate又开发了著名的gzip(文件格式+实用程序),替换了Unix上的compress。

gzip就是在文章开头看到的那个HTTP压缩格式。

1991年,Nico Mak 觉得PKZIP的命令行实在是不爽,他就基于PKZIP开发了一个Winodws3.1的前端(后来用开源的info-zip替换了PKZIP),让大家可以用图形界面的方式来压缩文件,这就是著名的WinZip

用户发现WinZip界面精美,操作友好,根本不用记忆那些烦人的参数,点几下鼠标就完成压缩了。

WinZip迅速占据了所有的PC,成为成为90年代最流行的共享软件之一。

不过WinZip再辉煌,毕竟是“寄生”在Windows平台上。

Windows出手,干脆把Zip的功能内置到了操作系统中,终结了一切。

04

结语

从LZ77开始,到LZW,compress,Deflate,gzip ...... 无损压缩算法不断地修修补补,逐渐形成了一个庞大的家族,但是无论怎么改,它们的原理和思想都和最早的LZ算法没什么差别。

这些算法帮助我们压缩图像,压缩文本,压缩互联网传输的内容,成为我们日常生活中不可或缺的一部分。

毫不夸张地说,LZ算法和它的子孙们已经统治了全世界。


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 23:51:48

Tom Lee怎么看比特币超级周期

作者:播客Master Investor编者注:文章中的观点仅供参考,均不构成金融推销、投资建议或个人推荐。1月20日,以太坊财库公司Bitmine Immersion主席、Fundstrat Global Advisors联合创始人兼研究主管Tom Lee受邀参加一期由「威尔弗雷德…

作者头像 李华
网站建设 2026/6/9 22:21:32

GPEN能否用于医学影像?皮肤病变区域增强可行性探讨

GPEN能否用于医学影像?皮肤病变区域增强可行性探讨 你可能已经听说过GPEN——一个在人像修复和面部增强领域表现惊艳的AI模型。它能将模糊、低清的人脸照片“复原”成细节清晰、肤质自然的高清图像,广泛应用于老照片修复、美颜增强等场景。但今天我们要…

作者头像 李华
网站建设 2026/6/9 15:17:01

float8量化真能省显存?麦橘超然数据说话

float8量化真能省显存?麦橘超然数据说话 在AI图像生成领域,显存占用一直是制约模型部署的关键瓶颈。尤其是像Flux这类高性能扩散模型,动辄需要16GB以上的显存才能流畅运行,这让许多中低端设备用户望而却步。最近,基于…

作者头像 李华
网站建设 2026/6/9 13:23:22

YOLOv9置信度阈值调整:--conf参数使用说明

YOLOv9置信度阈值调整:--conf参数使用说明 你有没有遇到过这样的情况:用YOLOv9检测图片时,模型输出了一堆框,但很多都是重复的或者根本不对?看起来是检测到了目标,可又拿不准哪个是真的。其实,…

作者头像 李华
网站建设 2026/6/5 8:10:16

Qwen情感分析准确率提升技巧:实战调参经验分享

Qwen情感分析准确率提升技巧:实战调参经验分享 1. 引言:为什么小模型也能做好情感分析? 你有没有遇到过这种情况:想在本地服务器或者边缘设备上部署一个情感分析功能,结果发现动辄几GB的模型根本跑不动?更…

作者头像 李华
网站建设 2026/6/7 23:01:51

导师推荐 自考必备!8款AI论文工具TOP8测评

导师推荐 自考必备!8款AI论文工具TOP8测评 2026年自考论文写作工具测评:精准选择,高效提分 随着自考人数逐年增长,论文写作成为考生面临的重要挑战。无论是选题构思、资料搜集,还是内容撰写与格式规范,都…

作者头像 李华