天天看點

90 歲程式員,他的壓縮算法改變了世界

近日,國際電氣與電子工程學會(Institute of Electrical and Electronics Engineers,簡稱 IEEE)宣布,授予 IEEE 終身 Fellow Jacob Ziv 2021 年度 IEEE 榮譽勳章。

90 歲程式員,他的壓縮算法改變了世界

這位如今已 90 歲的前輩,是一位以色列科學家,他開發了通用無損壓縮算法 Lempel-Ziv,為後來的 GIF、PNG 和 ZIP 檔案的開發奠定了堅實的基礎。

1、無損壓縮算法發展史

20 世紀 70 年代,随着網際網路及 PC 時代的來臨,如何在有限記憶體空間的裝置上節省出更多的空間,并減少對帶寬的占用,讓檔案在較低的網絡帶寬下實作更快的傳輸,成為彼時 IT 行業亟需解決的一大難題。

正是以,資料壓縮技術也從背後逐漸走入大衆視野,并開始在計算機領域扮演重要角色。

現如今,想必很多人都知道,資料壓縮主要有兩種類型:一種是有損壓縮,一種是無損壓縮。

所謂有損壓縮,主要是利用了人類對圖像或聲波中的某些頻率成分不敏感的特性,允許壓縮過程中損失一定的資訊,日常生活中,我們常見的語言、圖像、視訊壓縮其實都是有損壓縮的方式。

與有損壓縮相比,無損壓縮要更為複雜一些,對此,IEEE 官方使用了「魔術」一詞來形容這門技術,其中原因主要是因為無損壓縮技術是利用資料的統計備援進行壓縮,在解壓之後,可完全恢複原始資料而不引起任何失真。這就像一位魔術師拿着魔術棒一揮,手中的東西不見了,再一揮,又原封不動地出現了,無損壓損技術就像表演魔術一樣。

而 Jacob Ziv 就是這位在資料壓縮領域拿着魔術棒的大師。

不過,在 Jacob Ziv 這位魔術師帶來奇特的魔術之前,壓縮算法也經曆了百年的發展曆程(

http://ethw.org/History_of_Lossless_Data_Compression_Algorithms

):

事實上,發明于 1838 年的 Morse code,是最早的資料壓縮執行個體。

随着大型機的興起,數學家香農和 Robert Fano(CSAIL的計算先驅和創始人)發明了 Shannon-Fano(香農-範諾)編碼算法。他們的算法基于符号(symbol)出現的機率來給符号配置設定編碼(code)。一個符号出現的機率大小與對應的編碼成反比,進而用更短的方式來表示符号。

1951 年,作為麻省理工的一名學生,David Huffman 選擇寫學期論文而非期末考試的方式來完成學業任務,彼時他的論文題目是尋找二叉編碼的最優算法。不過,遺憾的是,經過幾個月的努力後依然沒有任何成果,Huffman 決定放棄所有論文相關的工作,開始學習為參加期末考試做準備。就在那時,Huffman 偶然間找到一個與 Shannon-Fano 編碼相類似但是更有效的編碼算法,這種編碼方式效率高、運算速度快。

後來到了 20 世紀 70 年代,随着線上存儲的出現,哈夫曼編碼得到了廣泛應用。不過,經過不斷地嘗試,不少科學家發現哈夫曼編碼所得的編碼長度隻是對資訊熵(描述信源的不确定度)計算結果的一種近似,還無法真正逼近資訊熵的極限。同時,它需要兩次通過資料檔案:一次計算檔案的統計特征,第二次編碼資料。将字典與編碼資料一起存儲,增加了壓縮檔案的大小。

1977 年,來自以色列的 Jacob Ziv 和 Abraham Lempel 兩位技術大神打破傳統的設計思想,創造出一種哈夫曼編碼更有效的壓縮算法,并以兩個人名字來命名。

同時,他們還發表了一篇名為《A Universal Algorithm for Sequential Data Compression》(順序資料壓縮的一個通用算法的論文:

https://www2.cs.duke.edu/courses/spring03/cps296.5/papers/ziv_lempel_1977_universal_algorithm.pdf

揭曉了獨創的 LZ77 算法,這也是第一個使用字典來壓縮資料的算法。

90 歲程式員,他的壓縮算法改變了世界

次年,Jacob Ziv 和 Abraham Lempel 再次發表一篇改進版的論文(《Compression of Individual Sequences via Variable Rate Coding》),并帶來了 LZ78 的壓縮算法。與 LZ77 不同,LZ78 解析輸入資料,生成一個靜态字典,不像 LZ77 動态産生。該算法成為 80 年代初使用的 Unix 壓縮程式的基礎;影響了 90 年代的 WinZip 和 Gzip,為 GIF、TIFF 圖檔格式的開發帶來了一定的指引。

如果沒有這些算法的存在,現在的我們不一定能夠使用更為便捷的網絡就可以發送大型資料檔案,或還停留在将大型資料檔案拷貝到CD光牒上進行傳輸時代;聽音樂時,還有可能需要 CD 而不是通過流式傳輸......

2、Ziv 的過往經曆

這一切都需要感謝 Jacob Ziv 和 Abraham Lempel。

"LZ 算法是第一個成功的通用壓縮算法",一位支援 Ziv 獲獎的工程師如是說。這些算法以及 Jacob Ziv 對它們的分析,為後續關于通用算法的大多數工作奠定了基礎。

回顧 Ziv 的過往經曆,其跨越了半個世紀,将自己全身心地投入到壓縮算法領域中。

1931 年,出生在當時由英國統治的巴勒斯坦城市 Tiberias(現屬于以色列)的 Ziv,在很小的時候,Ziv 就對電力和電子産品有着濃厚的興趣,譬如,在練習小提琴的時候,他會嘗試把樂譜架變成一盞燈。此外,他還試圖用鋼琴彈奏的金屬零件制作一個馬可尼發射機。

1948 年,第一次阿以戰争爆發時他在讀高中,後來被征召到前線短暫地服過役。由于一群母親組織抗議,他才從前線回到了後方,在空軍受訓擔任雷達技師。戰争結束後,他進入以色列理工學院學習電氣工程。

在 1955 年完成碩士學位後,Ziv 重返國防界,并加入了以色列國防研究實驗室(現為拉斐爾先進防禦系統),開發用于飛彈和其他軍事系統的電子元件。

1959 年,Ziv 被選為以色列國防實驗室為數不多的出國留學的研究人員之一。那時,Ziv 計劃繼續從事通信工作,但他不再隻對硬體感興趣。偶然機遇之下,他閱讀了《資訊理論》(Prentice-Hall,1953年)的書籍,他決定将資訊理論作為他關注的焦點。然而,除了麻省理工學院之外,還有什麼地方可以研究資訊理論呢?

當然還是麻省理工!于是,1960 年,Ziv 進入 MIT 讀博,在資訊理論方面深造,在畢業傳回以色列後進入了國防部擔任通信部門主管。

1968 年,他傳回美國,進入了貝爾實驗室。

兩年後,Ziv 和幾個同僚一起加入了以色列理工學院。就是在這裡,他遇到了 Abraham Lempel,兩個人共同讨論了如何改進無損資料壓縮。

Ziv 和 Lempel 都想知道他們是否可以開發一種無損資料壓縮算法,該算法适用于任何類型的資料,不需要預處理,并且能夠實作資料的最佳壓縮,這個目标被稱為 Shannon 熵的對象定義。在設想時,他們并不清楚是否可以實作他們的目标。于是,他們決定找出答案。

在深入研究幾年後,随着 LZ77 和 LZ78 的出現,代表了其研究成功。Ziv 和 Lempel 開創了通用源編碼,一系列無需知道固有資訊壓縮資料的算法,減少了從不失真和失真資料重建圖像所需的資料率。

對此,斯坦福大學從事資訊理論的電氣工程教授 Tsachy Weissman 表示:"在他們發表作品時,算法清晰優雅,易于實作,計算複雜度低,這一事實幾乎無關緊要。更多的是關于理論結果,為接下來的研究帶來重要意義。"

另外,Ziv 還促成了錯誤校正代碼的低計算複雜性解碼理論。并于:

1993 年,因精确科學而被授予以色列獎(Israel Prize);

1995 年,因其“對資訊理論、資料壓縮的理論和實踐的貢獻”獲得 IEEE 理查德 · 漢明獎章;

1997 年,獲得 IEEE 資訊論學會的克勞德 · 香農獎;

2008 年,獲得 BBVA 基金會知識前沿獎。

如今,憑借「其對資訊理論和資料壓縮技術的重要貢獻和傑出的研究上司地位」,被授予 2021 年度 IEEE 榮譽勳章,可謂實至名歸,向依舊奮戰在研究一線的前輩緻敬!

繼續閱讀