下载此文档

广度宽度优先搜索.ppt


文档分类:IT计算机 | 页数:约39页 举报非法文档有奖
1/39
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/39 下载此文档
文档列表 文档介绍
广度宽度优先搜索
现在学习的是第1页,共39页
深度搜索与广度搜索区分
[深度搜索与广度搜索]
深度搜索与广度搜索的区别:深度搜索下一次扩展的是本次扩展出来的子节点中的一个,而广度搜索扩展的则是本次扩展的节点的兄弟节点。
在具中留有一个空格,允许其周围的某一个将牌向空格中移动,如图1所示。这样通过移动将牌就可以不断改变的布局结构,给出一个初始布局(称初始状态)和一个目标布局(称目标状态),问如何移动将牌,才能实现从初始状态到目标状态的转换。
下面我们看看怎样用宽度优先搜索来解决八数码问题。
图2给出广度优先搜索应用于八数码难题时所生成的搜索树。搜索树上的所有结点都标记它们所对应的状态,每个结点旁边的数字表示结点扩展的顺序。粗线条路径表明求得的一个解。从图中可以看出,扩展第26个结点,总共生成46个结点之后,才求得这个解。此外,直接观察此图表明,不存在有更短走步序列的解。
现在学习的是第8页,共39页
八数码问题扩展搜索树
现在学习的是第9页,共39页
综合数据库(变量设置)
{Pxy},其中1<=x,y<=3,Pxy∈{0,1,2,3,4,5,6,7,8},且Pxy互不相等
用Pascal语言描述如下:
type
t8no = array[1..3,1..3]of longint; {棋盘状态 }
tList = record {描述一个节点}
Father : longint;         {父指针}
dep : longint;   {深度}
x , y : longint; {空格的位置}
state : t8no;           
end;
const
Max=10000;
var
s, t : t8no; {s为初始状态,t为目标状态}
List : array[0..max] of tList; {综合数据库 }
现在学习的是第10页,共39页
产生式规则(关系)
if 条件 then 规则;
设Pxy表示将牌第x行第y列的数码,m,n表示数码空格所在的行列值,记Pm,n=0,则可以得到如下四条规则:
① if n -1>=1 then begin Pm, n:=Pm,n -1­ ; Pm,n -1­ ­:=0 end;
② if m - 1>=1 then begin Pm, n:=Pm-1, n ; Pm-1, n :=0 end;
③ if n + 1<=3 then begin Pm, n:=Pm, n+1; Pm, n+1:=0 end;
④ if m + 1<=3 then begin Pm, n:=Pm+1­,n; Pm+1­, n:=0 end;
Const
Dir : array[1..4,1..2]of longint {对应四种产生式规则}
= ((1,0),(-1,0),(0,1),(0,-1));
现在学习的是第11页,共39页
控制策略
PROCEDURE Production-System;
DATA初始化数据库
Repeat
 在规则集中选择某一条可作用于DATA的规则R
  DATAR作用于DATA后得到的结果
     Until DATA满足结束条件
现在学习的是第12页,共39页
八数码问题宽度优先算法框架
List[1]=source;closed:=0;open:=1; {加入初始节点,List为扩展节点的表}
Repeat
closed:=closed+1; n:=List[closed]; {取出closed对应的节点}
For x:=1 to 4 do begin
new:=move(n,4); {对n节点使用第x条规则,得到new}
if not_appear(new,List) then begin {如果new没有在List中出现}
open:=open+1;List[open]:=new;{加入新节点到open}
List[open].Father:=closed; {修改指针}
if List[open]=Goal then GetOut;
end;
end
until clo

广度宽度优先搜索 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数39
  • 收藏数0 收藏
  • 顶次数0
  • 上传人文库新人
  • 文件大小3.04 MB
  • 时间2022-03-14