第5章 图的搜索算法优秀PPT.ppt
《第5章 图的搜索算法优秀PPT.ppt》由会员分享,可在线阅读,更多相关《第5章 图的搜索算法优秀PPT.ppt(137页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第5章图的搜索算法现在学习的是第1页,共137页5.1图搜索概述图搜索概述现在学习的是第2页,共137页1显式图与隐式图显式图与隐式图 在路径问题、连通性问题、可平面性检验、着色问题和网在路径问题、连通性问题、可平面性检验、着色问题和网络优化等问题中,图的结构是显式给出的,包括图中的顶点、络优化等问题中,图的结构是显式给出的,包括图中的顶点、边及权重,这类图我们称为边及权重,这类图我们称为显式图显式图,也就是一般意义上的图。,也就是一般意义上的图。隐式图隐式图是由问题的初始结点,为了求解或求证问题,根是由问题的初始结点,为了求解或求证问题,根据题目的规则(一般是由题目的意思隐含给出的),也就是
2、据题目的规则(一般是由题目的意思隐含给出的),也就是生成子结点的约束条件,逐步扩展结点,直到得到目标结点生成子结点的约束条件,逐步扩展结点,直到得到目标结点为止的一个隐式的图。为止的一个隐式的图。一、图及其术语图及其术语现在学习的是第3页,共137页2.2.显式图的常用术语显式图的常用术语 图中的这些点图中的这些点(v(v1 1,v,v2 2,v,vn n)被称为被称为顶点顶点,连接顶点的曲线或,连接顶点的曲线或直线称为直线称为边边。通常将这种由若干个顶点以及连接某些顶点的边所组成的图形称通常将这种由若干个顶点以及连接某些顶点的边所组成的图形称为图,顶点通常被称作是图中的数据元素为图,顶点通常
3、被称作是图中的数据元素.现在学习的是第4页,共137页带权图:带权图:图的边上附加一个代表性数据图的边上附加一个代表性数据(比如表示长度、流量或其他比如表示长度、流量或其他),则称其为带权图,则称其为带权图。环环:顶点本身也有边相连,这种边称为环。:顶点本身也有边相连,这种边称为环。有限图:顶点与边数均为有限的图。有限图:顶点与边数均为有限的图。简单图:没有环且每两个顶点间最多只有一条边相连的图。简单图:没有环且每两个顶点间最多只有一条边相连的图。邻接与关联:当(邻接与关联:当(v1,v2)E,或,或E,即,即v1,v2间有边相连时,则称间有边相连时,则称v1和和v2是相邻的,它们互为是相邻的
4、,它们互为邻接点邻接点,同时称,同时称(v1,v2)或)或是与顶点是与顶点v1、v2相关联的边。相关联的边。现在学习的是第5页,共137页度数度数:从该顶点引出的边的条数,简称度。:从该顶点引出的边的条数,简称度。入度:有向图中把以顶点为终点的边的条数。入度:有向图中把以顶点为终点的边的条数。出度:有向图中把以顶点为起点的边的条数。出度:有向图中把以顶点为起点的边的条数。终端顶点:有向图中出度为终端顶点:有向图中出度为0的顶点。的顶点。路径与路长:在图路径与路长:在图G=(V,E)中,如果存在由不同的边中,如果存在由不同的边(vi0,vi1),(vi1,vi2),(vin-1,vin)或是或是
5、,)组成的序列,则称顶点组成的序列,则称顶点vi0,vin是是连通连通的,顶点序列(的,顶点序列(vi0,vi1,vi2,vin)是从顶点)是从顶点vi0到顶点到顶点vin的一条道路。路长是道路上边的数目,的一条道路。路长是道路上边的数目,vi0到到vin的这条的这条道路上的路长为道路上的路长为n。连通图:对于图中任意两个顶点连通图:对于图中任意两个顶点vi、vjV,vi、vj之间有道之间有道路相连。路相连。网络:带权的连通图。网络:带权的连通图。现在学习的是第6页,共137页3 3隐式图术语隐式图术语 1)子集树 当要求解的问题需要是在当要求解的问题需要是在n n 个元素的子集中进行搜索,其
6、搜索空间树个元素的子集中进行搜索,其搜索空间树被称作子集树。这被称作子集树。这n n个元素都有在子集中或被选取记为个元素都有在子集中或被选取记为1 1,不在子集中或,不在子集中或被舍去记为被舍去记为0 0,这样搜索空间为:,这样搜索空间为:(0 0,0 0,0 0,0 0),(),(0 0,0 0,0 0,1 1),),(0 0,0 0,1 1,0 0),(),(0 0,0 0,1 1,1 1),),(1 1,1 1,1 1,1 1)。)。共共2 2n n 个状态。若表示为树形结构就是一棵有个状态。若表示为树形结构就是一棵有2 2n n个叶结点的二叉树,对树个叶结点的二叉树,对树中所有分支进行
7、遍历的算法都必须耗时中所有分支进行遍历的算法都必须耗时O(2n)。)。现在学习的是第7页,共137页n=3的子集树的子集树现在学习的是第8页,共137页2)排列树 当当要要求求解解的的问问题题需需要要在在n n 元元素素的的排排列列中中搜搜索索问问题题的的解解时时,解解空空间间树树被称作排列树。被称作排列树。搜索空间为:搜索空间为:(1 1,2 2,3 3,n-1n-1,n n),(2 2,1 1,3 3,n-1n-1,n n),(2 2,3 3,1 1,n-1n-1,n n),(2 2,3 3,4 4,1 1,n-1n-1,n n),(n n,n-1n-1,3 3,2 2,1 1)第一个元素
8、有第一个元素有n种选择,第二个元素有种选择,第二个元素有n-1种选择,第三个元素种选择,第三个元素有有n-2种选择,种选择,第,第n个元素有个元素有1种选择,共计种选择,共计n!个状态。若表示为个状态。若表示为树形就是一个树形就是一个n度树,这样的树有度树,这样的树有n!个叶结点,所以每一个遍历树中个叶结点,所以每一个遍历树中所有节点的算法都必须耗时所有节点的算法都必须耗时O(n!)现在学习的是第9页,共137页图图5-3n=4的部分子集树的部分子集树现在学习的是第10页,共137页4 4图的存储图的存储 邻接矩阵是表示顶点之间相邻关系的矩阵,邻接矩阵是表示顶点之间相邻关系的矩阵,设设G=(V
9、,E)G=(V,E)是具有是具有n n个顶点的图,则个顶点的图,则G G的邻接矩阵可定义为:的邻接矩阵可定义为:Ai,j=1,Ai,j=1,若(若(V Vi i,V,Vj j)或或V 是是E(G)E(G)中的边。中的边。Ai,j=0,Ai,j=0,若若(V(Vi i,V,Vj j)或或V 不是不是E(G)E(G)中的边。中的边。若若G G是网络,则邻接矩阵可定义为:是网络,则邻接矩阵可定义为:Ai,j=W Ai,j=Wijij 若(若(V Vi i,V,Vj j)或或V 属于属于E(G);E(G);Ai,j=0或或若(若(Vi i,Vj j)或)或不属于不属于E(G);其其中中,Wij表表示示
10、边边上上的的权权值值,表表示示一一个个计计算算机机允允许许的的,大大于于所所有有边上权值的数;边上权值的数;1)邻接矩阵法现在学习的是第11页,共137页现在学习的是第12页,共137页2)邻接表 对于图对于图G G中的每个结点中的每个结点V Vi i,把所有邻接于把所有邻接于V Vi i的顶点的顶点V Vj j链成一个单链链成一个单链表,这个单链表就称为顶点表,这个单链表就称为顶点V Vi i的的邻接表邻接表。邻接表邻接表由边表由边表和和顶点表顶点表两部分组成。两部分组成。无向图无向图:V Vi i的邻接表中每个表结点都对应于与的邻接表中每个表结点都对应于与V Vi i相关联的一条边,相关联
11、的一条边,有向图有向图:V Vi i的邻接表中每个表结点对应于的邻接表中每个表结点对应于V Vi i为始点射出的一条为始点射出的一条边。边。现在学习的是第13页,共137页边表边表为一个单链表,每个表结点均有两个域:为一个单链表,每个表结点均有两个域:邻接点域邻接点域adjvexadjvex:存放与:存放与v vi i相邻接的顶点相邻接的顶点v vj j的序号的序号j j。链域链域nextnext:将邻接表的所有表结点链在一起。:将邻接表的所有表结点链在一起。顶点表顶点表为一数组,每个元素均有两个域:为一数组,每个元素均有两个域:顶点域顶点域vertexvertex:存放顶点:存放顶点v vi
12、 i的信息的信息指针域指针域firstedgefirstedge:v vi i的边表的头指针。的边表的头指针。现在学习的是第14页,共137页 二、图搜索及其术语二、图搜索及其术语1 1穷举搜索与启发式搜索穷举搜索与启发式搜索 穷举搜索是对图的最基本的搜索算法,是蛮力策略的一种表现形穷举搜索是对图的最基本的搜索算法,是蛮力策略的一种表现形式。即不考虑给定问题的特有性质,按事先定好的顺序,依次运用规式。即不考虑给定问题的特有性质,按事先定好的顺序,依次运用规则,盲目搜索的方法。则,盲目搜索的方法。启发式搜索是利用一些启发信息,提前判断出先搜索哪些状态可启发式搜索是利用一些启发信息,提前判断出先搜
13、索哪些状态可能尽快找到问题的解或某些情况不可能取到最优解,从而可以提前舍能尽快找到问题的解或某些情况不可能取到最优解,从而可以提前舍弃对这些状态的尝试。即考虑给定问题的特有性质,选用合适的细则,弃对这些状态的尝试。即考虑给定问题的特有性质,选用合适的细则,提高搜索的效率。提高搜索的效率。现在学习的是第15页,共137页2 2相关概念和术语相关概念和术语 问题状态问题状态:树中的每一个结点确定所求解问题的一个问题状态。树中的每一个结点确定所求解问题的一个问题状态。状态空间状态空间:由根结点到其它结点的所有路径(分支),就确定了这个由根结点到其它结点的所有路径(分支),就确定了这个问题的状态空间。
14、问题的状态空间。解状态解状态:是这样一些问题状态是这样一些问题状态S,对于这些问题状态,由根到,对于这些问题状态,由根到S的那条的那条路径确定了这解空间中的一个元组。路径确定了这解空间中的一个元组。答案状态答案状态:是这样的一些解状态是这样的一些解状态S,对于这些解状态而言,由根到,对于这些解状态而言,由根到S的这条路径确定了这问题的一个解的这条路径确定了这问题的一个解状态空间树状态空间树:解空间的树结构又称隐式图。解空间的树结构又称隐式图。现在学习的是第16页,共137页活结点:如果已生成一个结点而它的所有儿子结点还没活结点:如果已生成一个结点而它的所有儿子结点还没有全部生成,则这个结点叫做
15、活结点。有全部生成,则这个结点叫做活结点。E-结点:当前正在生成其儿子结点的活结点叫结点:当前正在生成其儿子结点的活结点叫E-结点(正结点(正扩展的结点)。扩展的结点)。死结点死结点:不再进一步扩展或者其儿子结点已全部生成的:不再进一步扩展或者其儿子结点已全部生成的生成结点就是死结点生成结点就是死结点。现在学习的是第17页,共137页5.2广度优先搜索广度优先搜索 从图中任选一顶点V为起点,首先访问V的所有邻接点W1,W2,Wt,然后再依次访问W1,W2,Wt邻接的所有未曾访问过的顶点。依此类推,直至图中所有和起点V有路径相通的顶点均已被访问为止。现在学习的是第18页,共137页一、算法框架一
16、、算法框架 1 1算法的基本思路算法的基本思路算法设计的基本步骤为算法设计的基本步骤为:1)确定图的存储方式;)确定图的存储方式;2)图的遍历过程中的操作,其中包括为输出)图的遍历过程中的操作,其中包括为输出问题解而进行的存储操作;问题解而进行的存储操作;3 3)输出问题的结论。)输出问题的结论。现在学习的是第19页,共137页2 2算法框架算法框架 1、通过通过E-E-结点扩展出的活结点结点扩展出的活结点2 2、活结点的扩展是按先来先处理的原则进行的、活结点的扩展是按先来先处理的原则进行的抽象地定义:抽象地定义:queuequeue为队列类型,为队列类型,InitQueue()InitQue
17、ue():队列初始化函数,:队列初始化函数,EnQueue(QEnQueue(Q,k)k):入队函数,:入队函数,QueueEmpty(Q)QueueEmpty(Q):判断队空函数,:判断队空函数,DeQueue(Q)DeQueue(Q):出队函数。:出队函数。visitedvisited:记录结点的搜索情况。:记录结点的搜索情况。现在学习的是第20页,共137页1 1)邻接表表示图的广度优先搜索算法)邻接表表示图的广度优先搜索算法 intvisitedn;/n为结点个数bfs(intk,graphhead)inti;queueQ;edgenode*p;/定义队列InitQueue(Q);/队
18、列初始化print(“visitvertex”,k);/访问源点vkvisitedk=1;EnQueue(Q,k);/vk已访问,将其入队while(!QueueEmpty(Q)/队非空则执行i=DeQueue(Q);/vi出队为E-结点p=headi.firstedge;/取vi的边表头指针while(pnull)/扩展E-结点if(visitedp-adjvex=0)/若vj未访问过print(“visitvertex”,p-adjvex);/访问vjvisitedp-adjvex=1;EnQueue(Q,p-adjvex);/访问过的vj人队p=p-next;/找vi的下一邻接点现在学习
19、的是第21页,共137页2 2)邻接矩阵表示的图的广度优先搜索算法)邻接矩阵表示的图的广度优先搜索算法bfsm(intk,graphg100,intn)inti,j;QueueQ;InitQueue(Q);print(“visitvertex”,k);/访问源点vkvisitedk=1;EnQueue(Q,k);while(notQueueEmpty(Q)i=DeQueue(Q);/vi出队for(j=0;jn;j+)/扩展结点if(gij=1andvisitedj=0)print(“visitvertex”,j);visitedj=1;EnQueue(Q,j);/访问过的vj人队 现在学习的
20、是第22页,共137页【例】如图表示的是从城市【例】如图表示的是从城市A A到城市到城市H H的交通图。从图中的交通图。从图中可以看出,从城市可以看出,从城市A A到城市到城市H H要经过若干个城市。现要找要经过若干个城市。现要找出一条经过城市最少一条路线。出一条经过城市最少一条路线。现在学习的是第23页,共137页算法过程:算法过程:1)将城市A(编号1)入队,队首qh置为0、队尾qe置为1。2)将队首所指的城市所有可直通的城市入队(如果这个城市在队中出现过就不入队),然后将队首加1,得到新的队首城市。重复以上步骤,直到城市H入队为止。当搜到城市H时,搜索结束。3)输出最少城市线路。现在学习
21、的是第24页,共137页数据结构设计:数据结构设计:1)线性数组sq作为活结点队的存储空间。2)队列的每个结点有两个成员:sqi.city记录入队的城市,sqi.pre记录该城市的前趋城市在队列中的下标,这样通过sqi.pre就可以倒推出最短线路。3)设置数组visited记录已搜索过的城市。现在学习的是第25页,共137页算法:算法:intjz88=1,0,0,0,1,0,1,1,0,1,1,1,1,0,1,1,0,1,1,0,0,1,1,1,0,1,0,1,1,1,0,1,1,1,0,1,1,1,0,0,0,0,1,1,1,1,1,0,1,1,1,0,0,1,1,0,1,1,1,1,0,0
22、,0,1;structintcity,pre;sq100;intqh,qe,i,visited100;main()inti,n=8;for(i=1;i=n,i=i+1)visitedi=0;search();现在学习的是第26页,共137页search()()qh=0;qe=1;sq1.city=1;sq1.pre=0;visited1=1;qh=0;qe=1;sq1.city=1;sq1.pre=0;visited1=1;while(qhqe)/while(qhqe)/当队不空当队不空 qh=qh+1;/qh=qh+1;/结点出队结点出队 for(i=1;i=n,i+)/for(i=1;i=
23、n,i+)/扩展结点扩展结点 if(jzsqqh.cityi=1 and visitedi=0 if(jzsqqh.cityi=1 and visitedi=0)qe=qe+1;/qe=qe+1;/结点入队结点入队 sqqe.city=i;sqqe.city=i;sqqe.pre=qh;sqqe.pre=qh;visitedqe=1;visitedqe=1;if(sqqe.city=8)out();return;if(sqqe.city=8)out();return;print(“No avaliable way.”);print(“No avaliable way.”);现在学习的是第27页
24、,共137页算法分析:时间复杂度是算法分析:时间复杂度是O(n);空间复杂性为();空间复杂性为(n2),包括图),包括图本身的存储空间和搜索时辅助空间本身的存储空间和搜索时辅助空间“队队”的存储空间。的存储空间。out();/输出路径 print(sqqe.city);while(sqqe.pre0)qe=sqqe.pre;print(-,sqqe.city);现在学习的是第28页,共137页【例】走迷宫问题【例】走迷宫问题 迷宫是许多小方格构成的矩形,在每个小方格中有的是墙(图中的迷宫是许多小方格构成的矩形,在每个小方格中有的是墙(图中的“1 1”)有)有的是路(图中的的是路(图中的“0
25、0”)。走迷宫就是从一个小方格沿上、下、左、右四个方向)。走迷宫就是从一个小方格沿上、下、左、右四个方向到邻近的方格,当然不能穿墙。设迷宫的入口是在左上角到邻近的方格,当然不能穿墙。设迷宫的入口是在左上角(1,1)(1,1),出口是右下角,出口是右下角(8,8)(8,8)。根据给定的迷宫,找出一条从入口到出口的路径。根据给定的迷宫,找出一条从入口到出口的路径。现在学习的是第29页,共137页算法设计:算法设计:从入口开始广度优先搜索可到达的方格入队,再扩展 队首的方格,直到搜索到出口时算法结束。对于迷宫中任意一点A(Y,X),有四个搜索方向:向上:A(Y-1,X)向下:A(Y+1,X)向左:A
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第5章 图的搜索算法优秀PPT 搜索 算法 优秀 PPT
限制150内