《演算法的樂趣》,快樂學習演算法,學習貼近生活的演算法

001003發表於2016-01-11

演算法最適合學習階段是在工作期間,但是學生時代也會要求開這一門課程,枯燥、乏味是上課時的感受,在大學期間有著一本書學演算法就夠了。

全書程式碼用C語言書寫,相對來說受眾面不太寬闊,現在學習Java等語言的程式設計師並不比C語言少,若是使用虛擬碼來描述也許更好。不過《演算法的樂趣》 給出詳細的步驟、思路和通用思想,更加抓住了演算法的要點。《演算法的樂趣》在開始的部分簡單講述了一下資料結構,之後是針對各個經典演算法問題,進行的分析和講解。很貼切的匹配了本書的名字“樂趣”,確實是幫助你學習演算法的好書。之前也看過《演算法導論》,和本書比起來,就顯得比較深奧、晦澀,而且沒有生氣,想要堅持讀下去,需要很大的恆心和耐力。對於沒有學過資料結構的同學,建議看這本書是,配合資料結構一起看,特別是在開始的時候,會比較有感覺,比較輕鬆一點。《演算法的樂趣》從思路出發,兼具思想,以一個生活中常見的例子(真正做到演算法改變生活)來講解演算法。

這裡就舉書裡的一個例子。

Gale-Shapley 演算法即“求婚-拒絕演算法”(propose-and-reject algorithm),以舞伴問題的整個求解過程來看,女孩從接受第一個邀請開始就有了舞伴,並且舞伴會越來越好,因為女孩可以根據自己的排序表確定是否選擇更好的舞伴。與此同時,男孩如果被拒絕,他的選擇物件會越來越差(因為男孩是根據自己的排序表從好到差開始選擇的)。然而實際情況卻並不是這樣的,Gale-Shapley 演算法中“求婚”的一方總是以最佳可能的穩定崗匹配結束,被“求婚”的一方總是以最差可能的穩定匹配結束,因為選擇的主動權掌握在“求婚”者手中。現實生活中的道理也是如此,婚姻中男人如果不主動爭取,條件好的女孩就會投入別人的懷抱,留給自己的機會就越來越差。學校裡那些勇氣可嘉、敢於主動示愛的男生,據說都是學過Gale-Shapley 演算法的,不信你問問他們。

好好學習演算法吧,這關係到人生大事啊!

相關文章