
[美]阿迪蒂亞·Y. 巴爾加瓦
本書示例豐富,圖文並茂,以簡明易懂的方式闡釋了算法,旨在幫助程序員在日常項目中更好地利用算法爲軟件開發助力。前三章介紹算法基礎,包括二分查找、大O表示法、兩種基本的數據結構以及遞歸等。餘下的篇幅主要介紹應用廣泛的算法,具體內容包括:面對具體問題時的解決技巧,比如何時採用分而治之、貪婪算法或動態規劃,哈希表的應用,圖和樹算法,K最近鄰算法等。這一版將示例代碼更新到了Python 3,並新增了兩章專門討論樹,加之諸多修訂,使得內容更加完善。
再看第二版,沒有第一版給我的驚豔感覺。 日子一天一天的過,真正踏實學會的東西不會溜走,即便遺忘,再見也能立刻浮現出來。
我覺得這是最好的最有趣的算法入門書。勝過國內的《啊哈算法》那本書。 讀完本書雖然沒有什麼高深的算法,這本小書的最大優點就在推理過程交代清楚。一步一步、爲什麼這麼想、這麼走,都給你描畫得一清二楚。換言之,它是按照事物發展的邏輯順序進行內容構建的,看得就很過癮,像一本推理小說。 舉例而言,它會在介紹完 SHA 算法後立刻介紹局部敏感的散列算法,在我剛在前一節中提出問題,如果我不想一點變動就讓哈希值完全不同,那麼應如何處理?它在下一節立刻墊上了,用 Simhash。這種邏輯上的完備與層層遞進,就減少了很多理解成本。有時候你覺得理解困難,就是因爲中間有步驟被抽去了,例如你在數學書裏經常看到的:可得、證明。
書中讓我感悟最深的,是取捨思維。沒有萬能的算法,每種方案都有自己的優缺點。數組讀取快但是增刪慢,鏈表增刪靈活隨機讀取卻低效;貪婪算法簡單高效,但不一定得到最優解;動態規劃可以求解最優問題,卻會消耗更多內存。學習算法,本質就是分析問題的場景,權衡時間、空間成本,選擇最合適的解決路徑,而不是一味追求最高級、最複雜的解法。迪傑斯特拉最短路徑、廣度優先搜索、KNN近鄰算法,結合生活里路線規劃、社交關係、簡單預測的例子,讓我明白:算法就藏在日常軟件的背後,服務於真實業務需求。
電子書粗製濫造,都不校對的嗎???就敢拿來賣錢?