来源:点击进入
2008-03-06 04:51:35 来自: etone
我对《算法导论CLRS》的态度一直是有所保留的。虽然早在国内的时候,这本书一直被推崇为经典。但我那时就觉得它对算法的描述不好。一段费解的伪码,加上一大段费口舌的解释。我觉得本可以做得更好。
后来知道,这是典型的美国本科生用书,美国的本科教材,大抵很罗嗦,都是厚重的大部头书。教授们生怕稍有简略,学生们就不懂;而美国的小本们,也傻呵呵的认为书头越重,自己越了不起。
这书中的大段解释,也确是一番好意,就怕哪个不懂。可要真是老老实实的读下去,分散注意要超过传达信息。
这本书我读的最快乐的部分,就是每章的chapternotes。也就是在一章的末尾,介绍这一章提到的各种内容是何时、被谁、怎样引入计算机科学的。不看这部分,总觉得学的就是书上的死学问。而这些引用出处却为我们理清了算法研究的历史脉络,各个经典结果的师承关系。读这些为我带来了巨大的乐趣。也建议读此书的人千万不要放过这一部分,这些引用的结果就是算法研究的里程碑。
对于算法的伪码描述,倒不必太仔细了。不能指望在算法课上学习编程,算法本来就是很纯粹的数学对象,它的设计思想完全依托于背后的数学结构,它运作的机制以及它的美,也都来自它的数学,可是书上那些模仿C和Pascal的语句,让算法的数学之美沦为一段机械代码。读者辛苦的把自己的思维变成机器,读懂了这些代码,但并不会直接带来对算法本身的领悟。就像一个人懂得了打牌的游戏规则,但并不意味着他就会打牌了,因为他可能依旧不通晓牌理。对算法的学习也要从问题本身的数学结构入手,理解解决此种结构问题的算法它的设计思想,掌握分析具有各种结构特征的算法的数学工具,学习怎样发现问题的结构并从中推出问题的下界(lower bound)。这些才是学习算法的根本。
《算法导论》的最大成就,也就在于它的选材。它筛选出来的结果,每一个都当之无愧的算是计算机科学的根基或里程碑。在所有的算法教材中,这一点《算法导论》被公认是作的最好的。结构也组织的合理。尽管它的讲解,对这些经典结果的呈现,都不是我最满意的方式。但明珠纵然暗投也终究是明珠,《算法导论》覆盖的内容,可作为算法最好的教学大纲,是算法课的原型。这是它不容抹煞的历史地位。
相关评论:
除了“它对算法的描述不好。一段费解的伪码,加上一大段费口舌的解释。我觉得本可以做得更好。 ”之外,其他的评论都可认为是“极力推荐”之词了。
“一段费解的伪码,加上一大段费口舌的解释。”,嗯哼?也许我可以同意“本可以做得更好”,但我更非常关心的是,是否已经有人做得比他们好了呢?:-)
对于算法的伪码描述,倒不必太仔细了。不能指望在算法课上学习编程,算法本来就是很纯粹的数学对象,它的设计思想完全依托于背后的数学结构,它运作的机制以及它的美,也都来自它的数学,可是书上那些模仿C和Pascal的语句,让算法的数学之美沦为一段机械代码。
not really, 我相信对很多cs的小孩来说,对伪代码的理解速度远远超过对数学概念。
其实个人一直觉得算导上的伪代码写的简洁明快,不想看前面的分析了一看伪代码立马理解了。。。
我同意lz的看法,我买了算法导论第二版的中文版,由潘金贵等译。
但看了以后,感觉没有大家所推荐的那么好。
因为可读性不佳。讲的比较难懂。
我由此对网络上的各种推荐都持保留态度,后来也发现,许多人对书籍的推荐,不是来自自己的思考和自己的体验,而是copy所得。有一个人将一篇推荐写的不错,于是后面就有很多人跟着说,嗯,不错,好书,经典!
这是很不负责任的态度。
不好意思,有点离题。
你傻冒啊
chapter notes和算法没关系,说的些杂七杂八的东西
它对算法的描述哪儿不好了?
几乎每段都加了注释,它并不专注于什么语言
为了便于理解,有的地方直接用的english描述的
通常一个麻烦的算法,它都分步讲解
从core到crust
你看看严婆婆的那个书
那个描述的好吗?
算法啊
算法啊
弄了那么多语言细节
明明一个a不等于b可以判断的东西
非要写一堆
这个书,你没看完,别瞎说
1、
这是典型的美国本科生用书,美国的本科教材,大抵很罗嗦,都是厚重的大部头书。教授们生怕稍有简略,学生们就不懂;
而美国的小本们,也傻呵呵的认为书头越重,自己越了不起。
----------------
前面第一段说得很对,总结出特点来了,可惜你当它是缺点;
后一段更显你的偏激,臆想连篇。
////////////////
2、
这书中的大段解释,也确是一番好意,就怕哪个不懂。可要真是老老实实的读下去,分散注意要超过传达信息。
----------------
你完全可以跳过去,只看你需要的,毕竟尊重大多数人是人家的民主思想所在,你显然习惯了中国国情,属于高高在上的或自认为的精英份子吧
适合你的才是正确的,不然就全是在浪费,那些不懂的人根本就不应该学这些东西,这本书应该是只为你这样的精英服务才对,这是你的逻辑吗?
我觉得,好的书就应该啰嗦点,这样适合大部分人,让大部分不至于因为理解能力稍有偏差就受到打击而放弃,大多数人能进步才是最大的功劳。
你觉得是啰嗦,其实正是它对大多数人的尊重,对我们来说,是详尽。
我觉得还行, 语言相当的优美精练. 至于大段大段的解释, 你不想看就直接跳过去呗.
最让我晕的就是那一个接一个的证明, 看得我头好大, 可是如果不把它看懂的话, 就没法理解的深刻, 郁闷!
我同意lz的看法,我买了算法导论第二版的中文版,由潘金贵等译。
但看了以后,感觉没有大家所推荐的那么好。
因为可读性不佳。讲的比较难懂。
我由此对网络上的各种推荐都持保留态度,后来也发现,许多人对书籍的推荐,不是来自自己的思考和自己的体验,而是copy所得。有一个人将一篇推荐写的不错,于是后面就有很多人跟着说,嗯,不错,好书,经典!
这是很不负责任的态度。
不好意思,有点离题。
----------------------------------------------------------------------------------------
翻译的书,我从不认为是可以读懂的书。
所以请不要用翻译的书来评价原著。
谢谢。
国外的书 需要耐心阅读 对如算法新手 这本书 需要的是耐心读下去 慢慢的 你就会发现越来越舒服~~
我很同意你的观点,应该是“有保留的推荐”。
因为我感觉 这本书还可以写的更好。它给我的感觉就像是潘爱民翻译的《计算机网络》一书。但是还有不足,无法使我拍案叫绝。可是那本自顶向下的网络书就会使我拍案叫绝。 “ 这本书我读的最快乐的部分,就是每章的chapternotes。也就是在一章的末尾,介绍这一章提到的各种内容是何时、被谁、怎样引入计算机科学的。不看这部分,总觉得学的就是书上的死学问。”以前没有体会,做科研之后,发现确实如此。 读那些原文文章,比读教科书更加有益。
恩,,最近正在读这本书,也说说我的观点:
首先,“有保留的推荐”我是支持的,我觉得本书最精彩的部分就是一大段大段的解释,但是最让人容易分散注意力的也是这一大段大段的解释。不管怎么说,我看起来分散注意力的时候居多。
第二,本书应该可以写的更好,如果对每个算法刚开始能用最通俗易懂的语言来描述它,然后再对他进行解释和论证,那样会更好,这样这本书的使用范围会更广。
第三,国内很多大学本科根本就没有算法课(除开一些重点高校外),只有数据结构课程,上了研究生才开了算法课,但是算法导论里面的数学的东西我们在本科的时候都学过了,现在研究生再回过头来看算法导论,里面很多数学的东西早就忘得一干二净,看起书来自然感觉很不爽,这种课程安排方式导致知识脱节,很难真正把学过的东西用上,其实本科学的数学的知识只有在研究生才真正得到应用,但是很不幸,到了研究生我们已经把数学忘了。所以我觉得在本科阶段三年级或者四年级的时候应该要开算法导论这本科,或者我们自己应要看起来了。
个人倒觉得,学理工科的话,数学这东西倒是像吃饭要筷子喝水要杯子一样,自然而然的事。不能寄希望于学完数学然后再学其它需要数学的东西,要用点搬点也许更加有效率和直观。其实不少把算导翻烂的,根本就是高中生。。。需要的时候,就去学吧,谁让咱忘了呢:)
这书中的大段解释,也确是一番好意,就怕哪个不懂。可要真是老老实实的读下去,分散注意要超过传达信息。
这本书我读的最快乐的部分,就是每章的chapternotes。也就是在一章的末尾,介绍这一章提到的各种内容是何时、被谁、怎样引入计算机科学的。不看这部分,总觉得学的就是书上的死学问。而这些引用出处却为我们理清了算法研究的历史脉络,各个经典结果的师承关系。读这些为我带来了巨大的乐趣。也建议读此书的人千万不要放过这一部分,这些引用的结果就是算法研究的里程碑。
对于算法的伪码描述,倒不必太仔细了。不能指望在算法课上学习编程
---------------------------------------
谢谢上面的话:)
1、我觉得看理科的书最重要是形象化的过程。例如,算法要看数据是怎么搬动的。算法就是研究数据变动的。
2、从更显浅的层次一层层的剖析。计算机的结构依据就是层结构。 |