Pascal广度优先搜索(精品).ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《Pascal广度优先搜索(精品).ppt》由会员分享,可在线阅读,更多相关《Pascal广度优先搜索(精品).ppt(22页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、09090909年暑假集训(二)年暑假集训(二)年暑假集训(二)年暑假集训(二)广度优先搜索广度优先搜索广度优先搜索概念广度优先搜索概念 广度优先是另一种控制结点扩展的策略,这种策略优先扩展深度小的结点,把问题的状态向横向发展。广度优先搜索法也叫BFS法(Breadth First Search),进行广度优先搜索时需要利用到队列这一数据结构。广度优先搜索算法适应范围广度优先搜索算法适应范围如果问题的解是由若干部选择构成的一个选择序如果问题的解是由若干部选择构成的一个选择序如果问题的解是由若干部选择构成的一个选择序如果问题的解是由若干部选择构成的一个选择序列,题目要求我们用最少的步骤解决最优化
2、的问列,题目要求我们用最少的步骤解决最优化的问列,题目要求我们用最少的步骤解决最优化的问列,题目要求我们用最少的步骤解决最优化的问题,这个时候我们一般考虑是否使用广度优先搜题,这个时候我们一般考虑是否使用广度优先搜题,这个时候我们一般考虑是否使用广度优先搜题,这个时候我们一般考虑是否使用广度优先搜索。索。索。索。广度优先搜索具有很明确的解题结构,很容易掌广度优先搜索具有很明确的解题结构,很容易掌广度优先搜索具有很明确的解题结构,很容易掌广度优先搜索具有很明确的解题结构,很容易掌握。握。握。握。让我们来看个例子!让我们来看个例子!让我们来看个例子!让我们来看个例子!重排九宫问题游戏n n在一个在
3、一个3 3乘乘3 3的九宫中有的九宫中有1-81-8的的8 8个数及一个空格随机摆放在其中的格个数及一个空格随机摆放在其中的格子里。如下面左图所示。现在要求实现这样的问题:将该九宫调整为子里。如下面左图所示。现在要求实现这样的问题:将该九宫调整为如下图右图所示的形式。调整规则是:每次只能将与空格(上,下或如下图右图所示的形式。调整规则是:每次只能将与空格(上,下或左,右)相临的一个数字平移到空格中。试编程实现。左,右)相临的一个数字平移到空格中。试编程实现。|2|8|3|1|2|3|2|8|3|1|2|3|-|1|4|8|4|1|4|8|4|7|6|5|7|6|5|7|6|5|7|6|5|在深
4、度优先搜索算法中,是深度越大的结点越先得到扩展。如果在搜索在深度优先搜索算法中,是深度越大的结点越先得到扩展。如果在搜索中把算法改为按结点的层次进行搜索,中把算法改为按结点的层次进行搜索,本层的结点没有搜索处理完时,不本层的结点没有搜索处理完时,不能对下层结点进行处理,即深度越小的结点越先得到扩展,也就是说先产能对下层结点进行处理,即深度越小的结点越先得到扩展,也就是说先产生生的结点先得以扩展处理,这种搜索算法称为广度优先搜索法。的结点先得以扩展处理,这种搜索算法称为广度优先搜索法。在深度优先搜索算法中,是深度越大的结在深度优先搜索算法中,是深度越大的结在深度优先搜索算法中,是深度越大的结在深
5、度优先搜索算法中,是深度越大的结点越先得到扩展。如果在搜索中把算法改点越先得到扩展。如果在搜索中把算法改点越先得到扩展。如果在搜索中把算法改点越先得到扩展。如果在搜索中把算法改为按结点的层次进行搜索,为按结点的层次进行搜索,为按结点的层次进行搜索,为按结点的层次进行搜索,本层的结点没本层的结点没本层的结点没本层的结点没有搜索处理完时,不能对下层结点进行处理有搜索处理完时,不能对下层结点进行处理有搜索处理完时,不能对下层结点进行处理有搜索处理完时,不能对下层结点进行处理,即深度越小的结点越先得到扩展,也就是,即深度越小的结点越先得到扩展,也就是,即深度越小的结点越先得到扩展,也就是,即深度越小的
6、结点越先得到扩展,也就是说先产生说先产生说先产生说先产生 的结点先得以扩展处理,这种搜的结点先得以扩展处理,这种搜的结点先得以扩展处理,这种搜的结点先得以扩展处理,这种搜索算法称为广度优先搜索法。索算法称为广度优先搜索法。索算法称为广度优先搜索法。索算法称为广度优先搜索法。特别提示特别提示n n在有些情况下,比如求最优秀解的时候,有时广度搜索比深度搜索好;n n一般来说广度优先搜索可以利用队列实现,主要用于求一种状态通过 几种规定的操作以最小次的变换到另一种状态广度优先搜索基本算法广度优先搜索基本算法1)从某个顶点出发开始访问,被访问的顶点作相应的标记,并输出访问顶点号;2)从被访问的顶点出发
7、,依次搜索与该顶点有边的关联的所有未被访问的邻接点,并作相应的标记。3)再依次根据2)中所有被访问的邻接点,访问与这些邻接点相关的所有未被访问的邻接点,直到所有顶点被访问为止。【算法过程框架】procedureprocedureguangdu(iguangdu(i););beginbeginwrite(iwrite(i););vivi:=true;:=true;insert(q,i);qinsert(q,i);q是队列,是队列,i i进队进队 repeatrepeatk:=k:=delete(qdelete(q);出队出队 forj:=1tondoforj:=1tondoif(if(ak,ja
8、k,j=1)and(not=1)and(notvjvj)then)thenbeginbeginwrite(jwrite(j););vjvj:=true;:=true;insert(q,jinsert(q,j););end;end;untiluntil队列队列q q为空为空;变化的就是每个节点的表示形式和扩展的策略变化的就是每个节点的表示形式和扩展的策略变化的就是每个节点的表示形式和扩展的策略变化的就是每个节点的表示形式和扩展的策略例一、分油问题假设有假设有3 3个油瓶,容量分别为个油瓶,容量分别为4 4,3 3,1(1(斤斤)。开始时。开始时4 4斤油瓶是满的,另外两个是空的,请用这三个油瓶斤
9、油瓶是满的,另外两个是空的,请用这三个油瓶将倒出将倒出2 2斤的油来斤的油来分析:由于每一次倒油都是从一个油瓶向另外一个油瓶分析:由于每一次倒油都是从一个油瓶向另外一个油瓶分析:由于每一次倒油都是从一个油瓶向另外一个油瓶分析:由于每一次倒油都是从一个油瓶向另外一个油瓶倒油,要么向外倒油的油瓶倒空,要不接受倒油的油倒油,要么向外倒油的油瓶倒空,要不接受倒油的油倒油,要么向外倒油的油瓶倒空,要不接受倒油的油倒油,要么向外倒油的油瓶倒空,要不接受倒油的油瓶道满。我们将三个油瓶编号,用三个油瓶的油表示瓶道满。我们将三个油瓶编号,用三个油瓶的油表示瓶道满。我们将三个油瓶编号,用三个油瓶的油表示瓶道满。我
10、们将三个油瓶编号,用三个油瓶的油表示当前状态,共有六种不同的倒油方法当前状态,共有六种不同的倒油方法当前状态,共有六种不同的倒油方法当前状态,共有六种不同的倒油方法1-2;1-1-2;1-3;2-3;2-1;3-2;3-1;3;2-3;2-1;3-2;3-1;(相当于八种跳马(相当于八种跳马(相当于八种跳马(相当于八种跳马的方案的方案的方案的方案,回溯的条件是该状态在以前出现过,而我们回溯的条件是该状态在以前出现过,而我们回溯的条件是该状态在以前出现过,而我们回溯的条件是该状态在以前出现过,而我们现在不但要求出一种解,而且我们要的出最优化(操现在不但要求出一种解,而且我们要的出最优化(操现在不
11、但要求出一种解,而且我们要的出最优化(操现在不但要求出一种解,而且我们要的出最优化(操作次数最少的解),也就是我们要求我们搜索树的层作次数最少的解),也就是我们要求我们搜索树的层作次数最少的解),也就是我们要求我们搜索树的层作次数最少的解),也就是我们要求我们搜索树的层最少最少最少最少)深度优先搜索:状态树4001300130313014003102111301213211231321213状态树(广度优先搜索)4,0,01,3,03,0,14,0,01,2,11-21-30,3,11-32-32-1在上面的状态树中,我们要注意下面几点1:对于每个当前的状态节点来说,可能有八种可能,但是有些可
12、能我们可以预先处理处理。缩小该节点的度数(要求到出的酒杯非空),另外如果该节点已经被产生那么我们就不必在搜索下去了,我们利用队列来控制);2:我们搜索的结束条件是搜索到有2着瓶油;3:因为我们要找到最优秀解,所以我们按照层来搜索广度优先搜索所用的数据结构DATADATA(状态)状态)状态)状态)OPOP(由何种操作由何种操作由何种操作由何种操作变换而来变换而来变换而来变换而来)PRE(PRE(由何种状态由何种状态由何种状态由何种状态变换来,即父节点)变换来,即父节点)变换来,即父节点)变换来,即父节点)初始初始初始初始状态状态状态状态初始状态初始状态初始状态初始状态AA操作结果操作结果操作结果
13、操作结果初始状态初始状态初始状态初始状态BB操作结果操作结果操作结果操作结果初始状态经过初始状态经过初始状态经过初始状态经过两次两次两次两次AA的结果的结果的结果的结果0 01 12 2BB1 1AAAAFRONTFRONTREARREAR一:交通图问题n n表示的是从城市表示的是从城市A A到城市到城市H H的交通图。从图中可以的交通图。从图中可以看出,从城市看出,从城市A A到城市到城市H H要经过若干个城市。现要要经过若干个城市。现要找出一条经过城市最少的一条路线。找出一条经过城市最少的一条路线。分析该题n n分析分析分析分析:看到这图很容易想到用邻接距阵来表示,:看到这图很容易想到用邻
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Pascal 广度 优先 搜索 精品
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内