第5部分对抗搜索.ppt

上传人:本田雅阁 文档编号:2538842 上传时间:2019-04-05 格式:PPT 页数:58 大小:1.18MB
返回 下载 相关 举报
第5部分对抗搜索.ppt_第1页
第1页 / 共58页
第5部分对抗搜索.ppt_第2页
第2页 / 共58页
第5部分对抗搜索.ppt_第3页
第3页 / 共58页
亲,该文档总共58页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《第5部分对抗搜索.ppt》由会员分享,可在线阅读,更多相关《第5部分对抗搜索.ppt(58页珍藏版)》请在三一文库上搜索。

1、第5章 对抗搜索,中国科大 计算机学院,第部分 问题求解,本章内容,5.1 博弈 5.2 博弈中的优化决策 5.3 -剪枝 5.4 不完美的实时决策 5.5 随机博弈 5.6 部分可观察的博弈 5.7 博弈程序发展现状 5.8 其他途径,5.1 博弈,概述 Grundy博弈,概述,在博弈问题中比如说象棋搜索是在博弈者双方之间进行的。 任何一方在搜索时,都必须要考虑对方可能要采用的走步。 对于一个优秀的博弈者来说,应考虑的不只是对方一步的走法,而是若干步的走法。 这一过程一般来说是动态进行的。在考虑若干步走法以后,下了一步棋;而在对方走棋之后,还要再次考虑若干步走法,决定下一步的走法,而不是一劳

2、永逸,搜索一次就决定了所有的走法。,概述,本章所讲的博弈:主要指的是类似于象棋这样的游戏问题。 这类问题有以下一些特点: 双人对弈,对垒的双方轮流走步。 信息完备,对垒双方所得到的信息是一样的,不存在一方能看到,而另一方看不到的情况。 零和。即对一方有利的棋,对另一方肯定是不利的,不存在对双方均有利、或均无利的棋。对弈的结果是一方赢,而另一方输,或者双方和棋。,概述,双人完备信息博弈: 指两位选手对垒,轮流走步,这时每一方不仅都知道对方过去已经走过的棋步,而且还能估计出对方未来可能的走步。 对弈的结果是一方赢(另一方则输),或者双方和局。 这类博弈的实例有:一字棋、余一棋、西洋跳棋、国际象棋、

3、中国象棋、围棋等。 机遇性博弈:存在不可预测性的博弈,例如掷币等。 例如:西洋双陆棋。,Grundy博弈,Grundy博弈是一个分钱币的游戏。 有一堆数目为N的钱币,由两位选手轮流进行分堆,要求每个选手每次只把其中某一堆分成数目不等的两小堆。 例如,选手甲把N分成两堆后,轮到选手乙就可以挑其中一堆来分。 如此进行下去,直到有一位选手先无法把钱币再分成不相等的两堆时就得认输。 对于这样的简单博弈问题,可以生成出它的状态空间图。这样就有可能从状态空间图中找出取胜的策略。,Grundy博弈,当初始钱币数为7时的状态空间图,MIN代表对方走 MAX代表我方走,MAX存在完全取胜的策略,Grundy博弈

4、,搜索策略要考虑的问题: 对MIN走步后的每一个MAX节点,必须证明MAX对MIN可能走的每一个棋局对弈后能获胜,即MAX必须考虑应付MIN的所有招法,这是一个与的含意。 因此含有MAX符号的节点可看成与节点。 对MAX走步后的每一个MIN节点,只须证明MAX有一步能走赢就可以,即MAX只要考虑能走出一步棋使MIN无法招架就成。 因此含有MIN符号的节点可看成或节点。 因此,对弈过程的搜索图就呈现出与或图表示的形式。,Grundy博弈,寻找MAX的取胜策略和求与或图的解图相对应。 MAX要取胜,必须对所有与节点取胜,但只需对一个或节点取胜,这就是一个解图。 因此,寻找一种取胜的策略就是搜索一个

5、解图的问题,解图就代表一种完整的博弈策略。 对于Grundy这种较简单的博弈,或者复杂博弈的残局,可以用类似于与或图的搜索技术求出解图,解图代表了从开局到终局任何阶段上的弈法。 显然这对许多博弈问题是不可能实现的。例如,中国象棋,国际象棋和围棋等。,Grundy博弈,对于复杂的博弈问题,因此即使用了强有力的启发式搜索技术,也不可能使分枝压到很少。 因此,这种完全取胜策略(或和局)必须丢弃。 应当把目标确定为寻找一步好棋,等对手回敬后再考虑寻找另一步好棋这种实际可行的实用策略。 这种情况下每一步的结束条件可根据时间限制、存储空间限制或深度限制等因素加以确定。 搜索策略可采用宽度、深度或启发式方法

6、。一个阶段搜索结束后,要从搜索树中提取一个优先考虑的“最好的“走步,这就是实用策略的基本点。,本章内容,5.1 博弈 5.2 博弈中的优化决策 5.3 -剪枝 5.4 不完美的实时决策 5.5 随机博弈 5.6 部分可观察的博弈 5.7 博弈程序发展现状 5.8 其他途径,5.2 博弈中的优化决策,极小极大值法 多人游戏中的最优决策,极小极大搜索过程,人类下棋的方法:实际上采用的是一种试探性的方法。 首先假定走了一步棋,看对方会有那些应法,然后再根据对方的每一种应法,看我方是否有好的回应 这一过程一直进行下去,直到若干步以后,找到了一个满意的走法为止。 初学者可能只能看一、两个回合,而高手则可

7、以看几个,甚至十几个回合。 极小极大搜索方法:模拟的就是人的这样一种思维过程。,极小极大搜索过程,极小极大搜索策略是考虑双方对弈若干步之后,从可能的走步中选一步相对好棋的着法来走,即在有限的搜索深度范围内进行求解。 定义一个静态估计函数f,以便对棋局的势态(节点)作出优劣估值。 这个函数可根据势态优劣特征来定义(主要用于对端节点的“价值”进行度量)。 一般规定:有利于MAX的势态,f(p)取正值;有利于MIN的势态,f(p)取负值;势均力敌的势态,f(p)取0值。 若f(p),则表示MAX赢,若f(p),则表示MIN赢。,极小极大搜索过程,注意:不管设定的搜索深度是多少层,经过一次搜索以后,只

8、决定了我方一步棋的走法。 等到对方回应一步棋之后,需要在新的棋局下重新进行搜索,来决定下一步棋如何走。 极小极大过程是一种假定对手每次回应都正确的情况下,如何从中找出对我方最有利的走步的搜索方法。,极小极大搜索过程,规定:顶节点深度d0,MAX代表程序方,MIN代表对手方。MAX先走。 例:一个考虑2步棋的例子。,极小极大搜索过程,规定:顶节点深度d0,MAX代表程序方,MIN代表对手方。MAX先走。 例:一个考虑2步棋的例子。,端节点给出的数字是用静态估计函数f(p)计算得到。,过程MINIMAX, T:(s,MAX),OPEN:(s),CLOSED:( );开始时树由初始节点构成,OPEN

9、表只含有s。 LOOP1: IF OPEN( )THEN GO LOOP2; n:FIRST(OPEN),REMOVE(n,OPEN),ADD(n,CLOSED); IF n可直接判定为赢、输或平局 THEN f(n):0,GO LOOP1 ELSE EXPAND(n)ni,ADD(ni,T) IF d(ni)k THEN ADD(ni,OPEN),GO LOOP1 ELSE 计算f(ni ),GO LOOP1;ni达到深度k,计算各端节点f值。 LOOP2:IF CLOSEDNIL THEN GO LOOP3 ELSE np:FIRST(CLOSED); IF(npMAX)(f(nciMIN

10、)有值) THEN f( np ):maxf(nci),REMOVE(np,CLOSED);若MAX所有子节点均有值,则该MAX取其极大值。 IF ( np MIN)(f( nci MAX)有值) THEN f( np ):minf(nci),REMOVE(np ,CLOSED);若MIN所有子节点均有值,则该MIN取其极小值。 GO LOOP2; LOOP3:IF f(s)NIL THEN EXIT( ENDM(Move,T) );s有值,则结束或标记走步。,过程MINIMAX,该算法分两个阶段进行: 第一阶段:用宽度优先法生成规定深度的全部博弈树,然后对其所有端节点计算其静态估计函数值。

11、第二阶段:从底向上逐级求非端节点的倒推估计值,直到求出初始节点s的倒推值f(s)为止,此时,等对手响应走步后,再以当前的状态作为起始状态s,重复调用该过程。,例:33棋盘的一字棋,33棋盘的一字棋:九宫格棋盘上,两位选手轮流在棋盘上摆各自的棋子(每次一枚),谁先取得三子一线的结果就取胜。 假设: 程序方MAX的棋子用()表示; 对手MIN的棋子用()表示; MAX先走。,例:33棋盘的一字棋,静态估计函数f(p)规定如下: 若p是MAX获胜的格局,则f(p); 若p是MIN获胜的格局,则f(p); 若p对任何一方来说都不是获胜的格局,则f(p)(所有空格都放上MAX的棋子之后,MAX的三子成线

12、(行、列、对角)的总数(所有空格都放上MIN的棋子之后,MIN的三子成线(行、列、对角)的总数)。,例、当p的格局如下时,则可得f(p)642。,在搜索过程中,具有对称性的棋局认为是同一棋局,可以大大减少搜索空间。,例:33棋盘的一字棋,例:33棋盘的一字棋,假定考虑走两步的搜索过程,利用棋盘对称性的条件,则第一次调用算法产生的搜索树为:,例:33棋盘的一字棋,假设MAX走完第一步后,MAX的对手是在之上的格子下棋子,这时MAX在新格局下调用算法,第二次产生的搜索树为:,例:33棋盘的一字棋,类似地,第三次的搜索树为:,至此MAX走完最好的走步后,不论MIN怎么走,都无法挽回败局,因此只好认输

13、了。,博弈中的优化决策,极小极大值法 多人游戏中的最优决策,多人游戏中的最优决策,许多流行的游戏允许多于两个的参加者。 如何把极小极大思想推广到多人游戏中? 在两人的零和游戏中,由于效用值正好相反,所以二维向量可以简化为一个单一值。 每个节点上的单一评估值要替换成一个向量。 例、一个有三个人A, B和C的游戏中,每个节点都与一个向量相关联。 对于终止状态,该向量给出了从每个人的角度出发得到的状态效用值。,多人游戏中的最优决策,一般来讲,节点n的回传值是该游戏者在节点n选择的效用值最高的后继者的效用值向量。,多人游戏中的最优决策,多人游戏通常会涉及在游戏者之间出现正式或者非正式联盟的情况。 随着

14、游戏的进行,联盟会建立或解散。 在多人游戏中,对每个游戏者来说,联盟是否是最优策略的一个自然结果? 违反盟约会损害社会声誉。 游戏者要在毁约得到的直接利益和被认为不可信任带来的长期弊端之间寻求平衡。,本章内容,5.1 博弈 5.2 博弈中的优化决策 5.3 -剪枝 5.4 不完美的实时决策 5.5 随机博弈 5.6 部分可观察的博弈 5.7 博弈程序发展现状 5.8 其他途径,-剪枝的基本思想,在极小极大搜索方法中,由于要生成指定深度以内的所有节点,其节点数将随着搜索深度的增加成指数增长。 这极大地限制了极小极大搜索方法的使用。 能否在搜索深度不变的情况下,利用已有的搜索信息减少生成的节点数呢

15、?,-剪枝的基本思想,设某博弈问题如下图所示:,-剪枝的基本思想,-搜索过程的基本思想:把博弈树生成和倒推估值结合起来进行,再根据一定的条件判定,有可能尽早修剪掉一些无用的分枝。 为了使生成和估值过程紧密结合,采用有界深度优先策略进行搜索。 当生成达到规定深度的节点时,就立即计算其静态估值函数,而一旦某个非端节点有条件确定其倒推值时就立即计算赋值。,-剪枝的基本思想,极大值层的下界值称为 极小值层的上界值称为,-搜索过程的剪枝规则,剪枝:若任一极小值层节点的值小于或等于它任一先辈极大值层节点的值,即(先辈层)(后继层),则可中止该极小值层中这个MIN节点以下的搜索过程。这个MIN节点最终的倒推

16、值就确定为这个值。 剪枝:若任一极大值层节点的值大于或等于它任一先辈极小值层节点的值,即(后继层)(先辈层),则可以中止该极大值层中这个MAX节点以下的搜索过程。这个MAX节点的最终倒推值就确定为这个值。 根据这些剪枝规则,很容易给出-算法描述,显然剪枝后选得的最好优先走步,其结果与不剪枝的MINIMAX方法所得完全相同,因而-过程具有较高的效率。,-搜索过程的博弈树,-剪枝举例 约定: 在搜索过程中,节点的生成次序是从上到下,从左到右进行的。 图中带圈的数字,表示节点的计算次序。在叙述时,为了表达上的方便,该序号也同时表示节点。 当一个节点有两个以上的序号时,不同的序号,表示的是同一个节点在

17、不同次序下计算的结果。,-搜索过程的博弈树,-剪枝举例,-搜索过程,在进行-剪枝时,应注意以下几个问题: 比较都是在极小节点和极大节点间进行的;极大节点和极大节点的比较,或者极小节点和极小节点间的比较是无意义的。 在比较时注意是与“先辈层”节点比较,不只是与父辈节点比较。当然,这里的“先辈层”节点,指的是那些已经有了值的节点。 只有一个节点的值“固定”以后,其值才能够向其父节点传递。,-搜索过程,在进行-剪枝时,应注意以下几个问题: -剪枝方法搜索得到的最佳走步与极小极大方法得到的结果是一致的,-剪枝并没有因为提高效率,而降低得到最佳走步的可能性。 在实际搜索时,并不是先生成指定深度的搜索图,

18、再在搜索图上进行剪枝。 如果这样,就失去了-剪枝方法的意义。 在实际程序实现时,首先规定一个搜索深度,然后按照类似于深度优先搜索的方式,生成节点。在节点的生成过程中,如果在某一个节点处发生了剪枝,则该节点其余未生成的节点就不再生成了。,剪枝的效率问题,若以最理想的情况进行搜索,即对MIN节点先扩展最低估值的节点(若从左向右顺序进行,则设节点估计值从左向右递增排序),MAX先扩展最高估值的节点(设估计值从左向右递减排序),则当搜索树深度为D,分枝因数为B时, 若不使用-剪枝技术,搜索树的端节点数为:,若使用-剪枝技术,可以证明理想条件下生成的端节点数最少,有,剪枝的效率问题,比较后得出最佳-搜索

19、技术所生成深度为D处的端节点数约等于不用-搜索技术所生成深度为D2处的端节点数。 这就是说,在一般条件下使用-搜索技术,在同样的资源限制下,可以向前考虑更多的走步数,这样选取当前的最好优先走步,将带来更大的取胜优势。,其他改进方法,使用-剪枝技术,当不满足剪枝条件(即不大于等于 )时,若值比值大不了多少或极相近,这时也可以进行剪枝。 以便有条件把搜索集中到会带来更大效果的其他路径上,这就是中止对效益不大的一些子树的搜索,以提高搜索效率。 不严格限制搜索的深度,当到达深度限制时,如出现博弈格局有可能发生较大变化时(如出现兑子格局),则应多搜索几层,使格局进入较稳定状态后再中止,这样可使倒推值计算

20、的结果比较合理,避免考虑不充分产生的影响,这是等候状态平稳后中止搜索的方法。,其他改进方法,当算法给出所选的走步后,不马上停止搜索,而是在原先估计可能的路径上再往前搜索几步,再次检验会不会出现意外,这是一种增添辅助搜索的方法。 对某些博弈的开局阶段和残局阶段,往往总结有一些固定的对弈模式。 因此,可以利用这些知识编好走步表,以便在开局和结局时使用查表法。只是在进入中盘阶段后,再调用其他有效的搜索算法,来选择最优的走步。,其他改进方法,以上这些方法还不能全面反映人们弈棋过程实际所使用的一切推理技术,也未涉及棋局的表示和启发函数问题。 高明的棋手对棋局的表示有独特的模式。 博弈过程中,若在一个短时

21、期内短兵相接,进攻和防御的战术变化剧烈,这些情况如何在搜索策略中加以考虑? 基于极小极大过程的一些方法都设想对手走的总是最优走步,即我方总应考虑最坏的情况。实际上,再好的选手也会有失误,如何利用失误加强攻势,也值得考虑。 总之要真正解决具体的博弈搜索技术,有许多更深入的问题需要作进一步的研究和探讨。,本章内容,5.1 博弈 5.2 博弈中的优化决策 5.3 -剪枝 5.4 不完美的实时决策 5.5 随机博弈 5.6 部分可观察的博弈 5.7 博弈程序发展现状 5.8 其他途径,不完整的实时决策,MINIMAX或剪枝算法 理想情况:算法一直搜索,直到至少一部分空间到达终止状态,从而对端节点做出准

22、确评价。 这样的搜索不现实。 实用方法: 用可以估计棋局效用的启发式评价函数评价非终止节点。 用可以决策什么时候运用评价函数的截断测试取代终止测试。,评价函数,评价函数的设计: 应该以和真正的效用函数同样的方式对终止状态进行排序。 效用函数(又称目标函数或者收益函数):对终止状态给出一个数值。例如,在国际象棋中,结果是赢、输或平局,分别赋予1,1或0。 评价函数的计算不能花费太多的时间! 对于非终止状态,评价函数应该和取胜的实际机会密切相关。,评价函数,在计算能力有限情况下,评价函数能做到最好的就是猜测最后的结果。 例如,国际象棋并不是几率游戏,而且也确切知道当前状态;但计算能力有限,从而导致

23、结果必然是不确定的。 大多数评价函数的工作方式是计算状态的不同特征。 例如,国际象棋中兵的数目、象的数目、马的数目等等。 这些特征一起定义了状态的各种类别或者等价类。 但因类别太多而几乎不可能去估计取胜概率。,评价函数,大多数评价函数计算每个特征单独的数值贡献,然后把它们结合起来找到一个总值。 加权线性评价函数,每个wi是一个权值,fi是棋局的某个特征。,评价函数,例如,国际象棋的入门书中给出各个棋子的估计子力价值。 兵值1分; 马、象值3分; 车值5分; 后值9分。 其它特征。例如,“好的兵阵”和“王的安全性”可能值半个兵。 把这项特征值简单相加就得到了一个对棋局的估计。 经验表明,如果其它

24、都一样,则 在领先超过1分的可靠子力优势下很可能取得胜利; 3分的优势几乎足以肯定取胜。,评价函数,(a)黑棋有1个马、2个兵的优势,能够取胜。 (b)黑棋会被白棋吃掉皇后,从而失败。,评价函数,加权线性评价函数的假设:每个特征的贡献独立于其它特征的值。 假设太强! 例如,象赋予3分忽略了象在残局中能够发挥更大作用的事实。 当前国际象棋和其它游戏的程序也采用非线性的特征组合。,评价函数,注意:特征和权值并不是国际象棋规则的一部分。 它们只是人类下棋的经验总结。 在很难归纳这样的经验规律的游戏中,怎么办? 评价函数的权值可以通过机器学习来估计。,截断搜索,最直接的控制搜索次数的方法:设置一个固定

25、的深度限制。 更鲁棒的方法:使用迭代深入搜索。 具体实现:不断加大深度优先限制。首先为0,接着为1,然后为2,依此类推。 当时间用完时,程序就返回目前已完成的最深的搜索所选择的招数。,截断搜索,由于评价函数的近似性,这些方法可能导致错误。 需要更为复杂的截断测试。 评价函数应该只用于那些静止的棋局。 静止的棋局:评价值在很近的未来不会出现大的摇摆变化棋局。 例如,在国际象棋中,有很好的吃招的棋局对于只统计子力的评价函数来说就不能算时静止的。 非静止的棋局可以进一步扩展直到静止的棋局,这种额外的搜索称为静止搜索。 有时候只考虑某些类型的招数,诸如吃子,能够快速地解决棋局的不确定性。,单一扩展和前

26、向剪枝,单一扩展:搜索在给定的棋局中一步明显好于其它招数的行棋。 对“一步明显好于其它招数的行棋”进行超过一般深度限制的搜索。 目的:避免地平线效应且不增加太多搜索代价。 前向剪枝:在某个结点上不需要进一步搜索而直接剪枝。 有危险!只在某些特殊的情况下使用才是安全的。,不完整的实时决策,假设已经实现: 国际象棋的评价函数 使用静止搜索的合理截断测试 一个很大的调换表(存储以前见过的棋局的哈希表一般被称做调换表) 若在“最新的PC”上可每秒生成和评价约一百万个节点,则允许我们在标准的时间控制下(每步棋3分钟)对每步棋可搜索约2亿个节点。 国际象棋的分支因子平均为35,355约为5亿。 如果使用极大极小搜索,只能向前预测5层,很容易被平均水平的人类棋手欺骗。 如果使用alpha-beta搜索,可以预测大约10层,接近专业棋手水平。,

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1