《数据结构与算法分析》回溯算法之博弈——三连棋(tic tac toe)人机对战AI设计(αβ枝减)

前言:

      这次的回溯算法实在是太有意思了,不过刚刚接触的时候确实不容理解,极小极大策略,αβ枝减看了好几遍才明白整个过程。实现的时候又发现还有细节不明白,想明白之后对于整体的认识又加深了一步。

编码的过程反而没有太大的问题,只有再判断平局的时候,写错了判断的条件,导致没有平局存在,花了点时间调试就解决了。

我的github:

我实现的代码全部贴在我的github中,欢迎大家去参观。

https://github.com/YinWenAtBIT

介绍:

三连棋介绍:

一、规则:

游戏双方交替下子,知道棋盘上没有空余格或者直到分出胜负。胜利条件是任意一方棋子横竖斜练成一条线。未达成胜利则是平局。

二、算法思想:

1. 使用回溯法思想,每个点落子之后,可以达到的最优结果返回,将所有可以落子的格子都考察过后,选择其中最符合自己要求的点。

2. 极小极大策略,设电脑胜利为1,平局为0, 人类胜利为-1, 那么电脑要找出所有点之中极大的那个,人类要找出所有点中极小的那个。

3. 使用递归的方式来下棋,轮到电脑下棋时,电脑选一个点,然后模拟人类下棋,再电脑下棋,直到分出胜负或者平局,模拟人类和电脑下棋时,遵循各自的极小极大策略。

三、 核心算法伪代码:

电脑思考伪代码中,在落子之前,先判断上一轮模拟人的落子是否已经出了结果,没有出结果则继续寻找最优落子点。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值