《演算法(第4版)》書評:精緻思考下圖表的魅力
演算法作為電腦科學的支柱,其重要性無論如何強調也不過分。演算法類圖書歷來分為兩類:學院派和實戰派,前者注重理論的優美和深刻卻迷失於繁瑣的證明推導,後者強調程式碼的簡潔和實用但缺少內在指導分析。能夠將兩者結合得很好的圖書非常少見,《演算法(第4版)》就是其中之一。
全書分為基礎、排序、查詢、圖、字串、背景六章,基本涵蓋了基礎演算法的內容。本書完全從零起步,循序漸進的演繹手法使人輕鬆入門,讀者只需要具有基本的程式設計概念和基礎數學知識就可以閱讀本書。本書最大的特點就是豐富的圖形展示,圖形能夠形象地展現演算法過程,幫助讀者清晰地理解概念,不誇張地說,書中的配圖是筆者看過的最明白易懂的演算法圖。
本書的程式碼採用Java實現,對Java的介紹略顯繁瑣,有基礎的讀者可以跳過,但作者自編的圖形庫需要了解,後面很多實現均基於此。對ADT的介紹涉及契約程式設計的基本概念,推薦仔細閱讀。演算法分析是全書提綱挈領,需要精讀:你會看到用餅圖配上“嘀嗒”的時鐘聲來形象感知演算法用時,用箭頭和方格圖清晰給出的原生型別和物件型別的佔用空間分析,配上散點圖和趨勢曲線描繪union-find演算法的時間複雜度讓人耳目一新,作者通過不同輸入規模的檔案手把手地教你如何對比並估算其執行用時,很少有人會如此耐心,如此細緻,有時甚至讓讀者感覺有些許囉嗦。
作為一名正在準備ACM競賽的讀者,筆者閱讀過市面上不少ACM參考書,其中大部分都是題解思路加程式碼,給出的演算法模板不盡相同,經典的演算法也往往不加解釋。由於ACM選手通常都採用C++語言的STL,事先封裝好了大量基本操作,插入排序、快速排序、希爾排序等演算法逐漸退化為一個個概念,本書正好可以作為基礎演算法的參考實現常備案頭,既可以迅速回憶演算法原理,也可以直接應用書中程式碼(對於使用Java語言的ACM選手)。至於為什麼不用C++或Python進行描述,畢竟現在用Java的程式設計師數量最多,此類語言問題見仁見智吧。
雖是經典之作,但筆者認為本書存在兩個缺點:一是書太厚,容易讓人喪失信心,個人更喜歡大一些薄一些的開本,原版的英文描述雖然淺顯易懂,但略顯重複嘮叨。另一個是理論上稍微薄弱了些,動態規劃沒有涉及,NP完全問題也僅僅是提及未做描述,但這些知識點讀者都不難從其他圖書(如《演算法導論》)中得到詳細描述,畢竟演算法博大精深,如果要面面俱到,只怕頁數再多一倍也不夠。
但瑕不掩瑜,本書確實是一本不可多得的好書,既適合演算法初學者,也適合有多年程式設計經驗的高手,值得買回家細細品讀。正如吳文虎教授所言:“藝術與科學是相通的,都會給人以美的享受。體味思維藝術之美,我以為這可能是更高層次的享受。”讓我們泡上一杯咖啡,和作者一起暢遊在演算法的神奇世界裡,享受藝術的美妙吧。
相關文章
- 非常經典的演算法書! ——評《演算法》(第4版)演算法
- 【圖靈贈書】《精通Linux(第2版)》點評贈書圖靈Linux
- 三星Gear VR上手體驗評測:功能完善做工精緻VR
- 對 精緻碼農大佬 說的 Task.Run 會存在 記憶體洩漏 的思考記憶體
- Steam特別好評《G2 Fighter》評測:帶有“惡趣味”的精緻熱武器割草
- 【書籍】Django專案例項精解(第2版) pdf 下載Django
- 最精緻的瀏覽器——Chrome科普貼瀏覽器Chrome
- 對精緻碼農大佬的 [理解 volatile 關鍵字] 文章結論的思考和尋找真相
- 圖演算法精講演算法
- 圖靈技術演算法群第1期:《演算法圖解》讀書筆記圖靈演算法圖解筆記
- 從哲學上思考宇宙的存在 評《宇宙之書》
- 《演算法謎題》書評演算法
- Amazon書評之《演算法》演算法
- 【演算法圖解】讀書筆記:第3章 遞迴演算法圖解筆記遞迴
- 精緻小巧的圖片瀏覽器:Viso for Mac v4.1.4啟用版瀏覽器Mac
- 《深入理解C指標》書評精選指標
- 第2周專案4-圖書館的書
- 2022強力之作:一款超精緻的圖片預覽元件元件
- AI教程:手把手教你打造精緻的程式條AI
- Affinity Photo:精細調整,激發圖片潛在魅力 mac/win版Mac
- 《永進》評測:小而精緻的國產解謎佳作
- 精讀《對 Markdown 的思考》
- 數字化轉型背景下精益生產的思考
- OMG,12 個精緻的 Java 字串操作小技巧,學它Java字串
- 見微知著 —— Redis 字串精緻的內部結構Redis字串
- Photopile JS – 幫助你實現精緻的照片堆疊效果JS
- 《演算法心得:高效演算法的奧祕》點評贈書演算法
- 好書妙評之《圖靈的祕密》圖靈
- 小米藍芽電腦音響開箱圖賞 做工精緻、售價399元藍芽
- 提升幻燈片中圖表編繪能力的指南 —— 《用資料講故事》書評
- 小書MybatisPlus第5篇-Active Record模式精講MyBatis模式
- Oracle PL/SQL例項精解 (原書第4版)OracleSQL
- Botvac清潔機器人:智慧操控精緻吸塵機器人
- 巧用漸變色打造精緻移動端APPAPP
- 《Linux Shell指令碼攻略(第2版)》書評Linux指令碼
- [圖靈贈書]《Linux命令列與shell指令碼程式設計大全(第2版)》點評贈書圖靈Linux命令列指令碼程式設計
- Android自定義View:一個精緻的打鉤小動畫AndroidView動畫
- 22套精緻的使用者介面 PSD 原始檔素材