- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
博弈算法与游戏策略 朱全民 一个简单的问题 Grundy博弈 有一堆数目为n的钱币,由两位选手轮流进行分堆,要求每个选手每次只把其中某一堆分成数目不等的两小堆。例如选手甲把n分成两堆后,轮到乙就可以挑其中一堆来分,如此进行下去,直到有一位选手先无法把钱币分成不相等的两堆时就得认输。 状态空间图 与或图 规则:if (x1,…,xn,Max) and (xn=y+z,y z) then (x1,…,xi-1,y,z,xi+1,…,xn,Min) 上图节点A是Max的目标,而节点B,C则是Min的目标。 搜索策略需要考虑的问题是: 对Min走后的每一个Max节点,必须证明Max对Min可能的每一个棋局对弈后能获胜,即Max必须应付Min的所有的招法,这是一个“与” 的含义,因此,含有Max的节点可看成与节点。 对Max走后的每一个Min节点,只须证明Max有一步走赢就可以,即Max只要考虑走一步棋使Min无法招架就成,因此含有Min的节点可看成“或” 节点。 这样对弈过程的搜索图就呈现出“与或图”的形式。 Grundy的与或搜索图 估价函数 极大极小搜索策略是考虑双方对弈若干步之后,从能的走步中选一步相对好棋的着法来走,即在有限的搜索深度范围内进行求解。 为此,要定义一个静态估价函数f,以便对棋局的势态作出优劣估值,这个函数可根据事态优劣特征进行定义,一般规定有利于Max的势态f(p)取正值,有利于Min的势态f(p)取负值,势均力敌,f(p)=0 因此,f(p)=+∞,表示Max赢, f(p)=-∞表示Min赢。 规定,顶点的深度为0,Max表示程序方,Min表示对手方 对于Min节点,应考虑最坏的情况,故其估计值应取其子节点的最小值,而对于Max节点,可考虑最好的情况,故取其子节点的最大值。 极大极小的取值过程 极大极小的算法框架 第一步:从s节点出发按宽度有先的方法,生成规定深度范围的博弈树。 假设搜索的最大深度为K: 初始化博弈树,放入初始节点s入open表; closed:=() ; repeat if f(s) nil then 游戏退出或开始走步 ; if n 可直接判定赢、输或平局 then f(n)?+∞/-∞/0 else [ ni ? expand(n); add(ni, T); depth:=depth(n)+1 add(ni, open); add(n,closed); n ?open表的第一个节点 ] until open表为空 or depth k 极大极小的算法框架 第二步:对该博弈树,自底向上逐级计算每个节点的静态估价函数值。 按给定的估价函数计算最底层的静态估价函数值; repeat {从下往上倒推计算各估计值} if f(s) nil then 游戏退出或开始走步 n ?closed表的第一个节点 if n ∈ Max方 and f(nci)有值 then [ f(n)?max { f(nci) }; remove(n,closed) ] if n ∈ Min方 and f(nci)有值 then [ f(n)?min { f(nci) }; remove(n,closed) ] until closed表为空; 第三步:按找估价函数值决定走步,如果对手响应走步以后,再以当前状态作为起始状态s,转第一步。 #棋游戏 在九宫棋盘上,两位选手轮流在棋盘上摆各自的棋子(每次一枚),谁先取得三子一线,谁就取胜。 设程序方Max用黑子“●”,而对手Min用白子“○” 估计函数: f(p) = 所有空格都放上黑子后,Max的三子成线总数 - 所有空格都放上白子后,Min的三子成线总数 若p为Max方获胜,则f(p)=+∞ p为Min方获胜,则f(p)=-∞ 右图的f(p)=6-4=2 由f(p) 0可以看出,这个棋局的对Max有利。 深度为2的#棋游戏的搜索过程(1) 深度为2的#棋游戏的搜索过程(2) 深度为2的#棋游戏的搜索过程(3) α-β剪枝 α-β剪枝 α剪枝:若任一极小值层节点的β值小于或等于它任一先辈极大值层节点的α值,即α(先辈层)≥ β(后继层),则可终止该最小值层中这个min节点的搜索过程。这个min节点最终的倒推值就确定为β值。 β剪枝:若任一极小值层节点的α值大于或
文档评论(0)