第2章
算 法 初 谈
摩西很快就学会了算术与几何。
……这些知识是他从埃及人那里学来的,
埃及人最重视的研究科目是数学。
——亚历山大的斐洛(Philo of Alexandria),《摩西生平》(Life of Moses)
算法(algorithm)是用来完成计算任务的一系列有限步骤。由于算法与计算机编程的关系特别密切,因此很多人或许认为,算法是一个来自计算机科学专业的概念。其实算法这个词已经有几千年历史了。数学中充满了各种各样的算法,有些算法我们天天在用,就连小学生计算加法时所用的竖式(long addition)都可以说是一种算法。
尽管算法的历史很悠久,但它并不是天生就有的,而是由人发明出来的。虽然我们并不清楚第一个发明算法的人是谁,但我们知道,早在四千多年前埃及就已经有了某些算法。
-
- *
古埃及文明以尼罗河为中心,尼罗河发洪水之后,土壤就变得肥沃起来,从而促进了古埃及的农业发展。可是问题在于,每次洪水过后,用来划分财产边界的那些标志也随之消失了。于是,埃及人就用绳子丈量距离,并拟定一套流程,使自己能够根据早前的书面记录来恢复当时的边界划分情况。有一批专职的祭司负责研究与此有关的数学技巧,这些人叫做“rope-stretcher”(拉绳者),希腊人后来把他们称为geometer,也就是“Earth-measurer”(地形测量者)的意思。
- *
我们很少发现与古埃及人的数学知识有关的文字记录。对于那个时期,目前只发现了两份数学文献,其中一份就是此处要提到的莱因德数学纸草书(Rhind Mathematical Papyru),它以苏格兰收藏家莱因德得名。莱因德在埃及所买的这份纸草书是公元前1650年左右由一位名叫阿姆士(Ahmes)的抄写员所写的。其中含有一系列算术与几何问题,而且还列有一些计算用的表格。这份卷轴里面所写的第一个算法是一种能够迅速计算乘法的技巧,此外还有第二个算法,用来迅速地计算除法。我们首先来讲这个快速乘法算法,在本书后面的章节中大家会发现,该算法当今依然是一项重要的运算技巧。