ミニマックス法 †このページは競技プログラミングに興味のある方向けにミニマックス法を簡単に説明するページです ミニマックス法って何? †最悪の場合に得られる利益が最大になるようにする手法です 具体的に †例えば以下のようなゲームを考えましょう ・プレイヤー二人は同時にAまたはBを決定する
この時、プレイヤー1は以下の思考をしたとします という考え方でプレイヤー1はBを選びます (プレイヤー1(自分)の思考時に、「プレイヤー2(相手)は、プレイヤー1(自分)の利益を最小化するように必ず選ぶ」と決めつけていることに注意。それがミニマックス法です。) ミニマックス法って万能じゃん †いいえ、ミニマックス法はあくまでも「戦略」の一種で「解答(最適解)」ではありません だったら使い道ないじゃん †そんなことはありません。ある特定の条件の時にですがミニマックス法が最適解になることがあります 条件って? †プレイヤー1と2の各々の視点でミニマックス法を用いたときの結果が同じ場合、その選択肢の組みがゲームの解になります。
プレイヤー1はAを選べば「少なくとも選択肢の組(プレイヤー1,プレイヤー2)=(A, A)で1点を得ることが出来る」 プレイヤー2はAを選べば「最悪のパターンだと選択肢の組(B, A)の時-3点の失点になる」 結果、プレイヤー1は3点を得てプレイヤー2は3点を失います 具体的にどういう風に使うの †例えばオセロなどでは「中盤までは自分の色のコマが少ない方が良い」と言うセオリーがあります オセロの思考プログラムを作ったら計算に時間かかりまくってるんだけど †当たり前です。1回の手の候補が5か所あったとしたら15手先を計算すると300億通りのパターンを調べないといけないんですよ じゃぁどうすればいいですか †ミニマックス法の改良版として「α-β法」などがあります。ご自身で調べてみてください |