[调试程序可以证明算法的正确性]程序算法的正确性和效率
【jiaoan.jxxyjl.com--高中信息技术教案】
1、算法的正确性判定
研究计算机算法的目的是为了有效地求出问题的解,用计算机语言描述的算法要在计算机上运行,这引出了对算法效率的分析和讨论。例如在象棋比赛中,对任意给出的一种棋局,可以设计一种算法判断这一棋局的输赢,算法需要从开局起对所有棋子可能进行的移动、移动前后的每一对策作检查,做出应走的棋步。计算步骤是有穷的,但在计算机上运算这一算法需要很长的时间。这就说明计算机只能运行在有穷步内终止的算法。 设计出算法后,应证明该算法对所有可能的合法输入都能计算出正确的结果,这一工作称为算法确认。算法确认与描述实现这一算法的手段无关,例如可以用不同计算机语言来实现这一算法。用算法语言描述构成的程序在计算机上运行,也应证明该程序是正确的,这一工作称为程序证明。 对程序的测试包括调试和作时空分布图。调试程序是在抽象数据集上执行程序,确定是否会产生错误的结果,如果出现错误,进行修改,再做测试。调试只能指出程序有错误,而不能指出程序不存在错误。程序的正确性证明是计算机科学一个重要的研究领域。作时空分布图是用各种给定的测试数据,去调试已经证明是正确的程序,测定一个算法得出运算结果所用去的时间和空间,给出时空分布图,验证对算法所作的分析是否正确,找出算法最优化的有效逻辑位置,优化算法的效率。
2、算法的最优性
求解一个问题,如果规定了算法所允许的运算类型,则所有可能的算法构成了解决这个问题的一个算法类,判断一个算法是否最优的依据,是该算法的平均性态分析。若在选择的算法类中,如果一个算法比所有的算法执行的基本运算少,此算法应该是最优的。 判断一个算法是否最优,并不需要对算法类中的每一个算法逐个进行分析,可以根据这个算法类的特性,确定所需运算次数的下界,在算法类中所有运算次数等于这个下界的算法是最优的,这也说明最优算法不是惟一的。需要做两件工作确定解决一个问题至少需要多少次运算:① 设计一个有效率的算法a,分析a并找到一个函数f,使对尺度为n的输入,a最多做f(n)次基本运算;② 对某一函数g,证明一个定理,表明对所考虑的算法类中的任何一个算法,存在一个尺度为n的输入,使算法至少要做g(n)次基本运算。 若函数f与g相等,则算法a是最优的;若不相等,则可能存在一个更好的算法或更好的下界。
3、分析算法
(1) 分析算法的两个主要内容 要分析一个算法首先要确定使用哪些算法以及执行这些算法所用的时间。运算可以分为两类,一类是基本运算,包括加、减、乘、除四种基本的整数算术运算以及浮点算术、比较、对变量赋值和过程调用等。这些运算所用的时间不同,但都是花费一个固定量的时间。另一类运算由一些基本运算的任意长序列组成,以两个字符串的比较运算为例,可以看做是一系列字符比较指令运算,而字符比较指令可以使用移位和位比较指令。比较两个字符的运算时间是固定的,是某一个常数值,而比较两个字符串的运算时间值则与字符串的长度相关。 其次是确定能反映出算法在各种情况下工作的测试数据集,设计和编制出能够产生最优、最差运算结果的输入数据配置,这些数据配置能够代表可能出现的典型情况。数据配置的设计是创造性的工作,应能最大限度地适应算法,反映算法运行的环境和功能要求。 (2) 分析算法的两个阶段 对一个算法作出分析分为两个阶段,即事前分析和事后测试。 事前分析(priori analysis),求出该算法的一个时间界限函数,用于对计算时间的渐进表示,假定某一算法的计算时间是f(n),其中变量n表示输入或输出量,它可以是两者之和,也可以是它们之一的一种测度,例如数组的维数、图的边数等,f(n)与机器和语言有关。g(n)是在事前分析中确定的某个形式很简单的函数,是独立于机器和语言的函数,例如nm、logn、2n、n!等。给出定义: 若存在两个正常数c和n0,对于所有的n≥n0,下式成立 |f(n)| ≤ c| g(n)|记作 f(n)= o(g(n)) 因此,当讲一个算法具有o(g(n))的计算时间时,指的是若该算法用n值不变的同一类数据在某台机器上运行时,所用的时间是小于| g(n)|的一个常数倍,所以g(n)是计算时间f(n)的一个上界函数,f(n)的数量级就是g(n),在确定f(n)的数量级时总是试图求出最小的g(n),使得f(n)= o(g(n))。 事后测试(posteriori testing),收集该算法的执行时间和实际占用空间的统计资料,是在对算法进行设计、确认、事前分析、编码和调试后要做的工作,即作时空性能分布图,事后测试的结果与所用机器相关。要确定算法的精确计算时间,必须了解时钟的精确度以及计算机所用操作系统的工作方式。为避免因所用机器不同而出现误差,有两种可以选用的方法:一种方法是增加输入规模,直到得到算法所需的可靠的时间总量;第二种方法是取足够大的算法重复因子r,将该算法执行r次,然后用总的时间去除以r。 例如,对于事前分析为o(g(n))时间的算法,选择按输入不断增大其规模的数据集,用这些数据集在计算机上运行算法程序,得出算法所使用的时间,画出这一数量级的时间曲线,并与事前分析所得出的曲线比较。
<本文来源:https://jiaoan.jxxyjl.com/gaozhongxinxijishujiaoan/31922.html
-
用vb编写一个抽奖程序|用VB编写抽奖程序教学设计详细阅读
一、界面设计新建一个标准的exe工程。在form1窗体中放置一个定时器(timer1)、两个文本框(label1,label2)、两个命令按钮(command1,command2)和包含7个元素的控件数组(label3(0)—label3(6))。二、属性设置label3控件数组中的所有...
-
[2020-2021学年第一学期工作计划]学年第一学期信息技术工作计划详细阅读
一、指导思想:推广先进教育技术及理念;应用先进的先进理念及先进设备;服务教育教学;推进校园文化建设及自身技能与修养。二、任务与目标:1、保证西教学楼多媒体平台正常、安全、平稳、运行。每月全面排查一次西教学楼多媒体平台。快速、及时、高质量的解决教师反映及排查中的问题。采取措施减少、杜绝学生课间私自使用...
-
【陕西二套好管家】邮件好管家(第二课时)详细阅读
课题(教学内容)第8课 邮件好管家(第二课时)总 课时第 9课时教学目标重点难点教法教具板书设计教学过程备注主要通过练习复习上节课的内容,同时进行多用户多账号实践活动。 【教师】上节课后布置的作业大家完成的怎么样啦?没有条件的同学现在可以继续抓紧时间完成。其他完成同学可以先自己复习一...
-
【excel函数公式运用技巧】《EXCEL中函数公式的运用》教学设计详细阅读
张宝玉[课 题] 《excel中函数公式的运用》[教 材] 海南出版社、三环出版社出版的《信息技术》七年级下册第二章第四节中第三个知识点的内容[课 型] 新授课[课 时] 1课时[教材分析]本节课的内容是函数和公式在excel中的使用,教材从实际生活中遇到的问题、需要入...
-
[搜集素材的网站]为网站搜集素材详细阅读
课题(教学内容)第13课为网站搜集素材总 课时第13 课时教学目标知识:让学生巩固搜索、整理、归纳、积累素材的方法技能:1、让学生学会高效率搜索网上及现成素材库2、让学生学会建立自己的专用素材文件(夹)情感:培养学生踏实的实践风格,克服建站前浮躁的心理,为成功建站奠定重点建立分类素材文件夹并...
-
【儒家关注()的和谐】盼和谐,关注农村“守望”群体详细阅读
授课对象:高一学生教材:浙江教育出版社《信息技术基础》第六章“网页的设计与制作”一、教学分析内容标准选修模块三“网络技术应用”之(4)通过开发实践,学会规划、设计、制作、发布与管理简单网站的基本方法。(5)能够根据网站主题要求设计评价指标,对常见网站的建设质量与运行状况进行评价。教材分析本节课是学生...
-
, 初三微机课教学计划详细阅读
初中三年级微机课教学计划本册教材的特点:为了迎接信息时代的挑战,适应信息化社会的要求,我国高中信息技术课程改革正在轰轰烈烈的开展,新的高中信息技术课程标准也已经出台。在这种情况下,以往的初中信息技术教材已不能适应时代对学生的要求,初中教材改革势在必行,这套教材正是这种改革的一种尝试。它吸取以往教材的...
-
[因特网探源教学设计]因特网探源详细阅读
课题(教学内容)第4课 总 课时第 课时教学目标知识目标:1 了解因特网的发展历程。技能目标:1 继续熟练掌握利用关键字搜索。2 复习巩固保存搜索到的网页、网页中的文字。3 继续熟练运用搜索引擎的高级搜索情感目标:通过利用计算机和网络去搜索信息、筛选信息,培养他们获取信息、辨别有用...
-
【统计图表的应用】题:图表的应用详细阅读
【适用教材】全日制普通高级中学教材·信息技术第一册(北京教育出版社)【适用单元】第四章 表格数据的处理与分析(第五节 使用图表)授课教师邢波授课时间xx年12月授课年级高一科目信息技术课题图表的应用教学目标知识目标:认识图表的作用,学会用图表分析数据。技能目标:1. 根据需要制作不同类型的图表;2...
-
解一元二次方程程序设计_程序设计方法课标解读详细阅读
“算法”是关于解决问题的计算过程的描述,即解决问题的方法和步骤的描述;“程序设计”是使用计算机可理解的语言表达算法的过程。本模块反映了计算机解决结构化应用问题的基本方法,为选修模块。通过本模块的学习,学生应该体验算法思维,掌握几种基本算法;能设计简单应...