歡迎光臨
每天分享高質量文章

讀完這7本演演算法書,你也可以像這10位演演算法大師一樣改變世界

導讀:演演算法是整個電腦科學的基石,是計算機處理資訊的本質。從開創演演算法分析這一領域的高德納、Amazon的“首席演演算法官”烏迪·曼伯爾,到發明快速排序演演算法託尼·霍爾,本文介紹了對AI、以及整個計算領域影響深遠的十位演演算法大師。

作者:範凱,馬林

來源:《程式員》雜誌

01 改變世界的十位演演算法大師

1. Don E.Knuth 高德納


演演算法和程式設計技術的先驅者。Oh,God!一些國外網站這樣評價他。一般說來,不知道此人的程式員是不可原諒的。其經典著作《計算機程式設計藝術》更是被譽為演演算法中“真正”的聖經,像KMP和LR(K)這樣令人不可思議的演演算法,在此書比比皆是。難怪連Bill Gates都說:“如果能做對書裡所有的習題,就直接來微軟上班吧!”

對於Don E.Knuth本人,一生中獲得的獎項和榮譽不計其數,包括圖靈獎,美國國家科學金獎,美國數學學會斯蒂爾將(AMS Steel Prize),以及發明先進技術榮獲的極受尊重的京都獎(KyotoPrize)等等,寫過19部書和160餘篇論文,每一篇著作都能用影響深遠來形容。同時也是世上少有的程式設計達到40年以上的程式員之一。他除了是技術與科學上的泰斗外,更是無可非議的寫作高手,技術文章堪稱一絕,文風細膩,講解透徹,思路清晰而且沒有學究氣,估計這也是《計算機程式設計藝術》被稱為聖經的原因之一。

2. Udi Manber 烏迪·曼伯爾

他是首席演演算法官,世界上還有如此奇怪的職位?但是對於Amazon乃至Google來說,這一點也不奇怪。Udi Manber,這位前Amazon的“首席演演算法官”,現在是Google負責工程事務的副總裁。他研究WWW的應用程式、搜尋以及隱藏在這背後的演演算法設計。在此期間,他與其他人共同開發了Agrep、Glimpse和Harvest等Unix上的搜尋軟體。1998年,Udi成為了Yahoo!的首席科學家。2002年,Amazon創造性地給了Udi“首席演演算法官”的職位,和Udi為Amazon的“SearchInside the Book”搜尋專案所做的工作相得益彰。

3. Edsger Wybe Dijkstra 艾茲格·迪科斯徹

1930年出生於荷蘭阿姆斯特丹,2002年逝世於荷蘭紐南。他在祖國荷蘭獲得資料和物理學學士,理論物理博士學位,2000年退休前一直是美國Texas大學的電腦科學和數學教授。以發現了圖論中的最短路徑演演算法(Dijkstra演演算法)而聞名於世,1972年因為ALGOL第二代程式語言而獲得圖靈獎。“Go To StatementConsidered Harmful”(EWD215)也是被廣為傳頌的經典之作。除了科學研究之外,他最喜歡做的事情就是教學,被人稱作“一天教學24小時”的教授。

且不說Dijkstra演演算法對計算科學,網路科學發展的深遠影響,單從他在1972年獲得圖靈獎時的演講“The Humble Programmer”就不得不肅然起敬,在獲得電腦科學中至高無上的獎項時,Edgs Wybe Dijkstra仍然稱自己不過是一個謙遜普通的程式員,何等胸襟,舉世之中幾人可比。

4. George Dantizig 喬治·伯納德·丹齊格

運籌學大師,由他父親一手培養出的天才。George的父親是俄國人,曾在法國師從著名的科學家Henri Poincare。他曾經這樣回憶自己的父親:“在我還是個中學生時,他就讓我做幾千道幾何題……解決這些問題的大腦訓練是父親給我的最好禮物。這些幾何題,在發展我分析能力的過程中,起了最最重要的作用。”

在伯克利學習的時候,有一天George上課遲到,只看到黑板上寫著兩個問題,他只當是課堂作業,隨即將問題抄下來並做出解答。六個月後,這門課的老師——著名的統計學家Jerzy Neyman——幫助他把答案整理了一下,發表為論文,George這才發現自己解決了統計學領域中一直懸而未決的兩個難題。

George後來在運籌學建樹極高,獲得了包括“馮諾伊曼理論獎”在內的諸多獎項。他在Linearprogramming and extensions一書中研究了線性程式設計模型,為計算機語言的發展做出了不可磨滅的貢獻。天妒英才,他於2005年5月13日去世。

5. James Cooley

美國數學家,哥倫比亞大學的數學博士,以他所創造的快速傅立葉變換(FFT)而著名,不能不說是意義極其重大,FFT的數學意義不光在於使大家明白了傅立葉(Fourier)變換計算起來是多麼容易,而且使得數字訊號處理技術取得了突破性的進展,對於現在的網路通訊,圖形影象處理等等領域的發展與前進奠定了基礎。

Fourier變化的意義在於將電能變為了工業的命脈,而FFT的意義更是在於他推動了整個社會資訊化的行程。在IBM研究中心中主要從事數字訊號處理的研究一直到1992年退休,同時他還是IEEE的數字訊號處理委員會的成員。1980年獲得ASSP’s Meritorious Service Award, 1984年獲得ASSP Society Award以及IEEE Centennial Medal。

6. John Backus 約翰·巴克斯

FORTRAN之父,早年在Hill School學習的時候因為討厭學習,成績一踏糊塗而不得不在暑假補課。1943年他在父親的要求下到維吉尼亞大學學習化學,隨後參軍、照顧頭部受傷的傷員、在醫學學校學習治療,可是最後又都放棄了。不過還好,戰後Backus進入紐約哥倫比亞大學學習數學,並於1949年畢業。在畢業前夕,他跑到了麥迪遜大街的IBM計算機中心參觀。事情湊巧,和導遊聊天的時候Backus談到自己正在找工作,在導遊的鼓勵下,他和中心一位主管的面談,成為了一名IBM的程式員。

在IBM,Backus的才華得到了施展,發明瞭人類歷史上第一個高階語言——FORTRAN。接著,又提出了規範描述程式語言語法的BNF。這位當年的“差生”終於被整個計算機世界肯定——美國計算機協會於1977年授予John Backus圖靈獎。

7. Jon Bentley

他寫作過三本程式設計書籍,其中最著名的就是涵蓋從演算法理論到軟體工程各種主題的Programming Pearls(《程式設計珠璣》),這其實是他發表過的文章的合集。在這些文章裡,Jon從工程實現的角度出發,為程式員們提供了一個個艱難問題的解決方案,猶如一顆顆閃閃發亮的珍珠。Bentley的珍珠超出了可靠工程學的範疇,利用他的洞察力和創造力為那些惱人的問題提供了獨特而巧妙的解決方案。

8. Nicklaus Wirth 尼古拉斯·沃斯

Pascal之父,如果說有一個人因為一句話而得到了圖靈獎,那麼這個人應該就是NicklausWirth,這句話就是他提出的著名公式“演演算法+資料結構=程式”。這個公式對電腦科學的影響程度足以類似物理學中愛因斯坦的“E=MC^2”——一個公式展示出了程式的本質。

Nicklaus Wirth,1934年出生於瑞士,1963年在加州大學伯克利分校取得博士學位。取得博士學位後直接被以高門檻著稱的斯坦福大學聘到剛成立的電腦科學系工作。在斯坦福大學成功的開發出Algol W以及PL360後,愛國心極強的Nicklaus Wirth於1967年回到祖國瑞士,第二年在他的母校蘇黎世工學院他建立與實現了Pascal語言——當時世界上最受歡迎的語言之一。

後來他的學生Philipe Kahn畢業後和Anders Hejlsberg(Delphi之父)創辦了Borland公司靠Turbo Pascal起家,很快成為了將Borland發展成為全球最大的開發工作廠商,這一切都不得不說要歸工於PASCAL語言的魅力。PASCAL已經影響了整整幾代的程式員,Nicklaus Wirth的思想還將會繼續指引現在和以後的程式員前進的方向。

9. Robert Sedgewick 羅伯特·塞奇威克

演演算法的講解者——是普林斯頓大學的電腦科學教授。他還是Adobe Systems的一名主管,也曾作為訪問學者在Xerox PARC、IDA和INRIA工作。他在斯坦福大學獲得博士學位。他的著作包括Algorithm in C、Algorithm in C++、Algorithm in Java等系列書籍,這些都再版多次。“沒有人能夠將演演算法和資料結構解釋得比Robert Sedgewick更清楚易懂了!”很多讀過他著作的程式員這樣說。

目前Robert正在研究演演算法設計、資料結構、演演算法分析等方面的基礎理論。他善於透過數學方法評估和預測演演算法效能,設法發現演演算法、資料結構的通用機制,例如使用逼近方法尋找更快速更高效的演演算法。另外,他還將演演算法和圖形學結合起來,例如使用視覺化方法評估演演算法效率,演演算法的圖形化模擬,用於出版物的高質量演演算法表現方法等等。

10. Tony Hoare 託尼·霍爾

計算機領域的爵士,1934年出生於英國,1959年博士畢業於俄羅斯莫斯科國立大學,獲得語言機器翻譯專業學士學位。1960年釋出了使他聞名於世的快速排序演演算法(Quick Sort),這個演演算法也是當前世界上使用最廣泛的演演算法之一。

Tony Hoare在取得博士學位後,就職於Elliott Brothers,領導了Algol 60第一個商用編譯器的設計與開發,由於其出色的成績,最終成為該公司首席科學家。從1977年開始,Tony Hoare博士任職於牛津大學,投身於計算系統的精確性的研究、設計及開發。因其對Algol 60程式設計語言理論、互動式系統及APL的貢獻,1980年被美國計算機協會授予“圖靈獎”。

1999年在牛津大學退學後,Tony Hoare博士被微軟劍橋研究院聘請擔任高階程式員,從事微軟劍橋研究院研究生成果的工業化應用的工作,以及協助其它研究人員進行服務於軟體產業及使用者的長期基礎研究專案。2000年因為其在電腦科學與教育上做出的貢獻被封為爵士。

02 關於演演算法的7本經典著作

大師們改變了世界,但實際上,世界每天都在發生變化,這其中,也有你貢獻的一份力量。你可以讀一讀這7本經典的演演算法書,然後繼續追隨大師的腳步,跟他們一起改變世界。

1


演演算法導論》(原書第3版)

作者: 託馬斯·科爾曼 等


推薦語:超過50萬人閱讀的演演算法聖經!演演算法標準教材,國內外1000餘所高校採用。全書各章自成體系,可以作為獨立的學習單元;演演算法以英語和偽程式碼的形式描述,具備初步程式設計經驗的人就能看懂;說明和解釋力求淺顯易懂,不失深度和數學嚴謹性。


關於作者:託馬斯·科爾曼,達特茅斯學院電腦科學系教授、系主任。目前的研究興趣包括:演演算法工程、平行計算、具有高延遲的加速計算。他分別於1993年、1986年獲得麻省理工學院電子工程和電腦科學博士、碩士學位,師從Charles E. Leiserson教授。由於他在計算機教育領域的突出貢獻,Cormen教授榮獲2009年ACM傑出教員獎。


查爾斯·雷瑟爾森,麻省理工學院電腦科學與電氣工程系教授,Margaret MacVicar Faculty Fellow。他目前主持MIT超級計算技術研究組,並是MIT電腦科學和人工智慧實驗室計算理論研究組的成員。他的研究興趣集中在並行和分散式計算的理論原理,尤其是與工程現實相關的技術研究。Leiserson教授擁有卡內基·梅隆大學電腦科學博士學位,還是ACM、IEEE和SIAM的會士。

2


演演算法基礎:開啟演演算法之門

作者:託馬斯·科爾曼


推薦語:超過50萬人閱讀的演演算法聖經!演演算法標準教材,國內外1000餘所高校採用。全書各章自成體系,可以作為獨立的學習單元;演演算法以英語和偽程式碼的形式描述,具備初步程式設計經驗的人就能看懂;說明和解釋力求淺顯易懂,不失深度和數學嚴謹性。


關於作者:託馬斯·科爾曼,達特茅斯學院電腦科學系教授、系主任。目前的研究興趣包括:演演算法工程、平行計算、具有高延遲的加速計算。他分別於1993年、1986年獲得麻省理工學院電子工程和電腦科學博士、碩士學位,師從Charles E. Leiserson教授。由於他在計算機教育領域的突出貢獻,Cormen教授榮獲2009年ACM傑出教員獎。

3


《機器學習演演算法

作者:朱塞佩·博納科爾索


推薦語:本書採用理論與實踐相結合的方式,在簡明扼要地闡明機器學習原理的基礎上,透過大量實體介紹了不同場景下機器學習演演算法在scikit-learn中的實現及應用。書中還有大量的程式碼示例及圖例,便於讀者理解和學習並實際上手操作。另一方面,書中還有很多的延伸閱讀指導,方便讀者系統性地瞭解機器學習領域的現有技術及其發展狀態。


關於作者:朱塞佩·博納科爾索(Giuseppe Bonaccorso),擁有12年機器學習和大資料方面的經驗,擔任過公共管理、軍事、公用事業、醫療保健、診斷和廣告等多個業務領域的IT工程師,使用Java、Python、Hadoop、Spark、Theano和TensorFlow等多種技術進行過專案開發與管理。他的主要研究興趣包括人工智慧、機器學習、資料科學等。

4


《演演算法設計與應用》

作者:邁克爾T.古德里奇 羅伯特·塔馬契亞


推薦語:既有演演算法的經典內容,也有現代專題,舉自現實世界問題的例子,提供三種型別的練習。


關於作者:Michael Goodrich,加州大學歐文分校電腦科學系首席教授,在這之前他是約翰霍普金斯大學的教授。他的研究興趣包括演演算法的分析、設計和實現,以及資料安全、雲端計算、繪圖和計算幾何。他是AAAS、ACM和IEEE會士,曾榮獲IEEE計算機協會技術成就獎和ACM卓越服務獎等。


Roberto Tamassia,布朗大學電腦科學系Plastech教授,布朗幾何計算中心主任。他的研究興趣包括資料安全、應用密碼學、雲端計算、演演算法、繪圖,以及計算幾何的分析、設計和實現。他是AAAS、ACM和IEEE會士,曾榮獲IEEE計算機學會技術成就獎。

5


《演演算法技術手冊》(原書第2版)

作者:喬治·海涅曼 加里·波利切


推薦語:伍斯特理工學院教授合力打造的演演算法學習必備手冊;提供高效的程式碼解決方案,輕鬆應用於實踐。


關於作者:George T. Heineman,伍斯特理工學院電腦科學系副教授, 曾於2005年任國際元件軟體工程研討會的議程主席。


Gary Pollice 伍斯特理工學院的實踐教授,《深入淺出面向物件與設計》(Head First Object Oriented Analysis and Design)的合著者。


Stanley Selkow,有著40年的大學教齡,他所從教的大學遍佈於加拿大蒙特利爾、中國重慶、瑞士洛桑和法國巴黎。

6


《圖解演演算法》

作者:俞徵武


推薦語:本書以輕鬆的對話方式,採用圖解的輔助說明,幫助讀者簡單且自然地掌握演演算法的基本概念,並養成主動思考的習慣,達到用演演算法解決實際問題的目的。


關於作者:俞徵武,男,資訊工程系教授,博士,主要教學和研究領域為圖形學演演算法、無線網路等。

7


《推薦系統:技術、評估及高效演演算法》

作者:弗朗西斯科·裡奇 等


推薦語:融合不同領域專家學者的理論成果和實踐經驗,全面介紹推薦系統的主要概念。


關於作者:弗朗西斯科·裡奇,義大利博爾扎諾自由大學電腦科學副教授。目前他的研究興趣包括推薦系統、智慧介面、移動系統、機器學習、案例推理、資訊和通訊技術在旅遊中的應用。


利奧·羅卡奇,以色列本-古裡安大學資訊系統工程系助理教授。他是智慧資訊系統方面公認的專家,在這一領域處於領先地位。他的主要研究領域包括資料挖掘、樣式識別和推薦系統。


布拉哈·夏皮拉,以色列本-古裡安大學資訊系統工程系助理教授。目前她的研究興趣包括推薦系統、資訊檢索、個性化、使用者建模和社交網路。

接下來就是福利時間了!

這7本書,在留言區說出你最想要的一本,以及為什麼,被贊得最高3條留言以及我們精選出的的2條走心留言的釋出者,將獲贈你想要的那本書。


一直看到這裡的你,一定是愛讀書的人。歡迎掃碼加入我們的大資料讀書會微信群,我們將在群裡額外送書!未來還有更多福利等你認領!

活動截止時間:8月26日(週日)22:00

留言區刷起來吧!

更多精彩


在公眾號後臺對話方塊輸入以下關鍵詞

檢視更多優質內容!


PPT | 報告 | 讀書 | 書單 | 乾貨

Python | 機器學習 | 深度學習 | 神經網路

區塊鏈 | 揭秘 | 高考 | 福利

猜你想看

Q: 你最期待哪本書

歡迎留言並順便贏取福利

覺得不錯,請把這篇文章分享給你的朋友

轉載 / 投稿請聯絡:baiyu@hzbook.com

更多精彩,請在後臺點選“歷史文章”檢視

贊(0)

分享創造快樂