我目前正在嘗試爲Othello製作一個好的AI,並且已經使用Minimax算法做了這樣的工作。但是,當我嘗試使用alpha-beta修剪進行更深入的搜索時,它看起來像算法玩的非常糟糕。我檢查了Wiki和Berkely.edu等其他來源,我認爲我已經正確實施了,但我仍然無法找到問題所在。Othello Alpha-Beta修剪玩pyly
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
在你開始第二次猜測你的代碼之前,你確定你的'heur'函數是正確的嗎? – inspectorG4dget 2012-01-11 20:43:06
是的,它適用於我的極大極小算法 – jcolen19 2012-01-21 22:43:26