浅谈数学在计算机科学及应用中的作用
数学学科是现代社会最为基础和最为重要的学科,它不仅为其它自然科学、工程技术以及社会科学提供了强有力的工具,而且随着现代科学技术和社会的发展,不断催生出新的高科技,成为现代技术的关键部分。计算机这个现代信息社会的重要物质基础,就是由数学天才冯·诺依曼在数学理论下构建的。在信息社会,数学已不仅仅是技术发展的理论基础和研究工具,而且已成为现代技术的一部分,直接以软件、芯片等作为载体而产品化,成为我们日常生活用品的技术组成部分。现代信息社会、信息技术的发展,不仅仅向数学提出了理论的要求,而且也向数学提出了技术的要求。计算机科学被认为是算法的科学,而算法研究的本质是数学问题。计算机在很多领域的应用,如图象传输与压缩、复杂的曲面造型、生物信息等都在呼唤新的数学方法,而数学的研究为解决许多高科技问题提供有力工具。 对数学的再认识 数学是一种语言,是一种科学的共同语言,若没有数学语言,宇宙就是不可描述的,因而也就是永远是无法理解的。任何一门科学只有使用了数学,才成其为一门科学,否则就是不完善与不成熟的。数学语言已成为人类社会中交流和贮存信息的重要手段,宇宙和人类社会就是用数学语言写成的一本大书。培根(Bacon)说:“数学是打开科学大门的钥匙”。忽视数学必将伤害所有的知识,因为忽视数学的人是无法了解任何其他科学乃至世界上任何其他事物的。几千年来,凡是有意义的科学理论与实践成就,无一例外地是借助于数学的力量。 数学是一种工具,一种思维的工具。恩格斯说:数学是现实世界中的空间形式与数量关系。数学就是研究数量、形状和他们之间关系的科学,这是数学的三大领域。当前数学还在发展,目前已经发展成为包括一百多个分枝的庞大系统。数学已经不是原来人们头脑中仅仅是数和形,仅仅是陈景润的概念了。随着计算机的发明和技术迅速提高,数学学科也进入了新的黄金时代。数学包括三个方面,模式、结构和模拟现实世界。它不光是理论,也是能力,是文化,是素质。 数学可分为五大学科:纯粹(基础)数学、应用数学、计算数学、运筹与控制、概率论与数理统计。应用数学则以以上数学为综合理论基础,可分为:价值数学、运筹学、数理统计学、系统科学、决策论等。目前又发展出混沌、小波变换、分形几何等。 数学科学是自然科学的理论基础,与化学、理论物理、信息科学、计算机科学等学科相互交叉。数学也是高新技术的理论基础,这一点对信息科学与信息技术尤其重要。 从计算机科学的发展看数学的作用 计算机科学的学科内容是以理工科的基础科目,包括物理学(主要是电子技术科学)、基础数学(含离散数学、线性代数等)为基础理论支撑发展起来的,理论与实践相结合的学科。按照基础理论、基本开发技术、应用以及它们与硬件设备联系的紧密程度分成三个层面,即理论基础层、专业基础层和应用层。 最底层是计算机科学的基础层,它包括计算的数学理论、高等逻辑等内容。其中,计算的数学理论涵盖可计算性(递归论)与计算复杂性理论、形式语言与自动机理论、形式语义学(主要指代数语义、公理语义等)、PETRI网理论等方向;高等逻辑涵盖模型论、各种非经典逻辑与公理集合论等方向。 中间层是计算机科学的专业基础层,它是为应用层提供技术和环境的一个层面,包括软件开发方法学、计算机网络与通信技术、程序设计科学、计算机体系结构、电子计算机系统基础。其中,软件开发方法学涵盖顺序、并行与分布式软件开发方法学,如软件工程技术、软件开发工具和环境等方向;计算机网络与通信技术涵盖计算机网络互联技术、数据通信技术,以及信息保密与安全技术等方向;程序设计科学涵盖数据结构技术、数值与符号计算、算法设计与分析(包括并行与分布式算法设计与分析)、程序设计语言、程序设计语言的文法与语义、程序设计语言的文法与语义描述、程序设计方法学、程序理论等方向;电子计算机系统基础涵盖数字逻辑技术、计算机组成原理、故障诊断与器件测试技术、操作系统、编译技术、数据库系统实现技术、容错技术等方向。 最上层是计算机科学的应用层,它包括人工智能应用与系统,信息、管理与决策系统,计算可视化、科学计算等。其中,人工智能应用与系统涵盖人工智能、机器人、神经元计算、知识工程、自然语言处理与机器翻译、自动推理等方向;信息、管理与决策系统涵盖数据库设计与数据管理技术,数据表示与存储(包括多媒体技术),数据与信息检索,管理信息系统,计算机辅助系统,决策系统等方向;计算可视化涵盖计算机图形学、计算几何、模式识别与图像处理等方向。 从计算机的诞生和发展过程来看,每一步都与数学基础和数学的发展息息相关。 三、从计算机的灵魂——系统及软件的编辑看数学的作用 我是学数学的,现在从事计算机方面的工作,也了解几种程序设计语言,80年代我在中学曾带过BASICA程序设计奥赛班,在教学BASICA语言过程中,深深体验到数学基础对学好编程的重要性,其中不光要有数学知识,更重要的是“数学思想”和“数学方法”。所谓数学思想,就是对数学知识和方法的本质的认识,是对数学规律的理性认识。所谓数学方法,就是解决数学问题的根本策略和程序,是数学思想的具体化反映。简单地说,数学思想是数学的灵魂,数学方法是数学和行为。运用数学方法解决问题的过程就是感性认识不断积累的过程。当这种积累达到一定程度时就产生飞跃,从而上升为数学思想。由此可见,数学思想比方法更抽象、更概括、更本质,思想是相应方法的理论根据,方法是相应思想的技术实施。如果将数学思想与方法看成一整体概念--数学思想方法,就是对数学知识的本质反映。数学好象一直被人称为科学之王,尽管我们知道这种说法有失确凿。但是我们并不能否认数学的作用,一个专门为了理论而理论的学科;一个走在时代前沿的学科。 因此,我们把计算机语言称为“算法语言”也就不足为怪了。 一直以来有不少人搞不清数学与算法的关系。算法是建立在抽象数据类型(ADT)并且封装了一系列的运算,也就是算法是以抽象数据类型为基础的。而抽象数据类型本身就是一(或多)组的数学模型,也可以说(狭义的)算法就是在一个数学模型上求解问题的步骤。 定义:ADT X; 输入:INPUT X; 对输入数据的处理过程:F(X) = X' 输出:X'; 从输入状态X的经过映射F(X)后,转为目标状态X',就是程序的求解过程。实际上对于F()可以简单的理解成“算法”。简单一点说,程序实际上是由一系列简单的逻辑组成的。编程能力是由你的逻辑思维能力和抽象思维能力决定的。数学是训练逻辑思维的最好方法。举个例子:我的一个学生曾来信对我说:“我是学习信息与计算科学的,一直与数学专业的一起上课。只是比他们多开了一些计算机方面的课程。”这是因为数学系的学生再学数据结构会觉得很简单。数学差的人不可能成为优秀的搞计算机软件的人。举个简单的例子:只准一个像素一个像素的,请你画一个圆。能没有数学?而且还不是太简单的数学问题。
四、今后,数学与计算机的关系将更加紧密,互相促进、共同发展。 在计算机应用领域,科学计算是一个长久不衰的方向。该方向主要依赖于应用数学中的数值计算的发展,而数值计算的发展也受到来自计算机系统结构的影响。早期,科学计算主要在单机上进行,经历了从小规模数值分析到中大规模数值分析的阶段。随着并行计算机和分布式并行计算机的出现,并行数值计算开始成为科学计算的热点,处理的问题也从中大规模数值分析进入到中大规模复杂问题的计算。所谓中大规模复杂问题并不是由于数据的增大而使计算变得困难,使问题变得复杂,而主要是由于计算中考虑的因素太多,特别是一些因素具有不确定性而使计算变得困难,使问题变得复杂,其结果往往是在算法的研究中精度与复杂性的矛盾难于克服。几何是数学的一个分支,它实现了人类思维方式中的数形结合。在计算机发明之后,人们自然很容易联想到了用计算机来处理图形的问题,由此产生了计算机图形学。计算机图形学是使用计算机辅助产生图形并对图形进行处理的科学。并由此推动了计算机辅助设计(CAD)、计算机辅助教学(CAI)、计算机辅助信息处理、计算机辅助测试(CAT)等方向的发展。 在各种实际应用系统的开发中,有一个重要的方向值得注意,即实时系统的开发。利用计算机证明数学定理被认为是人工智能的一个方向。人工智能的另一个方向是研究一种不依赖于任何领域的通用解题程序或通用解题系统,称为GPS。特别值得一提的是在专家系统的开发中发展了一批新的技术,如知识表示方法、不精确性推理技术等,积累了经验,加深了对人工智能的认识。20世纪70年代末期,一部分学者认识到了人工智能过去研究工作基础的薄弱,开始转而重视人工智能的逻辑基础研究,试图从总结和研究人类推理思维的一般规律出发去研究机器思维,并于1980年在《Artificial Intelligence》发表了一组非单调逻辑的研究论文。他们的工作立即得到一大批计算机科学家的响应,非单调逻辑的研究很快热火朝天地开展起来,人工智能的逻辑基础成为人工智能方向发展的主流。这些研究与发展,都依赖与数学的发展,并不断的向数学学科提出新的要求,不断的促进数学领域的研究与创新。 总之,在计算机科学中,计算比实现计算的技术更重要。只有打下坚实的理论基础,特别是数学基础,学习计算机科学技术才能事半功倍,只有建立在高起点理论基础之上的计算机科学技术,才有巨大的潜力和发展前景。