你好!我正在制作一个国际象棋引擎,因为我想实现迭代深化,我需要找到主要的变化(引擎认为最佳的移动顺序)。但是,我没有在 python 的网络中找到任何伪代码示例,而且由于我的 alphabeta 函数是递归的,我真的很难理解它。
您能否给我一些提示或伪代码示例如何做到这一点?非常感谢。
这是我的 alpha beta 函数,它只返回移动的估值,而不是移动本身:
def alphaBeta(self, board, rules, alpha, beta, ply, player):
""" Implements a minimax algorithm with alpha-beta pruning. """
if not ply:
return self.positionEvaluation(board, rules, player)
move_list = board.generateMoves(rules, player)
if not len(move_list):
return self.mateCheck(rules, board, player, ply)
for move in move_list:
board.makeMove(move, player)
current_eval = -self.alphaBeta(board, rules, -beta, -alpha, ply - 1, board.getOtherPlayer(player))
board.unmakeMove(move, player)
if current_eval >= beta:
return beta
elif current_eval > alpha:
alpha = current_eval
return alpha