算法、算法与数学机械化_数学论文

算法、算法与数学机械化_数学论文

算筹、算法与数学机械化,本文主要内容关键词为:算法论文,数学论文,算筹论文,此文献不代表本站观点,内容供学术参考,文章仅供参考阅读下载。

数学机械化的思想〔1〕已经启示人们以更为开阔的视野审视数学的现状,从新的角度来思考和勾画数学发展的前景。

数学机械化的思想来源于中国古算,中国古代数学乃是机械化体系的代表〔2〕。 与古希腊及其延续的数学公理化和演绎推理的传统相对应,从问题出发,以解决实际问题为目的,建立算法的机械化则是中国古代数学研究的传统。

中国古代数学机械化思想是指筹算操作本身所具有的机械重复运演形成的一种数学思想方法。中国古代数学以解决问题为主旨,注重计算、以算为中心的特点,决定其数学成果表现为算法的形式,而以筹为算具和数学问题的模式化,便带来了计算方法程序化与机械化的特点。如果把中国古代数学与现代的计算机技术相比,则可以认为古代算筹相比于现代电子计算机,是一种“硬件”,而算法(古算书中的“术”),即是一种“软件”,可以比作计算机的程序设计。中国古代数学对于算具长期的依赖性和形成相应的一整套程序化算法的特点,为筹算数学的机械化奠定了牢固基础,中国传统数学的算法化倾向以及对算筹的不断改进、完善,又促使机械化水平的提高和计算技术的长期发达。

1 中国古代数学机械化的“硬件”系统

1.1 算筹是中国古代数学机械化的物质基础

原则上说,中国古代数学是随着算筹的产生而形成和发展起来的。中国古代数学算法化的内容与机械化方法都是利用算筹进行计算的,对算筹有明显的依赖性。整个中国古代数学基本上可以看作是一个机械化方法的计算系统。“算筹算盘,即是当时施用的没有存储设备的简易计算机”〔3〕。由于“计算活动本身就具有某种机械性, 从而提供了使用计算工具的可能性。在计算过程中,计算工具占有重要的有时甚至是举足轻重的地位”〔4〕。算筹作为中国古代特有的计算工具, 不仅提供了数学活动的舞台,而且为中国古代数学算法机械化提供了物质基础。

世界上没有哪一个国家像中国一样,在长达二千余年的时间内,始终如一地借助于算筹这一具体的计算工具来从事数学活动。在我国古代,数学称为算术,“算术”的意义是运用算筹的技术,这恰当概括了中国古代数学使用算器、以算为主的特点。虽然世界上各国在数学发展史上都使用过不同的算器,但很少有像中国数学这样对算器的明显依赖,以致于可以把中国古算法称为“筹算”。从计算技术和方法的角度来说,我国古代从未有过西方那样的笔算,数学从一开始就和算筹的使用联系在一起。老子曰:“善数不用筹策。”说明春秋时代已通用[5]。 算筹已是当时世界上最灵巧的计算工具,使用起来既简便又准确。而且随着计算愈益复杂,人们不断改进算筹使之由长变短,截面由圆变方,更趋方便。

从根本上说,算筹表现的数学形式是“位置模式”,这是中国数学赖以发展的基础和条件。算筹在算板上可以任意摆弄,按不同的排列形成筹式,筹码不同的位,就表示不同的值,算筹表数就依据布位的原理。算筹的使用加速了十进位置值制记数法的完成,虽无零的符号,但用空位表示零。这种记数法非常有利于四则运算,加之汉语数字都是单音节,这就为算法改进(如乘除捷算法和口诀的产生)并进而促进计算工具的改革提供了有利条件,这对后来中国数学长于计算,对提高数学的机械化水平起了重大作用。“中国数学能够在数值计算方面远远领先于世界前列,与算筹采用的十进位置制记数法密切相关”[6]。

算筹及其十进位置值记数法都是我国的创造发明。在计算机发明以前,我国古代计算机技术借助于算器达到相当高的水平。算筹是数学模型化、算法化、机械化发展的重要内在因素。

(1)算筹记数。用算筹的不同位置和不同摆法表示。 严格遵循十进位置值记数法,用纵式表示个、百、万、…、10[2n](n=0,1,2…)位上的数字,用横式表示十、千、十万、…、10[2n-1](n=1,2,3,…)位上的数字,这样18个算筹符号加上空位表示0, 则可表示任何大小自然数,而且可表示分数、小数等。

(2)算筹位置表示一个方程中各项的系数。例如,《九章算术》少广章24个问题为开平方、开立方的运算,其机械化程序就是依靠算筹列出上下不同的各层来表示一个二次或三次方程的各项系数,这是传统算筹位置表示的新发展。

(3)算筹位置表示一方程组各方程的系数。例如, 《九章算术》方程章的18个问题,均为解联立一次方程组,其机械化程序依靠算筹摆出方程的各系数,每一方程摆一竖行,几个方程摆几行,成为方阵,这是算筹位置表示的又一新发展。

(4)算筹表示正、负数。古代由于解“方程”的需要, 而实施“方程术”中的“直除”(累减),为保证这种机械化算法能畅通无阻,就要引进负数并建立正负运算法则。正负数引进后,算筹便以负算着黑,正算着红的颜色区分或正数正排、负数斜排的排列区分,宋代又发展成在最后一个有效数字的筹码上添一斜杠表示负数。

1.2 中国古代优越的记数法和计算工具为数学机械化提供了得天独厚的条件

算筹作为先进的计算工具在固定的算板上依布位原理进行的位置变换,便是展开数学机械化活动的基础。算筹的最大优越性是为数学家提供了应用分离系数法的途径,从而使一些数学关系的表达和有关的运算大大简化,即使复杂的数学关系(如一般的多元线性方程组、三元或四元高次方程等等),用算筹都可巧妙表达。

首先,由于算筹固有的位置模式和变换原理,决定其内容侧重于算术以及与数字有关的代数,而非逻辑关系和几何性质,即使是几何问题,也要化为数值计算,而几乎不考虑离开数量关系的图形的性质。

其次,数学机械化方法就是利用算筹进行计算的,因而对算筹有明显的信赖性。算筹的作用不限于单纯的数值计算,更重要的是利用筹在算板上各种相对位置排列成特定的数字模式,用以描述某种类型的应用问题,而这种数字模式,都是按一定的规则、一定的方向进行的,并规定相应的演算程序。中国古代虽没有使用符号的习惯,但筹式这一特定的数字模式把量的意义通过算筹放在算板上的位置表达出来,并进一步把运算由“数”扩展到“式”,起到了形式化数学语言的作用。因此,筹式可视作具有内在结构的数学符号,它不仅能够合理表达思想内容,而且能够精确表达概念、方法和逻辑关系[7]。 这就使得中国数学机械化思想首先集中于两个方面:一是用以描述某种类型的实际应用问题,规定题中量放在算板上的适当位置;二是制定算法,即决定放置在算板上算筹进行布列变换的步骤。算法即“术”,每一个算法,实质上就是一个运算规则,适于在算板上操作、运演。

再次,筹算过程具有一定的“机械化”特征。筹算应是一个由一系列算法所构成的数学体系,其核心是十进位置值制和分离系数法[8]。筹算过程即是对算筹的布列和运算过程,中国古代筹算以筹布式,依术推演,程序步骤明显,由于使用算器,无须保留运算的中间过程,筹算所要求的每类问题的有关数据都是按一定规则排列成特定的模式,并规定了一套程序化的算法,这种算法的模式化和程序化,使得筹算过程具有算法机械化的特点,只要步步按规则运筹,就能机械地得出结果来。例如中算家为了解决现今所谓线性方程组一类的问题,便将有关数据按一定的规则排列成数码方阵,称之为“方程”,并规定了一套类似于现在所说的“初等变换”的算法[9]。“方程”这一筹式是以遍乘、 直除(累减)为基本变换,而“方程术”则是反复实施这两种基本变换逐步消元求解的演算程序。利用算筹按算法进行布列、运筹就能顺利地机械地得出结果,这是筹算过程的一大特点。中国古代数学中许多具有明显机械化特点的脍炙人口的成果,诸如分数、负数、小数的概念及表达、开平方和开高次方、解线性方程组和高次方程组、最大公约数和最小公倍数的算法、两两互素算法、计算圆周率、解一次同余式组以及造高阶差分表等等,都得利于算筹体系的采用。同时,各种运算过程中的数量关系都是用筹的位置关系来表示,因而在中国古代数学著作中,都不列数学运算符号(如加减乘除符号),这也是中国古代数学中长期没有产生这些符号的一个原因。

综上所述,从数学自身来说,由于算筹所提供的十进位置值制记数法和筹式所具有的代数意义,为中国古代数学机械化提供了基础条件,也使中国数学长期在算术和代数两大领域遥遥领先于世界。“对中国数学的理解和认识不能离开筹算这一特定的内容,因为筹算在很大程度上决定了中国数学的性质和思想方法[10]。

2 中国古代数学机械化的“软件系统”

算筹作为整个中国古代数学计算系统的“硬件”,为实现数学机械化提供了优越的条件和物质基础。中国古算以算为主的特点和长期使用算筹、珠算,自然就会形成一个与“硬件”相对应的“软件”。“中国传统数学中的‘软件’思想非常突出,可以说中国传统数学主要是配合和适应‘硬件’的前提下发展起来的。”[11]。而实现机械化的关键在于确定计算过程即从最初的计算对象(数据)导出所要求的结果的准确的方法序列,这就是算法。算法或“术”,可以被看作中国古代数学计算系统的“软件”。每一个算法,实质上就是一组运筹的规则,计算过程就是由一系列由规则指定的运算构成的。由于算法一般具有机械化的特征,只要按步步规则操作,就能在有限步骤内得出结果,解决问题。

2.1 制定算法,是数学的根本,是中华民族价值观在数学中的表现

中国传统数学的研究遵循着一种程序化的思想,这种思想从《九章算术》开始一直为中国古代数学著作大都沿袭的模式:实际问题→归类→筹式模型化→程序化算法。即将社会和实际生产生活中的问题,先编成应用问题按问题性质分类,然后概括地近似地表述出一种数学模型,借助于算筹,得到这一类问题的一般解法——术,再把算法综合起来,得到一般原理,分别隶属于各章。人们按照书中的方法、原理和实例来解决各种实际问题。中国传统数学遵循这种程序化的思想研究问题,这与西方传统数学按照一种以逻辑演绎思想为指导的“定义—公理—定理”的程序去构造演绎体系,两者之间有明显的区别。与中国数学研究的传统相适应,我国筹算形式下数的理论是以确定算法为基本内容,又以创造和改进算法为它的发展方向。因此,制定算法是数学的根本,是中国数学赖以存在和发展的出发点,这也可以说是中华民族的价值观在数学上的表现。在这种价值观念的支配下,中国古代数学家在筹算模式范围内,创造发明一种又一种筹算技术,用于描述和解决现实中常见的数学问题,例如,约分、合分、减分、乘分、经分、今有、齐同、衰分等诸算法用于处理分数和常用的比例问题;盈不足术用来处理盈亏问题,“方程”术用于处理线性方程组问题;而开方术天元、四元诸术刻画了开方和解高次方程(组)问题;大衍求一术,则解决了方程和同余式的求解问题;招差术用于处理高阶等差级数求和问题,等等。整个中国古代数学确实可以看作是以算法作为“软件”的计算系统。为了使全部计算首尾连贯有条不紊地进行,必须对每种模式编一套完整的演算程序,古算书中的“术”实际上是解题公式的逐步演算程序,是用一套“程序语言”来描述的程序化算法。各种不同的筹算方式都有基本的变换法则和固定的演算程序。中算家还善于运用演算的对称性、循环性等特点,将演算程序设计得十分简捷、巧妙。开方术、割圆术、增乘开方法、大衍求一术等在筹算程序的设计方面都达到很高的水平[12]。这些“术”即使以现代的“算法”观念来考察,也是一个个合格的算法,一般具有这样几个特点:①是严格“一义”的规定即完全确定性,不可能有歧义的理解。②在执行这个“术”时,每一时刻都知道下一时刻(或每一步都知道下一步)该怎么办,称之为可预见性。③作为一类问题的共同一般解法,可用以解决同一问题类中的其他问题。④能在有限步骤内达到“最后一步”,即能在有限步骤内求得结果。

对于这样一些能行且可计算的“术”,按照它规定的步骤,任何人利用算筹(或利用笔算)都能求出解来,对于现代计算工具——电子计算机来说,我们可以把它们译成算法语言,实施现代的可计算的算法。

2.2变换技术和改进算法是数学机械化思想的核心内容

由于中国古代算法常常利用筹在算板上的相对位置关系,并规定相应的演算程序,通过筹式的逐步变换而最终机械化地获得问题的解答。如果不排成固定的模式并规定相应的演算程序,必然会在繁琐、复杂的演算中乱套,更不便于普及和应用,因此,机械化变换技术的创设和计算技术的提高成了数学思想的核心内容。算筹模式化和程序化标志着古代筹算的完备与成熟,而正是这种模式化和程序化的要求,成为中国古代数学建立复杂的算法理论,提高计算水平的基础条件,而设计和改进算法也自然成为中算家孜孜以求的目标。中算家的筹式程序化算法的设计能力,早在《九章算术》中就有了出色的表现,后经历代算家所继承、改进并不断发展,到宋元时期,其抽象性和一般化水平更高,比如秦九韶关于大衍总数术的设计,在算法上有很高的成就,其化约元数为定数的方法在没有素数概念的历史条件下是难能可贵的[13]。而以奇、定二数求乘率的循环递推程序(即大衍求一术)设计科学而严谨,至今无可指谪。刘徽创立的“割圆术”中的求圆周率是一种典型的循环算法过程。“招差术”、“正负开方术”等许多算法的程序都符合现代算法的要求,具有机械化、一般性和有效性。有些算法(术)的筹算程序,都可翻译成现代算法语言,按照计算机程序输入计算机进行运算。为了确认算法的合理性和正确性,中国数学也需要采取证明,使用逻辑推理。但是,它的理论蕴含在算法之中,而不像古希腊数学那样,处于数学的主体地位,且一般来说其目的是为了给算法提供可靠性,而不设有专门容纳阐发算理的篇幅,许多重要的数学原理与精湛的数学思想都是通过后人的注释才得到简要的说明和证明。中国数学理论体系的建立、著述的编撰均以“术”为思考的基点,以“术”带题,以题阐“术”,形成一套发达的以计算为中心的应用位置模式的算法理论系统,其成果的表现形式是算法以及为说明算法和发展算法而设计的几何构图,推进方式是以推广旧算法、发展新算法为主,具有较强的目的性。这套理论不仅适应于中国当时社会的需要,而且在不同的历史时期为世界其他国家提供了启示、借鉴和样板,丰富了世界数学的宝库。

*本文是作者博士毕业论文的一部分

标签:;  ;  ;  ;  

算法、算法与数学机械化_数学论文
下载Doc文档

猜你喜欢