Как мне найти оптимальный узел при использовании Minimax с Alpha-Beta Pruning?Python

Программы на Python
Anonymous
Как мне найти оптимальный узел при использовании Minimax с Alpha-Beta Pruning?

Сообщение Anonymous »

Я пытаюсь создать шахматный движок, основная идея которого заключается в том, что когда я нажимаю кнопку, компьютер делает ход. Вот мой код:

Код: Выделить всё

def alphabeta(board, node, depth, a, b, maximizer):
if depth == 0:
return evaluate.node(node)

if maximizer == True:
value = -10**3 # Number that's smaller than what the evaluation algorithm can return
for child in board.get_all_nodes(node):
m = alphabeta(board, child, depth-1, a, b, False)
value = max(value, m)
a = max(a, value)
if a >= b:
break
return value
else:
value = 10**3 # Number that's bigger than what the evaluation algorithm can return
for child in board.get_all_nodes(node):
m = alphabeta(board, child, depth - 1, a, b, True)
value = min(value, m)
b = min(b, value)
if a >= b:
break
return value
Проблема в том, что этот код возвращает оценку наилучшего возможного хода, а не само дерево ходов. Как мне найти лучший ход, не запуская всю функцию заново?

Подробнее здесь: https://stackoverflow.com/questions/601 ... ta-pruning

Вернуться в «Python»