搜索算法——比较讲解.pptVIP

  1. 1、本文档共53页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
搜索算法——比较讲解

;搜索算法的基本思想 ;基本搜索算法一【回溯算法】;基本搜索算法一【回溯算法】;基本搜索算法一【回溯算法】;构造字串 生成长度为n的字串,其字符从26个英文字母的前p(p≤26)个字母中选取,使得没有相邻的子序列相等。例如p=3,n=5时 ‘a b c b a’满足条件 ‘a b c b c’不满足条件 输入:n,p 输出:所有满足条件的字串; 分析;procedure solve(at:integer);{递归扩展第at个字母} var ch:char; i:integer; begin if at=n+1 {若产生了一个满足条件的字串,则输出,满足条件的字串数+1} then begin writeln(f,s); inc(tl);exit{回溯} end;{then} for ch←a to ed do {搜索每一个可填字母} begin s←s+ch;i←1;{检查当前字串是否符合条件} while(i=at div 2)and(copy(s,length(s)-i+1,i)copy(s,length(s)-2*i+1,i)) do inc(i); ;基本搜索算法;搜索策略;一些基本概念;八数码问题 ;综合数据库;产生式规则;控制策略 ;宽度优先搜索;八数码问题扩展过程 ;八数码搜索的主框架;八数码问题宽度优先算法框架;八数码参考程序(宽度优先);procedure Initialize; {初始化} var x,y : integer; begin Found:=false; Closed:=0;open:=1; with List[1] do begin State:=Source;dep:=0;Father:=0; For x:=1 to 3 do For y:=1 to 3 do if State[x,y]=0 then Begin x0:=x;y0:=y; End; end; end; Function Same(A,B : T8no):Boolean; {判断A,B状态是否相等 } Var i,j : integer; Begin Same:=false; For i:=1 to 3 do for j:=1 to 3 do if A[i,j]B[i,j] then exit; Same:=true; End; function not_Appear(new : tList):boolean; {判断new是否在List中出现 } var i : integer; begin not_Appear:=false; for i:=1 to open do if Same(new.State,List[i].State) then exit; not_Appear:=true; end; procedure Move(n : tList;d : integer;var ok : boolean;var new : tList); {将第d条规则作用于n得到new,OK是new是否可行的标志 } var x,y : integer; begin X := n.x0 + Dir[d,1]; Y := n.y0 + Dir[d,2]; {判断new的可行性} if not ((X 0) and ( X 4 ) and ( Y 0 ) and ( Y 4 )) then begin ok:=false;exit end; OK:=true;;new.State:=n.State; {new=Expand(n,d)} new.State[X,Y]:=0; new.State[n.x0,n.y0]:=n.State[X,Y]; new.X0:=X;new.Y0:=Y; end; procedure Add(new : tList); {插入节点new} begin if not_Appear(new) then Begin {如果new没有在List出现 } Inc(open);

您可能关注的文档

文档评论(0)

shuwkb + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档