Step 10 of 12

α-β 枝刈り

minimax の結果を変えずに、無駄な探索を早期に打ち切って高速化します。 これで MAX_DEPTH を 4 まで上げても遅延なしで AI が応手できるように — 数手先を本気で読む AI の完成です。

MyOthello.java
Java runtime を初回読み込み中…
CheerpJ の JRE (数十 MB) をダウンロードしています。
preparing

About this step

alpha / beta が何者か

alpha: 最大化側がこれまでに確保した 最低保証beta: 最小化側がこれまでに確保した 最大許容。 途中で alpha >= beta になったら、「相手がここに到達させない」ことが確定するので、 その枝のその先は読む意味がなくなる — break で打ち切り。

結果は変わらない

α-β 枝刈りは「探索する枝を減らすだけ」で、返す最終スコアは minimax と完全に同じです。 単純な高速化。MAX_DEPTH を 2 → 4 に上げても AI の応手時間が実用範囲に収まります。 これ以上深くするなら「move ordering(角を先に見る)」などの追加最適化が効きます — 発展課題。

動かしてみる

Step 09 と同じ入力でも、AI が明らかに 「2 手先まで視えた手」を打つようになります。 プレイヤーが角を取りにいく隙を潰しに来ることも。対局してみて、勝てるかどうか試してみてください。