《DSAA》 10.5.2 博弈

这里的博弈就是指下棋,脑海中立刻闪现出了深蓝,阿尔法狗等等光辉形象,当然那些太高大上了,超出我的智商范围,这里讨论的是最简单的三连棋(tic-tac-toe),也许基本原理和深蓝阿尔法狗都差不多吧。三连棋的玩法是:一个 3 × 3 的棋盘,一方执黑一方执白轮流落子,先在横或竖或斜三个方向上连成3个的一方获胜。

这里我们采用的策略被称为极大极小策略,它根据当前的局势给棋盘上的位置打分,如果占据某个位置将获胜,那么这个位置就是+1,平局为0,失败为-1,这个能直接决定这局棋输赢的位置被称为终端位置。

要获胜当然是要求出当前局面中最大值的位置,用遍历的方法,先试着占据一个位置,该位置被占据后,转而求最小值的位置 (实际上这是换位思考,即替对方求当前局面的最大值),这样递归地轮流求最大值和最小值,直到出现终端位置,如果不是所希望的最大位置则回溯,再遍历其它可能的位置。

原书给出了求最大值的伪代码,实现时的问题主要是如何判断一个位置是否+1的终端位置,我用了穷举的办法,其实一共8种可能:3横3竖外加2条对角线,逐一比对就可以了。

下面是我(先走)和该程序对弈的结果,它实际上是不可能输的:






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值