算法的构造及评价.ppt
《算法的构造及评价.ppt》由会员分享,可在线阅读,更多相关《算法的构造及评价.ppt(30页珍藏版)》请在三一办公上搜索。
1、第二章 算法的构造及评价,哈工大计算机科学与技术学院,数据结构课程组,2,2.1 逐步求精的算法构造过程,2.1.1 算法的定义,1.计算 能由一个给定的计算模型机械地执行的规则(或步骤)序列称为该计算模型的一个计算.注:一个计算机程序是一个计算(计算模型是计算机);计算可能永远不停止不是算法.,2.算法 是一个满足下列条件的一个计算(程序):(1)有穷性/终止性:总是在执行有穷步后停止;(2)确定性:每一步必须有严格的定义和确定的动作;(3)能行性:每个动作都能被精确地机械执行;(4)输入:有0个和多个满足约束条件的输入;(5)输出:有一个或多个满足约束条件的结果.,哈工大计算机科学与技术学
2、院,数据结构课程组,3,2.1.2 算法构造过程,实际上就是用计算机求解一个问题的过程,1.模型化 对实际问题进行分析,选择适当的数学模型来描述问题,即模型化。2.确定解决思路 根据模型,找出解决问题的思路方法(算法的原型,一般用自然语言描述)。3.逐步求精 对用自然语言等描述的算法逐步细致化、精确化和形式化。这一阶段可能包括多个步骤。当到达适当精度时,许多非形式的描述可转变为基于ADT的形式化描述。4.ADT的实现 对每个ADT,选择适当的数据结构表示数学模型,并用相应的函数实现每个操作。,哈工大计算机科学与技术学院,数据结构课程组,4,算法逐步求精实例,例2.1.2 交叉路口的交通安全管理
3、问题,问题描述 一个具有多有多条通路的交叉路口,当允许某些通路上的车辆在交叉路口“拐弯”时,必须对其他一些通路上的 车辆加以限制,不允许同时在交叉路口“拐弯”,以免发生碰撞.,问题要求(1)设置一组交通灯,实现安全管理(无碰撞管理).(2)使交通灯的数目最少.,哈工大计算机科学与技术学院,数据结构课程组,5,问题的分析,所有这些可能的“拐弯”构成一个集合.将此集合分成组,使得每组中所有的“拐弯”都能同时进行而不发生碰撞.每组对应一个指挥灯,保证不碰撞;用尽可能少的指挥灯归结为分成尽可能少的组.问题归结为如何进行集合的划分?,哈工大计算机科学与技术学院,数据结构课程组,6,模型化,(1)用图作为
4、交叉路口的数学模型;(2)每个“拐弯”对应图中的一个顶点;(3)若两个“拐弯”不能同时进行,则用用一条边把这两个“拐弯”所对应的两个结点连接起来,并且说这两个顶点是相邻的。,哈工大计算机科学与技术学院,数据结构课程组,7,算法的基本思路,转化为图的着色问题(着同一颜色的结点即为一组)。常见算法为(1)穷举法(2)试探法(3)贪心法“贪心”算法的基本思想是首先用第一种颜色对图中尽可能多的顶点着色(尽可能多表现出“贪心”),然后用第二种颜色对余下的顶点中尽可能多的顶点着色,如此等等,直至所有的顶点都着完色。,哈工大计算机科学与技术学院,数据结构课程组,8,算法原型(自然语言描述),(1)将所有的结
5、点设置为未着色(2)当有未着色的结点时,进行如下步骤(3)产生一种新的颜色(4)选取某个未着色的点,用此新颜色对其着色(5)扫描所有未着色的顶点,对其中的每个顶点尽可能的用此新颜色着色。(依据为它是否与已着新颜色的任何顶点相邻。若不相邻,则用新颜色对它着色。)(此处体现了贪心)。(6)重复步骤(2)-(5),直到所有的结点均以着色,哈工大计算机科学与技术学院,数据结构课程组,9,第一步求精(伪代码描述),void greedy(G,newclr)GRAPH G;SET newclr;/*类型GRAPH和SET有待具体说明*/*本程序把G中可以着同一色的顶点放入newclr*/(1)newclr
6、=(2)for(G中所有未着色的顶点v)(3)if(v不与newclr中的任何顶点相邻)(4)对v着色;(5)将v放入newclr;;,void Color(G)GRAPH G;/*类型GRAPH有待具体说明*/SET clr;clr=;while(G中有未着色的顶点)SET newclr=new(SET);/*产生一种新颜色*/greedy(G,newclr);/*用此新颜色对尽可能多的结点进行着色*/将newclr放入clr;,算法 Color(G)完成对图G的着色,其执行结果为clr集合,它即为顶点集的一个划分。其中的每个元素为着相同颜色的顶点集。,哈工大计算机科学与技术学院,数据结构课
7、程组,10,第二步求精,求精v不与newclr中的任何顶点相邻(即对于所有的顶点,都不相邻),void greedy(G,newclr)GRAPH G;SET newclr;int found;(1)newclr=;(2)for(G中所有未着色的顶点v)(3.1)found=0;/*found的初值为false*/(3.2)for(newclr中的每一个顶点w)(3.3)if(v与w相邻)(3.4)found=1;(3.5)if(found=0)/*v与newclr中的任何顶点都不相邻*/(4)对v着色;(5)将v放入newclr;;,哈工大计算机科学与技术学院,数据结构课程组,11,第三步求
8、精,遍历集合中的所有顶点,void greedy(GRAPH G,SET newclr)int found;newclr=;v=G中第一个未着色的顶点;while(v!=0)/*G中还有未着色的顶点v*/found=0;w=newclr中的第一个顶点;while(w!=0)/*newclr中的顶点还没取尽*/if(v与w相邻)found=1;w=newclr中的下个顶点;;if(found=0)对v着色;将v放入newclr;;v=G中下一个未着色的顶点;;,哈工大计算机科学与技术学院,数据结构课程组,12,第四步求精,引入ADT 根据上一步求精的结果,算法中大部分操作都归结为对图和集合的操作
9、。因此需定义ADT GRAPH和ADT SET。设G为GRAPH的实例,则需在G上定义如下操作:(1)FIRSTG(G)返回G中的第一个未加标记的(未着色的)元素;若G中没有这样的元素存在,则返回NULL。(2)EDGE(v,w,G)若v和w在G中相邻,则返回true,否则返回false。(3)MARK(v,G)标记G中的元素v。(4)ADDG(v,G)将元素v放入G中。(5)NEXTG(G)返回G中下一个未标记的元素,若G中没有这样的元素存在,则返回NULL。设S为SET的实例,则需在S上在定义如下操作:(1)MAKENULL(S)将集合S置空。(2)FIRST(S)返回S中的第一个元素;若
10、S为空集,则返回NULL。(3)NEXT(S)返回S中的下一个元素;若S中没有下一个元素,则返回NULL。(4)ADDS(v,S)将v放入S中,哈工大计算机科学与技术学院,数据结构课程组,13,第五步求精,用引入的ADT对算法进行形式化描述,void greedy(G,newclr)GRAPH G;SET newclr;int found;elementtype v,w;/*elementtype可以自定义*/MAKENULL(newclr);v=FIRSTG(G);while(v!=NULL)found=0;w=FIRST(newclr);while(w!=NULL)if(EDGE(v,w,
11、G)found=1;w=NEXT(newclr);v=NEXTG(G);,哈工大计算机科学与技术学院,数据结构课程组,14,第六步求精,ADT的实现以及整个程序的连编确定抽象数据型GRAPH及SET的数据模型如何实现。编写相应的操作函数。给出类型elementtype的定义和实现。将各部分连在一起。,哈工大计算机科学与技术学院,数据结构课程组,15,2.2 算法评价和复杂性分析,2.2.1算法的评价准则,2.2.2算法时间复杂性分析方法,哈工大计算机科学与技术学院,数据结构课程组,16,2.2.1 算法的评价准则,一:正确性(Correctness)含义:指对一切合法的输入数据经有限时间或有限
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法 构造 评价
链接地址:https://www.31ppt.com/p-6329399.html