第五章状态空间搜索策略.ppt

  1. 1、本文档共65页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第五章 状态空间搜索策略 5.1 搜索的概念及种类 5.2 盲目搜索 5.3 启发式搜索 5.1 搜索的概念及种类 搜索例子:回溯搜索算法 BACKTRACK(DATA) DATA:当前状态。 返回值: 成功:返回从当前状态到目标状态的路径(以规则表的形式表示) 失败:返回FAIL。 四皇后问题 皇后问题 在一个4*4的国际象棋棋盘上,一次一个地摆布四枚棋子,摆好后满足每行、每列和对角线上只允许出现一枚棋子,即棋子之间不许相互攻击。 四皇后问题(续) 综合数据库:DATA=L(表),L的元素属于{ij},1≤i,j≤4。DATA非空,其表元素表示棋子所在的行和列 规则集:if 1 ≤ i ≤ 4 且在i-1行上有一个皇后 then 在第ij位置放上皇后。 搜索策略 固定次序:R11, R12, R13, … , R21, R22,R44 5.1 搜索的概念及种类 5.2 盲目搜索 5.3 启发式搜索 5.2 盲目搜索策略 5.2.1 状态空间图的一般搜索算法 状态空间表示法:用来表示问题及其搜索过程的一种方法。(P62) 主要构成: (1)状态,描述问题求解过程中不同时刻状况的数据结构; (2)算符:使问题由一个状态变为另一个状态的操作。 (3)状态空间:一个问题的全部状态及一切可用算符构成的集合。一般包括3部分(初始状态集合S,算符集合F,目标状态集合G) (4)问题的求解:从S出发经过一系列的算符运算,到达目标状态。由初始状态到目标状态所用算符的序列构成了问题的一个求解 5.2.1 状态空间图的一般搜索算法 几个概念: 扩展:用合适的算符对某个节点进行操作,生成一组后继节点,扩展过程就是求后继节点的过程。 已扩展节点:已经求出了其后继节点的节点。 未扩展节点:尚未求出后继节点的节点。 OPEN表:存放未扩展的节点,记录当前节点及其父节点。 CLOSED表:存放已扩展节点,记录编号、当前节点及其父节点。 状态空间的一般搜索算法 一般搜索算法的描述: 建立一个只含有初始节点S0的搜索图G,把S0放入OPEN表中 建立CLOSED表,且置为空表 判断OPEN表是否为空表,若为空,则问题无解,退出 选择OPEN表中的第一个节点,把它从OPEN表移出,并放入CLOSED表中,将此节点记为节点n 考察节点n是否为目标节点,若是,则问题有解,成功退出。问题的解就是沿着n到S0的路径得到。若不是转⑥ 扩展节点n生成一组不是n的祖先的后继节点,并将它们记为集合M,将M中的这些节点作为n的后继节点加入图G中 对未在G中出现过的(OPEN和CLOSED表中未出现过的)集合M中的节点,设置一个指向父节点n的指针,并把这些节点放入OPEN表中;对于已在G中出现过的M中的节点,确定是否需要修改指向父节点的指针;对于已在G中出现过并已在closed表中的M中的节点,确定是否需要修改通向他们后继节点的指针。 按某一任意方式或某种策略重排OPEN表中节点的顺序 转③ 图的一些概念: (1)节点深度: 根节点深度=0,其它节点深度=父节点深度+1 (2)路径 设一节点序列为(n0, n1,…,nk),对于i=1,…,k,若节点ni-1具有一个后继节点ni,则该序列称为从n0到nk的路径。 (3)路径的消耗值 一条路径的消耗值等于连接这条路径各节点间所有消耗值的总和。用C(ni, nj)表示从ni到nj的路径的消耗值。 节点类型说明 5.2 无信息图搜索过程 ——盲目搜索策略 5.2.2 宽度优先搜索 5.2.3 深度优先搜索 5.2.4 代价树的宽度优先 5.2.5 代价树的深度优先 1、定义   如果搜索是以接近起始节点的程度依次扩展节点的,那么这种搜索就叫做宽度优先搜索(breadth-first search)。 2、特点   这种搜索是逐层进行的;在对下一层的任一节点进行搜索之前,必须搜索完本层的所有节点。   3、宽度优先搜索算法  (1) 把起始节点放到OPEN表中(如果该起始节点为一目标节点,则求得一个解答)。  (2) 如果OPEN是个空表,则没有解,失败退出;否则继续。  (3) 把第一个节点(节点n)从OPEN表移出,并把它放入CLOSED的扩展节点表中。 (4) 扩展节点n。如果没有后继节点,则转向上述第(2)步。 (5) 把n的所有后继节点放到OPEN表末端,并提供从这些后继节点回到n的指针。 (6) 如果n的任一个后继节点是个目标节点,则找到一个解答,成功退出;否则转向第(2)步。 例:把宽度优先搜索应用于八数码难题时所生成的搜索树,这个问题就是要把初始棋局变为如下目标棋局的问题: 1 2 3 8  4

文档评论(0)

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

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

1亿VIP精品文档

相关文档