《算法导论》有什么好的学习心得?
1. 动手做,动手做,动手做(重要的事情说三遍)我见过好多把CLRS当小说看的,真还有很多人囫囵吞枣给看完了的。但是没有动手自己去实现这些算法的话,CLRS看得再熟练,都只停留在纸面上。有些真正性能和实现上面的优点,不写代码是感受不出来的。说到动手做的的话,做完题没有答案对就等于没有做啊。2. 尽量看英文原版(不是为了装逼)很多同学对看英文有排斥心理,这个很正常的。但是看英文原版真的不是为了装逼,而是中文翻译版虽说进步不少,但是拗口和错误之处还是有很多。你说算法这个东西吧,稍微理解错一个加一减一,就会对最后的结果产生很大的不同。我们当年上CLRS的时候,愣是盯着翻译版的某句话苦思冥想了好久。结果一看英文原版,瞬间豁然开朗,遂中文版丢弃一边了。我个人建议,中英文混合着看,看不懂中文看英文,看不懂英文看中文。3. 书名真的是大误Introduction个鬼哦,大家不要被导论给骗了。这里的导论我觉得应该是与TAOCP之类的书籍相比,它确实还就算个导论。但如果和什么《深入理解XXX》《深度探索XXX》《XXX编程指南》之类的相比,它绝对是难度与深度的集合体,学习曲线巨陡峭,基本上自学一两个月就跟没学似的。4. 配合别的东西一起学硬啃书真的是很寂寞,当然不排除有的同学有这样过人的学力。如果这样一直吃白饭确实吃不下的话,可以考虑跟一下公开课。coursera/edx/mooc上面的好课都挺多,不出家门上到国外同学们斥巨资拼老命上到的课,还是赚到了的。5. 关于理论证明的取舍CLRS作为一本严谨的科学研究入门教材,理论的证明充斥了这本书的很大一部分。每一章节的很多题目,都是证明某个引理之类的。这一部分的取舍我觉得因人而异吧,有的同学只是为了掌握算法本身而去学CLRS,那么证明部分我觉得只要能做到说服自己即可;有的同学将来要读博发paper的话,CLRS上的证明最好还是弄透彻比较好。虽然自己再造一个什么新的排序算法,新的二叉搜索树什么的可能性不是很高,但是严谨的数学素养是非常重要的。