ACM专题——搜索算法.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ACM专题讲座 ——搜索算法 肖明 搜索算法 1. 搜索问题 2. 搜索方法分类 3. 回溯方法 4. 一般图搜索算法 5. 启发式搜索算法 1.搜索问题 人类的思维过程,可以看作一个搜索过程。我们遇到的很多智力游戏问题,如传教士和野人问题。 有3个传教士和3个野人来到河边准备渡河,河岸有一条船,每次最多可乘坐2个人。问传教士为安全起见,应如何规划摆渡方案,使得在任何时刻,在河的两岸以及船上传教士人数不能少于野人的人数?对这个问题,在每一次渡河后,都会有几种渡河方案供选择,究竟哪种方案最有利? 这就是搜索问题。 1.搜索问题 对这类问题,一般我们都转换为状态空间的搜索问题。 如传教士和野人问题,可用在河左岸的传教士人数、野人人数和船的情况来表示。即,初始时状态为(3,3,1),结束状态为(0,0,0),而中间状态可表示为(2,2,0)、(3,2,1)等等。 1.搜索问题 由此,可以看出这类问题的解,就是一个合法状态的序列,其中序列中第一个状态是问题的初始状态,而最后一个状态则是问题的结束状态。如图所示即搜索问题的示意图: 2.搜索方法分类 3. 回溯方法 回溯方法,属于盲目搜索的一种,它是这样一种策略:首先将规则给出一个固定的排序,在搜索时,对当前状态依次检测每一条规则,在当前状态未使用过的规则中找到第一条可应用规则,应用于当前状态,得到的新状态重新设置为当前状态,并重复以上搜索。如果当前状态无规则可用,或者所有规则已经被试探过仍未找到问题的解,则将当前状态的前一个状态(即直接生成该状态的状态)设置为当前状态。重复以上搜索,直到找到问题的解,或已试探过所有可能仍找不到问题的解为止。 3. 回溯方法 例:皇后问题 3. 回溯方法 3. 回溯方法 3. 回溯方法 3. 回溯方法 3. 回溯方法 3. 回溯方法 3. 回溯方法 3. 回溯方法 3. 回溯方法 3. 回溯方法 3. 回溯方法 3. 回溯方法 3. 回溯方法 3. 回溯方法 递归的思想: 3. 回溯方法 算法描述: BACKTRACK1(DATALIST) DATALIST:从初始到当前的状态表(逆向) 返回值:从当前状态到目标状态的路径 (以规则表的形式表示) 或FAIL。 3. 回溯方法 1, DATA:=FIRST(DATALIST) 2, IF MENBER(DATA, TAIL(DATALIST)) RETURN FAIL; 3, IF TERM(DATA) RETURN NIL; 4, IF DEADEND(DATA) RETURN FAIL; 5, IF LENGTH(DATALIST)BOUND RETURN FAIL; 6, RULES:=APPRULES(DATA); 3. 回溯方法 7, LOOP: IF NULL(RULES) RETURN FAIL; 8, R:=FIRST(RULES); 9, RULES:=TAIL(RULES); 10, RDATA:=GEN(R, DATA); 11, RDATALIST:=CONS(RDATA, DATALIST); 12, PATH:=BACKTRCK1(RDATALIST) 13, IF PATH=FAIL GO LOOP; 14, RETURN CONS(R, PATH); 4. 一般图搜索算法 问题的引入: 回溯搜索:只保留从初始状态到当前状态的一条路径 图搜索:保留所有已经搜索过的路径 如果控制系统保留所有规则应用后生成并链接起来的状态记录图, 则称工作在这种方式下的控制系统使用了图搜索策略。 实际上图搜索策略是实现从一个隐含图中, 生成一部分确实含有一个目标节点的显式表示的子图搜索过程。 4. 一般图搜索算法 问题的引入: 回溯搜索:只保留从初始状态到当前状态的一条路径 图搜索:保留所有已经搜索过的路径 如果控制系统保留所有规则应用后生成并链接起来的状态记录图, 则称工作在这种方式下的控制系统使用了图搜索策略。 实际上图搜索策略是实现从一个隐含图中, 生成一部分确实含有一个目标节点的显式表示的子图搜索过程。 4. 一般图搜索算法 一些基本概念: 节点深度: 根节点深度=0 其它节点深度=父节点深度+1 4. 一般图搜索算法 一些基本概念: 路径:设一节点序列为(n0, n1,…,nk),对于i=1,…,k,若节点ni-1具有一个后继节点ni,则该序列称为从n0到nk的路径。 路径的耗散值: 一条路径的耗散值等于连接这条路径各节点间所有耗散值的总和。用C(ni, nj)表示从ni到nj的路径的耗散值。 扩展一个节点: 生成出该节点的所有后继节点,并给出它们

文档评论(0)

fc86033 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档