之前读过《算法导论》(常被简称为CLRS,下同),读这本是想换个角度来研究下算法。虽然很多东西已经通过前者有所了解,这里就谈谈二者的不同之处。
一方面,数学性的推导和证明还是CLRS比较擅长,后者大多数情况只是尽量做到让读者能够理解而已,这一点在上面的评论“可以作为浅显易懂的入门教材”一文也指出了,我就不再细谈了。
另一方面,本书对于实践是非常重视的,在介绍算法的同时不停留在代码和思路本身,同时也会讲一些实践细节,甚至通过专门的章节,也即书中的War Story来加深读者对算法的理解。不过很惭愧的是,由于时间有限,War Story我基本没读几篇,浅尝辄止而已。
更有指导意义的是,书中的第二部分收集和归类大量的算法问题,并对这些问题的求解做出了分析。这个所谓的分析就是,把问题具体化,在不同情况下都选择相应的最优算法。尽管没有给出可以直接用来“复制-粘贴”的代码,但这样做明显比“笼统地写出一个问题—给出一个唯一答案”的做法强得多。当然,通过对于第一部分算法介绍的阅读,第二部分可以先做泛读,遇到具体问题时再来查阅对应的解决方案的指导,此时还能根据给出的参考文献进行深入的阅读。这种细致全面的安排可以看出作者的用心之处。
再谈谈一些其他的读书收获吧,下面是我印象比较深的地方:
1.CLRS在介绍DFS时写成了一个子程序,后面的拓扑排序、强联通分支等使用到DFS的算法将其调用;而本书的DFS是直接写成了一个框架(这种做法你还会在回溯法、近似字符串匹配等地方看到),通过修改其不同的子函数来完成不同的功能如拓扑排序、强联通分支。我不评价哪种更好,只是CLRS版的DFS先入为主,我以CLRS版为准。
2.在读完《算法设计手册》的第7章回溯法之前,我对回溯法的认知完全是云里雾里。虽然也写过不少回溯法的程序,甚至做过剪枝处理,但它们都局限于具体问题的求解,完全没有一个全局性的概念。这本书向我展示了回溯法的框架,可以套用至很多回溯法程序(然后再进行简化),一举心中的廓清迷雾,这个章节很建议阅读。
3.本书第一部分每个章节的练习题中包含了面试题部分,起初还不怎么注意,直到被有些难住时,google其解法发现居然是货真价实的google、ms、amazon面试题!如果即将进行参加招聘面试笔试,这部分题目还是值得做做的。虽然通过作者的网页和google、stackoverflow等可以找到大部分的解答,不过我还是抽空亲自把这部分全部题目做完并进行了总结,有兴趣的读者可以参照文末链接。
下面是几个相关链接:
原书勘误表:http://www.cs.sunysb.edu/~skiena/algorist/book/errata
章末习题答案:http://nbl.cewit.stonybrook.edu:60128/mediawiki/index.php/The_Algorithms_Design_Manual_%28Second_Edition%29
我写的几篇章末习题面试题部分答案,水平有限,请多多包涵,已经尽量最优化。
第一章:http://www.cnblogs.com/wuyuegb2312/p/3257558.html
第二章:http://www.cnblogs.com/wuyuegb2312/p/3258670.html
第三章:http://www.cnblogs.com/wuyuegb2312/p/3260011.html
第四章:http://www.cnblogs.com/wuyuegb2312/p/3263697.html
第五章:http://www.cnblogs.com/wuyuegb2312/p/3264943.html
第七章及回溯法总结:http://www.cnblogs.com/wuyuegb2312/p/3273337.html
第八章及动态规划总结:http://www.cnblogs.com/wuyuegb2312/p/3281264.html
不愧对“手册”之名,即使通读过CLRS再读也有所收获
对“不愧对“手册”之名,即使通读过CLRS再读也有所收获”的回应
《The Algorithm Design Manual》热门书评
-
不愧对“手册”之名,即使通读过CLRS再读也有所收获
25有用 0无用 wuyve 2013-08-28
之前读过《算法导论》(常被简称为CLRS,下同),读这本是想换个角度来研究下算法。虽然很多东西已经通过前者有所了解,这里就谈谈二者的不同之处。 &...
-
实用型算法手册
25有用 0无用 某雲 2011-04-25
第一部分讨论实用算法思路;第二部分实例分析极其讨喜。解释直观易懂,并提供了大量的参考信息,相当适合自己学习和额外研究用。每晚看一两个章节或例子相当愉快。不过印刷纸质颇为低劣……=_=居家旅行,闲时翻阅,面试备战的最佳选择……http://www.cs.sunysb.edu/~algorith/vid...
-
可以作为浅显易懂的入门教材
16有用 0无用 [已注销] 2010-12-14
Stony Brook大学的CSE 373, analysis of algorithm, 所有的教授都用CLRS, 除了一个教授. 这个教授只用这本ADM.这个教授就是Skiena...(对...就是这本书的作者...)想要读这本书的人估计就是在ADM和CLRS之间做取舍.(或者其他书籍. 不过就...
-
这本书不适合初学者
3有用 1无用 Default User 2013-02-03
我个人认为这本书很不适合初学者,尤其是和DPV(http://book.douban.com/subject/1996256/)相比。如果你和我一样在找一本比较好的算法入门书,强烈推荐DPV而不是这本。DPV对算法的讲解简单而明了,如果我只能推荐一本算法书的话,毫无疑问我会推荐DPV。当然,这本书或...
-
就是么..
0有用 1无用 hx 2011-11-25
看着看着时而就觉得不明白了看到amazon上有人说This book isn't always the easiest to understand... Consider the explanation of Djikstra's Algorithm on p. 206 of the 2nd ed:...
书名: The Algorithm Design Manual
作者: Steven S·Skiena
出版社: Springer
出版年: 2008.07
页数: 752
定价: $79.95
装帧: Hardcover
ISBN: 9781848000698