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