Python 从alpha beta返回移动
我正在尝试使用alpha-beta-minimax修剪算法从我的棋盘上返回一个有效的移动。算法返回正确的值,但我不知道如何返回移动。对于这段代码,当bestValue的值大于当前alpha时,我希望返回Python 从alpha beta返回移动,python,minimax,alpha-beta-pruning,Python,Minimax,Alpha Beta Pruning,我正在尝试使用alpha-beta-minimax修剪算法从我的棋盘上返回一个有效的移动。算法返回正确的值,但我不知道如何返回移动。对于这段代码,当bestValue的值大于当前alpha时,我希望返回get_succession_states中的子级。我曾想过在max和min的末尾返回两个值,比如return bestValue,child,但我不知道如何让它与其他调用一起工作 def alpha_beta_pruning(board, depth, alpha, beta, isMaximi
get_succession_states
中的子级。我曾想过在max和min的末尾返回两个值,比如return bestValue,child
,但我不知道如何让它与其他调用一起工作
def alpha_beta_pruning(board, depth, alpha, beta, isMaximizingPlayer):
if depth == 0:
return evaluate_state(board)
if isMaximizingPlayer:
bestValue = -sys.maxint - 1
bestMove = None
for child in get_successor_states(board):
temp_board = copy.deepcopy(board)
temp_board.move_queen(child[0], child[1])
temp_board.shoot_arrow(child[2])
bestValue = max(bestValue, alpha_beta_pruning(temp_board, depth-1, alpha, beta, False))
del temp_board
alpha = max(alpha, bestValue)
if beta <= alpha:
break
return bestValue
else:
bestValue = sys.maxint
for child in get_successor_states(board):
temp_board = copy.deepcopy(board)
temp_board.move_queen(child[0], child[1])
temp_board.shoot_arrow(child[2])
bestValue = min(bestValue, alpha_beta_pruning(temp_board, depth-1, alpha, beta, True))
del temp_board
beta = min(beta, bestValue)
if beta <= alpha:
break
return bestValue
def alpha_beta_修剪(棋盘、深度、alpha、beta、isMaximizingPlayer):
如果深度=0:
返回状态(板)
如果isMaximizingPlayer:
最佳值=-sys.maxint-1
最佳移动=无
对于处于get_继任_州(董事会)的儿童:
临时板=复制。深度复制(板)
临时板移动(子[0],子[1])
临时板射箭(儿童[2])
最佳值=最大值(最佳值,α-β-修剪(临时板,深度-1,α,β,假))
临时董事会
alpha=最大值(alpha,最佳值)
如果β