已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验一:盲目搜索算法一、实验目的掌握盲目搜索算法之一的宽度优先搜索求解算法的基本思想。对于宽度优先搜索算法基本过程,算法分析有一个清晰的思路,了解宽度优先搜索算法在实际生活中的应用。二、实验环境PC机一台,VC+6.0 三、实验原理宽度优先搜索算法(又称广度优先搜索)是最简便的图的搜索算法之一,这一算法也是很多重要的图的算法的原型。Dijkstra单源最短路径算法和Prim最小生成树算法都采用了和宽度优先搜索类似的思想。其别名又叫BFS,属于一种盲目搜寻法,目的是系统地展开并检查图中的所有节点,以找寻结果。同时,宽度优先搜索算法是连通图的一种遍历策略。因为它的思想是从一个顶点V0开始,辐射状地优先遍历其周围较广的区域,故得名。其基本思想是:(1) 把起始节点放到OPEN表中(如果该起始节点为一目标节点,则求得一个解答)。(2) 如果OPEN是个空表,则没有解,失败退出;否则继续。(3) 把第一个节点(节点n)从OPEN表移出,并把它放入CLOSED扩展节点表中。(4) 扩展节点n。如果没有后继节点,则转向上述第(2)步。(5) 把n的所有后继节点放到OPEN表的末端,并提供从这些后继节点回到n的指针。(6) 如果n的任一个后继节点是个目标节点,则找到一个解答,成功退出;否则转向第(2)步。宽度优先搜索示意图和宽度优先算法流程图如下图1和图2所示:SBADCEFGHIJ图1、宽度优先搜索示意图起始 把S放入OPEN表Fangru OPEN是否为空表?否是失败把第一个节点n,从OPEN表移出,并把它放入CLOSED表扩展n,把它的后继节点放入OPEN表的末端,提供回到n的指针是否有任何后继节点为目标节点?否是成功图2、宽度优先算法流程图四、实验数据及步骤 这部分内容是通过一个实例来对宽度优先算法进行一个演示,分析其思想。问题描述了迷宫问题的出路求解办法。定义一个二维数组:intmaze55=0,1,0,0,0,0,1,0,1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,1,0,; 它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。题目保证了输入是一定有解的。 下面我们队问题进行求解:对应于题目的输入数组:0,1,0,0,0,0,1,0,1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,1,0,我们把节点定义为(y,x),(y,x)表示数组maze的项mazexy。于是起点就是(0,0),终点是(4,4)。我们大概梳理一遍:初始条件:起点Vs为(0,0),终点Vd为(4,4),灰色节点集合Q=,初始化所有节点为白色节点,说明:初始全部都是白色(未访问),即将搜索起点(灰色),已经被搜索过了(黑色)。开始我们的宽度搜索。执行步骤:1.起始节点Vs变成灰色,加入队列Q,Q=(0,0)2.取出队列Q的头一个节点Vn,Vn=0,0,Q=3.把Vn=0,0染成黑色,取出Vn所有相邻的白色节点(1,0)4.不包含终点(4,4),染成灰色,加入队列Q,Q=(1,0)5.取出队列Q的头一个节点Vn,Vn=1,0,Q=6.把Vn=1,0染成黑色,取出Vn所有相邻的白色节点(2,0)7.不包含终点(4,4),染成灰色,加入队列Q,Q=(2,0)8.取出队列Q的头一个节点Vn,Vn=2,0,Q=9.把Vn=2,0染成黑色,取出Vn所有相邻的白色节点(2,1),(3,0)10.不包含终点(4,4),染成灰色,加入队列Q,Q=(2,1),(3,0)11.取出队列Q的头一个节点Vn,Vn=2,1,Q=(3,0)12. 把Vn=2,1染成黑色,取出Vn所有相邻的白色节点(2,2)13.不包含终点(4,4),染成灰色,加入队列Q,Q=(3,0),(2,2)14.持续下去,知道Vn的所有相邻的白色节点中包含了(4,4)15.此时获得最终答案我们来看看广度搜索的过程中节点的顺序情况:图3迷宫问题的搜索树图中标号即为我们搜索过程中的顺序,我们观察到,这个搜索顺序是按照上图的层次关系来的,例如节点(0,0)在第1层,节点(1,0)在第2层,节点(2,0)在第3层,节点(2,1)和节点(3,0)在第3层。我们的搜索顺序就是第一层-第二层-第三层-第N层这样子。我们假设终点在第N层,因此我们搜索到的路径长度肯定是N,而且这个N一定是所求最短的。我们用简单的反证法来证明:假设终点在第N层上边出现过,例如第M层,MN,那么我们在搜索的过程中,肯定是先搜索到第M层的,此时搜索到第M层的时候发现终点出现过了,那么最短路径应该是M,而不是N了。所以根据广度优先搜索的话,搜索到终点时,该路径一定是最短的。五、实验核心代码/* * 广度优先搜索*/void course(char *maze,int hang,int lie)int i=1,j=1,n=-1;step *Step; /定义一个存储行走路线的栈Step=new step hang*lie; if(maze11=1)cout此路无法行走!endlendl;getchar();exit(0);elsen+;mazeij=.;/.表示入口Stepn.x=i; /记录入口的坐标Stepn.y=j;while(mazehanglie!=.) /1表示走不通,+表示已经走过但不通又回来的路径,.表示已经走过并通了的路径if(mazeij+1!=1&mazeij+1!=.&mazeij+1!=+)/向右走mazeij+1=.;j=j+1;n+;Stepn.x=i;Stepn.y=j;cout第n步: 向右走到: (i,j)endl;else if(mazei+1j!=1&mazei+1j!=.&mazei+1j!=+)/向下走mazei+1j=.;i=i+1;n+;Stepn.x=i;Stepn.y=j;cout第n步: 向下走到: (i,j)endl;else if(mazeij-1!=1&mazeij-1!=.&mazeij-1!=+)/向左走mazeij-1=.;j=j-1;n+;Stepn.x=i;Stepn.y=j;cout第n步: 向左走到: (i,j)endl;else if(mazei-1j!=1&mazei-1j!=.&mazei-1j!=+)/向上走mazei-1j=.;i=i-1;n+;Stepn.x=i;Stepn.y=j;cout第n步: 向上走到: (i,j)endl;else if(mazei+1j+1!=1&mazei+1j+1!=.&mazei+1j+1!=+)/向右下走mazei+1j+1=.;j=j+1;i=i+1;n+;Stepn.x=i;Stepn.y=j;cout第n步: 向右下走到: (i,j)endl;else if(mazei+1j-1!=1&mazei+1j-1!=.&mazei+1j-1!=+)/向右上走mazei+1j-1=.;j=j+1;i=i-1;n+;Stepn.x=i;Stepn.y=j;cout第n步: 向右上走到: (i,j)endl;else if(mazei-1j+1!=1&mazei-1j+1!=.&mazei-1j+1!=+)/向左下走mazei-1j+1=.;j=j-1;i=i+1;n+;Stepn.x=i;Stepn.y=j;cout第n步: 向左下走到: (i,j)endl;else if(mazei-1j-1!=1&mazei-1j-1!=.&mazei-1j-1!=+)/向左上走mazei-1j-1=.;j=j-1;i=i-1;n+;Stepn.x=i;Stepn.y=j;cout第n步: 向左上走到: (i,j)endl;else /返回上一步if(i=1&j=1) /当回到入口时,说明无通路,结束循环break;elsemazeij=+; /将走不通的点置为+n-;i=Stepn.x; j=Stepn.y; cout此路不通!返回至上一步: (i,j)endl; /输出返回信息 if(i=hang&j=lie)cout成功走到出口! 共n步;outway(maze,hang,li
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 办公楼化粪池改造协议
- 高科技产品研发招投标详解
- 商业综合体电缆敷设工程协议
- 智能物流科技合同管理办法
- 钢结构防火施工合同
- 2024年度企业员工福利与员工激励方案委托协议3篇
- 2024年BIM项目管理咨询服务合同2篇
- 2024年度医院保安人员派遣合同3篇
- 2024年度戏曲服装设计定制合同3篇
- 2024年度电力工程质量安全监督与检测合同
- 中职英语新高教版基础模块1unit4school-life
- 2023年北京国家公务员行测考试真题及答案-行政执法类
- 2023输电工程项目规范
- 初中信息技术课程课件《初识Python》
- 频谱仪N9020A常用功能使用指南
- 天津高考英语词汇3500
- 木本园林植物栽培技术
- 抛石护脚施工方案
- 英文技术写作-东南大学中国大学mooc课后章节答案期末考试题库2023年
- 模拟电子技术课程设计-BS208HAF调频调幅两波段收音机组装与调试
- 精装修投标技术标书模板
评论
0/150
提交评论