我对《算法导论CLRS》的态度一直是有所保留的。虽然早在国内的时候,这本书一直被推崇为经典。但我那时就觉得它对算法的描述不好。一段费解的伪码,加上一大段费口舌的解释。我觉得本可以做得更好。
后来知道,这是典型的美国本科生用书,美国的本科教材,大抵很罗嗦,都是厚重的大部头书。教授们生怕稍有简略,学生们就不懂;而美国的小本们,也傻呵呵的认为书头越重,自己越了不起。
这书中的大段解释,也确是一番好意,就怕哪个不懂。可要真是老老实实的读下去,分散注意要超过传达信息。
这本书我读的最快乐的部分,就是每章的chapter notes。也就是在一章的末尾,介绍这一章提到的各种内容是何时、被谁、怎样引入计算机科学的。不看这部分,总觉得学的就是书上的死学问。而这些引用出处却为我们理清了算法研究的历史脉络,各个经典结果的师承关系。读这些为我带来了巨大的乐趣。也建议读此书的人千万不要放过这一部分,这些引用的结果就是算法研究的里程碑。
对于算法的伪码描述,倒不必太仔细了。不能指望在算法课上学习编程,算法本来就是很纯粹的数学对象,它的设计思想完全依托于背后的数学结构,它运作的机制以及它的美,也都来自它的数学,可是书上那些模仿C和Pascal的语句,让算法的数学之美沦为一段机械代码。读者辛苦的把自己的思维变成机器,读懂了这些代码,但并不会直接带来对算法本身的领悟。就像一个人懂得了打牌的游戏规则,但并不意味着他就会打牌了,因为他可能依旧不通晓牌理。对算法的学习也要从问题本身的数学结构入手,理解解决此种结构问题的算法它的设计思想,掌握分析具有各种结构特征的算法的数学工具,学习怎样发现问题的结构并从中推出问题的下界(lower bound)。这些才是学习算法的根本。
《算法导论》的最大成就,也就在于它的选材。它筛选出来的结果,每一个都当之无愧的算是计算机科学的根基或里程碑。在所有的算法教材中,这一点《算法导论》被公认是作的最好的。结构也组织的合理。尽管它的讲解,对这些经典结果的呈现,都不是我最满意的方式。但明珠纵然暗投也终究是明珠,《算法导论》覆盖的内容,可作为算法最好的教学大纲,是算法课的原型。这是它不容抹煞的历史地位。
有保留的推荐
您对该书评有什么想说的?
对“有保留的推荐”的回应
第一次读博主这段评论是若干年前的事情,当时还没有读过CLRS,2年前系统的读了CLRS的英文第三版,最近又正在温习基本的算法,想起多年前的看到的这个帖子,特地过来再看一下。算法导论种很多算法的伪代码实现确实不够漂亮,简单的例子比如max_heapify(有兴趣的读者可以去看一下)。每章背后的chapter notes给人读故事的感觉,道出各个topic的前世今生。
回复 哈哈: 《算法导论》其实算是一本不适合自学的书,最好下载人家的上课视频对着来学,否则,除了学会抄算法模型之外,要有进一步的算法或问题分析能力是比较难。
2009-07-22 21:13:48 iamatig
1、
这是典型的美国本科生用书,美国的本科教材,大抵很罗嗦,都是厚重的大部头书。教授们生怕稍有简略,学生们就不懂;
而美国的小本们,也傻呵呵的认为书头越重,自己越了不起。
----------------
前面第一段说得很对,总结出特点来了,可惜你当它是缺点;
后一段更显你的偏激,臆想连篇。
////////////////
2、
这书中的大段解释,也确是一番好意,就怕哪个不懂。可要真是老老实实的读下去,分散注意要超过传达信息。
----------------
你完全可以跳过去,只看你需要的,毕竟尊重大多数人是人家的民主思想所在,你显然习惯了中国国情,属于高高在上的或自认为的精英份子吧
适合你的才是正确的,不然就全是在浪费,那些不懂的人根本就不应该学这些东西,这本书应该是只为你这样的精英服务才对,这是你的逻辑吗?
我觉得,好的书就应该啰嗦点,这样适合大部分人,让大部分不至于因为理解能力稍有偏差就受到打击而放弃,大多数人能进步才是最大的功劳。
你觉得是啰嗦,其实正是它对大多数人的尊重,对我们来说,是详尽。
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
说得真好
回复:lonelybug1
不明白堆如何来,说明数据结构的二叉树还没掌握得好(当然是有点差异),脱离数据结构及数学的支持来学习算法,总会是有点吃力!
《算法导论》,导论一词很乎合对其内容的描述,整本书散发着“导论”一词的气息,就是总体介绍性质的书,要详细的需要自己找具体其索引当中的书籍!
适合作为参考书或者是适合作为有老师带领下的参考书!
但,此书未必适合自学型的初学者,如果仅以模型性质去参考的,本书无比适用!如果是以明理为本质的,本书在推导过程上,未必够满足要求!
对于初学者,个人认为更重要的是明理,否则就不是写代码而只是敲代码、套模型的代码匠!
算法导论这本书绝对不是想翻译书中说的什么有趣,易懂,这本书整个的内容结构杂乱,而且我看的是原版英文的,就拿heapsort举例字,我读了3边愣是没明白他那个树如何构建,最后只能靠查wiki和google来理解。
看看这里的评论和amzon上的评论,很多人都是不带有可观的观点去读,这本书根本就属于参考书而不能算是教科书,因为很多核心的东西或者基本的东西还需要另外由读者自己去查阅其他书籍和资料。
完全部推荐给初学者学习算法!
对于楼主的发言,我也是有保留地赞同!
最赞同的一点:算法的本质是数学,所以要想真正可以大师级运用(例如灵活的分析算法在不同数量级时上下界,为提速改进等等),那还是认认真真的数学一下!
而《算法导论》也很对得起它的名字,introduction,的确是对大数算法的引入、归纳等,很多基本算法的模型归类得比较全,还负有初步的分析,对于初学者、或是工作时的参考,有一定的作用,但仅此而已,比较专门性的推导、处理、分析当然就要按《算法导论》每章最后的标注去找了(就正如楼主想找一个内容分析,当然也不会去从书本的绪论当中找而是具体地去学吧)!
至于楼主说到外国教科书的啰嗦,这个我不同意,人家并不是啰嗦,只是兼固你看者的感受,例如人家引述了一个知识点,会在附近注上需要用到的知识等等,特别是外国学生比较崇尚的是自学、预习,这种风格是方便人家查具体的资料!
可以看看几大理科强国的教材,美国的图表丰富,基础知识完备,苏联时代的《微积分学教程》,光看完例题都已经等同或接近国内数学分析课的水平,德国佬的(当然我只有计算机专业类翻译书),严谨详尽!
就唯一是中国的教授都受卖弄自己多么高明,一个简单的问题解释几句话,可一个需要注意的点,倒没落下半个逗号,反倒是步骤少了几步!
可能楼主会说算法巨著TAOCP也跳步骤啊,我也在看,负责任的说,人家英文原版不会随意去跳关键步骤,关于数学的有趣历史全有资料,该有的公式推导就算内容没直接说,也在习题和习题答案列明,其次,人家不是婴儿奶粉而是让有一定水平的人的补钙奶粉!再者为了让人好应付相应的数学知识,还有一本《具体数学》的数学书,上边有大量关于TAOCP第一卷第一章的补充!
我赞同楼主说的学习算法应该以数学模型建立与技巧优化为最终目标,但伪码部分必不可少,例如做一项工程的某子项目,我们没到详细设计阶段,只需要分析具体模型,那么,当有伪码作参考时,可以快速的去套模型,这是一种便利!
而对于初学者,特别是基础不稳的初学者,伪码也能够帮助他们建立浅层的记忆!
至于算法导论的学习,也有不同程度,基本了解模型和真正全会做习题会推导,那是不同的水平,后者来说明显一本算法导论不足以完成该任务!
看看作者是怎么讲的《算法导论》课:视频 http://www.xinkaixue
大家对楼主的指责也无可厚非 但是我想提醒的是作为一个在中国式教育下成长的 并未对西方教学方式有较早接触的学生 要一下子就能够适应这另一种风格也不容易 大家各自的学识背景经历均不相同 发表各自意见看法当然是好的 但你的经验不一定就适合别人 此书是公认的经典 但世界上绝对没有一本适合任何人学习的书籍 我是一个大学才接触计算机科学 从小城市出来的学生 在一开始看这本书的时候确实也非常不适应 学校的教材用的是严版 也正是在学完了严的书之后再次拿起此书 才知道这本书的精妙与非凡之处 以高姿态一味的强调西方教育的先进性和本土教材的山寨性并不能真正为广大生长在这个环境的学生们提供有用的帮助 具体问题具体分析 去糟取精 共同探寻适合自身的发展道路 才是我们真正需要的行为和态度
不敢苟同。伪代码费解么,我倒觉得相当简洁易懂(当然前提是你看懂了算法)。罗嗦?我觉得是详尽。从算法的确不能学到编程技艺,但从这本书中却可以,仔细读下代码,你应会发现每个算法的实现的代码模块设计相当清晰,复用性也做的很好。如果仅看数学证明,自己实现的话,我觉得我写不出那样优雅的代码。当然LZ多从数学的角度看待这本书和我得出不大相同的结论,也是正常的。
耐心的看 慢慢就看进去了 一旦看进去 你就觉得写得很棒!!!~~
这本书适合那些踏踏实实的朋友,适合从基础学习的朋友。实话实说,妄图通过别人高屋建瓴的语言,来达到也跟牛人一样思想水平的朋友,这本书不适合!!!
这书中的大段解释,也确是一番好意,就怕哪个不懂。可要真是老老实实的读下去,分散注意要超过传达信息。
这本书我读的最快乐的部分,就是每章的chapter notes。也就是在一章的末尾,介绍这一章提到的各种内容是何时、被谁、怎样引入计算机科学的。不看这部分,总觉得学的就是书上的死学问。而这些引用出处却为我们理清了算法研究的历史脉络,各个经典结果的师承关系。读这些为我带来了巨大的乐趣。也建议读此书的人千万不要放过这一部分,这些引用的结果就是算法研究的里程碑。
对于算法的伪码描述,倒不必太仔细了。不能指望在算法课上学习编程
---------------------------------------
谢谢上面的话:)
1、我觉得看理科的书最重要是形象化的过程。例如,算法要看数据是怎么搬动的。算法就是研究数据变动的。
2、从更显浅的层次一层层的剖析。计算机的结构依据就是层结构。
恩,,最近正在读这本书,也说说我的观点:
首先,“有保留的推荐”我是支持的,我觉得本书最精彩的部分就是一大段大段的解释,但是最让人容易分散注意力的也是这一大段大段的解释。不管怎么说,我看起来分散注意力的时候居多。
第二,本书应该可以写的更好,如果对每个算法刚开始能用最通俗易懂的语言来描述它,然后再对他进行解释和论证,那样会更好,这样这本书的使用范围会更广。
第三,国内很多大学本科根本就没有算法课(除开一些重点高校外),只有数据结构课程,上了研究生才开了算法课,但是算法导论里面的数学的东西我们在本科的时候都学过了,现在研究生再回过头来看算法导论,里面很多数学的东西早就忘得一干二净,看起书来自然感觉很不爽,这种课程安排方式导致知识脱节,很难真正把学过的东西用上,其实本科学的数学的知识只有在研究生才真正得到应用,但是很不幸,到了研究生我们已经把数学忘了。所以我觉得在本科阶段三年级或者四年级的时候应该要开算法导论这本科,或者我们自己应要看起来了。
我同意lz的看法,我买了算法导论第二版的中文版,由潘金贵等译。
但看了以后,感觉没有大家所推荐的那么好。
因为可读性不佳。讲的比较难懂。
我由此对网络上的各种推荐都持保留态度,后来也发现,许多人对书籍的推荐,不是来自自己的思考和自己的体验,而是copy所得。有一个人将一篇推荐写的不错,于是后面就有很多人跟着说,嗯,不错,好书,经典!
这是很不负责任的态度。
不好意思,有点离题。
----------------------------------------------------------------------------------------
翻译的书,我从不认为是可以读懂的书。
所以请不要用翻译的书来评价原著。
谢谢。
1、
这是典型的美国本科生用书,美国的本科教材,大抵很罗嗦,都是厚重的大部头书。教授们生怕稍有简略,学生们就不懂;
而美国的小本们,也傻呵呵的认为书头越重,自己越了不起。
----------------
前面第一段说得很对,总结出特点来了,可惜你当它是缺点;
后一段更显你的偏激,臆想连篇。
////////////////
2、
这书中的大段解释,也确是一番好意,就怕哪个不懂。可要真是老老实实的读下去,分散注意要超过传达信息。
----------------
你完全可以跳过去,只看你需要的,毕竟尊重大多数人是人家的民主思想所在,你显然习惯了中国国情,属于高高在上的或自认为的精英份子吧
适合你的才是正确的,不然就全是在浪费,那些不懂的人根本就不应该学这些东西,这本书应该是只为你这样的精英服务才对,这是你的逻辑吗?
我觉得,好的书就应该啰嗦点,这样适合大部分人,让大部分不至于因为理解能力稍有偏差就受到打击而放弃,大多数人能进步才是最大的功劳。
你觉得是啰嗦,其实正是它对大多数人的尊重,对我们来说,是详尽。
顺便说句,我有此书的中文版扫描书,有需要的可以联系QQ30233582
你傻冒啊
chapter notes和算法没关系,说的些杂七杂八的东西
它对算法的描述哪儿不好了?
几乎每段都加了注释,它并不专注于什么语言
为了便于理解,有的地方直接用的english描述的
通常一个麻烦的算法,它都分步讲解
从core到crust
你看看严婆婆的那个书
那个描述的好吗?
算法啊
算法啊
弄了那么多语言细节
明明一个a不等于b可以判断的东西
非要写一堆
这个书,你没看完,别瞎说
我同意lz的看法,我买了算法导论第二版的中文版,由潘金贵等译。
但看了以后,感觉没有大家所推荐的那么好。
因为可读性不佳。讲的比较难懂。
我由此对网络上的各种推荐都持保留态度,后来也发现,许多人对书籍的推荐,不是来自自己的思考和自己的体验,而是copy所得。有一个人将一篇推荐写的不错,于是后面就有很多人跟着说,嗯,不错,好书,经典!
这是很不负责任的态度。
不好意思,有点离题。
这段说得真好:
不能指望在算法课上学习编程,算法本来就是很纯粹的数学对象,它的设计思想完全依托于背后的数学结构,它运作的机制以及它的美,也都来自它的数学,可是书上那些模仿C和Pascal的语句,让算法的数学之美沦为一段机械代码。读者辛苦的把自己的思维变成机器,读懂了这些代码,但并不会直接带来对算法本身的领悟。就像一个人懂得了打牌的游戏规则,但并不意味着他就会打牌了,因为他可能依旧不通晓牌理。对算法的学习也要从问题本身的数学结构入手,理解解决此种结构问题的算法它的设计思想,掌握分析具有各种结构特征的算法的数学工具,学习怎样发现问题的结构并从中推出问题的下界(lower bound)。这些才是学习算法的根本。
《算法导论》热门书评
-
有保留的推荐
364有用 49无用 etone 2008-03-06
我对《算法导论CLRS》的态度一直是有所保留的。虽然早在国内的时候,这本书一直被推崇为经典。但我那时就觉得它对算法的描述不好。一段费解的伪码,加上一大段费口舌的解释。我觉得本可以做得更好。后来知道,这是典型的美国本科生用书,美国的本科教材,大抵很罗嗦,都是厚重的大部头书。教授们生怕稍有简略,学生们就...
-
讲义和视频都可以在MIT的网站上下
258有用 4无用 BarkMere 2009-08-22
大家可以上MIT的OCW站看看http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-Science/6-046JFall-2005/CourseHome/index.htm另外还有第3版的笔记和PPThttp://ocw.mit....
-
从头到尾读完了,想说的绝不止这些
201有用 12无用 kowizards 2010-04-07
我读算法导论的目标:书上的内容全部看懂(附录除外,已经为这些基础知识专门看了一大厚本的《离散数学》,所以只看了几道从前没思考过的题,),习题(excersice)和每章末的思考题(problem)全部尝试独立完成,即使不能做出,也一定要从网上找到答案。实际完成的内容:书上内容全部看完且看懂(当然看了...
-
99%的题目完成度 楼主黑化的不归路 附带学习心得
76有用 5无用 BAY 2014-11-21
我已经看完《算法导论》很久了,不接触算法也很久了。也没有《算法导论》的习题解答。容我先吼一句:孩子,醒醒吧,那都是骗人的!!!老子都看完算法导论了,还不是一样做着前端的外包,还不是合同到期直接滚了。。。算法酷炫一点有什么用,比大数据部门的一部分人厉害又有什么用,还不是个被裁的命!!!--------...
-
希望评论的人能基本看完再评论
39有用 2无用 囧囧的心情 2013-02-02
之前尝试自学这本书,很失败。。太难。。后来到美国上学开始系统的跟着老师走这本书。基本看完了,也写写评论。首先我肯定是力荐的,经典。然后几个问题:1. 初学者,自学?第一次看之前,我大概过了一遍MIT公开课,看了Data Structure and Algorithms in C++ (大概这个名字)...
书名: 算法导论
作者: [美] Thomas H·Cormen
出版社: 高等教育出版社
出版年: 2002-5
页数: 1180
定价: 68.00元
装帧: 平装
丛书: 国外优秀信息科学与技术系列教学用书
ISBN: 9787040110500