Step 09 of 12
minimax
AI が 数手先まで読むようになります。自分の番は最大化、相手の番は最小化を 再帰的に繰り返す minimax アルゴリズム。このコース最大の山場の一つ。
MyOthello.java
Java runtime を初回読み込み中…
CheerpJ の JRE (数十 MB) をダウンロードしています。
preparing
About this step
minimax の 1 行まとめ
「自分の番なら 最大、相手の番なら 最小を取りながら、 決まった深さまで再帰的に局面を評価する」。これ以上でも以下でもない。 複雑に見えるのは実装の詳細 (パス処理、snapshot/restore) だけ。
なぜパスで depth を減らす?
パス局面では石が増えないので、そのまま depth を減らさずに再帰すると
「両方パスの無限ループ」が起きうる。depth - 1 で減らしておけば、
遅くとも MAX_DEPTH 回で base case に到達するので安全です。
動かしてみる
Step 08 の貪欲 AI と比べて、白が 「目先は悪いが相手の応手を潰す」 手を打つことがあります。特に角の近くに置けるシーンで効きます。 MAX_DEPTH を 3 に上げると更に強くなるが、8x8 では遅くなるので注意 — そこで次の Step、α-β 枝刈りの出番。