7图搜索基础讲诉.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
一、图搜索概论 1 树与图的回顾 树和图的定义、基本术语 图的存储结构 树和图的遍历方法 2 显式图隐式图 3 图搜索术语方法分类 图的意义 图是一种限制最少的数据结构。 更接近现实; 实际问题中很多数据关系都可以抽象成图,相关问题则可利用图的基本算法进行求解,很早就有专门研究图的是一门数学学科“图论”。 图论中著名算法:求最小生成树的Kruskal算法、求最短路径的Dijkstra算法和Floyd算法、求二分图最大匹配(指派问题)的匈牙利算法、求一般图最大匹配的Edmonds“花”算法、求网络最大流量和最小割集算法等。其中一些算法在数据结构课程中已经学习过。 2 显式图隐式图 在路径问题、连通性问题和网络优化等问题中,图的结构是显式给出的,包括图中的顶点、边及权重,这类图称为显式图,即一般意义上的图。 2 显式图隐式图-子集树 2 显式图隐式图-子集树 共2n 个状态。若表示为树形结构就是一棵有2n个叶结点的二叉树,对树中所有分支进行遍历的算法都必须耗时O(2n) 2 显式图隐式图-排列树 当要求解的问题需要在n个元素的排列中搜索问题的解时,解空间树被称作排列树(permutation tree)。 搜索空间为: (1,2,3,……,n-1,n), (2,1,3,……,n-1,n), (2,3,1,……,n-1,n), (2,3,4,1,……,n-1,n), ……. (n,n-1,……,3,2,1) 2 显式图隐式图-排列树 3 图搜索术语方法分类 穷举搜索(盲目搜索)是对图的最基本的搜索算法,是蛮力策略的一种表现形式。即不考虑给定问题的特有性质,按事先定好的顺序,依次运用规则,盲目搜索的方法。 3 图搜索术语方法分类 问题状态:树中的每一个结点确定所求解问题的一个问题状态。 状态空间:由根结点到其它结点的所有路径(分支),就确定了这个问题的状态空间。 解状态:是这样一些问题状态S,对于这些问题状态,由根到S的那条路径确定了该解空间中的一个元组。 答案状态:是这样一些解状态S,对于这些解状态而言,由根到S的这条路径确定了这问题的一个解(即它满足隐式约束条件)。 状态空间树:解空间的树结构,又称隐式图。 3 图搜索术语方法分类 3 图搜索术语方法分类 3 图搜索术语方法分类 显式图的穷举搜索: 广度优先搜索 深度优先搜索 二、广度优先搜索 1 图的广度优先遍历/搜索算法 2 广度优先搜索的应用 例7.1 求经过城市最少的路线问题 例7.2 走迷宫问题 1 广度优先遍历/搜索 遍历/搜索 二叉树:先/中/后序(根),层次; 树和森林:先根/后根,层次; 图:深度/广度优先; 1 广度优先搜索 1 广度优先搜索-算法要素 广度优先搜索:活结点的扩展是按先来先处理的原则进行;但搜索过程中还需暂时保存部分活结点。 在算法中用“队”来存储每个E-结点扩展出的活结点。实际应用中,用数组或链表实现队列。 开辟数组visited[ ]记录结点的搜索情况。 2 广度优先搜索-算法的基本思路 1 广度优先搜索-一般算法 广度优先搜索用非 递归实现方便。 1 广度优先搜索-邻接表表示图的算法 1 广度优先搜索-邻接矩阵表示图的算法 2 广度优先搜索的应用-例7.1 例7.1 已知若干个城市的地图,求从一个城市到另一个城市 的路径,要求路径中经过的城市最少。 2 广度优先搜索的应用-例7.1-分析 图的广度优先搜索类似与树的层次遍历,逐层搜索正好可以尽快找到一个结点与另一个结点相对而言最直接的路径。 2 广度优先搜索的应用-例7.1-分析设计 2 广度优先搜索的应用-例7.1-算法设计 search( ) { qh=0; qe=1; sq[1].city=1; sq[1].pre=0; visited[1]=1; while( qhqe) //当队不空   { qh=qh+1; //结点出队    for(i=1;i=n,i++) //扩展结点    if (jz[sq[qh].city][i]=1 and visited[i]=0)      { qe=qe+1; //结点入队      sq[qe].city=i; sq[qe].pre=qh; visited[i]=1;      if (sq[qe].city=8) { out( ); return; }       } } print(“No avaliable

文档评论(0)

4477704 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档