1.5 拓展阅读
我主观地认为,描述计算机算法最清楚、最有用的书籍是由四个精力充沛的美男子写的《算法导论》(Introduction to Algorithms)[CLRS09]。该书通常被称为“CLRS”,即四位作者名字的首字母。我在本书中多次引用《算法导论》中的内容。《算法导论》远比本书完整、详细,但是它假定你至少编写过一点计算机程序,并且懂得大量数学知识。如果你发现你能轻松地理解本书的数学知识,并且已经做好了深入研究这一主题的准备,那么《算法导论》是你的最佳选择。(当然,这只是我个人拙见。)
John MacCormick的《改变未来的九大算法》(Nine Algorithms That Changed the Future)[Mac12]描述了几种算法和影响我们日常生活的相关计算知识。MacCormick的《改变未来的九大算法》相对于本书涵盖了更少的技术。如果你发现这本书的写作方式过于偏向数学,那么我建议你尝试阅读MacCormick的那本书。即使你的数学背景很薄弱,你应该也能理解那本书的大多数理论。
8
万一你认为《算法导论》太浅,你可以尝试读一下DonaldKnuth的《计算机程序设计艺术》(TheArtOfComputerProgramming,TAOCP)[Knu97,Knu98a,Knu98b,Knu11]。虽然从书名来看它主要研究编码细节,但是该书包含了非常精彩的、深入的算法分析。但是,要注意,该书的内容是非常深奥的。顺便说一下,如果你很好奇“algorithm”这个单词的由来,Knuth会告诉你,它来源于9世纪一个波斯数学家阿尔·花拉子米(al-Khowârizmî)的名字。
9
除了《算法导论》之外,还有许多已经出版或发表多年的计算机算法方面的优秀文献。《算法导论》的第1章列出了许多这样的参考文献。与其复制那个列表,不如你自己看看《算法导论》。
[1]或者,正如一个我曾经一起打曲棍球的同伴问我的问题,“什么是nalgorithm?”
[2]是的,我明白,除非你住在硅谷,否则在鸡尾酒宴会上是很少会涉及算法主题的,但是基于某种原因,我们这些计算机科学的教授认为学生了解算法知识还是很重要的,我们的学生不能因缺乏计算机科学这一特定领域的知识而在鸡尾酒宴会上尴尬。