请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

老师如何看待算法导论这本书

或者说怎样把本门课程还有算法导论一起学习效果会好一点?

正在回答

1回答

liuyubobobo 2017-07-13 03:11:02

这个问题特别特别好!我一直想专门写一篇文章谈谈我对算法导论的看法,但是一直没有抽出特别的时间。在这里,借你的问题,简单说一说我对《算法导论》的看法。


首先,谈学习材料,一定要谈学习者本身的水平。每一本教材(或者说每一本书)都对其阅读者拥有基础的假设。并不是说一本教材经典,就意味着他适用于所有的学习者。他只是针对他所假设的读者群体来说,是经典的,好的。但如果你不在这个阅读群体的范围里的话,他的经典程度一文不值。这就好比高等数学的教材都假设阅读者具有完备的高中代数知识,再经典额高等数学教材,对于小学生来说,都一文不值。因为小学生不是任何高等数学教材所假设的读者群体。


同理,《算法导论》的经典是毋庸置疑的。但是,我不建议算法的初学者学习这本教材。我认为算法导论面向的读者不是第一次接触算法和数据结构的同学。甚至极端一些,我不建议本科生,尤其是大一大二的计算机系同学阅读这本书。在这个阶段阅读这本书,只会让你对算法更恐惧,并形成错误的印象——算法中包含大量的数学推导证明。事实上,对于算法导论中介绍的大量的算法复杂度的推导证明,都更属于计算机的另一个子领域的研究范畴:复杂性研究。本科水平大可不必理解这些证明过程,只需要对证明结果有一个感性的认识就可以。注意,我在这里也不是说要“背”结论,还是要对这些结论有一个感性的认识,比如对于快排,其时间复杂度为什么是O(nlogn)的,我认为理解到这个程度就够了:http://coding.imooc.com/learn/questiondetail/15858.html 这个程度离严谨的数学证明还差的很远,但是对于大多数人,已经足够了。


这也引出了我对大家阅读《算法导论》的建议,尤其是第1,2遍看算法导论的方法:忽略其中的数学推导。事实上,对于算法导论,如果扔掉其中的数学推导,其厚度至少减少了一半!


另外,算法导论不应该逐章去看,如果要配合这个课程学习的话,我建议以这个课程为主线,去找算法导论中和这个课程相应的章节辅助学习。可能对于一些算法,你会发现算法导论中的实现,和这个课程的实现,思路有所不同。这是一个非常好的训练。仔细比较,理解一下,这两种实现思路为什么不同?每一种实现都为什么能够正确的完成任务?对于算法导论中介绍的算法,由于是使用伪码描述的,还可以自己亲自实现一下其中的思路,也能够锻炼一下自己的编程能力。


最最重要的是,我认为对于本科生而言(或者将要面临面试的同学而言),算法导论最有价值而部分是其中的练习题!依然是,要把其中的数学习题刨去,算法导论中的实践练习是非常有价值的!配合这个课程的相关章节,扫一遍算法导论中的相关编程实践练习题,是非常有意义的。虽然算法导论本身没有习题答案,不过由于这本教材太过经典,在网上近乎可以搜索到其中每一个问题的讨论,这个过程能够让你对很多算法和数据结构,包括相应的变种问题和可以解决的问题的范畴,有一个更加深入的认识!我强烈推荐。


最后,如果你发现你对基本算法已经有了相当的理解,同时对算法背后的数学有兴趣,可以再扫一遍算法导论,配合其中的数学证明学习。不同的人能够从数学的学习中获得不同的乐趣。也能够辅助你对算法有更深入的认识。但是依然是:对于第1,2甚至第3遍看算法导论,强烈建议根据自己的实际情况有选择的忽略其中的数学部分。


希望可以帮助到你:)加油!

14 回复 有任何疑惑可以回复我~
  • 提问者 不会说话的鱼 #1
    谢谢老师
    回复 有任何疑惑可以回复我~ 2017-07-13 07:19:53
  • 卷幕 #2
    棒棒哒,思密达。
    回复 有任何疑惑可以回复我~ 2017-09-27 10:56:38
  • 卷幕 #3
    老师,用java实现的代码在哪里下载?也要看40%才能下载吗?
    回复 有任何疑惑可以回复我~ 2017-09-27 11:04:46
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信