對於廣大程序員來說,《演算法導論》不看數學證明只看其餘的部分合適嗎?
01-07
輪子哥在【你是如何堅持讀完《演算法導論》的?】問題中回答,「我把證明都跳過了,反正又不是學數學」。請問這種讀法是輪子哥這種水平的人才可以,還是適用於其他的廣大程序員嗎?
不讀證明,不做習題,不如去刷OJ
算導的精髓在習題里
如果你只看課本,你只能會那個例題,記住定理,但是你必須通過練習才會知道怎麼用這些學會的理論
算導的習題尤其是每章的思考題編寫的非常棒,把一些相關的經典演算法用abcdef...的分布一點點引導你用課本上的知識來證明另外能代碼實現就更好啦沒有人規定一本書應該怎樣看,你想只看偽代碼跳過數學證明部分當然可以,理論上也可以讓你速成或者說快速地掌握編碼技巧,但我覺得如果這樣的話和看其他的演算法書沒有什麼區別;
CLRS並不只是教你怎麼寫演算法的書,它囊括了演算法分析,演算法證明,演算法設計,演算法優化等,你速成的話可以讓你很快掌握某一項你想學的,當然你也會錯過一些東西
個人看法演算法導論的證明在兩種情況下是有看的價值的。
1. 看了演算法,這時候如果你覺得這個演算法顯而易見是對的,但是自己說不清楚為什麼是對的,那說明你還需要加強自己的論證和論述能力,證明過程可以很好的幫你提高這方面的能力。論述能力對於程序員來說還是挺重要的,起碼你得跟人講得清是怎麼一回事。2. 看了演算法,你不確定這個演算法是否正確,也就是缺乏對這個演算法的直觀感覺,那麼說明你不是真正理解了這個演算法,仔細看一下證明可以加深對演算法的理解。在這種情況下你勉強記下偽代碼,說實話一點用沒有,吃個飯回來就忘了。
除了上述兩種情況,還有一點需要補充的就是,證明一般是非常嚴謹的推導過程,會把每一種情況都分類討論清楚,這樣有助於在實現的時候考慮得更全面,減少出現問題的可能。所以我覺得多看證明對於廣大的程序員應該是有好處的。
糾結看不看證明大概是因為時間問題。那麼我覺得不如有選擇的看一些內容。我個人建議是中間四部分看仔細一些,這四部分基本是演算法的核心。後面的研究問題選編可以先不看,比較專。這種事情不要用對廣大程序員說這種描述,你要邯鄲學步能學到什麼真是個疑問,程序員應當保持探究心而非盲從,認真讀了再做決定吧。
推薦閱讀:
※為什麼鍵盤上的橫排數字鍵 0 在 9 的右邊,而不是在 1 的左邊?
※參加微軟校園Hackathon是怎樣的體驗?
※2016年你讀了哪些覺得比較好的計算機書籍?
※錄音室或現場實際錄製的音樂聽起來是否比電腦合成製作的音樂更有立體感?