计算机算法中的数学方法研究_崔守梅 - 范文中心

计算机算法中的数学方法研究_崔守梅

06/15

2006年第2期

淄博师专学报

Jo urnal of Zibo N or mal Colleg e

总第4期

计算机算法中的数学方法研究

崔守梅1 郝 玲2

(1. 淄博师范高等专科学校数理科学系, 山东淄博255100; 2. 淄博师范高等专科学校附属中学, 山东淄博255100)

计算机算法是程序设计的核心部分, 数学方法是计算学科中最根本的研究方法。通过从计算机算法思想、摘要:

设计、分析三个方面与数学方法整合的论述, 不难看出数学理论对计算机解决问题具有重要的作用。

关键词:算法; 数学方法; 整合中图分类号:T P301. 6

文献标识码:A

文章编号:(2006) 02-0064-03

A bstract :Alg orithm is the key to computer prog ram design and m athematics m ethod is the mo st basically research method of num erical analy sis . This ar ticle mainly researches the combination of al -g orithm ideo logy , design and analysis of mathem atics m ethods . Examples pro ve the sig nificance of

Mathem atics me thod in reso lving the problem w ith com puter algo rithm s .

Key words :algo rithm s ; mathematics methods ; combination   计算机最原始的功能就是数字计算, 算法对学生来说并不陌生。小学的四则混合运算所遵循的先乘除、后加减的规则, 括号优先的处理规则, 都是学生最初接触到的算法实例。中学数学课程中的方程组解法、数列求和、质数判定、最大公约数和最小公倍数求法、定积分求值等, 都涉及到算法。算法(Algorithm ) 是在有限步骤内求解某一问题所使用的一组定义明确的规则。通俗点说, 就是计算机解题的过程。在这个过程中, 无论是形成解题思路还是编写程序, 都是在实施某种算法。一个算法应该具有五个重要的特征:有穷性、确切性、输入、输出、可行性。在计算机算法中经常采用的算法设计技术主要有迭代法、穷举搜索法、递推法、贪婪法、回溯法、分治法、动态规划法等。

数学课程中很多问题都可以用程序设计的思维方法来解决。数学方法是指解决数学问题的途

收稿日期:200604

19

径和步骤, 它是计算学科中最根本的研究方法。

理论上凡能被计算机处理的问题均可以转换为一个数学问题。反之, 凡能以离散数学为代表的构造性数学方法描述的问题, 当该问题所涉及的论域为有穷或虽为无穷但存在有穷表示时, 这个问题也一定能用计算机来处理。

利用计算机解决科学计算等一系列问题, 应将实际问题转换为程序。这需要经过一个对问题抽象的过程, 建立起完善的数学模型。只有这样, 才能建立一个设计良好的程序。因此, 探讨数学方法对用计算机解决问题具有重要的作用。

一、计算机算法思想中整合数学方法数学方法是抽象地、模型化地分析问题, 比如分析法、综合法、归纳法、类比法、特殊法、数形结

作者简介:崔守梅(1968, 女, 山东桓台人, 硕士, 淄博师范高等专科学校数理科学系副教授, 主要从事数学与计算机教育研究。郝玲, 女, 硕士, 淄博师范高等专科学校附属中学教师。

合法等, 在演算能力和空间想象能力培养方面对学生有较高要求。近代数学的发展让数学实用性的特点更突出, 教改后的基础教育阶段的数学课程中也不同程度地加入了概率统计、逻辑推理等比较简单的现代数学思想。用数学思想和方法统率具体知识、具体问题的解决, 可以更好地培养和发展学生的思维方法和能力。学生掌握计算机算法的思想, 也是掌握一种方法。故在进行信息技术与数学教育整合过程中, 要认识到计算机算法与数学思维方法整合的重要性, 重视对数学思维与计算机算法的辨析, 找准数学思维与计算机算法的结合点。让两种思维方式、方法能够有机整合, 然后选择合适的软件, 制定合理的方案, 通过技术让思维发挥出更好的作用, 有效地促进整合的开展。

这里仅从三个方面来分析说明计算机算法思想中与数学方法的整合。

(一) 循环的思想

人们最怕机械重复, 因为重复枯燥乏味。而计算机则擅长重复。这种重复体现到程序中就是循环。不难想象, 如果没有循环, 计算机还能干什么! 计算机程序中的几个循环问题, 如二分法、数列求和、判定素数、辗转相除法、秦九韶算法等, 都包含了典型的数学方法。只是用手工计算时会因其过于繁琐而弃之不用。下列是用辗转相除法求两个正整数m 和n 的最大公约数的程序:

pro gram ex1;

var m , n , a , b , r :integer ; begin  w rite (' Input m , n :' ) ;  readln (m , n ) ;

 a :=m ; b :=n ; r :=a mod b ;  {求m /n 的余数r } w hile r 0do

 beg in

  a :=b ; b :=r ;  {将n 的值放在m 中, 将r 的值放在n 中}

  r :=a mod b ;  end ;

 w riteln (' The g reatest co mmo n divide is :' , b :8) ;

end .

(二) 递推的思想

10

怎么计算

∑i ! ? 这要设置一个变量S 记录

i =1

和, 还要设置一个变量n 记录项数。阶乘怎么办?

每一项都单独计算显然太麻烦。注意到每一项Tn 与前一项Tn -1的关系是Tn =n ×Tn -1。因此从第二项开始, 每一项都可以由前一项乘以n 得到。这就是递推。而这正是数学中的数列。程序中要实现递推, 只要用到n =n +1, S =S +T , T =T *n 等几个简单的语句。递推与数列两个概念, 使计算机算法与数学方法有机融合。

(三) 归纳的思想

用数学归纳法证明循环不变式(LOOP IN -VA RIANT ) , 并验证程序的功能(COM PU TES ) :

S UBROU TIN E COM P (X , Y ; Z ) (1) Z →X (2) W →Y

(3) W H ILE (W >0) a . Z →Z +Y b . W →W -1(4) RET URN

EN D OF SUBROU TINE COMP

COM PUTES :Z =X +Y LOOP INVARIAN T (Y ×W ) +Z =X +Y 2证明:令P (n ) 是谓词(Y ×W n ) +Z n =X +Y 2, n0=0。由归纳法证明, n ≥0P (n ) 。当n =0时, (Y ×W 0) +Z 0=X +Y 2, 由初值W 0=Y , Z 0=X , 显然为真。设k ≥0, P (k ) 为真, 即k ≥0(Y ×W k ) +Z k =X +Y 2。则经过一次循环后, Z k +1=Z k +Y , W k +1=W k -1。则

(Y ×W k +1) +Z k +1=(Y ×(W k -1) ) +(Z k

+Y ) =(Y ×W k ) +Z k =X +Y

这就是P (k +1) 为真。由上述两步, 结论得证。

当循环结束时, W n =0, 由(Y ×W n ) +Z n =X +Y 2, 则Z n =X +Y 2。

仅此三例可看到, 计算机算法思想与数学思维有较多的相同点。计算机算法是更加泛化了的数学方法。

二、计算机算法设计中的数学方法

程序设计中可采用多种数学方法, 恰如其分的数学方法可以大大减少程序运行的时间和所需空间, 起到优化程序的作用。来看一个计算定积

22

分的例子。

计算定积分:

I n =e

家, 将大量的时间花费在公式的计算与证明上会导致整个项目进度缓慢、成本过高。因此, 在算法设计中, 往往采用能近似表达性能的方法来展示某个算法的性能指标。例如, 计算机对n 和n +2n 的响应速度, 当n 比较大的时候几乎一样没什么区别, 便可直接认为后者算法的复杂度为n 2。在分析算法时, 隐藏细节的数学表示法可以简化算法复杂度的许多细节, 提取主要成分, 这也就是某些领域广泛使用的主成分分析思想。

基于算法复杂度简化表达的思想基础上, 通常会对算法进行最坏情况分析和平均情况分析。对于给定的算法, 如能保证最坏情况下的性能依然不错固然很好, 但是在某些情况下, 程序的最坏情况算法的运行时间和实际情况的运行时间相差很大。在实际应用中几乎不会碰到最坏情况下的输入, 此时可不进行最坏情况分析, 特别是分析最坏情况算法会花费大量精力的时候。利用数学方法的算法的平均情况分析, 可估计程序的性能, 作为算法分析的基本指标之一, 对于经典算法和反映出来的时间差几乎不会产生感觉的算法, 就没有必要去改进。例如程序进行1000次循环花费0. 1秒, 改进后为0. 01秒, 在实际应用中通常也只需要几千次循环, 此时就没有必要去研究了, 只要能正确完成任务即可。

数学方法在计算机算法中的合理运用, 可给编程带来很大方便, 现在越来越多的信息学竞赛题都用到数学推导。今后的计算机要向更加智能化的方向发展, 其出路仍然是数学的算法和数学的机械化, 对算法的研究日益成为数学教育的核心问题。

参考文献:

[1]董荣胜, 古天龙. 计算机科学与技术方法论[M ]. 人民

邮电出版社, 2002.

[2]曾范红. 注重数学思维与计算机算法的辨析[J ]. 中国

电脑教育报, 2005, (13) .

[3]王家廞. 离散数学结构[M ]. 北京:清华大学出版社,

2004.

[4]施吉林, 刘淑珍, 陈桂芝. 计算机数值方法[M ]. 北京:

高等教育出版社, 1999.

[5]李玉钊. 由二次方程的求根公式谈中学数学中算法的

稳定性[EB /O L ]. 中学学科网, 2005,(7) .

2

2

1

n x

x e d x   i =0, 1, 2, L , 70

解:可有递推公式:I n =1-nI n -1

如果先计算I 0, 然后再计算I 1, I 2, …,I 7

假设计算出的近似值为I 0*, 误差为E (I 0*) =δ则I 1的近似值I 1*的误差为E (I 1*) =δ则I 2的近似值I 2*的误差为E (I 2*) =2! δ

则I 3的近似值I 3*的误差为E (I 3*) =3! δ……

则I 7的近似值I 7*的误差为E (I 7*) =7! δ=5040δ

至此, 误差放大了5千倍!

但如果利用递推公式:I n -1=(1-I n ) /n 先计算I 7, I 0的误差只有I 7的误差的5千分之一!

两者方法只是计算的顺序不同, 得出的结果相去甚远。无疑, 第二种方法具有非常明显的优点。正是这一变换计算次序, 却解决了此类数值计算的“稳定性”问题, 使之成为一个好算法。

为解决某个数值问题, 需要选择或设计一个算法。当现有的算法不能满足解题的需要, 就要设计一个新算法或改进现有算法。算法要有正确的理论基础、可行性、稳定性, 即计算结果误差对于初始数据的微小变动具有稳定性, 后者的微小变动不至于使前者产生极大误差而失真。为能保证算法稳定性, 可采用数学方法的推理和论证。

三、计算机算法分析中的数学方法

算法分析的任务是对设计出的每一个具体的算法, 讨论时间复杂度和空间复杂度, 以探讨某种具体算法适用于哪类问题, 或某类问题宜采用哪种算法。

通常我们可以利用实验对比分析、数学方法来分析算法。实验对比分析很简单, 两个算法相互比较。它们都能解决同一问题, 在相同环境下, 哪个算法的速度快就认为这个算法性能好。数学方法能将算法分析得更为细致, 能在严密的逻辑推理基础上判断算法的优劣。但在完成实际项目过程中, 很多时候都不能去做这种严密的论证与推断。因为不是在完成一道数学难题, 也不是数学领域的专(责任编辑:林美玉)


相关内容

  • 十大经典数学模型
    十大经典数学模型 1.蒙特卡罗算法(该算法又称随机性模拟算法,是通过计算机仿真来解决问题的算法,同时可以通过模拟来检验自己模型的正确性,是比赛时必用的方法) 2.数据拟合.参数估计.插值等数据处理算法(比赛中通常会遇到大量的数据需要处理,而 ...
  • 11-12下理工科高数A考试题
    对离散数学的初步理解 姓名:刘显荣 专业班级:软件1班 学号:10 离散数学的作用: <离散数学>是以一切离散量为研究对象的一门学科,包括数理逻辑.关系代数.罔论.集合论等多方面内容.这门学科在计算机科学的发展和研究中起着重大的 ...
  • 第8课时-§1.3算法案例--辗转相除法与更相减损术
    课题:§1.3算法案例--辗转相除法与更相减损术 教学目标: 知识与能力:理解辗转相除法与更相减损术中蕴含的数学原理,并能根据这些原理进行算法分析:基本能根据算法语句与程序框图的知识设计完整的程序框图并写出算法程序. 过程与方法:在辗转相除 ...
  • 上好"算法初步"
    摘 要:算法初步这一章是新课程改革以后,在高中新增加的一章,是数学及其应用的重要组成部分,是计算科学的重要基础,算法的应用是学习数学的一个重要方面,在教学时应当充分使用教科书提供的典型实例,让学生在解决具体问题的过程中学习一些基本逻辑结构和 ...
  • 基于三点二次插值的方程求根算法
    第7卷第12期2008年12月 南阳师范学院学报 JoumalofNanyang Nomal Unive鹉ity V01.7No.12Dec.2008 基于三点二次插值的方程求根算法 张天良 (南京信息工程大学数理学院.江苏南京210044 ...
  • 北师大版小学数学三年级下册教材教学内容和教学目标
    新世纪(版)<义务教育课程标准实验教科书数学>(三年级下册)是小学数学第一学段的最后一册教材.学习本册教材要初步理解小数和分数的意义,感知平移.旋转和对称等图形的变换,理解乘法与面积的联系,体验统计平均数的必要性,以及能够列出简 ...
  • [小树有多少棵]教学设计及反思(刘玉婵)
    新北师大版三年级数学上册第四单元 <小树有多少棵>教学设计 文/大麦山中心小学 刘玉婵 一.教学内容 新北师大版小学数学三年级上册第四单元(第30.31页) 二.教材分析 本节课是在学生上学期已经熟练掌握乘法口诀基础上的一节课. ...
  • 多目标优化算法综述
    多目标优化算法综述 高鹏 (华北电力大学,电气与电子工程学院,北京,102206) Overview Of Multi-objective Optimization Algorithms Gao peng (College of Elect ...
  • 图像最大内切圆求解算法的研究
    2006年 工 程 图 学 学 报 2006第2期 JOURNAL OF ENGINEERING GRAPHICS No.2 图像最大内切圆求解算法的研究 李 伟, 周朝晖, 严承华 (海军工程大学机械系,湖北 武汉 430033) 摘 要 ...
  • 两位数加两位数的口算
    <两位数加两位数的口算>教学设计 教学内容: 苏教版义务教育课程标准实验教科书三年级上册第39页-40页. 教材简解: 本课的教学内容是在学生学习了口算两位数加整十数.一位数,以及学会了千以内笔算加法的基础上安排的.教材创设购物 ...