У меня есть минимаксная функция, которая в других случаях работает нормально. Но когда я реализую как альфа-бета-обрезку, так и хэш-таблицу, она проигрывает только в одной ситуации. Если я применю одну из оптимизаций или ни одной, то во всех случаях все будет работать нормально. Этот проигрышный случай возникает только тогда, когда ИИ идет вторым:
X | O | X
---+---+---
4 | O | X
---+---+---
O | 8 | X
ai: O
функция:
def minimax(depth, alpha, beta):
new_depth = depth + 1
avails = core_func.availables()
if new_depth % 2: # maximizer
if core_func.check_win():
return -1 # previously minimizer
elif not avails:
return 0
best_score = -float('inf')
for c in avails:
i = c - 1
variables.grid = variables.symbol
t = tuple(variables.grid)
if t not in variables.states:
variables.states[t] = minimax(new_depth, alpha, beta)
best_score = max(best_score, variables.states[t])
alpha = max(alpha, best_score)
variables.grid = c
if beta
Подробнее здесь: https://stackoverflow.com/questions/790 ... ic-tac-toe