五子棋博弈树剪枝c语言,五子棋AI博弈树之带Alpha-Beta剪枝的极大极小过程函数...

本文介绍了五子棋AI中使用Alpha-Beta剪枝来提高极大极小搜索效率的方法。通过Alpha-Beta剪枝,可以避免对无效分支的搜索,从而加快决策速度。代码示例展示了如何在C语言中实现这一过程。
摘要由CSDN通过智能技术生成



在博弈树的极大极小过程中是对每一个树节点(称它为全局搜索吧)都要计算其估值,然后在这些估值中做出选择。如果搜索比较大的话,全局搜索的方式效率会非常低,因为有一些节点根本不需要搜索。那么怎么加快搜索的速度呢?可以采用Alpha-Beta剪枝方法。

Alpha-Beta剪枝方法如下:

任何Max节点n的alpha值如果大于或等于它先辈节点的bete值,那么节点n以下的分支就不用搜索了。这是beta剪枝。

任何Min节点的beta值如果小于或等于它先辈节点的alpha值,那么节点n以下的分支也不用搜索了。这是alpha剪枝。

下面给出代码:

// 带Alpha-Beta剪枝的极大极小过程函数,按指定的深度,搜索产生一个走法

int ChessAI::maxMinWithAlphaBetaCut(int** chessBoard, int whiteOrBlack, int depth, Point opPos, int alpha, int beta)

{

int bestValue, curValue; // bestValue是最好的分数, curValue是试探下子后,该次下子的分数

if (isBE5AtPoint(chessBoard, whiteOrBlack == 2 ? 1 : 2, opPos)) // 如果在这里可以分出胜负

{

if (whiteOrBlack == 1) // 电脑赢。这里为什么不是2呢?因为这里whiteOrBlack与opPos是相反关系

{

return FIVE_ALIKE;

}

e

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值