算法教学设计

2024-09-15 版权声明 我要投稿

算法教学设计

算法教学设计 篇1

教材分析:

这节课内容主要是一些概念和理论,而算法的概念和理论都太抽象,讲起来非常的枯燥乏味,那么就要把这些抽象的东西变得通俗易懂,使学生能轻松而又愉快的接受并理解。

学生分析:

学生基本上没有接触过编程,那么在高中阶段初步接触编程,学生首先会感到很深奥,看到书中的程序语句,尤其是看到后面的长一点的程序语句更是觉得可怕,那教师必须要考虑在授课中如何正确引导,以什么样的方式进行。学生有没有兴趣学,往往看这个课是不是有意思,难不难学,一看难学又乏味,就开始产生厌学的情绪。

教学目标:

引导学生对编程的兴趣,理解算法的概念和如何科学合理的选择和设计算法,为程序设计打好基础。

教学重点:

算法的概念、算法的设计和选择。教学难点:

如何科学合理的选择和设计算法。教学方法:

与学生进行互动探讨式教学,以趣味智力题激发学生探索解决问题的兴趣,以故事事例和具体的程序运行对比,引导学生一步步的思考,从而总结出算法的概念,以及如何设计和选择算法,充分调动学生的主观能动性和探究学习能力。

教学过程:

1、引导学生对编程的兴趣

(1)教师:同学们喜欢玩电脑游戏吗?

(2)学生:喜欢!(说到游戏学生总是表现出很浓的兴趣。)

(3)教师:在上机练习课的时候,总发现有个别同学偷偷的玩游戏,其实你们喜欢,老师也很喜欢,那么同学们想不想自己编个游戏来玩呀?

(4)学生:会不会很麻烦!(学生表现出好奇,又对编程心里还没有底。)(5)教师:不用担心,编程并不像你们所想像的那样难,很快你们就会编一些小游戏程序了。其实编程是件非常有意思的事情,在以后的学习中你会发现自己越来越喜欢编程,甚至会着迷的。

2、算法的概念

(1)教师:幻灯片出示一个经典的趣味性例子, 有一个牧羊人带着一头羊,一只狼和一颗大白菜准备过河,他找到一只很小的船,每次只能带一样东西过去,可是如果让狼与羊单独在一起,狼会吃羊,让羊与白菜单独在一起,羊会吃白菜,牧羊人应如何过河?

(2)教师:分组讨论,前后四个同学为一组,把你们的橡皮擦放到一块,分别写上狼、羊、白菜,你们自己是牧羊人,现在请同学们来设计一个方案,把3样东西安然无恙的带过河。我们来比一比看哪组同学最快完成。

课堂立即活跃起来,同学们把它当作一种游戏全都投入进去了,积极思考起来。(3)很快就有学生举手回答。过河的方案: 第一步:人和羊过河,人返回,留下羊;

第二步:人和狼过河,人和羊返回,留下狼; 第三步:人和菜过河,人返回,留下菜; 第四步:人和羊过河。

(4)教师:同学们这个方案行不行?(5)学生:行。

(6)教师:还有没有其它方案?

(7)学生:还可以在第二步时,人和菜先过河,人羊返回,留下菜;第三步,带狼过河。

(8)教师:刚才同学们把第二步和第三步可以改变先后顺序,其它顺序还能不能颠倒,比如说:第一步先过狼?

(9)学生:不能。

(10)教师总结出算法的概念:同学们说的不错。那什么是算法呢?这个过河的方案就是这道趣味题的算法。请同学们记住一句话:算法就是解决问题的方法和步骤。在以后的编程中也要记住了,有些步骤是可以颠倒的,不影响程序的结果;但是有些一但颠倒了那最终的结果也就全变了。

3、用流程图来描述算法

(1)教师:幻灯片放映,出示例题:某商场为了对苹果进行促销,规定购买2千克以上可以在原价每千克1.5元的基础上打8折。请同学们告诉我该怎么计算应付款?

(2)学生:首先称好苹果,超过2千克,应付款为:苹果重量*1.5*0.8;如没超过,应付款为:苹果重量*1.5(3)教师:放幻灯片,演示流程图。好,这个同学刚才给出了算法。现在我用一个图来把这个过程描述一下。

(4)教师:解释这个图的执行过程。问:同学们,告诉我这是什么图啊?(5)学生:流程图。

(6)教师:幻灯片出示:流程图的基本图形及其功能

(7)教师:我知道大家在数学课程里,学习过用流程图来描述算法。有了你们数学课的一点基础,那么我们现在学习起来就比较容易。流程图是描述算法常用的工具,容易表达,结构清晰简洁,有利于不同环境的程序设计。在以后的学习中,我们还会充分利用流程图来帮我们分析问题。

4、算法的设计与选择

(1)教师:大家在做题时,是不是有时候一道题有多种解法?(2)学生:是。

(3)教师:我给大家讲个故事:200年前的一天,一位数学教师走进课堂,也许是想清静一个小时,给四年级的学生们布置了一道题:从1加到100。5分钟后,一个学生走到他跟前,交上了正确答案,这时他是多么吃惊呀!这怎么可能呢?这个孩子一定是个天才。

(4)教师:请大家告诉我1加到100等于多少?、(5)学生:5050(6)教师:你们是用什么方法计算的?

(7)学生:首尾相加后,再乘以100,即(100+1)*50=5050(8)教师:这无疑是一种很好的算法,既简单实用,效率也高。1+2+3…+100最终也能加到结果,但是计算的过程大家可想而知。解决问题的方法,也许有很多种,但是运用不同的方法却会产生不同的效果。我们编写程序也是一样,你使用不同的算法,也会产生不同的效果。说归说,我们再来看一个例子。

幻灯片出示:求9147485和5147480两个数的最大公约数。

(9)同学们你们是怎么计算的?(10)学生:用“辗转相除法”计算。(11)教师:好,请你们来计算一下。(12)学生:数这么大很难算啊!

(13)教师:同学们别着急,有两个同学已经编写了解决这个问题的程序。大家一起

来看一下。(幻灯片出示)

(14)教师:同学甲编写的程序用的算法是“辗转相除法”;同学乙用的算法是“穷举法”,从5147480开始,每次减1,一个个的进行判断,直到找到为止。好,我们分别来运行一下,请同学们注意观察。

教师:启动VB,运行同学甲的程序:

第1次运行 输入:9147485和5147480 , 结果:5 第2次运行 输入:45684和58460 , 结果:4 第3次运行 输入:8654726和675942 , 结果:2 运行同学乙的程序:

第1次运行,大约5秒钟后显示结果:5 第2次运行,大约5秒钟后显示结果:5(15)教师:请学生回答观察到的现象。

(16)学生:甲的运行速度快一些,还可以求其它组数的最大公约数,而乙只能计算这一组。

(17)教师:同学们观察得很好!那你们认为那个算法好一些呢?(18)学生:甲。

(19)教师:对。算法的设计,直接影响着程序的通用性和解决问题的效率,总的来说,一个好的算法,应该是科学而又合理的算法。实践练习:

算法教学设计 篇2

本节课是针对八年级学生展开教学的。学生在学习了VB基础知识, 并能对逻辑和循环语句熟练应用的之后, 对程序设计一次新的认识, 在程序设计“思想”的一次提升并能从中能知道算法是程序的灵魂。

二、教材内容分析

“算法”是8年级第11章第5节的内容。本节内容是建立在学生对VB有一定了解, 并能应用逻辑和循环语句编写程序来解决简单问题。通过对实际问题的解决过程进行比较, 让学生认识到算法的优劣直接影响程序运行的速度 (程序的质量) , 理解算法是程序的灵魂。学会用流程图来描述简单的的算法。

三、教学目标

[知识与技能]

(1) 了解算法在程序设计中的重要性, 并能够用自然语言、流程图来描述算法。

(2) 知道算法有优劣之分, 能有意识的设计和筛选算法, 优化问题的解决方案。

[过程与方法]

通过实例, 引导学生在解决问题的过程中逐步了解算法在程序设计中的重要地位。

[情感态度与价值观]

让学生认识到“算法是程序的灵魂”, 并在解决问题过程中, 能有意识地优化算法。

[创新与行为]

引导学生在设计算法时先模仿再改写, 培养学生的创新能力。用优化算法的思想去解决实际生活中的问题, 培养良好的优化思维力。

教学方法:讲解、演示、讨论学习

教学重点:理解算法在程序中的重要性, 并能根据实际问题选择适当的算法。能用流程图来描述简单的算法。

教学难点:抽象化实际问题, 并用流程图来描述算法。

四、教学过程

1.导入

华罗庚的《统畴方法》大家学习过吗?讲的是烧水泡茶的事, 泡茶需要做四项工作, 洗水壶 (2分钟) 、洗茶杯 (3分钟) 、准备茶叶 (1分钟) 、烧开水 (10分钟) 。那你怎么泡茶? 有几种方法?你觉得哪种方法更好?为什么?除此, 我们日常生活中做饭, 是不是也可以合理安排各个洗菜做饭的环节来节省时间?通常你会怎么做? (师生讨论)

我们刚才讨论了解决方问题的不同方法和步骤, 如果我们把解决问题的方法和步骤, 称之为算法, 那么同学们发现各个不同的算法效率也不尽相同。生活中我们要勤于思考, 寻找更好的算法。在计算机程序中, 算法就更重要了, 简单点说, 好的算法让程序运行更快, 不会“卡机”。

[通过生活中的实际事例, 体会解决问题的多样性, 并感受不同方法所导致的效率。引出为何要进行算法研究并优化算法。]

2.新课

1) 算法的重要性

找数字 (猜数游戏)

这个游戏大家玩过吗?老师写下一个在1-100之间的整数, 你猜一个数字, 老师通过回答大还是小, 最终确定你的数字是否和之前写下的数字一致, 猜的次数少者胜出。这是我们玩过的游戏, 你是如何以最快的速度来完成猜测的?说说你的想法。

顺序查找, 随机查找, 二分法查找 (黄金分割点) ……

思考:你觉得哪种算法比较好?为什么?

光纤的损坏查修, 通常都是采用黄金分割点的方法来快速完成损坏点的确定。其实生活中还有很多类似的应用。

[探研]1+2+3+……100=? (小高斯) 大家都能一口报出答案。小高斯就是采用了最优的算法。大大提高了工作效率。那么1+3+5+……+2013=?你能想到什么更优算法?

(师生论论)

通过以上例子, 我们都说出了不同的算法, 我们这种算法, 都是用口头语言的方式表述的, 我们把这种算法描述方法称之为“自然语言”。

[通过实例, 让学生思考解决问题的多种方法, 并能体会到算法优劣对解决问题效率上的影响, 进而理解算法的重要性。]

2) 如何描述算法

记得冬天, 有一网友签名:“期待下一场雪。”大家说说之前有没有下过雪? (生讨论)

请大家写出“将a加b除以a减b的值赋给x变量。”大家写的是否一致?为什么会产生不一样的结果?———用自然语言语言描述算法虽然通俗易懂, 但有时并不严谨, 在计算机上, 我们可以用另一种方式来描述算法———流程图。它能直观、简洁地描述问题, 并且逻辑关系清晰。

[通过对自然语言描述问题时局限性和歧义性的感觉和体会, 引出流程图, 并激发学生流程图学习的兴趣, 以期待流程图到底如何比自然语言更优越。]

流程图到底如何比自然语言更优越。]

流程图就是用图形符号来描述解决问题的过程。它用规定的几种符号来表示各个处理过程。 (教材P115)

师生尝试用流程图来绘制“将a加b除以a减b的值赋给x变量。” (过程略)

3) 练习

用流程图来描述顺序“找数”, 你还能用二分法来描述找数吗?

课内练习:任意输入二个数, 判断较大的数, 并用VB完成程序。

扩展练习:尝试用流程图来技术一元二次方程的求根过程。

[通过学生自主设计流程图, 培养学生用流程图算法来解决简单问题的能力。]

3.总结

知道算法的重要性, 并能用流程图来描述简单的问题。

五、教学反思:

算法教学设计 篇3

[关键词]配送中心:选址;遗传算法;规划;算法设计

中图分类号:1775文献标识码:A文章编号:1009-283(2009)04-0124-01

1配送中心选址规划及算法设计的遗传算法选择

配送中心的选址,是指在一个具有若干供应点及若干需求点的经济区域内,选一个地址设置配送中心的规划过程。较佳的配送中心选址方案是使商品通过配送中心的汇集、中转、分发,直至输送到需求点的全过程的效益最好。

在配送中心选址的定量方法中,主要有重心法及鲍摩一瓦尔夫模型的应用,但他们在求解时都存在缺点,如重心法中,因自由度过多,迭代计算非常复杂,最佳地点实际上很难找到;鲍摩一瓦尔夫模型因采用逐次逼近法,不能保证必然会得到最优解,并且在求出的解中,可能出现配送中心数目较多的情况,而且配送中心的固定费用没在所得的解中反映出来。

遗传算法(Genetic Algorithm)是模拟达尔文的遗传选择和自然淘汰的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法。遗传算法的基本思想是建立在自然选择和群体遗传学机理基础上的随机、迭代、进化。具有广泛适用性的概率搜索方法,通过模拟生物进化中“优胜劣汰、适者生存”的规律,进行编码与进化寻优。

实践表明,遗传算法在求解配送中心地址模型时可以取得较好的效果,因此,本文采用遗传算法的思想对配送中心选址规划进行描述及算法设计,为使用遗传算法求解配送中心地址模型提供一些参考。

2遗传算法下配送中心选址规划的一般描述

为了能够将遗传算法应用于配送中心选址问题,必须对其进行数学的抽象。可以将通常情况下的配送中心选址规划问题抽象为以下几个方面:

规划区域表示

将具体的规划区域抽象为一个矩形,根据实际需要的规划精度将矩形区域分割成为mxn的矩形单元格,每一个矩形单元格代表一个与实际物流情况近似的地理区域。用s(i,j)表示规划区域中的第i行、第j列的一个矩形单元格,配送中心可以设置在任一个矩形单元格内。

物流需求经济效益

用B(i,j)表示单元格s(i,j)在满足其物流需求的基础上所产生的经济效益,它是指单元格对物流活动结果进行生产消费和生活消费后产生的社会经济效益。配送中心的修建成本

修建配送中心的成本与当地的地理情况和经济情况有很强的相关性,在不同区域修建配送中心代价是不相同的。在模型中用c(i,j)表示s(i,j)区域修建—个标准配送中心所需的费用

单元格物流需求量

在模型中,用Q(i,j)表示—个单元格s(i,j)的物流需求量。表示该区域在一定时期内对物流服务的需求量。单元格的物流需求量由该区域的人口密度、经济状况、产业结构等因素所决定。

单位物流成本

在模型中,用F(s(i,j)。s(k,1))表示从区域s(i,j)到区域s(k,1)的单位物流成本,并且只定义相邻区域之间的运输成本,非相邻区域的单位物流成本通过多个相邻区域的单位物流成本的叠加累计得出,在规划配送中心时应该使运输成本最小。

配送中心的配送范围

从经济角度和实际运输工具的运送范围来考虑,配送中心的覆盖范围不可能无限大。在时间情况中,考虑到配送中心之间的分工合作,每个配送中心都会有一定的覆盖范围。用A(i,j)表示设置在区域s(i,j)的配送中心的配送区域,其配送范围可以表示为:从点(i-k,j-k)到点(i+k,i+k)(k为自然数)的一个长方形区域,每个候选点的配送范围可以相同也可以不同,如果i-k<0或j-k<0,则说明其遇到了边界,无意义。

配送中心选址模型的规划目标

在规划区域内选取几个单元格作为配送中心的设置点,使规划区域内的物流需求经济效益减去物流成本达到最大。

3配送中心选址模型的遗传算法设计

对配送中心选址模型的求解进行遗传算法设计是寻找出最优解的重要保证,遗传算法作为一种通过模拟自然进化过程搜索最优解的方法,在求解配送中心地址模型时可以取得较好的效果,本文对算法设计如下:

①前提假设

配送中心能够满足任意数量的物流服务需求;

在规划区域中处于相同划分区域的物流属性相同;

配送中心到物流需求点的配送时间可以忽略不计;

模型中不考虑库存。即在“零库存”的情况下进行的,并且物流需求产生时能够立即送货。

②配送中心规划方案的解表达方式

用一组长度为m×n的二进制数串来表示一种布局方案,第k个数表示s((k/n)+1,modle(k/n))的单元格为候选的配送中心。在模型中,用P(i,j)=l表示s(i,j)被设置为候选配送中心点,P(i,j)=0表示s(i,j)没被设置为候选配送中心点。

例如:{1,0,0,1,1……0,1,1}表示P(1,1)=l,P(1,2)=0,P(1,3)=0……

③依据配送目标确定配送中心规划方案的评价函数

④选择算子,采用比例选择算子,即每个个体以与适应度大小成正比的概率被选中遗传到下一代。

⑤交叉算子,采用单点交叉算子,即在个体编码字符串中随机设置一个交叉点,然后在该点相互交换两个配对个体的部分染色体。

⑥变异算子,采用编码字符串范围内的均匀随机变异,即分别用符合某一范围内均匀的随机数,以某一较小的概率来替换个体编码字符串中各个基因座上的原有基因值。

算法的概念 教学设计 篇4

本节课是算法的起始课,主要内容有:算法的概念、用自然语言描述算法。

算法是一种解决问题的方法,是数学及其应用的重要组成部分,也是计算机科学的重要基础。算法的思想有着广泛的应用性。

在数学中,算法通常是指按照一定规则解决某一类问题的明确和有限的步骤。现在,算法通常可以编成计算机程序,让计算机执行并解决问题.

在算法概念的表述中,有范围限定词“在数学中”,因此学习的内容均为数学中的问题。有一个有前缀限制的基本特征词“步骤”,前缀中,“按照一定规则”指的是解决具体问题时的依据和表达方式,关注的是算法的基本逻辑结构(顺序、条件和循环),也表示算法具有有序性。“解决某一类问题”,强调的是算法适用对象的常态,突出算法的研究价值以及它的普遍适用性,也表明特殊问题的解题与一般问题的算法,存在联系又有区别。“明确和有限”,表示算法的每一步都是明确的、可执行的,总的步骤是有限的。

算法有多种表示方法,其中自然语言描述与人的表达方式最接近,是学习其它描述方法的基础。

中国古代数学是以算法为主要特征,并蕴涵着丰富的算法思想。现代信息技术的发展使算法唤发出新的生机和活力,并使之成为当代社会必备的基本知识。算法进入高中必修内容正是反应了时代的需要。

算法具有的基本逻辑结构与形式逻辑结构存在对应关系,有着丰富的逻辑思维材料。算法思想贯穿于整个中学数学内容之中,有着丰富的层次递进的素材。因此,算法的学习对整个高中数学的学习有着“源”与“流”的关系。又由于算法的具体实现上可以和信息技术相结合。因此,算法的学习十分有利于提高学生的逻辑思维能力,培养学生的理性精神和实践能力,发展他们有条理的思考与表达的能力,同时可以让他们知道如何利用现代技术解决问题。

二.目标和目标解析

本节课的教学目标是:

1.在解特殊的二次一次方程组到得出一般二元一次方程组的解法的过程中,让学生对算法的概念有一个初步认识,并了解算法是如何表示的。

2.在判定7,35、1949和整数n(n>1)是否为质数的过程中,进一步理解算法的概念,学习算法的自然语言表示,认识算法的特征、作用和优势。

3.在得出用二分法求方程一个近似解的算法的过程中,初步运用算法概念,体会算法自然语言描述形成的过程,会初步用自然语言描述算法。

在实现上述目标的过程中,需要适时、恰当地借题发挥,使学生体会算法的思想,了解算法的基本逻辑结构,培养观察、表达能力和逻辑思维能力。

因此,本节课教学重点是,通过一些具体问题,引导学生变过去关注解决问题为关注解决问题过程的逻辑结构,通过解法与算法的比较,体会算法思想,形成算法概念,并会用自然语言描述一些具体问题的算法。

三.教学问题诊断

算法对学生来说并不遥远。比如列方程解应用题,证明函数的单调性,求曲线的方程,等,都是学生碰到过的算法的问题,但是,在此之前并没有明确提出“算法”的概念,学生原有的经历为算法学习提供了良好的条件。由于算法至今没有公认的定义,算法概念的建立需要与认识它的特征相联系,这拉大了算法概念与学生原有体验之间的距离,从而可能会造成学生概念理解上的偏差。因此,算法概念的形成需要搭建台阶,使学生运用已知建立新知,与此同时还要特别注意防止算法概念的泛化。

算法的实质是将人的思维过程处理成计算机能够一步一步执行的步骤,进而转化为一步一步执行的程序.这决定了算法概念的形成与学生的观察能力,表达能力和逻辑思维能力有着直接联系。在以班级为单位的教学中,面临能力发展不平衡,产生部分学生算法学习有困难,因此,需要在教学中把握好适应面较广、符合学生认知基础的切入点。

通常,特殊问题的解的过程只是解法而不是算法,算法是解决一般(一类)问题(要与数学有关)的,即不进入到一般问题的层面就得不到算法,而一般问题往往远离学生原有的基础,需要通过搭建解决特殊问题这一台阶,帮助学生进入一般问题。在这样的情境中,学生的关注点需要由特殊转到一般,这对许多学生来讲是有困难的,需要教师设计问题或情境帮助学生加以克服,因此,这是本节课的教学难点之一。解决这一难点需要在教学中设计好问题,并给学生提供思维的时间,并在问题引导下,实现关注点的转移。

算法是一种解决问题的方法,特别擅长处理具有条件、循环结构的问题,有其特有的作用和价值,这是学生原来没有体会过的,若教学中对此忽视,学生算法学习时的关注会缺少思维量,只停留在低层次上。因此,需要教师结合问题创设学生活动情境,促成学生关注算法中存在的逻辑结构,并予以揭示。

算法的自然语言描述与高中学生具备的表达方式虽有不同但也有联系,相比算法的其它描述方法,自然语言描述最接近学生现有的表达方式。因此,对只有顺序结构的算法描述时,学生是容易写出这类问题算法的。教师在小结时,只需指出:写算法要按顺序,每步要明确(可执行),总体是有限步即可。对涉及条件、循环结构的算法时,由于需要表示算法中存在的结构,而学生原来没有接触过这种表达,因此,这也是本节课的一个教学难点。解决这一难点,需要在教学中给学生提供尝试的机会,在他们发生困惑,产生问题后给予指导,帮助他们学会用递归语言描述算法。

四.教学支持条件分析

为了有效实现教学目标,条件许可,可以借助计算机或者计算器来参与运算或表达算法.通过计算机演示帮助学生体会算法学习的作用和价值.五.教学过程设计

(一)课题引入

教师介绍:图中的前景有算筹、算盘、计算机,介绍计算机领域的重大贡献,引出计算机的工作原理——算法。后景取自宋朝数学家朱世杰的数学作品《四元玉鉴》,借此介绍我国古代数学在算法方面的伟大成就。纵观章头图,从古到今,算法始终扮演着重要的时代角色。

提问:什么是算法?引出课题。

设计意图:要充分挖掘章头图教学价值,它至少可以体现:1)算法概念的由来;2)我们将要学习的算法与计算机有关;3)展示中国古代数学的成就;4)激发学生学习算法兴趣。5)借问题自然引出课题。

(二)问题情境,引出算法概念

问题1:你能写出求解二元一次方程组:的步骤吗?

设计意图:从学生具备的认识水平出发,归纳解二元一次方程组的求解步骤。从而让学生经历算法分析的基本过程,并在此过程中引导学生关注更具一般性解法,形成解法向算法过渡的准备,为建立算法概念打下基础。

师生活动:让学生解方程组。收集学生的不同解答,再与教科书上的解答作比较。

问题2 你们所写的解答和教科书有什么不同?教科书提供的解答有什么特点?

设计意图:旨在引导学生关注书上表达方式的明显地步骤性特征,关注解的过程的逻辑结构,让学生明白解法和算法的差异

师生活动:教师引导学生从表达方式上、解的方法上进行对比,让学生对比后回答1。同学们写的是解法,关注的是解,书上写的是解题步骤具有明显的步骤性特征2。同学们用的是加减代入消元法解方程组,书上两次用的读是加减消元法等。

教师:投影用加减消元法求解的步骤,问:参照本题解法,你能完成下面问题吗?请一试。

问题3:写出求方程组的解的步骤.设计意图:在复习解特殊二元一次方程组基本步骤的基础上.进一步复习回顾解一般的二元一次方程组的步骤,目的是让学生明白算法是用来解决某一类问题的,从而提高学生对算法的普遍适用性的认识,为建立算法的概念做好铺垫.师生活动:让学生写出求解步骤后,教师:投影显示解题步骤:

第一步,得.第二步,解,得.第三步,得.第四步,解,得.第五步,得到方程组的解为:.教师:

1.引导学生分析上述解题过程的结构。

2.提出以上步骤就是求一般的二元一次方程组的解的算法.3.说明:把它编成程序就可以用计算机来解二元一组方程组了。用事先编好的程序,让学生输入数据,计算机直接给出方程组的解.(三)分析归纳,得到算法概念

问题4。到底什么是算法?如何表达算法的含义?

设计意图:有了上面所举实例,学生对算法的概念开始有了一些认识,但对概念的比较全面的描述还有一定的困难.教师在此处设问后,再通过帮助学生回顾上面关于算法的实例,引导学生进行归纳总结.让学生切实参与到概念的形成过程中来.师生活动:教师在提出问题后,一定要给学生思考时间,让学生先用自己的语言表达对算法概念的理解,在学生思考、交流、回答的基础上,教师引导学生看书,让同学们看看自己所归纳的算法的概念和课本中概念的差异,帮助学生初步认识算法的概念.算法的概念:在数学中,算法通常是指按照一定规则解决某一类问题的明确和有限的步骤.现在,算法通常可以编成计算机程序,让计算机执行并解决问题.

教师:结合问题3你能说说这里面关键词的含义吗?

(四)解决问题,促进理解算法概念,学习算法自然语言描述

过渡语:联系时事、地域与质数有关的问题,激发学生的好奇心和求知欲。

问题5,写出判断7是否为质数的步骤.设计意图:由学生已有的认识水平出发,创设学生可以完成的体验情境,认学生认识求解结构中存在“重复”。为导出一般问题的算法创造条件,也为学习算法的自然语言表示提供时机。.师生活动:

教师提问:

1.什么是质数?(引导学生回忆质数概念)

2.如何判断一个数是不是质数?如何把判断过程的基本步骤有条理的写出来?

让学生写算法的步骤,交流并点评学生写的算法步骤.体会如何从算法的角度思考质数的判定,体会算法的特征,知道下列表述的步骤是不明确的,所以都不是算法:

(1)因为2至6的整数都不能整除7,所以7是质数.(2)第一步,用2除7,得到余数不为0,所以2不能整除7.第二步,同理,3至6的整数都不能整除7,所以7是质数.纠正学生所写基本步骤后,教师接着提出问题:

问题6 你能写出判定35是否为质数的算法吗?

设计意图:35是偶数的代表,为判断任意给定一个大于2的整数是否为质数奠定基础。

师生活动:让学生试着写一写,可能会出现不同情况.教师有针对性地进行相应讲解.第一步,用2除35,得到余数为1.因为余数不为0,所以2不能整除35.第二步,用3除35,得到余数为2.因为余数不为0,所以3不能整除35.第三步,用4除35,得到余数为3.因为余数不为0,所以4不能整除35.第四步,用5除35,得到余数为0.因为余数为0,所以5能整除35.所以35不是质数

学生完成后;教师提问:

两个解法有何相同之处?有何不同之处?

教师在学生回答后小结:对7是在试完1到6后才知道是质数,对35在试到5时,也就是在试的过程中,就得出不是质数,故没试完;不管哪个数,判断过程都是按一定规则有序进行的,都存在着“重复”这样的结构。

问题7 你能写出判断1949是否是质数的算法吗?

设计意图:1949是一个具体的数字,而且是一个比较大,无法用几个顺序结构的步骤就能表达清楚的算法问题,设计1949过渡,让学生从具体数的质数判断过程中认识循环结构,为一般的质数判断问题做准备。

师生活动:数字太大,像判定7是否为质数那样去判定1949是否为质数是一件很困难的事情.因此,学生可能会写出下列步骤:

第一步,用2除1949,得到余数为1.因为余数不为0,所以2不能整除1949.第二步,用3除1949,得到余数为2.因为余数不为0,所以3不能整除1949.第三步,用4除1949,得到余数为1.因为余数不为0,所以4不能整除1949

„„

第一千九百四十七步,用1948除1949,得到余数为1.因为余数不为0,所以1948不能整除1949因此,1949是质数.但是,上述表述的过程不是算法.事实上,“„„”你知我知,对计算机来说就是不明确的。

从问题7知道,一个算法步骤中不能出现类似“„„”的步骤,但对于像1949这样大的数,要像判定7是质数那样的写出判定其是质数的所有步骤是不现实的.那么,在不改变“规则”的前提下怎样表达这个算法呢?

引导学生分析并认识到,在问题5中,判定7是否为质数的每一个步骤,除了除数不同外其余的内容是一致的.如果用i表示除数,那么所有步骤都包含以下内容:

“用i除7,得到余数为r.因为r不为0,所以i不能整除7.”

在问题6中,只要把被判定的数7改为1949,则每一步均包含以下内容:

“用i除1949,得到余数为r.因为r不为0,所以i不能整除1949.”

因此,我们可以把判定1949是否为质数的算法写为:

第一步,令i=2.第二步,用i除1949,得到余数为r.第三步,判断r是否为0.若是,则1949不是质数;否则把i的值增加1仍记为i.第四步,判断“i>1948”是否成立.若是,则1949是质数;若否,返回第二步..问题8 任意给定一个大于2的整数n,能否设计一个算法对n是否为质数做出判断?

设计意图:在问题7学生活动的基础上,通过学生活动,得出该问题的算法,从而促进学生对算法概念的进一步理解,感受算法的作用和优势,学习算法的自然语言描述,同时,引入学生关注算法中存在的结构。

师生活动:让学生将1949改为任意大于2的整数,改写算法,得出“判定整数n(n>2)是否为质数”的算法.得出问题8算法(见教材例1算法)后,教师提问

此时,你是如何理解算法的?

教师小结:扣住下面问题。

1.用四步就可以解决问题6的算法,虽然没有使我们直接看到结果,但可以由计算机去解决了。(理解定义中:算法通常可以编成计算机程序,让计算机执行并解决问题)

即学习了算法,我们又增加了一种解决问题的方法(当然要借助计算机,说明算法的作用与优势)

2.算法可以用自然语言描述,描述算法的步骤一定是有限的,这是算法有限性特征;描述的算法具有“按部就班”的特点,这是算法“有序性”的特征;算法的第一步的表达要求“明确”,以便于编程让计算机执行,这是算法明确性的特征;

3.在解决问题过程中,对于反复进行的步骤,可以用递归语言进行描述.此时,通常分三个步骤:首先要给一个初始值,接着表达重复做的事情,最后要进行终止判断.这类问题的背后含有算法的基本逻辑结构。问题9.写出用“二分法”求方程x2-2=0(x>0)的近似解的算法.设计意图:二分法是算法中的经典问题,具有明显的顺序和可操作的特点.通过此例可以让学生进一步了解算法的逻辑结构,领会算法的思想,体会算法的的特征。同时也可以达到巩固用自然语言描述的算法,提高用自然语言描述算法的表达水平.师生活动:教师引导学生分析在二分法求方程近似解过程中所包含的基本逻辑结构,尤其关注其中的循环结构和条件结构。然后展示其算法。(主要考虑时间比较紧)

在设计算法的时候可以先不考虑精确度,在学生活动后,教师提出,在现有条件下,可以得到方程根存在的区间会越来越小,但我们的操作则永远不能停止。

因此,需要引入能够控制,使算法具备有“有限”的量,这就是精确度。

教师与学生共同得出本题算法:

第一步,令.给定精确度.第二步, 给定区间,满足.第三步,取中间点.第四步,若则含零点的区间为;否则含零点的区间为.将新得到的含零点的仍然记为.第五步, 判断的长度是否小于或者是否等于0.若是,则是方程的近似解;否则,返回第三步.

在完成上述算法表达的基础上,教师指出:

1.如果没有精确度要求,该算法将无法终止。(通过精确度强调算法的“有限性”)。

2.引导学生分析该算法的逻辑结构。(了解算法中存在的顺序、条件和循环结构)

3.给出精确度,指导领学生看教材,结合必修3第4页上有关内容.说明按以上步骤,我们将依次得到表1-1和图1.1-1.于是,开区间(1.4140625,1.41796875)中的实数都是满足假设条件的原方程的近似解.4.改变输入的函数表达式,给定精确度后,上面算法可以求所有方程的近似解,因此,它是算法。通过“二分法”求方程的近似解的算法与解法的比较,发现算法一般都是没有具体结果的,而解法结果都是确定的,从而强调算法通常是针对解决一类问题而言的。

(五)归纳小结 将本节的主要内容以问题的形式呈现,让学生通过思考和回答问题,达到回顾和总结的目的.

问题1:你能举出更多算法的例子吗?

设计意图:以举例的形式使学生体会算法的思想,以此评价他们对算法的概念以及特征的领会情况.师生活动:学生举例,师生共同评价.问题2:与一般解决问题的过程相比,你认为算法最重要的特征是什么?

设计意图:通过让学生思考回答来评价他们对算法的特征中顺序、明确、有限的步骤的领会情况.同时提高学生的总结、归纳、表达能力.师生活动:在学生回答的基础上,引导他们归纳:与一般解决问题的步骤相比,算法具有有序性、明确性、有限性等特点.六.目标检测设计

1.课堂检测

第1题.课本第6页练习1。

第2题.有人对歌德巴赫猜想“任何大于4的偶数都能写成两个奇质数之和”设计了如下操作步骤:

第一步:检验6=3+3

第二步:检验8=3+5

第三步:检验10=5+5

„„

利用计算机无穷地进行下去!请问,利用这种程序能够证明猜想的正确性吗?这是一个算法吗?

设计意图:促进学生进一步了解算法的概念及特征的,体会算法的思想。

活动方式:学生独立思考,在学生回答的基础上,教师予以评点。

答:这不是算法问题,不符合算法概念中提到的“有限性”。

2.课后检测

第1题.写出求一元二次方程根的一个算法.设计意图:巩固学生已领会的算法的思想,促进学生用自然语言正确表达算法。

第一步,计算。

第二步,如果,则原方程无实数解;

排序算法教学反思 篇5

教学内容:

选择排序的算法思想 选择排序的实现过程 选择排序的编码实现

总结和思考:大数据背景下的排序

排序(Sort)是计算机程序设计中的一种重要操作,它的功能是将一个数据元素(或记录)的任意序列,重新排列成一个关键字有序的序列。排序方法分为两大类:一类是内排序:冒泡排序、选择排序、插入排序、希尔排序、交换排序、快速排序等;另一类是外排序。

从教学理念上看,本节课利用维果斯基的“最近发展区理论”,把学生的现有水平和兴趣点,结合教学的目标,形成最近发展区。教学着眼于学生的最近发展区,提供带有难度的内容,调动学生的积极性,发挥其潜能,超越其最近发展区而达到下一发展阶段的水平,然后在此基础上进行下一个发展区的发展。

从教学方法来看,主要使用案例分析法、讲授法等,从分析当前流行的冒泡排序算法的案例开始,由浅入深的介绍选择排序的基本概念,算法思想以及编码过程。

从教学过程来看,首先从回顾冒泡排序的内容导入,在改进冒泡排序的过程中,提出选择排序的概念和思想。用直观的动画方式展现选择排序思想和过程,总结分析出关键代码,引导学生写出完整代码,最后分析选择排序的关键点,并提出思考,大数据背景下的排序改进方法。

算法与程序设计 篇6

作者:赵濮民

摘要:研究性学习是教育科研领域中一个崭新的课题。信息技术教学作为以培养创新精神、研究能力和实践能力为目标取向的必修课程,它强调让学生通过研究性学习,提出问题,收集材料,对研究性课题进行探索、分析、研究,最后基于问题解决模式,在实践操作中培养学生科学的态度和价值观以及创新精神、创新思维、创造能力,并学会解决生活中与信息技术学习有关的实际问题。职业学校的学生,不仅应具有独立接受知识的能力,更应具有独立探索知识的能力,由“研究性学习”补充原有的“接受式学习”,使学习方式更趋完善,只有当这两种学习方式结合起来,优势互补,才能使基础教育适应时代对人才培养的要求。

关键词:程序设计;研究性学习;求真;求全;求变;求新;优势互补

《算法与程序设计》是职业学校信息技术教学中的一个重点,也是难点。传统的程序设计教学以老师讲授型为主,由于算法与程序设计的内容逻辑性强,普遍认为在程序设计教学中难以实施研究性学习。

研究性学习是以“培养学生具有永不满足、追求卓越的态度,培养学生发现问题、提出问题、从而解决问题的能力”为基本目标,以学生从学习中获得作品设计与制作方法的困惑为方向,以在提出问题和解决问题的全过程中学习到算法与程序设计为学习方法的课程。经过反复研究,我们认为研究性学习可以应用于程序设计教学中。实施研究性学习的关键是要确定一个目标,要鼓励学生主动地发现问题,并且通过探究或实践活动去试图解决问题。在课题研究的过程中采用分组交流讨论、查阅资料、协作探究、归纳总结等方式,一步步引领学生深刻掌握算法与程序设计的精髓。

一、通过研究性学习,重构算法知识体系,要求真 研究性学习是学生在老师的指导下,结合真实生活,选定主题,然后搜集相关材料,对材料进行归纳、加工处理、分析、总结,得到相应结论的学习活动。在《算法与程序设计》教学中,根据教学内容,经过反复研究,确定了研究主题《搜索算法的应用研究》和《动态规划算法的解题应用研究》,并根据学生的自愿报名成立了两个研究小组。然后各小组根据自己研究的算法,重新整理相应的知识,对知识进行认知、归纳、总结。如《搜索算法的应用研究》小组,对搜索算法从以下几方面进行整理:

1、搜索算法的算法思想、分类;

2、深度优先搜索的算法思想与算法结构;

3、广度优先搜索的算法思想与算法结构;

4、深度优先搜索的优先策略;

5、广度优先搜索的优化策略;

6、深度优先搜索与广度优先搜索的异同。学生通过对搜索算法知识进行整理、分类、小结,加深了对搜索算法的理性理解与感性认知。

二、通过研究性学习,同学之间取长补短,要求全

每个学生都有所长,也有所短,研究性学习一个重要的特点就是:分工合作,共同讨论,共同提高,使参与的学生全面发展。我们的“搜索算法的应用研究”小组共有五个成员,根椐学生的特点、特长,对他们进行分工,每位学生研究上述其中一个问题,然后整个小组一起讨论,每位学生介绍自己的研究情况、研究成果,然后其他同学进行补充,发表自己的见解,这样每个同学都使自己的研究内容得到补充,同时也学习到了其他同学研究方面的知识,可以取长补短,共同提高,得到全面发展。

三、通过研究性学习,总结算法的应用规律,要求变

研究性学习的目的,是要求学生搜集与主题有关的资料,归纳整理相关资料,根据相关材料和知识,对主题进行研究,提出自己的观点或结论。我们在程序设计教学中进行算法专题研究也是这样,除要求学生归纳、整理专题算法知识外,还要总结出算法的应用规律、应用算法解题的步骤和算法的框架,能根据实际情况,随机应变。如在“动态规划的应用研究”中,学生总结出:动规划是解符合“无后效性原则”的最优问题的一种算法思想;用动态规划解题的一般步骤是:(1)判断题目是否为求最优问题,是否符合“无后效性原则”;(2)确定如果划分阶段;(3)确定每个阶段有几种状态;(4)找出状态转移方程和边界条件;(5)用算法语言实现算法过程。又如在“搜索算法的应用研究”中,研究小组的同学总结出:(1)广度优先搜索算法通常应用于解最少步数问题,而深度优先搜索算法则通常用来解所有路径问题;(2)深度优先搜索和广度优先搜索都是搜索算法,前者时间复杂度较大,而后者则占用的内存较大;(3)深度优先搜索在实现时用递归或用堆栈来实现,而广度优先搜索是用队列来实现,实现两种算法所用的数据结构不同;(4)深度优先搜索和广度优先搜索都是搜索算法,但两者的算法结构有较大的不同。学生通过自己对算法应用规律的总结,对算法的应用得到升华,进一步提高算法的应用能力和程序设计能力。

四、通过研究性学习,提高分析、归纳和综合能力,要求新

对算法的专题研究,不仅要对算法理论进行总结,算法应用的研究也是很重要的一方面,通过算法的解题应用,既提高了学生分析问题的能力,也加深了学生对算法的理解,提高了学生的算法应用能力,进而得到对学生创新能力的培养。另外,我们在算法研究过程中,要求学生透切理解算法内容,用算法语言准确描述算法,通过这种途径,进一步加深学生对算法的理解,同时也提高了学生的算法表达能力和归纳、总结的能力。

通过对算法进行专题研究,可以进一步加深学生对算法知识的理解,也可以提高学生的算法应用能力和程序设计能力。实践告诉我们:在整个研究过程中要注意以下几个问题:

1、课题不宜太大。研究课题的确定是研究性学习实施过程中重要的一环,课题选择恰当与否,直接关系到整个课题研究的成败。在程序设计教学中进行研究性学习活动,选题要遵循下面的原则:(1)课题的范围不宜太大;(2)有一定的应用价值;(3)结合学生的实际。一个好的开始是成功的一半,在研究性学习活动中也是如此。

2、要理论研究与算法应用相结合。对算法的专题研究,算法应用是重点。在算法知识归纳总结的基础上,重点应研究算法应用的一般规律、算法结构、应用算法解题的一般步骤等。不应该只是对算法理论的空洞论述,否则效果不好、意义也不大。

3、充分发挥教师的引导作用、学生的主体作用。在算法研究活动中,应充分发挥教师的引导和指导作用,既不能放任自由,也不能包办代替,要充分发挥学生的主体作用。当学生遇到问题和困难时,老师应当引导和启发学生,让学生去探索和研究,而不是直接告诉学生答案,老师始终是学生的引导者,学生是真正的参与者,使学生通过算法研究,加深对算法的理解,提高算法应用能力和程序设计能力。

算法教学设计 篇7

关键词:SIFT,图像匹配,特征点提取,图像处理

0 引言

图像匹配作为实现复杂的图像处理和视频处理的前提,是未来机器视觉处理技术发展的基础,在智能视频监控、机器人视觉、医疗手术、遥感测绘等领域有着非常广泛的应用,如何提高图像匹配速度和准确性将直接关系到整个机器视觉处理系统的效率和性能[1,2,3]。

目前,常用的图像匹配算法可以分为基于区域的图像匹配算法和基于特征点的图像匹配算法,其中基于区域的图像匹配算法由于计算复杂、效率低,往往不具备实用性[4]。而相对于区域匹配算法,基于特征点的图像匹配算法在处理过程中只需要对图像中的特征点进行处理和分析,因此极大地降低了图像匹配过程中的处理时间,计算时间复杂度极低,并且具有较高的匹配精度和可靠性,成为了目前应用最为广泛的图像匹配算法[5]。在基于特征点的图像匹配处理过程中,通常包括特征点检测、特征匹配、变换模型估计和图像重采样及变换等功能操作。具体地,特征点检测和匹配即是整个基于特征点的图像匹配的关键,而且又是图像匹配技术的应用前提,同时也已然成为当今图像处理技术领域的研究热点之一[6]。SIFT算法作为目前公认的最为理想的、普适性特征点提取算法,由其检测的特征点具有旋转、尺度、反射和光照等不变性,而且表现出极强的鲁棒性。但是该算法的时间复杂度却颇高,随着对智能视频处理速度的显著提升,使得强化完善SIFT算法的实时性和精准性,即已成为未来SIFT算法在复杂的图像处理系统中进一步拓展应用的研究攻关重点[7]。虽然目前国内外相关专家和机构都已根据自己的需求针对SIFT算法实施了一定的改进,如哈佛大学Ke等人提出的一种PCA-Sift算法通过降维技术有效地降低了SIFT算法的时间复杂度,但是同时也降低了角点检测精度,李晓明等人提出的改进的SIFT算法,主要根据遥感图像的处理特点进行提速,只是在遥感图像处理方面取得了较好的效果,但不适合其他图像处理,并且又降低了算法鲁棒性[8]。刘佳等人[3]用32维特征点描述向量,再运用欧式距离确定匹配点剔除误匹配点,提高了匹配正确率。刘辉等人[9]用Canny算子去除边缘点的影响,并配合以RANSAC方法消除误匹配,改进SIFT算法。冯政寿等人[10]用Harris算子结合张春美等人[11]的改进算法,以降低算法复杂度。综上可知,从目前图像处理技术相关应用领域对图像匹配处理的需求,以及已有的SIFT算法研究来看,在保证SIFT算法精度、鲁棒性的同时、优化提升基于SIFT算法的图像匹配速度则是今后图像匹配处理中亟需解决的核心焦点课题之一[12,13]。

结合这一背景需求,本文以SIFT特征点提取算法为基础,对其加入了合理改进,并基于Harris算法[14]提出了一种改进的SIFT算法以在确保sift算法鲁棒性和精度的同时提升其处理效率,对获得可观图像处理系统性能具有非常重要的现实意义。

1 相关理论基础

1.1 Harris算子

Harris算子是基于Morave算法的演化推理而来,其在图像匹配过程中的角点特征提取方面具有优秀强大的效率优势[15]。该算法中,角点检测的计算数学模型如式(1)所示:

式中,w(x,y)为高斯平滑因子,E表示在像素点(x,y)的地方移动一个(u,v)的窗口的亮度变化值,也就是与此像素点对应的一个梯度值,究其实质就是利用了图像二维信号的自相关的特点[16],并根据式(1)的原理,采用泰勒公式对其进行展开,同时忽略展开后的高阶项,就可以得到如下简化后的处理模型:

式中,Ix和Iy分别代表像素点(x,y)在水平方向和竖直方向的求导结果,根据泰勒公式展开后的简化模型可以看出,在该模型中每个像素点都有一个与之相对应的四元矩阵M,通过该矩阵就可以计算得到该像素点的相关的梯度信息。

基于上述简化后的数学模型,定义M的特征值为λ1和λ2,那么根据这2个特征值就可以得到相关的像素点的变化量,同时再通过定义相关的阈值,就可以根据特征值的大小对像素点进行分区,如果λ1和λ2都较小则判定其为平坦区域,一个较大、一个较小即确定其为边缘区域的像素点,否则可断定该点为角点,基于这一原理,就可以从图像中快速提取出相应的角点,具体计算模型如下:

式中,det表示矩阵M的行列式,trace为矩阵M的迹,k为系数,其取值通常设置在0.04~0.2之间,综上就是Harris算子提取角点特征的基本原理。相对于SIFT算子,Harris算子对角点的检测效率极高、检测的角点特征分布均匀,并且可以实现对角点特征的定量提取,但是抗噪能力却会略差,而且也容易受到干扰。

1.2 SIFT算子

SIFT算法作为目前图像处理领域公推的一种性能较好的算法,其检测精度和鲁棒性极强。基于SIFT算法的特征点检测是建立在多尺度分析理论基础之上,在应用SIFT进行特征点检测过程中,首先需要根据图像生成相应的参考图像和待匹配的图像的多尺度空间,在多尺度空间生成之后,再将不同尺度下的图像被检测出的局部极值点设置为后续进一步检测的候选特征点,同时通过提出低对比度和边缘相应点对该候选集合施行进一步的优化,其中在对特征点进行描述的过程中主要是计算出每个角点的主方向,而后就以角点为中心的圆形邻域为基础进行直方图统计,并根据直方图统计结果生成相应的特征描述因子,此后计算特征描述因子的距离,与预先设置的阈值进行比较,再次对候选集合加以进一步优化,最终确定候选匹配点,从而建立整合有匹配图像和参考图像的空间映射。

该过程中,多尺度空间的建立原理主要是构建一个高斯金字塔和高斯差分金字塔模型,具体如图1所示。

在尺度空间上进行局部极值点检测,将其加入到候选特征点点集合中,研究实现示意图如图2所示。

在SIFT算子中的特征描述重点是通过计算像素点(x,y)的梯度模值以及指示方向来提供定义的,其数学模型如下:

式中,L(x,y)为像素点(x,y)的尺度函数,m(x,y)为梯度模值,θ(x,y)为方向。

基于上述模型,在匹配的过程中就可以通过计算以特征点为中心的邻域的直方图,得到梯度方向的直方图,并且利用一个标准差σ为1.5L(x,y)的高斯噪声对梯度方向的直方图进行加权,如此处理后的像素点即已赋予了位置、尺度和方向3个信息;利用这些特征信息构建一个特征描述符,从而最大程度地保证其在光照变化、旋转幅度和比例缩放过程中能够保持不变性,最终实现具有极强鲁棒性的图像匹配。

论述至此,给出了就是基于SIFT算子进行图像精准匹配的完整过程,分析研究该过程发现,由于在SIFT算子中,设定特征是通过一个二维方向直方图来进行描述,获得了突出的刻画效果,但是处理过程也将趋于复杂,时间复杂度较高。

2 基于改进SIFT算法的图像匹配算法

2.1 图像匹配算法基本原理

综合上述对SIFT算法基本原理的展开分析,可以得到利用SIFT算法进行图像匹配的基本流程如图3所示。由图3可知,整个图像匹配包括特征点提取、特征点匹配、变换模型估计和图像重采样与变换4个过程。具体地,在特征点提取的过程中主要是建立多尺度空间(即高斯金字塔和高斯差分金字塔)和进行尺度空间的极值点检测;特征点匹配主要是利用BBF算法进行像素点搜索,同时构建出特征点之间的欧式距离关系模型,再通过设置阈值来判定参照比较而确定候选匹配特征点集合,并利用Opencv提供的RANSAC算法对特征点集合完成进一步优化,得到精确的特征点集合,实现精准匹配;变换模型的估计过程主要是利用变换模型来描述匹配图像和待匹配图像之间的变换关系,并且计算出相关的模型参数;图像重采样与变换主要是采用插值算法对变换后的图形进行插值,最终完成2个图像的精准匹配。

2.2 SIFT算法的改进

结合前文对Harris算法的原理分析,其在角点特征检测上相对于SIFT算法具有明显优势,在算法结果上表现出更好的实时性和更高的算法效率。因此在改进SIFT算法中,本文采用Harris算法进行角点提取,也就是将SIFT算法的角点提取使用Harris算法实现。同时,为了有效提升SIFT算法的效率,本文重点采用了主成分分析方法对其进行数学降维处理,就是在SIFT处理过程中找出一些综合变量来替代原来的复杂变量,限制前提是保持彼此之间的数学关系和变换关系恒定不变;处理过程中主要是利用仿射变换模型来近似地建立了SIFT匹配过程中的图像变换表示,同时利用RANSAC算法进行误匹配点检测和提取,深度提升其匹配精度,使得改进后的SIFT算法可以在获得较高匹配精度的同时,又极大地提高算法的效率。改进后的SIFT算法的实现流程如图4所示。

3 实验结果及分析

基于前文改进的SIFT算法和未改进的SIFT算法的原理,研究中采用opecv2.0开发库构建图像匹配系统,对本文设计提出的算法进行测试,测试结果如图5所示。通过图5可以看出,改进后的SIFT匹配算法得到的结果与原算法结果保持一致。同时仿真结果指出,改进后的算法得到的匹配特征点为218个,而原算法为421个,匹配的特征点虽然减少,但是匹配的特征点却更加均匀精确,如此即使得匹配时间大大降低:改进后的算法匹配时间提升了42 ms,只需要12 ms就能快速地实现匹配。

为了完善研究结论,文中继而设计给出了基于改进后算法而获得的图像拼接效果,如图6所示。可以看出,改进后的算法在提高效率的同时,也可以保持较高的匹配精度和准确性。

4 结束语

算法设计与分析课程教学改革 篇8

关键词 算法设计与分析 算法 教学内容 教学方法 实践教学

中图分类号:G64 文献标识码:A

算法是计算机的“灵魂”,它决定了计算机软件性能的优劣,因此,《算法设计与分析》是计算机科学与技术、软件工程等信息类相关专业重要的基础课程和核心课程。通过该课程的学习,让学生掌握算法设计的基本策略,理解和掌握算法设计的主要方法,培养学生对算法的复杂性进行正确分析的能力、独立分析和解决问题的能力,为将来从事软件设计与开发或相关领域科学研究工作奠定坚实的基础。

1算法设计与分析课程教学存在的问题

在多年的课程教学过程中,笔者发现有相当一部分学生对该课程的认识不够,学习热情不高,缺乏学习的主动性,甚至对该课程在计算机人才培养中的地位产生怀疑,由于这些问题的存在,从而导致课程教学效果不佳,课程的教学很难达到预期的目标。经过调查和分析,我们发现造成这一状况的原因主要表现为以下几点:

(1)课程对先修课程的要求高:该课程需要学生具有较好的c/c++程序设计、离散数学、计算数学、数据结构等先修课程的基础。学生必须扎实掌握这些课程的基础知识后,才能更好的进行算法的设计及实现。

(2)课程知识点多,内容抽象,难度大: 本课程涉及大量的算法设计技术和方法,例如递归技术与分治法、贪心法、动态规划法、回溯法、分支限界法等,而且都比较抽象,同时灵活性强,因此学生很难掌握。

2改革措施

为了让学生更好的掌握算法设计方法,并且灵活运用这些方法解决实际问题,结合笔者多年的教学实践经验,在教学内容的选择、教学方法的改进、实践教学内容的组织等方面进行了一些探索和改革,并取得了较好的效果。

2.1针对学生的实际情况,合理的选择教学内容

由于受生源质量和前期基础课程学习情况的影响,我校计算机专业学生离《算法设计与分析》课程对理论知识和编程能力的要求有一定的距离,因此选择合适的教学内容对提高教学效果就起着决定性的作用。我们的整体思路是“宁缺勿滥,精讲细讲,举一反三”。

2.2采用多种教学方法,提高教学质量

(1)采用案例教学法,让抽象地算法具体化,激发学生学习兴趣。

从实际的案例出发引入算法问题,通过抽象与总结,使得抽象的算法变得具体,拉近课程与现实的距离,激发学生的学习兴趣。例如在讲解时间复杂度和空间复杂度时,我们以百度之星的嘟嘟熊数列为实例进行讲解。看到这道题时,学生最容易想到的是常规的穷举法,其时间复杂度O(n)。此时可以提问学生该方法有何缺陷有学生提出当n为109时存储空间过大,于是进一步启发学生应该如何去解决。通过引导,最后发现数列只会出现2种循环节:1123581347和1459,序列的非循环字符最多20位,开辟的存储空间30个足够,算法的复杂度为0。通过此例的讲解学生对时间复杂度就有了深刻的理解,显然比纯粹的介绍概念要生动得多。

(2)利用知识的相互联系,为新知识的讲解寻找一个切入点。

在讲解知识点时,先从学生熟悉的内容出发,引入课程的知识要点,让学生既了解课程间的相互联系,又找到了知识的应用领域,通过知识的相互联系,降低学习难度,培养学习兴趣。例如在讲解大整数乘法前,可以先引入RSA加密算法,既拓宽了知识面,又让学生知道了大整数乘法的实际应用领域,从而激发了学生的学习兴趣,让学生变被动学习为主动学习,改善学习效果。

2.3实践教学的改革

实践教学环节可以强化学生对知识的理解,让学生应用所学的知识解决具体问题,培养学生的实践动手能力。通过实验学生可以更好地掌握算法理论,并灵活应用算法思想来解决实际问题。在教学中,我们借助ACM程序设计平台,把ACM竞赛题目作教学内容,充实了实验教学的内涵。ACM竞赛题目趣味性强,知识覆盖度高,非常适合作为课程实验的补充和提高。为了提高学生的综合应用能力,除完成课内实验外,学生还可以参与教师的各类研究课题,帮助教师完成科研任务,随着项目开展, 学生有机会参与项目的分析、设计和实现,在项目中发现问题,解决问题,培养了各方面的能力。

3结语

在《算法设计与分析》的教学实践中,通过将算法理论与实际应用相结合,合理组织教学内容,丰富教学方法和手段,采用项目驱动方式对实践教学环节进行改革,增强了教学效果。

基金项目:

吉首大学教改项目 (2013JSUJGB15);

吉首大学重点实验教改项目(2013SYJG015)。

参考文献

[1] 王晓东.计算机算法设计与分析(第4版) [M].北京:电子工业出版社,2013.

[2] 刘振章.《算法设计与分析》课程教学探讨[J].电脑知识与技术,2014,10(9):1995-1996.

[3] 林 劼,戴 波.项目驱动型算法设计与分析课程教学方法[J].计算机教育,2014,9:69-71.

[4] 张海藩.软件工程导论(第5版)[M].北京: 清华大学出版社,2013.

上一篇:母亲文学类阅读题及答案下一篇:赣县第二中学