當前位置:
首頁 > 最新 > 一本簡單的演算法書––––《演算法圖解》

一本簡單的演算法書––––《演算法圖解》

只要和計算機編程搭上交道,總不會躲開數據結構和演算法。

01

最近忙裡偷閒看了一本書,[美]AdityaBhargava寫的《演算法圖解》。為什麼看這本書呢?首先,最近在做演算法方面的論文,所以想從基礎的數據結構和演算法上進行學習一下,眾所周知,目前做演算法方面,有使用matlab和python,但是python是基礎通用語言,類此於C語言,matlab是數值計算工具,類似高級的Excel。所以了解演算法,還要從通用語言python入手學習基礎的數據結構和基礎演算法。再次,之前看了[挪威]Magnus Lie Hetland寫的《python演算法教程》,這本書真是挑戰了我的陡峭曲線學習能力,裡面很多沒有看懂,所以只能退步學習嘍。最後,python作為基礎語言,也是我還是一直想全面的學好它!所以努力把《演算法圖解》看完了,在此總結一下。

02

作者是一個軟體工程師,兼具計算機科學和美術方面的教育背景,所以這樣一個兼具理性和感性的老師講解內容更加符合我這樣半路進入編程的童鞋。一般來講,學習演算法和數據結構,基礎是學習數據結構的基礎–––數據的表示方法,例如數組、鏈表、字典、棧等,然後就是數據排序的相關演算法,例如選擇排序,分治排序和插入排序等等。再涉及很深的比如動態規劃,TSP等問題很少講或者講了,但是我可能想不清楚。但是,這本書就不一樣,它既很詳細的講解基礎概念,而且通過有趣的問題,引入了一些常見運籌學問題,著重講了求解思考步驟。第二,使用圖解手法,展現了一些計算機內存很難展示數據邏輯。第三,使用重點案例作為突破口來講解一些概念,讓讀者理解起來更加生動,有抓手。

03

關於整本書的架構,我把它編寫成是一個老闆經營水果店的故事,裡面用到和演算法相關的內容。書中的例子是分散的,我用這個故事把正本書的內容作一個連串。假設這個水果店的老闆叫Bob,他首先學會用二分法查找東西,這個演算法很簡單,但是查找東西必須是有序的前提的。所以,第二章講解了選擇排序,既然要排序,就要確定東西(水果)的放置方法,有兩种放置方法,一種是數組,另外一種是鏈表。放置東西嘛嗎,必然有用到箱子,有一種類似俄羅斯套娃的箱子,故,第三章用到了遞歸。Bob又發現了前面的選擇排序方法有點慢,所以,可以使用遞歸策略構建分治排序(第四章),降低查找水果所需要的時間。

現在,數清楚了水果的樣式,也容易查找了,但是水果名稱沒有和價錢形成對應關係,所以,第五章寫了散列表,也就是字典數據結構。第六章,是怎麼在自己的朋友圈中找到水果的銷售商。使用的廣度優先搜索。最後終於找到自己朋友Alice是買水果,他需要把水果以最短的距離給到在舊金山的Alice,使用的是迪克斯特拉演算法(第七章),尋找去舊金山的最短路徑。

有了經驗的bob想通過最少的廣播數量,給自己水果品牌進行推廣,於是他使用貪婪演算法(第八章),尋找廣播最少的並且能覆蓋全美國各州stations。但是bob也是一個有癖好的人,他喜歡偷東西,喜歡用動態優化(第九章)中的背包問題來偷商場的東西,達到在重量約束情況下達到價值最大。最後兩章講解較為廣泛,主要是為了引導興趣,希望大家繼續研究。

上面就是本書的所有內容,總共184頁。如果對python或者演算法方面有興趣,可以當做興趣書看看,還是不錯的。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 全球大搜羅 的精彩文章:

走吧老鐵,看場電影!
初級設計師必須掌握的版式設計基本原則——對齊

TAG:全球大搜羅 |