本书源自斯坦福大学每年开设的同名课程,该课程自1970年开设以来,每年有大约50名的选课学生,其中大部分为研究生,还有三、四年级的本科生,这些学生毕业后在其他地方也开设了类似课程。因此,是时候将该课程的相关资料呈现给更广泛的读者(包括二年级本科生)了。
具体数学诞生之时正是基础理论知识的价值受到质疑的年代,基础理论在大学课程体系中的地位受到了挑战,数学也难逃厄运。当时,John Hammersley先生发表了一篇On the enfeeblement of mathematical skills by''Modern Mathematics''and by similar soft intellectual trash in schools and universities(关于高中和大学数学技能被所谓的现代数学和类似的软智能垃圾化)的文章[176],其内容发人深省,还有一些数学家担心[332]:数学还能被保留下来吗?本书的作者之一高德纳(Donald E。Knuth)先生曾以《计算机程序设计艺术》系列书闻名,在写作第1卷时他发现忽略了数学方法,而全面透彻地理解计算机程序设计技巧需要的数学知识完全不同于在大学数学专业所学的数学知识,因此,他开设了一门如他所期望的新课程。
这门课程取名具体数学的初衷是想区别于抽象数学,因为在现代数学课程体系中具有抽象概念的新数学已经取代了包含具体经典结果的数学。抽象数学本身没有任何问题它完美,通俗,实用,是一门很神奇的学科,但是它的崇拜者误导了人们其他数学部分是不值得关注的,由于这种概括化思想很盛行,使得一代数学家不能享受数学之美,特别是不能享受解决有挑战性难题的乐趣以及欣赏解题技巧。抽象数学曾经历过近亲繁殖阶段,从而使其与现实脱节了,因此,数学教育需要改变以保证其原有的均衡性。
当高德纳先生第一次在斯坦福大学教授具体数学(Concrete Mathematics)时,对于有些奇怪的课程名称解释道:想教授一门硬数学以代替现在的软数学。与某些理解相悖(concrete -词在英文中还有另一个意思:混凝土),他声称:不教聚合论,也不讲Stone嵌入定理,更没有Stone-Cech紧化。(来自土木工程系的学生起身悄悄地离开了教室。)
尽管具体数学以逆潮流开始,但是能够存留下来的主要原因是该课程的积极意义。作为课程体系中的一门普通课程,它的主要任务是巩固和证明具体数学在各种新的应用中的价值。Z.A.Melzak先生出版的两卷本Companion to Concrete Mathematics(与具体数学为伴)[267],让我们想到了这个名字。
具体数学的内容乍看上去好像是放在互不相通袋子里的戏法,但是实际应用使它们有机结合成一套严谨的方法。这些技术也确实是和谐统一的,并且具有很强的吸引力。作者之一的葛立恒( Ronald L.Graham)先生,1979年首次教授这门课程的时候,学生们兴趣盎然甚至相约一年后的(具体数学)课堂上再相聚。
那么,具体数学究竟是什么?是连续数学与离散数学的融合。更具体地说,是应用一系列解题方法对数学公式进行可控运算。一旦你学过了本书的知识,为了验证看上去令人讨厌的求和,求解复杂的递归关系,以及发现数据中的微妙逻辑关系,你就需要具备冷静的大脑、大量的演算纸,以及相当工整的字迹。你的代数学技能必将很熟练,使得你能够很容易地得到精确解而不是仅仅在限定条件下的近似解。
本书的主要内容包括求和、递归、初等数论、二项式系数、生成函数、离散概率以及渐近方法。此处关注的是这些知识的运算方法而非现有定理或组合推理,其目的是期望每一位读者都能熟悉离散运算(如最大整数函数和有限求和),就像微积分学生熟悉连续运算(如绝对值函数和不定积分)一样。