教你真功夫的算法分析书籍


《Concrete Mathematics: A Foundation for Computer Science》,中文一般译为《具体数学》,是一本介于连续数学与离散数学之间的过渡书籍,不同于纯数学类书籍,本书主要讲算法分析和程序设计的具体实例,例如递推关系、离散概率模型等,非常适合计算机专业。

concrete-mathematics-a-foundation-for-computer-science

本书有三名作者,其中Ronald L. Graham是组合数学专家,负责书中和二项式系数、离散概率等内容。Donald E. Knuth是计算机科学的奠基人物,斯坦福大学教授,ACM图灵奖获得者,也是本书的主导者,负责书中的求和、递推等内容。Oren Patashnik是计算机科学家,负责书中的生成函数、习题等内容。

许多大学将这本书用作计算机科学的算法分析Pre教材,书中介绍了高级计算机编程和算法分析的数学基础,许多同学在实际工作中,能够写出解决问题的算法,但是对其复杂度分析不明不白,本书基本不教算法,主要讲如何用数学把算法分析清楚,因此也可以当做工具书使用,当对某个算法不清楚时,可以查阅本书。

本书与CLRS(算法导论)、TAOCP(计算机程序设计艺术)三本书籍,被称作是算法理论的“三剑客”,如果想法提升算法方面的能力,这三本书缺一不可,三本书中,本书属于中等难度,CLRS属于带你入门,本书属于教你真功夫,TAOCP属于带你起飞,学习这三本书最好按照从简到难的顺序,不然学起来会非常吃力。另外本书还配有500多道习题,需要花费一定的时间才能学好。

另外TAOCP的作者就是本书作者之一(Donald E. Knuth),阅读本书,需要有一定的数学基础,对微积分、线代、离散数学都要有一定程度的了解,书中有大师公式推导,不然真看不懂。

本书最初是基于Donald E. Knuth在斯坦福大学开设的计算机课程,属于TAOCP的扩展内容,因为部分学生反映直接学习TAOCP太难了,需要有一本书用来过渡,这本书就是在这样的背景下诞生的。这两本书也是Donald E. Knuth能够获得ACM图灵奖的主要原因之一。另外著名的排版程序TeX,好像也是Donald E. Knuth开发的,做过论文排版和书籍排版的应该都知道这个小工具。

本书还普及了一些数学符号,艾弗森括号、向下取整函数和向上取整函数,以及上升阶乘和下降阶乘的符号。

本书出版虽然已经30多年了,但其中的内容并未过时,甚至可以大胆的说,除非量子计算机普及了,否则本书永远适用于计算机系。

本书作者鼓励读者找书中的小错误,如果发现任何一处错误,奖励发现者2.56美元。

书籍下载地址:Concrete Mathematics: A Foundation for Computer Science