人工智能第五章——对抗搜索(博弈搜索)

摘要

本文会讲清楚:
1)博弈搜索
2)MiniMax算法
3)Alpha-Beta剪枝算法

一、博弈搜索概念

在多Agent环境中(竞争环境),每个Agent的目标之间是有冲突的,所以就引出了对抗搜索(Adversarial search problems)(通常称为博弈)。

Games are a form of multi-agent environment. 人工智能中的博弈通常指博弈论专家们称为有完整信息的,确定性的,轮流行动的,两个游戏者的零和游戏(如象棋)。

由于在博弈问题中,搜索图(树)实在太大,A*搜索效率是很低的。在博弈搜索的算法中,剪枝允许我们在搜索树中忽略那些不影响最后决定的部分,启发式的评估函数允许在不进行完全搜索的情况下,估计某状态的真实效用值。

博弈问题的的6个元素:
1) S0 S 0 :初始状态(游戏开始时的情况)
2)Player(s):定义此时该谁动
3)Actions(s):此状态下的合法移动集合
4)Result(s,a):转移模型,定义行动的结果
5)Terminal-test(s):终止测试,游戏结束返回真,否则假。
6)Utility(s,p):效用函数,定义游戏者p在终止状态s下的数值。 零和博弈是指所有棋手的收益之和在每个棋局实例中都相同。国际象棋中是0+1, 1+0或1/2+1/2。

二、MiniMax算法

这里写图片描述
图2.1 一图看懂MiniMax算法

在该算法中,每个节点都有一个极小极大值,即为MiniMax(n)。Max始终想要最大的MiniMax值,Min始终想要最小的MiniMax值。
那么MiniMax(n)值怎么取呢,假设两个游戏者始终按照最优策略行棋,那么节点的极小极大值就是对应状态的效用值(Utility(s))。

极大极小算法:采用了简单的递归算法计算每个后继的极小极大值,直接实现上面公式的定义,递归算法自上而下一直前进到树的叶节点,然后随着递归回溯通过搜索树把极小极大值回传。

MiniMax算法对博弈树执行完整的深度优先搜索,如果树的最大深度是m,在每个节点合法的行棋有b个,时间复杂度: O(bm) O ( b m ) ,空间复杂度:O(bm)(一次性生成所有后继),O(m)(每次只生成一个后继)。 然而,对于真实的游戏,这样的时间开销完全不实用,但是此算法仍然可以作为对博弈进行数学分析和设计实验算法的基础。

2.2 多人博弈时的最优决策

比如说A,B,C三个人玩游戏,那么效用值就是一个向量

三、Alpha-Beta剪枝算法

这里写图片描述
图3.1 Alpha-Beta剪枝实例(易理解)

这里写图片描述
图3.2 Alpha-Beta剪枝算法

四、文末诗词

晓看天色暮看云,行也思君,坐也思君。
                 ——唐寅《一剪梅·雨打梨花深闭门》

  • 11
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
⼈⼯智能技术导论——博弈搜索 我在之前整理过⼀篇博客关于博弈论和纳什均衡的⼏个例⼦ 这⾥来介绍博弈搜索。 ⼀、博弈树的概念 ⼀、博弈树的概念 在博弈过程中, 任何⼀⽅都希望⾃⼰取得胜利。因此,当某⼀⽅当前有多个⾏动⽅案可供选择时, 他总是挑选对⾃⼰最为有利⽽对对⽅最 为不利的那个⾏动⽅案。 此时,如果我们站在A⽅的⽴场上,则可供A⽅选择的若⼲⾏动⽅案之间是"或"关系, 因为主动权操在A⽅⼿⾥,他或 者选择这个⾏动⽅案, 或者选择另⼀个⾏动⽅案, 完全由A⽅⾃⼰决定。当A⽅选取任⼀⽅案⾛了⼀步后,B⽅也有若⼲个可供选择的⾏动⽅案, 此时这些⾏动⽅案对A⽅来说它们之间则是"与"关系,因为这时主动权操在B⽅⼿⾥,这些可供选择的⾏动⽅案中的任何⼀个都可能被B⽅选 中, A⽅必须应付每⼀种情况的发⽣。 这样,如果站在某⼀⽅(如A⽅,即在A要取胜的意义下), 把上述博弈过程⽤图表⽰出来, 则得到的是⼀棵"与或树"。 描述博弈过程的与 或树称为博弈树,它有如下特点:   (1) 博弈的初始格局是初始节点。   (2) 在博弈树中, "或"节点和"与"节点是逐层交替出现的。⾃⼰⼀⽅扩展的节点之间是"或"关系, 对⽅扩展的节点之间是"与"关 系。双⽅轮流地扩展节点。   (3) 所有⾃⼰⼀⽅获胜的终局都是本原问题, 相应的节点是可解节点;所有使对⽅获胜的终局都是不可解节点。 ⼆、极⼩极⼤值分析法 ⼆、极⼩极⼤值分析法 在⼆⼈博弈问题中,为了从众多可供选择的⾏动⽅案中选出⼀个对⾃⼰最为有利的⾏动⽅案, 就需要对当前的情况以及将要发⽣的情况进 ⾏分析,从中选出最优的⾛步。最常使⽤的分析⽅法是极⼩极⼤分析法。 其基本思想是: (1) 设博弈的双⽅中⼀⽅为A,另⼀⽅为B。然后为其中的⼀⽅(例如A)寻找⼀个最优⾏动⽅案。   (2) 为了找到当前的最优⾏动⽅案, 需要对各个可能的⽅案所产⽣的后果进⾏⽐较。具体地说, 就是要考虑每⼀⽅案实施后对⽅可能采取 的所有⾏动, 并计算可能的得分。 (3) 为计算得分,需要根据问题的特性信息定义⼀个估价函数, ⽤来估算当前博弈树端节点的得分。此时估算出来的得分称为静态估值。 (4) 当端节点的估值计算出来后, 再推算出⽗节点的得分, 推算的⽅法是:对"或"节点, 选其⼦节点中⼀个最⼤的得分作为⽗节点的得 分,这是为了使⾃⼰在可供选择的⽅案中选⼀个对⾃⼰最有利的⽅案;对"与"节点, 选其⼦节点中⼀个最⼩的得分作为⽗节点的得分,这是为 了⽴⾜于最坏的情况。这样计算出的⽗节点的得分称为倒推值。 (5) 如果⼀个⾏动⽅案能获得较⼤的倒推值, 则它就是当前最好的⾏动⽅案。 倒推值的计算 在博弈问题中,每⼀个格局可供选择的⾏动⽅案都有很多, 因此会⽣成⼗分庞⼤的博弈树。据统计,西洋跳棋完整的博弈树约有1040个节 点。试图利⽤完整的博弈树来进⾏极⼩极⼤分析是困难的。可⾏的办法是只⽣成⼀定深度的博弈树, 然后进⾏极⼩极⼤分析,找出当前最好的 ⾏动⽅案。在此之后, 再在已选定的分⽀上扩展⼀定深度, 再选最好的⾏动⽅案。如此进⾏下去, 直到取得胜败的结果为⽌。⾄于每次⽣成博 弈树的深度, 当然是越⼤越好, 但由于受到计算机存储空间的限制, 只好根据实际情况⽽定。 例 ⼀字棋游戏。设有如图(a)所⽰的九个空格, 由A, B⼆⼈对弈, 轮到谁⾛棋谁就往空格上放⼀只⾃⼰的棋⼦, 谁先使⾃⼰的棋⼦构成"三⼦ 成⼀线"谁就取得了胜利。 ⼀字棋 设A的棋⼦⽤"a"表⽰, B的棋⼦⽤"b"表⽰。为了不致于⽣成太⼤的博弈树,假设每次仅扩展两层。估价函数定义如下:  设棋局为P,估价函数为e(P)。    (1) 若P是A必胜的棋局, 则e(P)=+ 。   (2) 若P是B必胜的棋局, 则e(P)=- 。  (3) 若P是胜负未定的棋局, 则 e(P)=e(+P)-e(-P) 其中e(+P)表⽰棋局P上有可能使a成为三⼦成⼀线的数⽬; e(-P)表⽰棋局P上有可能使b成为三⼦成⼀线的数⽬。 例如, 对于图(b)所⽰的棋局, 则 按照棋盘上红⾊连线安放棋⼦a使得三⼦成⼀线,共6条连线。 按照棋盘上蓝⾊连线安放棋⼦b使得三⼦成⼀线,共4条连线。 e(P)=6-4=2 另外,我们假定具有对称性的两个棋局算作⼀个棋局。还假定A先⾛棋, 我们站在A的⽴场上。 下图给出了A的第⼀着⾛棋⽣成的博弈树。图中节点旁的数字分别表⽰相应节点的静态估值或倒推值。由图可以看出, 对于A来说最好的⼀着 棋是S3,因为S3⽐S1和S2有较⼤的倒推值。 ⼀字棋极⼩极⼤搜索 在A⾛S3这⼀着棋后,B的最优选择是S4, 因为这⼀着棋的静态估值较⼩,对A不利。不管B选择S4或S5,A都要再次运⽤极⼩极⼤分析法产⽣ 深度为2的博弈树,以决定下⼀步应该如何⾛棋, 其过程与上⾯类似, 不再

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值