編集:「純粋な」ミニマックスとミニマックス+ヒューリスティックを混同してきました。これを解決するために回答を編集しました。
たぶん、minmax を定義するのに役立つでしょう。カリフォルニア大学バークレー校の学生による記事から:
minimax(player,board)
if(game over in current board position)
return winner
children = all legal moves for player from this board
if(max's turn)
return maximal score of calling minimax on all the children
else (min's turn)
return minimal score of calling minimax on all the children
ミニマックスでは、利益を最大化するのではなく、損失を最小化しようとします。だから、「あなた」の番ですmin's
。この定義では、正方形を選択して負ける可能性がある場合は、 とマークされます-1
。同点でも絶対に負けない場合は、 とマークされます0
。それが保証された勝利である場合にのみ、それはマークされ1
ます。
ブロックの各テーブルをチェックする必要がありますか
スコアとアルゴリズムを正しく定義している場合 (適切なプレーヤーを適切なロジックに一致させている場合)、「ブロックをチェックする」必要はありません。プレーヤーがブロックしなかったゲームのサブツリーは、暗黙的に評価する必要があります-1
。これは、ある時点で (おそらく非常に迅速に) 損失と評価され、その損失がバブルアップするためです。
このアルゴリズム (および予期しない結果が得られる可能性がある場所) の本当の問題は、すべてのサブツリーが損失の可能性がある場合です。その時点で、ヒューリスティックを使用して、取るべき動きに関するより良い情報を取得する必要があります。{-1, 0, 1}
いくつかの動きで勝つことができるため、単に.