将棋やチェスのAIは、どうやって「次の一手」を決めているのでしょうか。その最も基本となる考え方がMini-Max法です。「相手は必ず最善手を打ってくる」という厳しめの前提を置いて、自分にとって最も有利な手を逆算する——ゲームAIの原点となる探索手法を解説します。

📖 ひと言でいうと

Mini-Max法とは、自分の手番ではスコアが最大になる手を、相手の手番ではスコアが最小になる手が選ばれると仮定して、ゲーム木を探索し最適な一手を決める手法です。

例えるなら、「最悪の場合に備えて選ぶ」慎重派の意思決定です。自分がどの手を打っても、相手はこちらが一番困る返しをしてくる、と想定します。その厳しい想定のもとでも一番マシな結果になる手を選べば、相手がどう出ても大崩れしない——これがMini-Max(最小の中の最大)という名前の由来的な発想です。

🖼 1枚でわかるMini-Max法

Mini-Max法
  • 基本方針 — 自分の番はスコア最大、相手の番はスコア最小になると想定
  • 土台 — 盤面をノードとするゲームの探索木。良し悪しはスコアで評価
  • 手順 — 葉ノードのスコアを計算し、親ノードへ伝搬させて最適手を決定
  • 前提 — 相手は最善手を打つと仮定する
  • 欠点 — すべての盤面状態を調べるため計算量が膨大(→αβ法で改良)
つくもち屋「G検定対策」SUMMARY

📘 対策テキストの説明

自分が番にスコアが最大になるように、相手の番にはスコアが最小になるように戦略を立てる手法。ボードゲームにおける探索木では、一手が指され他時に盤面の状態を探索木の各ノードとし、ある盤面における状態の良し悪しはスコアによって評価される。この手法は、自分の手番と相手の手番を交互に展開することで、相手が最善手を打ったと仮定し、その中で自分の最適な手を選ぶ。具体的には、葉ノード(終端状態)までのスコアを計算し、その値を親ノードに伝搬させる。自分の手番では子ノードの最大値を選択し、相手の手番では最小値を選択することで、最適な手を決定する。MiniMax法はすべての盤面状態を調べるため、計算量が膨大になる欠点がある。

かみ砕くと、①盤面の状態を探索木のノードとして表し、良し悪しをスコアで評価する、②自分の手番と相手の手番を交互に展開し、「相手は最善手を打つ」と仮定する、③木の末端(葉ノード)のスコアを親へ伝搬させ、自分の番では子ノードの最大値、相手の番では最小値を選ぶ、という3段構えです。そして最後の一文、「すべての盤面状態を調べるため計算量が膨大」という欠点が、次のキーワードであるαβ法の登場理由になります。

🔍 しっかり理解する

スコアが「下から上へ」伝わる仕組み

Mini-Max法の計算は、木の末端から根に向かって進みます。

ゲーム木を展開
自分と相手の手番を交互に枝分かれさせる
葉ノードを評価
終端状態の盤面にスコアをつける
親へ伝搬
自分の番=最大値/相手の番=最小値を選ぶ
最適手を決定
根に伝わった評価が最も高い一手を打つ

小さな数値例で確認しましょう。自分の一手に選択肢AとBがあり、それぞれに相手の返し手が2つずつあるとします。Aの先の盤面スコアが「5と2」、Bの先が「8と1」だったとします。相手の手番では最小値が選ばれるので、Aの評価は2、Bの評価は1になります。次に自分の手番では最大値を選ぶので、評価2のAが最適手です。Bには8という魅力的な未来もありますが、相手が最善(こちらにとって最悪)の1を選んでくる前提なので、夢の8は当てになりません。「相手の意地悪を織り込んだうえでの最善」を選ぶのがMini-Max法です。

「相手は最善手を打つ」という前提の意味

この前提は、悲観的すぎるようで実は合理的です。相手がミスをしてくれれば結果は想定より良くなるだけで、悪くなることはありません。つまりMini-Max法の評価は「保証できる下限」を示しており、その下限を最大化する戦略なのです。逆にいえば、相手のミスを積極的に誘うような打ち回しはできません。あくまで二人で交互に打つゲームで、互いに合理的に行動するという状況を想定した手法です。

計算量の壁とαβ法へのバトン

Mini-Max法の弱点は、対策テキストにあるとおり、すべての盤面状態を調べるため計算量が膨大になることです。ゲーム木は一手進むごとに枝分かれが掛け算で増えていくため、チェスや将棋のようなゲームでは、数手先を読むだけでノード数が爆発します。この弱点を「結論を変えずに探索を減らす」方向で改良したのがαβ法です。試験では「Mini-Max法の欠点→αβ法が改良」という流れがそのまま出題パターンになります。

💡 具体例で考える

三目並べ(○×ゲーム)で完全に読み切る

Mini-Max法が威力を発揮する最小の例が三目並べです。三目並べは盤面のパターンが十分小さいため、ゲーム終了までの全展開を木にできます。葉ノードに「勝ち=+1、引き分け=0、負け=-1」のスコアをつけ、自分の番は最大値、相手の番は最小値で伝搬させると、どの局面でも「双方最善なら引き分け」という結論と、そのための最適手が機械的に求まります。三目並べのAIに絶対勝てないのは、このように完全読み切りが可能だからです。一方、同じことを将棋でやろうとすると盤面数が天文学的になり、そのままでは破綻する——ここが計算量の壁の実感です。

実際のゲームAIでの使われ方

チェスや将棋のAIでは、終局まで読み切る代わりに「数手先まで」で木を打ち切り、その時点の盤面を評価関数(駒の損得や位置関係を点数化する仕組み)でスコア化して、Mini-Max法の枠組みで伝搬させる方法が使われてきました。つまり葉ノードは「ゲームの決着」ではなく「読みの限界地点」で、そこでの形勢判断を数値化するわけです。この枠組みにαβ法の枝刈りを組み合わせることで、限られた時間でより深い読みを実現してきました。

⚠️ よくある誤解・紛らわしい用語

💡 ポイント
  • 「常に自分のスコア最大の手を選ぶだけ」ではない — 相手の手番では最小値が選ばれると想定する点が核心です。相手の妨害を無視した単純な最大化とは異なります。
  • MaxとMinの担当の取り違え — 自分の手番=子ノードの最大値、相手の手番=最小値です。この対応を逆にした選択肢が定番の誤答です。
  • αβ法との関係 — αβ法はMini-Max法の探索を減らす改良版で、別系統の手法ではありません。「基本形がMini-Max、改良形がαβ」の順序を押さえましょう。
  • 幅優先探索・深さ優先探索との混同 — これらは木をたどる順序の一般的な戦略、Mini-Max法は二人対戦ゲームで最適手を決めるための評価の伝搬ルールです。目的が違います。

📝 試験でのポイント

💡 ポイント
  • 「自分の番はスコア最大・相手の番はスコア最小」という基本方針の記述は、定義問題でそのまま問われます。
  • 「相手が最善手を打ったと仮定する」という前提の有無で正誤を判定させる選択肢が想定されます。
  • 葉ノードのスコアを親ノードに伝搬させる手順(自分=最大値選択/相手=最小値選択)の穴埋め問題に備えましょう。
  • 欠点(すべての盤面状態を調べるため計算量が膨大)と、その改良としてのαβ法(αカット・βカット)をセットで問う問題が頻出パターンです。

📚 まとめ

💡 ポイント
  • Mini-Max法は、自分の番はスコア最大、相手の番はスコア最小になるよう戦略を立てるゲーム木の探索手法です。
  • 相手が最善手を打つと仮定し、葉ノードのスコアを親へ伝搬させて最適な一手を決めます。
  • 保証できる結果の下限を最大化する、堅実な意思決定の枠組みといえます。
  • すべての盤面を調べるため計算量が膨大になる欠点があり、これを改良したのがαβ法です。