随笔-145  评论-173  文章-70  trackbacks-0
 我对《算法导论 CLRS》的态度一直是有所保留的。虽然早在国内的时候,这本书一直被推崇为经典。但

我那时就觉得它对算法的描述不好。一段费解的伪码,加上一大段费口舌的解释。我觉得本可以做得更好。

  后来知道,这是典型的美国本科生用书,美国的本科教材,大抵很罗嗦,都是厚重的大部头书。教授们

生怕稍有简略,学生们就不懂;而美国的小本们,也傻呵呵的认为书头越重,自己越了不起。

  这书中的大段解释,也确是一番好意,就怕哪个不懂。可要真是老老实实的读下去,分散注意要超过传

达信息。

  这本书我读的最快乐的部分,就是每章的chapter notes。也就是在一章的末尾,介绍这一章提到的各

种内容是何时、被谁、怎样引入计算机科学的。不看这部分,总觉得学的就是书上的死学问。而这些引用出

处却为我们理清了算法研究的历史脉络,各个经典结果的师承关系。读这些为我带来了巨大的乐趣。也建议

读此书的人千万不要放过这一部分,这些引用的结果就是算法研究的里程碑。

  对于算法的伪码描述,倒不必太仔细了。不能指望在算法课上学习编程,算法本来就是很纯粹的数学对

象,它的设计思想完全依托于背后的数学结构,它运作的机制以及它的美,也都来自它的数学,可是书上那

些模仿C和Pascal的语句,让算法的数学之美沦为一段机械代码。读者辛苦的把自己的思维变成机器,读懂

了这些代码,但并不会直接带来对算法本身的领悟。就像一个人懂得了打牌的游戏规则,但并不意味着他就

会打牌了,因为他可能依旧不通晓牌理。对算法的学习也要从问题本身的数学结构入手,理解解决此种结构

问题的算法它的设计思想,掌握分析具有各种结构特征的算法的数学工具,学习怎样发现问题的结构并从中

推出问题的下界(lower bound)。这些才是学习算法的根本。
(ps评点:现在才深有感触,以前总是纠结的看它那个伪代码,后来才想到,只要理解了思想,自己能够写

出来就NB了,何必管它如何实现的呢,因为本来算法就是一个思想,如何变通,并自己运用才是最重要的

!所以,根本不能记忆这些代码,而要自己理解思想,至于实现,有N多种可能,也许今天自己写了这样的

,到明天就是那样的了)

  《算法导论》的最大成就,也就在于它的选材。它筛选出来的结果,每一个都当之无愧的算是计算机科

学的根基或里程碑。在所有的算法教材中,这一点《算法导论》被公认是作的最好的。结构也组织的合理。

尽管它的讲解,对这些经典结果的呈现,都不是我最满意的方式。但明珠纵然暗投也终究是明珠,《算法导

论》覆盖的内容,可作为算法最好的教学大纲,是算法课的原型。这是它不容抹煞的历史地位。

=================================================================================================================================
我读算法导论的目标:
  书上的内容全部看懂(附录除外,已经为这些基础知识专门看了一大厚本的《离
  散数学》,所以只看了几道从前没思考过的题,),习题(excersice)和每章末的
  思考题(problem)全部尝试独立完成,即使不能做出,也一定要从网上找到答案。

  实际完成的内容:
  书上内容全部看完且看懂(当然看了很长时间,不免有些内容忘记了)。习题和
  思考题基本全部完成,所有没有完成的题目(自己不会做,并且也没找到答案)一
  共35个。算来平均每章一个。看着写满两大本的题解,心里还是很有成就感的
  (尽管我女朋友说:“你写这些,有什么用啊?!”)

  这一年零8八个月的时间我都干了什么?
  一口气读《算法导论》到第30章,前26章的题基本做了,觉得实在有点累,调剂
  一下,转而攻读MIT的另一本名著《计算机程序的构造和解释——Structure and
  Interpretation of Computer Programs》,几个月后重披战甲,从27章开始看
  完了全部的《算法导论》,并将最后9章题目做完。由于看得细,而且还有其他
  事情要做,前后拖了20个月,总算看完了,真的很累。

  我的书评:
  踏踏实实看完书,仔仔细细的思考每一道题,即使不会做,至少读过,思考过,
  可能未来的某一时刻你的脑海里突然就有了灵感。

  为什么我的书评只有一句话(而且似乎也没有评价)?
  说真的,我作为一个小小的学生,真的没有资格评判人家大牛用十几年汉水和智
  慧来增删,校对,实践,研究得来的一本著作。如果有什么不好的印象,那只能
  说是没到那个境界,理解不了,不能吃不着葡萄说葡萄酸,反而批评人家。

  有心人从我上面的一大段废话和短短的一句似是非是的书评,也绝对可以看出来
  这本书的卓越之处:

  (1)深入浅出:能耗费一个人20个月的时间去看,可见这本书绝非一朝一夕的快
  餐,要知道即使是世界上最一流的大学,利用一年的课程去讲算法课,也只能挑
  本书的部分章节去讲而不能完全覆盖。既然题目能做出绝大多数,证明只要你用
  心,这本书的难度完全是可以承受的,决不会让你有无从下手的感觉。

  (2)情节生动有趣:对,没错,我就是要像形容小说一样形容这本书,不然我绝
  不可能坚持看这么久。但是比小说有趣的是,故事里人物的命运是作者安排的,
  你或喜或悲总是被人牵着走,而这本书却是让你作主角去打开一扇又一扇通往未
  知的大门,解开一道又一道的难题。

  (3)既连贯又独立:不同章节既独立完备又内在高度相关。即使你专注于某一个领
  域,我认为这本书给你的介绍也是很充实的,而且可以直接看,这就是为什么我
  中间放下一段时间后又可以从新拿起来读而不用重新来过。当然个章节间内有一
  个东西是一脉相承的,那就是:(程序运行的理论)效率。从头到尾看得到的绝
  对比单独对待每一章得到的价值的总和大得多。

  (4, 5, 6, ...)余音绕梁:老子说:三生万物。我只说三条,万就留待你自己去
  挖掘,也留待你从书中找到精彩的答案。

  祝读此文者也能享受一趟与《算法导论》的精彩的马拉松之旅。

=============================================================================================================================



posted on 2010-05-29 01:23 deercoder 阅读(1625) 评论(2)  编辑 收藏 引用 所属分类: 读书

评论:
# re: 算法导论评 2010-05-29 22:34 | 唐风
这篇书评写得非常棒!!
不过我觉得《算法导论》中的伪码还是挺漂亮的,呵呵。

可惜我只看完图算法就停下来了,习题基本没做,买椟还珠了,主要是没有你这样的毅力。PF你~!

  回复  更多评论
  
# re: 算法导论评 2010-05-31 11:02 | boy
写的非常棒,呵呵,发自肺腑之言!  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理