突然ですが、クイズです。
今まさに決闘を始めようとする3人のガンマンがいます。
3人のガンマンには腕前に大きな差があり、命中率は次の通りです。
ガンマンA 命中率100%
ガンマンB 命中率66%
ガンマンC 命中率33%
命中率の公平を期するため、決闘は次のような順番で行われます。
・命中率の低い人から、順に射撃する。
C→B→A→C→…
・射撃の結果倒された人の順番は(当然)スキップされて、その次の人に射撃の権利が移る。
さて、ここで問題です。
あなたがガンマンCだった場合、どういう戦略をとるのがもっとも生き残る確率を高めるでしょうか?
「決闘の場から立ち去る


普通に考えれば、取り得る選択肢は
ガンマンAを狙う
ガンマンBを狙う
のどちらかです。
しかし、ガンマンBを狙うのが間違いであるのは、明らかですよね。
運良く命中してガンマンBを倒したとしても、次の順番で命中率100%のガンマンAに撃たれ、絶命するのは明らかです

では正解は…??
→答えは20行後!
正解は、
「ガンマンAもガンマンBも狙わずに撃つ(わざと狙いを外して撃つ)」
です。
こうする事により、次の射撃順はガンマンBに移ります。
するとガンマンBは誰を狙うでしょうか?
次に控える命中率100%のガンマンAを差し置いて、あなた(ガンマンC)を狙うと言うことはないでしょう。
そして、運良くガンマンBがガンマンAを仕留めた場合、次の順番はあなた(ガンマンC)になり、Aの存在を気にすることなくガンマンBに先制攻撃を仕掛けることが出来ます

もし、ガンマンBがガンマンAを仕留められなかった場合、射撃の権利はガンマンAに移ります。
その際、ガンマンAは誰を狙うでしょうか?
やはりここでも、比較的手強いガンマンBを狙うことでしょう。先にあなた(ガンマンC)を倒しても、ガンマンAに取って得なことは何もありませんから。
これにより、次はあなたの順番になり、ガンマンAに先制攻撃を加えることができます

まぁ、結局あなた(ガンマンC)の命中率が33%なので、確実に生き残れるという保証はないのですが、一番マシな戦略だと思われます。
参考文献:フェルマーの最終定理 サイモン シン (著), 青木 薫 (翻訳) (新潮文庫)
*
この問題は、ゲーム理論という考え方で解いてます。
「全員が合理的な考え方をする」という前提で推論を進めているのです。
仮にガンマンBが、あまり合理的に考えない人で、
「なんとな〜く、Cの顔が気に入らないから、あいつを先に狙っちゃえ〜」
なんて考えるタイプの人だったら、それだけでこの戦略は破綻します。
そして現実世界では、合理的ではなく感情的に考えるタイプの人も多くいるのが事実です。
ゲーム理論を株式投資に応用して、株価の予想を行おうとする動きもありましたが、うまくいかなかったようです。
純粋に損得勘定だけで株を買う人ばかりではなく、
「なんとな〜く、この会社が好きだから」
「知り合いに、強く勧められて…」
という理由で購入を決意する人も、数多くいるわけです。
これは株に限らず、普通の商品購入の際も同じだと思います。
では、ゲームに登場する敵キャラクターなどの思考処理(以下AI)ではどうでしょうか?
たまには合理的に考えないAIがいても人間的で面白いのでしょうが、それが意図的に行っている処理なのか、はたまたAIのクオリティが低いのか、単にバグっているだけなのか、分かりにくいのが難点です。
*
私事ですが、かつて世界的に有名な落ちゲー(○トリス)のAIを作成したことがありました。
「なんでそんな所に置くねん!」
という突っ込みを入れたくなるような思考をするときもありますが、
「おお、そういう意図があったのか!」
と驚かされることもありました。
4段消し用に空けておいた隙間をキープしたまま、不要なピースを柔軟に処理する方法などは、恥ずかしながら自分の作ったAIに教わりました

自分が作成したAIと対戦して負けたときは、悔しさと共になんだか嬉しさもこみ上げてくると言う、不思議な感覚が味わえます

この感覚はプログラマ独特の喜びだと思います

皆さんも機会があれば、是非思考プログラムに挑戦してみて下さい。