[调试程序可以证明算法的正确性]程序算法的正确性和效率
【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
-
[高一信息技术必修一试题]信息技术必修试题详细阅读
一、单选题(每小题3分,共30)1、 从信息不能独立存在的角度考虑来说明信息特征的是( )。a 时效性 b 共享性 c 价值性 d 载体的依附性2、 下列属于应用软件的是( )。a dos b windows c access...
- 详细阅读
-
新兴信息技术构建的师生教学系统包括|信息技术教学成为师生生命的体验详细阅读
普通高中信息技术课程的总目标是提升学生的信息素养。信息素养具体表现为三个层面:知识与技能、过程与方法、情感与价值观,三个层面的目标相互渗透、有机联系,共同构成高中信息技术课程的培养目标。网络教学单元是省编高一《信息技术》第四章因特网应用的教学内容,是高一信息技术教学的重点,也是教学难点,是培养学生信...
-
linux操作系统基础试题_操作系统基础练习试题详细阅读
一、判断题1 计算机中的资源不仅就是cpu,存储器,i o设备等硬件资源2 没有安装操作系统的计算机与安装有操作系统的计算机一样方便,有效(错)3 操作系统是用户与计算机系统之间的接口,因此它是一种硬件(错)4 操作系统是计算机中最重要的软件5 windows不是唯一的操作系统6 windows就是...
-
1.2日新月异的信息技术教案_1.2日新月异的信息技术详细阅读
1 2 日新月异的信息技术一、 教学目标分析:“信息与信息技术”是教育科学出版社出版的《信息技术基础》模块第一章内容。作为本书的第一章,在学生已有知识的基础上,对信息和信息技术做进一步的提高,目的是使学生能从宏观上把握信息和信息技术,并形成整体认识,为后面的学习提供必要的准备。通...
-
【信息技术培训心得5篇】信息技术学习指导详细阅读
(一)教学要求1.能列举信息技术的应用实例。2.了解信息技术的历史和发展趋势。(二)教学设计建议本节安排一个课时,教材上安排了“信息技术及其应用”、“信息技术的发展历程”和“信息技术展望”三部分内容。“信息技术的发展...
-
由崎司|诱其思,导其程,究其能,乐其中详细阅读
——新教学模式在新课程中的初探 浙江瑞安安阳实验中学 朱曼 [内容摘要]本文探讨了现行课堂教学面临的疑惑,大胆地提出了新型教学模式——诱加导,促究,得乐的教学模式。将这种教学模式应用于信息技术课堂,结合具体教学案例,目的是求证这种新型教学模式的可操作性,让“活”、“新”、“试”、“敢”、...
-
利用数据库管理大量信息教案_利用数据库管理大量信息详细阅读
【第七章 第三节 】教案【学生分析】高一年级的学生已经具备了一定的计算机使用经验,但主要是常用工具软件以及网络应用方面的,对于数据库的使用还不太了解。因此在教学中要降低起点,注重启蒙以及兴趣的培养。【教材分析】沿着技术发展趋势,信息技术必然涉及信息资源管理。数据库及其管理应用系统是信息资源管理的一种...
-
如何将计算机接入因特网教案_《如何将计算机接入因特网》(说课)——设置IP地址和子网掩码详细阅读
《如何将计算机接入因特网》说课稿——设置ip地址和子网掩码儋州市那大中学 黄学鸿【教材分析】 如何将计算机接入因特网是教育科学出版社出版的普通高中实验教材《网络技术应用》第二章第三节的内容,本节内容主要包括“因特网服务组织”、“设置ip地址和子网掩码”、“设置网关和代理服务器”、“设置dns服务器...
-
【网络基础及其应用单元测试】网络基础及应用练习试题详细阅读
1 关于计算机通信,下列说法中正确的是________。a 计算机网络通信协议就是在计算机进行通信时双方规定使用英文还是使用中文b 电话是一种通信介质c 网卡是一种通信介质d 计算机之间可以进行无线通信2 在internet上使用的基本通信协议是________。a ipx spxb n...