恩佐2登录 > SEO案例 > 如何正确地撸《算法导论》?

如何正确地撸《算法导论》?

admin SEO案例 2020年02月17日

  大四,通信工程,做Linux c软件开发,尚未去公司,(水平只有写写链表,进程线程控制的地步。)想在毕业前多学点东西,每天花费2小时看《算法导论》目前看了三天,新宝7恩佐登录到第四章最大子数组这里。我有点担忧,因为能大致看懂数学推导和渐进记号,但是自我推导和证明很吃力。想只看伪代码和设计思路,不知道只看伪代码和设计思路会不会影响后面的内容看不看的懂?求撸完的大佬们分享一下学习方法呗!新宝7恩佐登录(为什么我感觉网易公开课上的课没有…

  之前用了两个多月撸完了算法导论,每天3小时左右。把其中的伪代码用Python实现了一遍,代码在这里hm。伪代码转换成Python还是比较容易的,一行一行翻译,写完运行一下,不懂的地方改一改,试一试,有助于理解算法思路。

  其实算法本身不难,第一遍可以只看伪代码和算法思路。如果想进一步理解的话,第三章那些标记法是非常重要的,就算要花费大量时间才能理解,也不要马马虎虎略过。因为以后的每一章,讲完算法就是这样的分析,精通的话,很快就读完了。你所说的证明和推导大概也都是在第三章介绍了,可以回过头再认真看几遍。

  至于课后题,比较难,我只做了前几章,如果要做完需要更多时间和精力。这可以通过之后做算法题来弥补,可以去leetcode等网站找一些经典的算法题做一做,加深理解。

  这里有一个Facebook的工程师写的攻略,介绍了用算法导论来应付面试应该读哪些,略过哪些,英文的,可以作为参考:(剩下的可以收藏慢慢看,顺便点个赞 谢谢!)

  这书并不适合所有人。我看这书的时候,发现很多地方的证明过程并没有用数学进行形式证明而是用文字讲道理,导致会产生很多歧义。后来我换了普林斯顿老爷爷的红书就好多了。

  同意轮子哥的。看你的目的了。算法导论是计算机系学生的算法参考书,我曾经在初中就大概把里面的伪代码都敲过一遍了,一度自以为自己很懂,然而博士越念发现算法导论里面自己不懂的东西越多。

  这本书的最大意义就在于它把一些很难的算法分析用尽可能简单的零基础的入门选手能看懂(虽然是这么说但是很多时候还是得翻参考文献里面的论文,很多书里的话看着好像懂其实事后看完全不得要领)的方法来讲。这样写书看似简单,但是其实非常非常难。所以从本质上而言,算法导论是一本

  最常用的用处肯定是查定义和查参考文献了。查定义自不必说,肯定比维基还要精确。另外算法导论每一版都会把最近新的研究结果加入到文献列表里。但是用算法导论学算法反而有点难,毕竟学汉语你用本新华字典总不是最有效率的途径(虽然没这么夸张)。

  最近一直在刷CLRS,发现自己的算法能力有了很大进步,相比之前主要是对算法思想的理解更深入了一些。下面是自己的几点看法

  ,后面的很多算法证明推导,复杂度计算是基于前面介绍的一些定理,例如循环不变式证明,主方法等。

  如果为了复习加深入理解一些算法,那么在读的时候就可以选择性跳过一些证明,侧重于看算法部分,反之亦然。

  结合来看,例如那本《算法》。CLRS对于某些问题讲解的很棒,例如动态规划,贪心算法等,但也有一些讲的不那么明白,例如红黑树就略显复杂,这时可以参考辅助用书。

  书的最后一部分其实可以当作工具书来用了,了解一下即可,需要的时候再深入学习。

  课后习题应该还是蛮重要的,但如果全做完需要的时间太多,我也只是选择着来做。解题答案可以参考

  关于公开课,本来课就是配合书的,书才是重点,而且算导的题很精华,不做效果出不来。

  算导是为理论研究打基础的,教一些基础的算法,更重要的是让你学会怎么去分析和表达算法以及怎么从数学上证明算法的效率和正确性。

  如果不是仅仅是用到某些算法不用撸这本书,如果需要时常设计新算法或有兴趣,可撸。撸的方法就是读书做题,然后可以配合oj题一起做。认认真真做完题,对好答案,确认掌握了再前进。算导不需要严格按顺序读,内容基本是相互独立的,当然后面的会难些。

  PS:6小时4章,题主估计没做题而且略过了不少。不看证明推导,不做题,那就舍本逐末了,光要学算法不接触理论不妨另选书籍(程序设计竞赛,面试的书)。或者也可以先略读,新宝7恩佐登录之后重读。

  别盲目崇拜算导,觉得想找工作就靠刷它。- 刷它还不如刷leetcode. 其实你看任何一本算法,比如算法之美什么的,都比算导更省力气。

  而且算法其实你要明白的是原理,弄明白原理然后自己换几种语言实现一下,而算导讲原理却恰恰一点也不生动有趣,非常令人捉鸡。

  所以更懒的办法是随便去跟个名校算法公开课,都学过一遍以后来算导看看有什么缺漏却有意思的算法,抽签实现几个自己不熟练的,做几道自己觉得难的思考题。

  那要看你的目的是什么。如果是为了写出更好的程序,那你完全不需要知道其中的道理,在保证能够把伪代码抄进你喜欢的语言的前提下,把什么算法适用于什么条件都背下来就行了。如果你的目的是为了以后搞科研发明新算法,当我没说。

  算导的内容分为几方面,而且有可能穿插在一起,所以个人认为比较的做法是每次读的时候挑重点看,大概下面几方面吧:

  1 复杂度理论,主要集中在前面几章,虽然很理论但是一定要看懂,因为很多定义和定理后面用得上

  2 数据结构介绍,这个可以找本数据结构书辅助看,有些书的数据结构的内容比算导通俗点,但是算导更严谨,所以最后还是得过来看懂(但是有些内容当理论看看即可,比如散列表大小的一些设计只是理论研究,实际中的HashTable用的是更实用的办法)

  4 算法的复杂度证明什么的,一开始不懂就先不要深入细节,后面水平上来了再补

  5 乱七八糟的算法杂烩和理论介绍,比如字符串相关算法,fft,P和NP等,这种感兴趣可以看,或者当成是参考书,用到时候查也行,其实可以查其他更详细的书籍资料

  7 思考题,里面介绍了一些理论比较简单(正文懒得写)的东西,但是这些东西在实践中反而可能很实用(跳表,Treap之类)

  看一本书之前,应该先看看前言之类的,一般都会说这本书适合什么样的人。个人觉得,算法导论并不适合每一个人。

  《算法导论》不适用于新手入门学算法,讲得太细节,很容易失去对整体的把握,而且也会对自己造成极大的挫败感。我觉得一本好的教材最要的不是带给你多少详细的知识,而是能带给你继续探索的兴趣和欲望。这种字典一样的书我是看了就懵逼,如果是大神,当我没说

  比如如何用算法设计公交车线路,如何设计知乎回答排名算法,如何预测房价……

  以算法书为参考书来寻求解决方案,理解算法本质原理。不要硬啃,记住答案没用。

  《算法导论》是算法经典书,很多人都推荐算导,我也觉得学算法必看,但是它对很多初学者而言不大适合入门,入门书需要图解多,简单易懂的,推荐先看《趣学算法》入门,图解多,有源码直接运行,快速理解实践算法,然后再看算导就简单多了。

  《清华大学计算机系列教材:数据结构(C语言版)》(严蔚敏,吴伟民)【摘要 书评 试读】- 京东图书

  当然了,要是你已经搞定了严蔚敏老师的那本数据结构与算法,就忽略上面我说的。

  PS:目前本人在北京做软件测试工作,想了解软件测试的话,也可以联系我,不要多想,我只是给自己拉粉。

  学习,是需要循序渐进的。现在看《算法导论》,很明显,就是想学习算法。但是,最基本的算法你都掌握了吗?常用的查询和排序算法,你都能写出来吗?

  对于一个初学者,无论他是看算法导论,还是看一本普通的书,他所能接受的知识都差不多,为何这么说?因为知识是一个系统的工程,没有前期的基础,很难掌握后期的复杂知识。

  不管是学习C语言、C++,还是学习数据结构什么的,对于初学者,尤其是自学的同学,在选教材时,我们可以先不选那些“高大上”的教材,什么是“高大上”的教材?举个例子,初学者学习数据结构与算法,上来就看算法导论,理想是好的,但是能不能实现就是另一回事儿了,那么复杂的书,我相信初学者是很难看懂的。

  那么我们应该怎么选教材呢?个人建议,我们可以参考大学的教学思路,也就是说,大学用什么书讲课,我们用什么书入门。

  为什么这么说呢?这是因为大学的教学思路是针对大多数人的“智力”水平的,看大学的教材,我们很容易入门。

标签: so算法