第一范文网 - 专业文章范例文档资料分享平台

广度优先搜索(3)

来源:用户分享 时间:2021-06-02 本文由世界因皒而精彩 分享 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

图1 程序:

program No8_DFS; {八数码的深度优先搜索算法}

Const

Dir : array[1..4,1..2]of integer = ((1,0),(-1,0),(0,1),(0,-1));

maxN = 15; {可以承受的最大深度} Type

T8No = array[1..3,1..3]of integer; tList = record state : T8No; x0,y0 : integer; end; Var

Source,Target : T8No;

List,Save : array[0..maxN]of tList; {综合数据库,最优解路径} Open,Best : integer;

procedure GetInfo; {见程序1} Function Same(A,B : T8No):Boolean; {见程序1} function Not_Appear(New : tList):boolean; {见程序1}

procedure Move(N : tList;d : integer;var ok : boolean;var New : tList);

{见程序1}

procedure GetOutInfo; {输出} var i,x,y : integer; begin

writeln('total = ',best); for i:=1 to best+1 do begin for x:=1 to 3 do begin

for y:=1 to 3 do write(Save[i].State[x,y],' '); writeln; end; writeln; end; end;

Procedure Recursive; {递归搜索过程} Var i : integer; New: tList; ok : boolean; Begin

If Open-1>=Best then exit;

If Same(List[Open].state,Target) then begin {如果找到解,保存当前最优解} Best:=Open-1; Save:=List; end;

For i:=1 to 4 do begin {依次选用规则} Move(List[Open],i,OK,New);

if ok and not_Appear(New) then begin {如果没有重复} inc(open); {插入综合数据库} List[Open]:=New;

Recursive; {继续搜索} dec(Open); {退栈} End; End; End;

procedure Main; {搜索主过程} var x,y : integer; begin

List[1].state:=Source; {初始化} for x:=1 to 3 do

for y:=1 to 3 do if Source[x,y]=0 then begin List[1].x0:=x; List[1].y0:=y; end;

Best:=MaxN;

搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新人文社科广度优先搜索(3)全文阅读和word下载服务。

广度优先搜索(3).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/wenku/1194016.html(转载请注明文章来源)
热门推荐
Copyright © 2018-2022 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top