見出し画像

マンカラ (mancala)というゲームについて4 【αβ法】

みなさん、こんにちは、こんばんは。S.Kと申します。

前前回の記事でミニマックス法を紹介しました。

今回はこのミニマックス法を改良したαβ法について、書いていこうと思います。

αβ法

黄色の丸を自分、青色の丸を相手の手番とします。
ミニマックスで見たように、自分は評価値を最大化するように行動し、相手は評価値を最小化しようと行動します。

βカット

スクリーンショット 2021-02-10 22.15.30

相手が1という選択をとった場合、すなわち一番左の自分のノードを考えます。
一番左の自分のノードでは、1, 3, 0のうち最大値である3を取るとして、評価値が3(赤字)となります。

次に、相手が2という選択をとった場合、すなわち真ん中の自分のノードを考えます。自分が1をとった場合に、そこで得られる評価値は4となり, 自分は最大化をすることを考えてるので、4以上が保証されたことになります。

さて、先ほど「相手が1という選択をとった場合の評価値は3(赤字)となる」といいました。相手の立場からして最小化を考えているので、3以下の評価(この3という上限をβと呼びます)となる選択を取りたいと考えています。ということは、相手にとって、2を選択することは4以上の評価値を取ることになります。これは相手は選びません。

したがって、選択2や3の評価値の計算する必要はありません。これをβカットと呼びます。

◆ αカット

同様にαカットがあります。
αという下限値を都度更新してそれを下回る場合にカットします。図で確認してみましょう。

スクリーンショット 2021-02-10 22.45.15

ちょっと複雑に見えますが、説明します。
左側赤字で書かれてる相手のノードでは評価値が2となっています。
ということは、この画像の一番上にある自分ノードでは、1を選択することで、少なくとも2以上の評価値が保証されてます。この下限2をαと言います。

では、自分が2を選択した場合(赤四角の選択)の相手のノードを見てみます。
このとき、1を選択すれば3の評価値、2を選択すれば1となります。
この時点で3の選択を調べる必要はなくなりました(αカットと呼ぶ)。
なぜなら、
自分が2を選択した場合に、相手は最小となる評価値を取るため、1以下となることが保証されてしまいます
そして、自分が1を選択したときは評価値2以上が保証されてます。つまり、少なくともこの時点で自分は2を選択する意味はなくなるからです。

*****

上記のような形で、
α、βを使って不必要なノード、選択肢を削除していきます。
当然、計算量は少なくなります。
また、結果はミニマックス法と同じになります。なので普通、αβ法を使った方が良いでしょう。
ちなみにαβ法は分枝限定法の一種です。

*****

いかがでしたでしょうか。
自分の整理のための記事です。近いうちにもう少し手直しして、動画にします。マンカラのプログラムで利用しているので、プログラムでの実装もお見せできればと思います。

では、別の記事でお会いしましょう。

マンカラ記事まとめ


活動費、テキスト購入費に充てたいと思います。宜しくお願い致します。