IT人的算法書單:挖掘程序的靈魂
我們都知道對於軟件而言,最為經典的定義就是程序=算法+數據結構,算法對於軟件的重要性不言而喻,甚至可以說算法是程序的靈魂所在。甚至有人說如果計算機係隻開設三門課的話,那麼一定是:離散數學、編譯原理還有算法和數據結構。算法(Algorithm)是指解題方案的準確而完整的描述,是一係列解決問題的清晰指令,算法代表著用係統的方法描述解決問題的策略機製。其實對於IT人而言,無時無刻都沉浸在算法之中,小到可能隻是對於一個簡單的一維數組進行排序,大到使用進行實時個性化推薦或者使用機器學習算法預測未來的發展趨勢,這一切都是算法。而算法也在我們的生活中,比如我們小時候最愛舉的那個“泡茶”的例子、如何從一堆硬幣中通過天平找出假的那枚硬幣...
都說相由心生,思維也是一樣,IT人的思維往往比較縝密,因為我們的腦袋中其實運行著各種“算法”,不知道你是否也是這樣,等電梯時總覺得它的算法存在問題。好了,言歸正傳,算法始源於千百年前,中國古代就有各種的算法,比如今天我們依舊在使用的輾轉相除法等等,甚至《九章算術》其實可以稱之為一本算法書。在茫茫的書籍的海洋中,有關算法的書籍多不勝數,然而經曆過大浪淘沙剩下的才是經典之作,本文就為大家介紹基本算法的相關書籍,希望能幫助大家在探索程序的靈魂之路上不斷前行。
《計算機程序設計藝術》 —— 高德納 (Donald E.Knuth)
高德納,計算機科學家,算法與程序設計技術的先驅者、斯坦福大學計算機係榮休教授、計算機排版係統TEX和METAFONT字體係統的發明人,因諸多成就以及大量富於創造力和具有深遠影響的著作而譽滿全球。
《計算機程序設計藝術》係列著作被公認為是對經典計算機科學的論述,曾在1999年被《美國科學家》期刊評選為20世紀重要的12部學術專著之一。這一宏偉浩大的工程始於1962年,計劃出版7卷,目前已經出版了4卷。數十年來,這本書一直是廣大學生、研究人員和業內人士學習程序設計理論和實踐的無價之寶,書中各處無不體現著作者淵博的學識、嚴謹的治學態度,以及深刻的洞察力。該套書自出版以來,廣受眾多科學家的讚許,並對無數讀者產生了極其深遠的影響。《計算機程序設計藝術》堪稱計算機科學領域的瑰寶。從事研究的人驚豔於其精美優雅的分析,而普通程序員則一直在卓有成效地利用書中提供的各種方案解決日常問題。這些書展現了作者的博觀、清晰、幽默,所有的人都欽佩不已。高德納是算法和程序設計領域的先驅者,對計算機科學發展史也有著深入的研究,書中在介紹眾多理論的同時,也給出了相關的曆史和發展曆程,成為本書的一大特色。
《算法導論》 —— Thomas H.Cormen, Charles E.Leiserson, Ronald L.Rivest, Clifford Stein
《算法導論》是一本十分經典的計算機算法書籍,與《計算機程序設計藝術》相媲美。該書由Thomas H.Cormen、Charles E.Leiserson、Ronald L.Rivest、Clifford Stein四人合作編著。本書的最大特點就是將嚴謹性和全麵性融入在了一起。本書深入淺出,全麵地介紹了計算機算法。對每一個算法的分析既易於理解又十分有趣,並保持了數學嚴謹性。本書涵蓋的內容有:算法在計算中的作用,概率分析和隨機算法的介紹。本書專門討論了線性規劃,介紹了動態規劃的兩個應用,隨機化和線性規劃技術的近似算法等,還有有關遞歸求解、快速排序中用到的劃分方法與期望線性時間順序統計算法,以及對貪心算法元素的討論。本書還介紹了對強連通子圖算法正確性的證明,對哈密頓回路和子集求和問題的NP完全性的證明等內容。《算法導論》內容豐富,對本科生的數據結構課程和研究生的算法課程都是很實用的教材。本書在讀者的職業生涯中,也是一本案頭的數學參考書或工程實踐手冊。大學期間,老師給我們的觀點是對於這本書可以粗略地全麵概覽一遍,知道究竟有什麼樣的算法可以解決什麼樣的問題,當遇到具體問題需要使用這些算法時再去查找和使用,將《算法導論》當做一本工具書。
《算法》—— Robert Sedgewick, Kevin Wayne
《算法(第4版)》是Sedgewick之巨著,與高德納TAOCP一脈相承,幾十年多次修訂,經久不衰的暢銷書,涵蓋所有程序員必須掌握的50種算法。該書全麵講述算法和數據結構的必備知識,具有以下幾大特色:算法領域的經典參考書:Sedgewick暢銷著作的最新版,反映了經過幾十年演化而成的算法核心知識體係。內容全麵:全麵論述排序、搜索、圖處理和字符串處理的算法和數據結構,涵蓋每位程序員應知應會的50種算法。全新修訂的代碼:全新的Java實現代碼,采用模塊化的編程風格,所有代碼均可供讀者使用。與實際應用相結合:在重要的科學、工程和商業應用環境下探討算法,給出了算法的實際代碼,而非同類著作常用的偽代碼。富於智力趣味性:簡明扼要的內容,用豐富的視覺元素展示的示例,精心設計的代碼,詳盡的曆史和科學背景知識,各種難度的練習,這一切都將使讀者手不釋卷。科學的方法:用合適的數學模型精確地討論算法性能,這些模型是在真實環境中得到驗證的。與網絡相結合:配套網站提供了本書內容的摘要及相關的代碼、測試數據、編程練習、教學課件等資源。
《計算機算法的設計與分析》 —— 阿霍,霍普克勞夫特,烏爾曼
《計算機算法的設計與分析》是一部設計與分析領域的經典著作,著重介紹了計算機算法設計領域的基本原則和根本原理。書中深入分析了一些計算機模型上的算法,介紹了一些和設計有效算法有關的數據結構和編程技術,為讀者提供了有關遞歸方法、分治方法和動態規劃方麵的詳細實例和實際應用,並致力於更有效算法的設計和開發。同時,對NP完全等問題能否有效求解進行了分析,並探索了應用啟發式算法解決問題的途徑。另外,本書還提供了大量富有指導意義的習題。值得一提的是,本書第一作者阿霍,是哥倫比亞大學計算機科學係主管本科生教學的副主任,IEEE Fellow,美國科學與藝術學院及國家工程學院院士,曾獲得IEEE的馮·諾伊曼獎。他還是《編譯原理》(Compiler:Principles,Techniques,and Tools)的第一作者,其技術能力和影響力可想而知。
《算法設計與分析基礎》 —— Anany Levitin
《算法設計與分析基礎》在講述算法設計技術時采用了新的分類方法,在討論分析方法時條分縷析,形成了連貫有序、耳目一新的風格。此書涵蓋算法入門課程的全部內容,更注重對概念(而非形式)的理解。書中通過一些流行的謎題來激發學生的興趣,幫助他們加強和提高解決算法問題的能力。每章小結、習題提示和詳細解答,形成了非常鮮明的教學特色。作者基於豐富的教學經驗,開發了一套全新的算法分類方法。該分類法站在通用問題求解策略的高度,對現有大多數算法準確分類,從而引領讀者沿著一條清晰、一致、連貫的思路來探索算法設計與分析這一迷人領域。《算法設計與分析基礎》十分適合用作算法設計和分析的基礎教材,也適合任何有興趣探究算法奧秘的讀者使用,隻要讀者具備數據結構和離散數學的知識即可。
《算法圖解》 —— Aditya Bhargava
《算法圖解》是一本像小說一樣有趣的算法入門書。算法是解決問題的一步步流程,也是計算機科學領域的核心主題。如今程序員經常使用的算法已經經過了前人的探索、檢驗及證明。如果你想搞明白這些算法,又不想被困在繁瑣的證明中,本書正是你的不二選擇。這本圖示豐富、引人入勝的實用指南將讓你輕鬆學會如何在自己的程序中高效使用重要的算法。這本書是大家都可以看懂的算法基礎書,書中的代碼示例基於Python語言,書中涵蓋400多個示意圖,生動地介紹了算法的執行過程,並且展示了不同算法在性能方麵的優缺點,能夠幫助編程人員使用常見算法解決每天麵臨的實際編程問題。書中的前三章將幫助我們打下基礎,學習二分查找、大O表示法、兩種基本的數據結構以及遞歸等。餘下的篇幅將主要介紹應用廣泛的算法,具體內容包括:麵對具體問題時的解決技巧,比如,何時采用貪婪算法或動態規劃;散列表的應用;圖算法;Kzui近鄰算法。
《算法神探:一部穀歌首席工程師寫的CS小說》 —— 傑瑞米·庫比卡, 啊哈磊, 李嘉浩
《算法神探:一部穀歌首席工程師寫的CS小說》這本書圍繞程序設計典型算法,精心編織了一個扣人心弦又趣味橫生的偵探緝凶故事。小說主人公運用高超的搜索技巧和精深的算法知識,最終識破陰謀、緝拿元凶。其間,用二分搜索搜查走私船、用搜索樹跟蹤間諜、用深度優先搜索逃離監獄、用優先隊列開鎖及用優先搜索追尋線索等跌宕起伏又富含算法精要的情節,讓讀者在愉悅的沉浸式體驗中快速提升境界,加深對程序世界的理解。本書適合開發人員、編程愛好者和相關專業學生閱讀,也是少兒計算機科學啟蒙的絕佳讀物。這本書說是一本算法書,倒不如說是一本科普書籍,可以當做一本專屬於IT人的小說來看。
《改變未來的九大算法》—— 美 約翰.麥考密克
Google得出的搜索結果是如何產生的?百度為何會陷入“搜索門”,又是什麼機製使然?身處在大數據時代的我們,究竟該如何應對變化莫測的世界?……沒有滿篇的專業術語,第一次讓我們通過簡單明了的語言、生動的例證了解支撐計算機王國的靈魂支柱——9大算法,包括人工智能、數據壓縮,以及Google著名的PageRank等。《改變未來的九大算法》一書精彩地介紹了搜索引擎、PageRank、公開密鑰加密、糾錯碼、模式識別、數據壓縮、數據庫、數字簽名等內容。在解釋這些算法的同時,作者也向我們展示了充滿科學原創精神的計算機世界:因為每一種算法的提出不但延伸了虛擬世界的領域,同時也是人類智慧的彰顯,可以被廣泛運用於眾多領域。
在讀完本書後,你不會成為一名更加熟練的計算機用戶,但你會更珍視自己每天在所有計算設備上不停使用的思想的美。我們每天都會進行多次搜索查詢,但是你想過這個令人驚歎的工具是如何奏效的嗎?穀歌的精英管理層因為穀歌“以超乎尋常的技巧返回相關度極高的結果”而獲獎,他們是怎麼做到的?《改變未來的九大算法》將帶你一探究竟。
《算法帝國》 —— Christopher Steiner
今天,算法涉足的領域已經遠遠超出了其創造者的預期。特別是進入信息時代以後,算法的應用涵蓋金融、醫療、法律、體育、娛樂、外交、文化、國家安全等諸多方麵,顯現出源於人類而又超乎人類的強大威力。《算法帝國》是《紐約時報》暢銷書作者斯坦納的又一力作,通過一個又一個引人入勝的故事,向讀者介紹了算法掌控世界的真實情況,揭示了“機器人革命”是如何悄然在我們身邊發生的。如果說《改變未來的九大算法》是為彌散程序員氣質的業餘技術控洗髓內修的白話算法書,《算法帝國》就是為抱負征服世界雄心的程序員易筋外修的演義勵誌書,一路讀來心中滿盈釋然和暗合之悅。搞了小半輩子算法,一直到聽過凱文—斯拉文(KevinSlavin)的TED演講“算法如何塑造我們的世界”,才有意識地去感知周遭世界一行一止中算法的開合有度。本書大開大闔,從70年代華爾街的勃興開始,以本世紀華爾街和矽穀的權力更替收尾,世界易幟,算法仍舊。書名直譯為《算法如何控製我們的世界》,對於潛誌算法的我們,是控製還是被控製?書尾赫然寫道:“你很有可能統治世界,如果沒有機器人搶在你前頭的話。”
《算法帝國》適合所有對科技史、信息革命、算法原理、數據分析感興趣的讀者閱讀參考。
《終極算法:機器學習和人工智能如何重塑世界》 —— 佩德羅·多明戈斯
算法已在多大程度上影響我們的生活?購物網站用算法來為你推薦商品,點評網站用算法來幫你選擇餐館,GPS係統用算法來幫你選擇好的路線,公司用算法來選擇求職者……當機器最終學會如何學習時,將會發生什麼? 不同於傳統算法,現在悄然主導我們生活的是“能夠學習的機器”,它們通過學習我們瑣碎的數據,來執行任務;它們甚至在我們還沒提出要求,就能完成我們想做的事。 什麼是終極算法? 機器學習五大學派,每個學派都有自己的主算法,能幫助人們解決特定的問題。而如果整合所有這些算法的優點,就有可能找到一種“終極算法”,該算法可以獲得過去、現在和未來的所有知識,這也必將創造新的人類文明。 你為什麼必須了解終極算法? 不論你身處什麼行業、做什麼工作,了解終極算法都將帶給你嶄新的科學世界觀,預測以後的科技發展,布局未來,占位未來!
“終極算法可以獲得過去、現在和未來的所有知識,它的發明將成為人類最偉大的科學成就之一。”機器學習和人工智能究竟如何重塑我們的這個世界,或許你能夠在這本書中找到答案。
最後更新:2017-05-02 12:31:17