你是如何坚持读完《算法导论》这本书的?

你是如何坚持读完《算法导论》这本书的?

《算法导论》不够猛,答者顺便补充 “你是如何坚持读完《计算机编程的艺术》这本书的?”

 

罗必成:

CLRS上的证明太烦人了,如果是以业界为目标(进BAT,进FLAG)进行算法的学习的话,我觉得大可不必;如果是以学界(发paper)为目标的话,里面一些引理的证明思路,算法的分析以及符号化的数学思想倒很有学习意义。去年Bin Wang老师的算法课上的作业我还留着呢,数学思维锻炼没锻炼到这不好说,但是LaTex的语法掌握程度绝对得到了提升。
如果看CLRS看不下去的话,题主不妨来试试看跟一个公开课试试。这里我又要来安利一下TsinghuaXData Structures • 数据结构了,绝对会让你对算法世界的了解更上一层楼的。主讲的Junhui Deng老师是答主在清华碰见的少有深谙教学之道的好老师,他的计算几何也要马上开课了,有兴趣可以报名试试。

 

 

 

 发布于 2015-08-07

 

孟蛋蛋:

推荐中文网易公开课:算法导论,使用的教材就是《算法导论》。

英文可以参加Coursera公开课  Algorithms,免费旁听,付费较昂贵,但可获得全部服务,如编程练习和证书。

如英文足够好,直接读英文原著最好。除此之外需提前准备课件和阅读材料,尽量把这门网络公开课程当作主业来认真对待,包括:

  • 需要预习每节课讲解的大概内容。
  • 观看上课视频过程中要与课件结合,不懂的地方要暂停思考。
  • 尝试独立完成 Problem Sets。
  • 每周总结,并尝试了解证明用到的数学公式。
  • 尝试解决书后习题进行复习。
不推荐作为第一本学习算法和数据结构的书籍,也不建议必须要求自己完全理解书中的数学证明。

编辑于 2018-03-11

 

青霄:

深夜欲眠眠未得,路过答一下题。

算法导论这本书,从初三到高二,自己断断续续的看了三年时间。对于算法导论,自己的阅读路径比较曲折艰难,这是当时自己只有中学基础的缘故。好在算法导论偏向于培养构造性的思维,解题、证明技巧是“算法的方式”而非“数学的方式”,因而得以勉强读了下来。不过平摊分析这样的部分就无能为力了,选择跳过。

  1. 循环不变式是算导最开端的内容,也是算法正确性证明最重要的钥匙。本质上,循环不变式是算法归纳证明的形式化。理解算导中每个算法循环不变式的证明过程,就是在理解算法的运行原理。
  2. 算导阅读不需要很深的知识储备(你看我这样的初中生也能勉强看)。在看高斯消元LUP分解的时候,我只是通过附录补习了一下矩阵的基本知识,然后就可以看前面的LUP分解算法了。理解算法的正确性是相对容易的,理解算法设计的精妙,反推算法设计的过程难之又难。
  3. 代码实现是最好的学习过程。因为竞赛的缘故我使用的是c,当然你也可以用python、java或者brainf**k(雾)。啃完二十多页的二项堆,并且敲出代码成功运行后,当时的我崩溃的发现还有三十多页的Fibonacci堆在后面等着我。为了记住Fibonacci堆的设计细节,我重复写了20多遍以至于闭着眼睛都能写出来,结果发现在竞赛中根本用不到,我们有好用又好写的Pairing heap。尽管如此,Fibonacci堆的证明简单而直观,算法设计有趣得很。
  4. 尝试修改优化算法导论上的代码。在编写线性规划单纯性的代码时,我发觉(n+m)*(n+m)的矩阵异常浪费,稍作思考发现可以改成n*m的矩阵加上几个附加向量信息;进一步,对全幺模的情况,可以使用稀疏矩阵常见的优化方法——链表替代行向量。几个优化过后,我终于可以在竞赛允许的时间、空间、编码量内写一个非多项式的线性规划单纯形算法了。
  5. 快速傅里叶变换也是个有趣的例子。我们都知道,快速傅里叶变换的计算是在复数域上的,而计算机中复数的数值精度会导致FFT在向量比较长的时候丢失信息。后来学过数论部分,发现复数域是可以由一些特定的模整数运算取代的,于是FFT就可以被用来加速高精度乘法。再后来,发觉这个方法叫做快速数论变换。
  6. 每一章的课后习题是检验本章内容是否掌握的准则。如果课后习题有二分之一以上无法独立解决,不妨重新阅读本章内容,给深入思考留些时间。结合习题阅读章节也是可行的。(我记得网上可以搜到部分章节的答案)
  7. 说到底,算法导论只是本基础教材,其中无论数据结构、图论,还是动态规划,贪心算法,都只是基础内容。如果看不懂,你需要重新看一下这一章;如果一直看不懂,你需要重新从头读这本书;如果你发觉能看懂了,说明通过培养,你习得了构造性的、“算法”的思考能力。

发布于 2015-08-08


来源: https://www.zhihu.com/question/27744730

  • 5
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值