CLRS不应该是《Algorithms》的补充读物
2008-11-26
CLRS不应该是《Algorithms》(这本书会不会简称为DPV?)的补充读物,而应该是学习算法的主要入门教材。换句话说,《Algorithms》并不适合初学者阅读,因为它的简洁精炼,因为它的教学背景,也因为它的undercurrents。
DPV不是传统意义上的算法教材,许多算法的经典内容在这里都非常简单地一笔带过,比如排序、Asymptotic,甚至没有任何简单的数据结构。它是教学讲义整理而成,你要知道,它是U.C. Berkeley和U.C. San Diego的讲义,也许某些知识点在DPV看来根本不值得重述,而相应的某些数学知识应该在其他课程补充。他们的工作只需要强调算法的思想。
CLRS的特点在于内容齐全,论述详细,适合学习、阅读。以“动态规划”这一章为例。CLRS首先强调了动态规划方法主要针对的问题,以及动态规划算法设计的四个主要步骤,然后用两个描述非常详细的实例去展示那四个步骤。进而论述动态规划的基本要素或者要点,举了相关实例。再用一个详细的四步骤讲解一个实例。
同样讲“动态规划”,DPV就简单多了,简要举了三个例子,加若干Notes。该讲的内容似乎都有,但是显得轻描淡写,缺乏的是CLRS的那种反复过程讲解,反复的方法强调。
DPV没有CLRS中讲解的数学知识,不讲随机算法,没有Amortized分析。DPV加了一章“量子算法”的内容,是CLRS与《算法设计》所没有的。
Etone认为应该加的某些内容在CLRS里面不都有吗?似乎Etone非常不喜欢CLRS,没问题,我只是认为,初学者看CLRS更适合,显然Etone并不是初学者。而某些Etone认为应该加的内容显然不是初学者必须的,例如spectral analysis, metric embedding, rapid mixing of markov chain等等。
也许每个老师心目中都有他自己的合适教材,Etone认为《Algorithms》是他的满意教材,就要看他教的学生是什么人了。而我认为,CLRS适合任何一个本科CS学生阅读,从这个角度去看,现在还没有任何一本教材可以超越CLRS,包括更新出的《算法设计》。