收藏 分享(赏)

人工智能 4.ppt

上传人:tkhy51908 文档编号:8253713 上传时间:2019-06-17 格式:PPT 页数:92 大小:2.12MB
下载 相关 举报
人工智能 4.ppt_第1页
第1页 / 共92页
人工智能 4.ppt_第2页
第2页 / 共92页
人工智能 4.ppt_第3页
第3页 / 共92页
人工智能 4.ppt_第4页
第4页 / 共92页
人工智能 4.ppt_第5页
第5页 / 共92页
点击查看更多>>
资源描述

1、第四章 搜索策略,基本概念 状态空间的搜索策略 与/或树的搜索策略 搜索的完备性与效率,基本概念,什么是搜索 推理不可分割的一部分,用于确定推理路线。 按何种路线寻找可用知识进行求解,以获得较高的运行效率。 在知识不完全时,一般不存在成熟的求解算法可以利用,只有利用已有的知识摸索前进,这就是搜索。 即使对于结构性能较好,理论上有算法可依的问题,由于问题本身的复杂性以及计算机在时间、空间上的局限性,往往也需要通过搜索来进行求解。 为了快速找到问题的解,需要考虑搜索方法,即搜索策略。,从搜索方式上来讲,搜索可以划分为两大类,即盲目搜索和启发式搜索。 所谓盲目搜索,就是未利用问题的知识,采用固定的方

2、式生成状态(沿着预先规定好的路线进行)的方法。显然这种方法的搜索效率是低下的,但方法具有通用性。当一时难以找到求解问题的有效知识时,是一种不得不采用的方法。 所谓启发式搜索,与盲目搜索正好相反,它利用问题的知识(启发式信息),缩小问题的搜索范围,选择那些最有可能在(最优)解路径上的状态优先搜索,以尽快地找到问题的(最优)解。,状态空间表示法,状态:描述问题求解过程中不同时刻的状况 如农夫过河问题中的(1,1,1,1), , (0,0,0,0) 如猴子摘香蕉问题中的(a,c,b,0,0), , (b,b,b,1,1) 算符:使问题从一种状态变化为另一种状态的操作 如产生式规则 算符的执行导致状态

3、的变迁 状态空间:由问题的全部状态及一切可用算符所构成的集合 状态空间图:状态空间的图示形式 有向图(节点,有向弧),状态空间示例,二阶梵塔问题 设用SK=(Sk0,Sk1)表示问题的状态,SK0表示金片A所在的柱号,Sk1表示金片B所在的柱号,全部可能的状态有9(=32)种:S0=(1,1), S1=(1,2) , S2=(1,3)S3=(2,1), S4=(2,2) , S5=(2,3)S6=(3,1), S7=(3,2) , S8=(3,3) 问题的初始状态集合为S=S0,目标状态集合为G=S4,S8。 算符分别用A(i,j)及B(i,j)。A(i,j)表示把A金片从第i号柱移到第j号柱

4、。B(i,j)与之同理。算符共有12个。 在状态空间图中,从初始节点(1,1)到目标 节点(2,2)或(3,3)的任何一条通路都是问题 的一个解。其中最短的路径长度是3, 它由3个算符组成。 例如: A(1,3), B(1,2), A(3,2),传教士和野人问题,用状态空间法表示问题,首先必须定义状态的描述形式,把问题的一切状态都表示出来。其次要定义一组算符。 问题的求解过程是一个不断把算符作用于状态的过程。如果在使用某个算符后得到的新状态是目标状态,就得到了问题的一个解。这个解是从初始状态到目标状态所用算符构成的一个序列。 算符的一次使用,就使问题由一种状态转变为另一种状态。使用算符最少的解

5、或者总代价最小的解称为最优解。 对任何一个状态,可使用的算符可能不止一个。这样由一个状态所生成的后继状态就可能有多个。此时首先对哪一个状态进行操作,就取决于搜索策略。,与/或树表示法,与/或树是用于表示问题及其求解过程的又一种形式化方法,通常用于表示比较复杂问题的求解。 对于一个复杂问题,直接求解往往比较困难。此时可通过下述方法进行简化(问题归约法): 分解 把一个复杂问题分解为若干个较为简单的子问题,每个子问题又可继续分解。重复此过程,直到不需要或者不能再分解为止。如此形成“与”树。 把各子问题的解复合起来就得到了原问题的解。 等价变换 利用同构或同态的等价变换,把原问题变换为若干个较为容易

6、求解的新问题(我们也称之为子问题)。如此形成“或”树。 若新问题中有一个可求解,则就得到了原问题的解。,基本概念 1. 本原问题:不能再分解或变换,且直接可解的子问题。 2. 终止节点:本原问题对应的节点。 3. 端节点:没有子节点的节点。 4. 可解节点:满足下列条件之一者(1)终止节点;(2)“或”节点:其子节点中至少有一个是可解节点;(3) “与”节点:其子节点全部是可解节点。 5. 不可解节点:可解节点的以上三个条件都不满足的节点。 6. 解树:由可解节点构成,并且由这些可解节点可以推出初始节点为可解节点的子树称为解树。与/或树求解过程实际上就是寻找解树,即证明原始节点是可解节点的过程

7、。,三阶梵塔问题用三元组表示问题状态:(i,j,k ),(1,1,1)(3,3,3),(1,1,1)(1,2,2),(1,2,2)(3,2,2),(3,2,2)(3,3,3),(1,1,1)(1,1,3),(1,1,3)(1,2,3),(1,2,3)(1,2,2),(3,2,2)(3,2,1),(3,2,1)(3,3,1),(3,3,1)(3,3,3),状态空间的搜索策略,状态空间搜索的基本思想就是通过搜索引擎在状态空间中寻找一个操作算符的调用序列,使问题能够从初始状态变迁到目标状态之一,而变迁过程中的状态序列或相应的操作算符调用序列称为从初始状态到目标状态的解答路径(问题的解)。 如右图中的

8、一个解答路径为:A(1,3), B(1,2), A(3,2),复杂问题的状态空间通常都是非常庞大的,例如64阶梵塔问题,共有364个不同的状态。搜索空间的压缩程度主要取决于搜索引擎采用的搜索算法。换言之,当问题有解时,使用不同的搜索策略,找到解答路径时,搜索图的大小是有区别的。,状态空间的搜索策略,盲目搜索的特点:搜索按规定的路线进行,不使用与问题有关的启发性信息;适用于其状态空间图是树状结构的一类问题。启发式搜索要使用与问题有关的启发性信息,并以这些启发性信息指导搜索过程,可以高效地求解结构复杂的问题。,一般图搜索算法 为建立该算法,令:s-指示初始状态节点; G-指示搜索图; OPEN-作

9、为存放待扩展节点的表; CLOSED-作为存放已被扩展节点的表; MOVE-FIRST(OPEN)-指示取OPEN表首的节点作为当前要被扩展的节点n,同时将节点n移至CLOSED表; SNS-子节点集合。OPEN表 CLOSED表,该算法的一般过程如下:1) G:=s; /算法开始时搜索图只包括初始状态节点;2) OPEN:=(s), CLOSED:=( ); /此时仅有作为待扩 展节点,而CLOSED表为空;3) 若OPEN是空表,则算法以失败结束;/因为此时并未搜索到解答(目标状态),但又无法继续搜索下去;4) n:=MOVE-FIRST(OPEN);5) 若n是目标状态节点,则搜索成功结

10、束,并给出解答路径;6) 扩展节点n,将非节点n祖先的子节点置于子节点集合SNS中,并插入搜索图G中;,7) 标记和修改指针: 把SNS中的子节点分为三类:(1)全新节点未曾在G中出现过,(2)出现在OPEN表中的节点,/尚未扩展,无子节点(3)出现在CLOSED表中的节点;/已被扩展,有子节点/后两类子节点实际上意味着具有新老两个父节点; 将第1类子节点加入OPEN表,并建立从子节点到父节点n的指针; 比较第2类子节点经由新、老父节点到达初始状态节点s的路径代价,若经由新父节点的代价较小,则修改子节点指向老父节点的指针,使之指向新父节点(修改父指针以记录当前的最佳路径代价最小的路径);, 对

11、于第3类子节点作与第2类同样的处理,即比较第3类子节点经由新、老父节点到达初始状态节点s的路径代价,若经由新父节点的代价较小,则修改子节点指向老父节点的指针,使之指向新父节点(修改父指针以记录当前的最佳路径代价最小的路径),并把这些子节点从CLOSED表中移出,重新加入OPEN表推迟修改其子节点指向父节点的指针,当重新对其进行扩展时再确定是否需要修改其子节点指向父节点的指针。 将其按第2类子节点进行处理,容易实现,但可能会多次扩展同一个节点,导致效率下降。,8)按某种原则重新排序OPEN表中的节点; 广度优先搜索:先扩展出的节点先被考察(队列) 深度优先搜索:后扩展出的节点先被考察(栈) 代价

12、树的广度优先搜索:哪个节点到根节点的代价小就先考察哪个节点 代价树的深度优先搜索:当前节点的哪个子节点到其父节点的代价小就先考察哪个子节点 局部择优搜索:通过当前节点的哪个子节点到目标节点的估计代价小就先考察哪个子节点 全局择优搜索:通过哪个节点到目标节点的估计代价小就先考察哪个节点(A*算法) 9)返回3)。,一些说明,上述是一个通用过程,各种搜索策略的主要区别是对OPEN表中节点排序的准则不同。 一个节点经一个算符操作后一般只生成一个子节点。但适用于一个节点的算符可能有多个,此时就会生成一组子节点。这些子节点中可能有些是当前扩展节点的父节点、祖父节点等,此时不能把这些先辈节点作为当前扩展节

13、点的子节点。 一个新生成的节点,它可能是第一次被生成的节点,也可能是先前已作为其它节点的后继节点被生成过,当前又作为另一个节点的后继节点被再次生成。此时,它究竟应作为哪个节点的后继节点?一般由原始节点到该节点的总代价来决定,代价小的相应节点就作为父节点。 在搜索过程中,一旦某个被考察的节点是目标节点就得到了一个解。该解由从初始节点到该目标节点路径上的算符序列构成。 如果在搜索中一直找不到目标节点,而且OPEN表中不再有可供扩展的节点,则搜索失败。,通过循环地执行该算法,搜索图会因不断有新节点加入而逐步长大(一边搜索,一边生长),直到搜索到目标节点。,OPEN=8,10,11,12,13,14,

14、15,16,17 CLOSED=1,2,3,4,5,6,7,9,OPEN表中的节点修改指针,10,11,CLOSED表中的节点修改指针,10,11,CLOSED表中的节点修改指针(1),一般图搜索算法中,提高搜索效率的关键在于优化OPEN表中节点的排序方式,若每次排在表首的节点都在最终搜索到的解答路径上,则算法不会扩展任何多余的节点就可快速结束搜索。所以排序方式成为研究搜索算法的焦点,并由此形成了多种搜索策略。广度优先搜索 扩展当前节点后生成的子节点 总是置于OPEN表的后端,即OPEN表 作为队列使用,先进先出,使搜 索优先向横广方向发展。,广度优先搜索过程,把初始节点S0放入OPEN表。

15、如果OPEN表为空,则问题无解,退出。 把OPEN表的第一个节点(记为节点n)取出放入CLOSED表。 考察节点n是否为目标节点。若是,则求得了问题的解,退出。 若节点n不可扩展,则转第2步。 扩展节点n,将其子节点放入OPEN表的尾部,并为每一个子节点都配置指向父节点的指针,然后转第2步。,按节点深度由浅到深进行排序,2 3 1 8 4 7 6 5,1,2,5,6,7,3,目标,8,4,9,10,11,12,13,14,15,16,17,优点只要问题有解,用广度优先搜索总可以得到解(即广度优先搜索算法是完备的),而且得到的是路径最短的解。缺点广度优先搜索盲目性较大,当目标节点距初始节点较远时

16、将会产生许多无用节点,搜索效率低。,深度优先搜索 扩展当前节点后生成的子节点总是置于OPEN表的前端,即OPEN表作为栈使用,后进先出,使搜索优先向纵深方向发展。,深度优先搜索是不完备的。 如果目标节点恰好在搜索分枝上,可以求得解;如果目标节点不在搜索分枝上,即使有解,也难以求得。即使求得,也不一定是路径最短的解。 解决办法:限制搜索层数,深度优先搜索过程,把初始节点S0放入OPEN表。 如果OPEN表为空,则问题无解,退出。 把OPEN表的第一个节点(记为节点n)取出放入CLOSED表。 考察节点n是否为目标节点。若是,则求得了问题的解,退出。 若节点n不可扩展,则转第2步。 扩展节点n,将

17、其子节点放入OPEN表的首部,并为每一个子节点都配置指向父节点的指针,然后转第2步。,按节点深度由深到浅进行排序,2 3 1 8 4 7 6 5,2 3 1 8 4 7 6 5,2 8 3 1 4 7 6 5,2 3 1 8 4 7 6 5,1,2 3 4 1 8 7 6 5,2 3 48 7 6 5,2 3 4 1 8 5 7 6, ,2,3,4,有界深度优先搜索,基本思想: 对深度优先搜索引入搜索深度的界限(设为dm),当搜索深度达到了深度界限,但尚未出现目标节点时,就换一个分支进行搜索。 搜索过程: 把初始节点S0放入OPEN表中,置S0的深度d(S0)=0。 如果OPEN表为空,则问题

18、无解,退出。 把OPEN表的第一个节点(记为节点n)取出放入CLOSED表。 考察节点n是否为目标节点。若是,则求得了问题的解,退出。 若节点n的深度d(节点n)=dm,则转第2步。 若节点n不可扩展,则转第2步。 扩展节点n,将其子节点放入OPEN表的首部,并为每一个子节点都配置指向父节点的指针,然后转第2步。,如果问题有解,且其路径长度dm,则上述搜索过程一定能求得解。但是,若解的路径长度dm,则上述搜索过程就得不到解。这说明在有界深度优先搜索中,深度界限的选择是很重要的。 要恰当地给出dm的值是比较困难的可变深度界限 即使能求出解,它也不一定是最优解。,2 3 1 8 4 7 6 5,1

19、,2,3,4,5,6,7,8,9,a,b,c,d,目标,有界深度优先搜索,e,dm=4,边上标有代价的树称为代价树。,代价树的广度优先搜索每次从OPEN表中选择节点往CLOSED表传递时,总是选择代价最小的节点,也就是说,OPEN 表中的节点是按照 其代价从小到大的 顺序进行排列的。,代价树的深度优先搜索每次从OPEN表中选择节点往CLOSED表传递时,总是从刚扩展出的子节点中选择代价(可 以用边代价代替)最小的节点。,启发式图搜索,利用知识来引导搜索,达到减少搜索范围,降低问题复杂度的目的。 启发信息的强度 强:降低搜索工作量,但可能导致找不到最优解 弱:一般会导致工作量加大,极限情况下变为

20、盲目搜索,但可能找到最优解,基本思想,定义一个估价函数f,对节点的重要性进行评估,找出一个最有希望的节点来进行扩展。 f(x)=g(x)+h(x) 根据从初始节点通过节点x到目标节点这一完整路径的代价来对节点进行评估 g(x)是从初始节点到节点x已经实际付出的代价 h(x)是从节点x到目标节点的最优路径的估计代价(启发式信息)启发函数 g(x)指出了搜索的横向趋势,它有利于搜索的完备性,但影响搜索的效率。 如果我们只关心到达目标节点的路径,并且希望有较高的搜索效率,则g(x)可以忽略(只利用启发函数h(x)制导的启发式搜索,实际上是一种深度优先的策略。它是高效的,但可能误入歧途),但此时会影响

21、搜索的完备性。,设有如下结构的移动牌游戏:该游戏规则: 当一个牌移入相邻的空位置时,费用为一个单位。 一个牌至多可跳过两个牌进入空位置,其费用等于跳过的牌数加1。 要求把所有的B都移至W的右边,请设计估价函数中的h(x)。,估价函数示例,解:根据要求可知,W左边的B越少越接近目标,因此可用W左边B的个数作为h(x),即h(x)=3(每个W左边B个数的总和) 这里乘以系数3是为了扩大h(x)在f(x)中的比重。,局部择优搜索,当一个节点x被扩展以后,按f(x)对x的每个子节点计算估计值,并选择这些子节点中估计值最小的节点作为下一个考察对象。 f(x)=g(x)+h(x) 深度优先搜索、代价树的深

22、度优先搜索以及局部择优搜索都是以当前的所有子节点作为考察范围的。但是前二者可以看作是局部择优搜索的特例。,全局择优搜索,每次总是从OPEN表的全体节点中选取一个估计值最小的节点。f(x)=g(x)+h(x)广度优先搜索、代价树的广度优先搜索以及全局择优搜索都是以当前的所有节点作为考察范围的。但是前二者可以看作是全局择优搜索的特例。,h(x)=4,例如:九宫图g(x)表示节点x的深度h(x)表示节点x与目标节点格局不相同(或不在其位)的将牌个数。,2 8 3 1 6 4 7 5,s(4),A(6),B(4),C(6),D(5),E(5),F(6),G(6),H(7),I(5),J(7),K(5)

23、,L(5),M(7),1,2,3,4,5,6,最佳图搜索算法A*(A*算法),全局择优 对估价函数加上一些限制,以保证得到最优解的启发式搜索算法 最优估价函数f*(n) g*(n) + h*(n)f(n)越接近f*(n),扩展的节点数就会越少,效率越高。 有关限制 g(n)是对g*(n)的估计,且g(n) 0;如深度d(n) h(n)是h*(n)的下界,即对任意节点n均有:h(n)h*(n),A*算法的特性,A*算法的可纳性对于可解状态空间图(即从初始节点到目标节点有路径存在)来说,如果一个搜索算法能在有限步终止,并且能找到最优解,则称该搜索算法是可纳的。 A*算法是可纳的 A*算法的最优性A

24、*算法的搜索效率在很大程度上取决于h(x),在满足h(x)h*(x)的前提下,h(x)的值越大越好。h(x)的值越大,表明它携带的启发性信息越多,搜索时扩展的节点数越少,搜索的效率越高。,A*算法的特性,h(x)的单调性限制在A*算法中,每当扩展一个节点时都要先检查其子节点是否已在OPEN表或CLOSED表中,如果在CLOSED表中还可能重新放回OPEN表进行重复扩展,有时还要调整指向父节点的指针,这就增加了搜索的代价。如果对启发函数h(x)加上单调性限制,就可减少检查及调整的工作量,从而减少搜索代价。可以证明,当A*算法的启发函数h(x)满足单调限制时,由A*算法扩展的节点序列其f值是非递减

25、的;即在扩展节点x时,就已经找到了到达节点x的最佳路径,这样就不必再去检查其子节点是否在CLOSED表中,从而避免了对其在CLOSED表中的子节点进行重复扩展的问题。,A*条件举例,八数码问题 W(n) = “不其在位”的将牌数(h*(n)) P(n) = 将牌“不其在位”的距离和(h*(n)),将牌1:1 将牌2:1 将牌6:1 将牌8:2,W(n)=4 P(n)=5,h(n)=P(n)的搜索树,该八数码问题取不同启发函数,应用A*算法求得最佳解时所扩展和生成的节点数。当h(n)=0时,A*算法就变成了广度优先搜索算法。 请大家上机验证一下!,与或树的搜索策略,与或树的一般搜索过程 与或树的

26、广度优先搜索 与或树的深度优先搜索 与或树的有序搜索 博弈树的启发式搜索 剪枝技术,与或树的一般搜索过程,用分解或等价变换算符通过搜索生成与或树,最终应能标识出初始节点(对应于原问题)为可解节点(原问题有解)或不可解节点(原问题无解)。 与或树搜索的目标是寻找解树,从而求得原问题的解。 可解标识过程:由可解子节点来确定其父节点、祖父节点等为可解节点的过程。 不可解标识过程:由不可解子节点来确定其父节点、祖父节点等为不可解节点的过程。 这两个过程都是自下而上进行的。,由于与或树搜索的目标是寻找解树,因此 如果已经确定某个节点为可解节点,则其不可解的后裔节点就不再有用(不会出现在最终的解树上),可

27、从搜索树中删去。 如果已经确定某个节点为不可解节点,则其全部后裔节点就不再有用,可从搜索树中删去(也不会出现在最终的解树上);但当前这个不可解节点还不能删去,以后它还要用来判断其先辈节点的可解性。,与或树的一般搜索过程(1)把原始问题作为初始节点S0,并把它作为当前节点。(2)应用分解或等价变换算符对当前节点进行扩展。(3)为每个子节点设置指向父节点的指针。(4)选择合适的子节点(依据不同的搜索策略)作为当前节点,反复执行第2、3步,在此其间要多次调用可解标识过程和不可解标识过程(何时调用?),直到初始节点被标识为可解或不可解节点为止。,与或树的广度优先搜索,先产生的节点先扩展,与或树的深度优

28、先搜索,后产生的节点(当前节点的子节点)先扩展,搜索与或树的A*算法 求代价最小的解树(最优解树),根据代价确定搜索路线的启发式搜索策略 节点评价方法 A*算法中,对节点n的评价,实际上是对“初始节点-节点n -目标节点”这一条完整路径的评价 AO*算法中,由于“与”节点的存在,解对应的不再是一条简单的路径,而是一棵子树(解树),因此对节点的评价,实际上是对其子树的评价,与或树的有序搜索(AO*算法),解树的代价初始节点S0的代价 (1) 如果x是终止节点,h(x)=0 (2)如果x是“或”节点,h(x)= (3)如果x是“与”节点,和代价法 h(x)=最大代价法 h(x)=(4)如果x不可扩

29、展,且又不是终止节点,h(x)=,h(S0)=13 h(S0)=8,h(S0)=8 h(S0)=7,算法的两个阶段,第一阶段:自上而下的树生成过程 对于每一个已经扩展过的节点, 都设置了一个指针,指向该节点代价最小的那棵子树。树生成过程,就是从初始节点出发,按照该指针向下搜索,找到一个未扩展的节点(端结点)为止。然后扩展该节点。 第二阶段:自下而上的代价计算过程 设n为最新被扩展的节点,重新计算节点n的代价,并设置一个指针指向该节点代价值最小的那棵子树。对于n的父节点,进行同样的计算并调整其指针,重复这一过程,直到初始节点s为止。这时,从s出发,选择那些指针所指向的子树,为当前代价最小的子树(

30、我们称其为希望树)。,A,(6),B,C,D,(3),(4),(5),f(A) = min (B)+(C)+2, (D)+1,G,H,E,F,(4),(4),(5),(7),(10),(9),(6),(11),与或图节点扩展与评价,希望树,子节点的代价由启发函数确定 自下而上计算代价(倒推) 有序搜索的目的是求最优解树,因此,每次扩展的节点都应该是最有希望成为最优解树一部分的节点,由这些节点及其先辈节点(包括初始节点)就构成了希望树 希望树的定义(1) 初始节点S0在希望树T (2) 如果n是具有子节点n1, n2, , nk的或节点,则n的某个子节点ni在希望树T中的充分必要条件是 (3)

31、如果n是与节点,则n的全部子节点都在希望树T中。,AO*算法举例,h(n0)=3h(n1)=2h(n2)=4h(n3)=4h(n4)=1h(n5)=1h(n6)=2h(n7)=0h(n8)=0连接线的代价 =后继节点个数,n0,n1,n2,n3,n4,n5,n6,n7,n8,n0(3),n1(2),n4(1),n5(1),红色代价:4 蓝色代价:3,n0,n1,n2,n3,n4,n5,n6,n7,n8,n4(1),n5(1),红色代价:4 蓝色代价:6,n1 (2-5),n2(4),n3(4),n0(3),n0(3-4),n0,n1,n2,n3,n4,n5,n6,n7,n8,n4(1),n1(

32、5),n2(4),n3(4),n6(2),n7(0),n8(0),n0(4),n5(1),n5(1-2),n0,n1,n2,n3,n4,n5,n6,n7,n8,红色代价:5 蓝色代价:6,n0(4),n4(1),n5(1-2),n1(5),n2(4),n3(4),n6(2),n7(0),n8(0),n0(4-5),n0,n1,n2,n3,n4,n5,n6,n7,n8,n0(5),n4(1),n5(2),n1(5),n2(4),n3(4),n6(2),n7(0),n8(0),n0,n1,n2,n3,n4,n5,n6,n7,n8,n0(5),n4(1),n5(2),n1(5),n2(4),n3(4

33、),n6(2),n7(0),n8(0),n0,n1,n2,n3,n4,n5,n6,n7,n8,初始节点可解,n0(5),n4(1),n5(2),n1(5),n2(4),n3(4),n6(2),n7(0),n8(0),博弈树的搜索,对于单人博弈的一些问题,可用一般的搜索技术进行求解,本节着重讨论双人完备信息这一类博弈问题的搜索策略。由于双人博弈可用与或树来描述,因而搜索就是寻找最佳解树的问题。,所谓双人完备信息,就是两位选手对垒,轮流走步,这时每一方不仅都知道对方过去已经走过的棋步,而且还能估计出对方未来可能的走步。对弈的结果是一方赢(另一方则输),或者双方和局。这类博弈的实例有:一字棋、余一棋

34、、西洋跳棋、国际象棋、中国象棋、围棋等。 对于带机遇性的任何博弈,因不具有完备信息,不属这里讨论范围,但有些论述可推广到某些机遇博弈中应用。,博弈问题可以用产生式系统的形式来描述,例如中国象棋,综合数据库可规定为棋盘上棋子各种位置布局的一种描述,产生式规则是各类棋子合法走步的描述,目标则可规定为将(帅)被吃掉,规则作用于数据库的结果便生成出博弈树。 下面举一个简单的例子说明博弈问题可用与或树表示,并讨论搜索策略应考虑的实际问题。,Grundy博弈,Grundy博弈是一个分钱币的游戏。有一堆数目为N的钱币,由两位选手轮流进行分堆,要求每个选手每次只把其中某一堆分成数目不等的两小堆。例如选手甲把N

35、分成两堆后,轮到选手乙就可以挑其中一堆来分,如此进行下去直到有一位选手先无法把钱币再分成不相等的两堆时就得认输。,我方必胜,中国象棋,一盘棋平均走50步,总状态数约为10的161次方。 假设1毫微秒走一步,约需10的145次方年。 结论:不可能穷举。,博弈树是与或树,双方都希望自己能够获胜。因此,当任何一方走步时,都是试图选择对自己最为有利,而对另一方最为不利的行动方案(理性判断)。 从MAX方的观点看,在博弈过程的每一步,可供自己选择的行动方案之间是“或”的关系,原因在于选择哪个方案完全是由自己决定的;而可供MIN选择的行动方案之间则是“与”的关系,原因是主动权掌握在MIN手里,任何一个方案

36、都有可能被MIN选中,MAX必须防止那种对自己最为不利的情况的发生。 这样,从选手的角度看,博弈树就是一棵与或树,其特点是:(l)博弈的初始状态是初始节点;(2)博弈树中的“或”节点和“与”节点逐层交替出现;(3)整个博弈过程始终站在某一方的立场上,所有能使自己一方获胜的终局都是本原问题,相应的节点是可解节点(终止节点);所有使对方获胜的终局都是不可解节点。,极小极大搜索过程(在不利中寻找有利),极小极大搜索策略是考虑双方对弈若干步之后,从可能的走步中选一步相对较好的着法来走,即在有限的搜索深度范围内进行求解。为此要定义一个静态估价函数f,以便对棋局的势态作出优劣评估,这个函数可根据势态的优劣

37、特征来进行定义(主要用于对端节点的“价值”进行度量静态估值,其它节点的“价值”由其子节点按照极大极小方法倒推得到倒推值)。一般规定有利于MAX的势态,f(p)取正值,有利于MIN的势态,f(p)取负值,势均力敌的势态,f(p)取0值。若f(p),则表示MAX赢,若f(p),则表示MIN赢。下面的讨论规定:顶节点深度d0,MAX代表程序方,MIN代表对手方,MAX先走。,下图是一个表示考虑两步棋的例子,图中端节点给出的数字是用静态估价函数f(p)计算得到,极小极大过程,0,-3,3,-3,-3,-2,1,-3,6,-3,0,3,1,6,0,1,1,极大,极小,一字棋,设程序方MAX的棋子用()表

38、示,对手MIN的棋子用()表示,MAX先走。静态估计函数f(p)规定如下: 1. 若 P是 MAX的必胜局, 则 e(P) = + ;2. 若 P是 MIN的必胜局, 则 e(P) = - ;3. 若P对MAX、MIN都是胜负未定局,则e(P) = e(+P)e(-P) 其中,e(+P)表示棋局 P上有可能使 成三子一线的数目;e(-P)表示棋局 P上有可能使 成三子一线的数目。,f(p)6-42;,在搜索过程中,具有对称性的棋局认为是同一棋局,以大大减少搜索空间。例子(P130),-剪枝,极大极小过程是先生成与/或树,然后再计算各节点的估值,即生成节点和计算估值这两个过程是分离的。在搜索时,

39、需要生成规定深度内的所有节点,因此搜索效率较低。 以棋盘为1515大小的五子棋为例,人机对弈,用极大极小搜索算法,搜索深度为3时,计算机(配 置:CUP赛场1.7 G,内存DDR266 256 M)每走1步要用10 min,搜索的节点数超过了107个;而搜索深度为4时,每走1步要用10个多小时,搜索节点数超过了2109个。 如果能边生成节点边对节点估值,并根据一定的条件,提前剪去一些没用的分枝,那么就可以有效提高搜索效率。在这种思想的基础上,人们提出了-剪枝技术。,-剪枝技术,采用有界深度优先策略,当生成规定深度的节点时,计算叶节点的静态估值,并倒推非端节点的估值。根据倒推结果,在非端节点的向

40、下分枝中,剪掉那些目前未知,但无论如何都不会改变其上层节点倒推值的未扩展分枝。 用剪枝技术,搜索深度为3时,每走1步不到2 min,搜索的节点数小于1.5106个;而搜索深度为4时,每走1步要用160 min,搜索的节点数小于2108个。,-值为MAX节点(“或”节点)倒推值的下界当前子节点中的最大倒推值值为MIN节点(“与”节点)倒推值的上界当前子节点中的最小倒推值,剪枝:若任一MIN节点(“与”节点)的值小于或等于其父节点(MAX节点(“或”节点)的值(即不能升高其父节点的值),则可中止该MIN节点以下的搜索过程。这个MIN节点最终的倒推值就设定为这个值 剪枝:若任一MAX节点(“或”节点

41、)的值大于或等于其父节点( MIN节点(“与”节点)的值(即不能降低其父节点的值),则可以中止该MAX节点以下的搜索过程。这个MAX节点最终的倒推值就设定为这个值。最优-剪枝技术,S0,A,B,C,D,F,G,H,E,I,J,K,L,M,N,P,Q,R,T,4,8,6,1,5,8,0,-6,4,4,1,4,4,5,5,4,4,0,0,-6,=0,0,4,-剪枝示例,S,1,1,5,=-6,=0,搜索的完备性与效率,完备性 搜索效率1、外显率P=L / T L表示从初始节点到目标节点的路径长度;T表示整个搜索过程中所生成的节点数。2、有效分枝因数其中,B为有效分枝因数,它表示在整个搜索过程中每个有效节点平均生成的子节点数。,有效分枝因数与外显率的关系,由此可见:当B一定时,L越大P越小当L 一定时,B越大P越小,小结,基本概念 搜索:确定推理路线,即按何种路线在知识库中寻找可用知识的问题 问题及其求解过程的形式化表示方法 状态空间表示法 状态、算符、状态空间、状态空间图 与/或树表示法 端节点、终止节点、可解节点、解树 状态空间的搜索策略 盲目搜索 启发式搜索 A*算法 与或树的搜索策略 盲目搜索 启发式搜索(AO*算法) 希望树 博弈树的极大极小搜索过程 -剪枝技术,作业(P131133),4.1 4.2 4.3 4.4 4.9 4.10 4.12 4.14 4.15,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报