Я сейчас пытаюсь сделать хороший ИИ для Отелло, и сделал это с помощью алгоритма Minimax.Однако, когда я попытался сделать более глубокий поиск с использованием альфа-бета-обрезки, казалось, что алгоритм работает ужасно.Я проверил это с другими источниками, такими как Wiki и Berkely.edu, и я думаю, что реализовал это правильно, но я все еще не могу найти проблему.
def alphabeta(board, player, a, b, lev):
h = heur(board, player)
if lev == 0:
return h, None
poss = get_legal_moves(board, player)
if len(poss) == 0:
return h, None
move = 0
for x in poss:
cpboard = board[:]
cpboard[x] = player
bracket(cpboard, player, x)
a1, q = alphabeta(cpboard, opponent_color(player), a, b, lev-1)
if player is me:
if a1 > a:
a, move = a1, x
else:
if a1 < b:
b, move = a1, x
if b <= a:
break
if player is me:
return a, move
else:
return b, move