不意打ち択について計算してみた
こんにちは。最近投稿ネタが多くて嬉しいぴらんです。今回は不意打ち択について計算をしてみます。
要約
ポケモン対戦における不意打ち択について、各ターン毎にミニマックス戦略を探すことで均衡時における不意打ちの選択確率や勝率を求めました。
結果事前にランダムに攻撃するターンを決める場合と同じという結論がえられました。
始めに
ポケモン界隈では不意打ち択という問題が知られています。不意打ちは相手が攻撃してきた場合は素早さに関わらず先制攻撃ができるが相手が変化技を使った場合は失敗するという技なのですが、不意打ち側が素早さで負けていて不意打ちであと一発で倒せる状況では攻撃技を打つか変化技を打つかの読み合いが発生します。ポケモンにはPPというリソースがあり、不意打ちは8回までしか打てないためどのタイミングで攻撃すればいいかという問題があります。
この不意打ち択について実際に界隈で言われている定説みたいなものがあるようなのですが、きっちり計算した記事が見当たらなかったため自分で計算してみたものをまとめてみました。見ていってもらえると嬉しいです。
広まっている見解
ツイート検索およびグーグル検索で明確に定説はこうだと言ってそうなツイートを探しました。これが初出というわけでは全然ないですが1ツイートや1記事の中で端的に定説の内容を述べてるツイートやブログは少なかったので、これらを引用しました。あくまで定説の内容を説明してる文章の一例だと思ってください。
不意打ち択で何回目で仕掛けるかの話にも通じるところある。理論上は最大の8回まで同じ行動採るのが正解だけど、実戦では(拘りトリックとかアンコールとか対策で)不意打ちのPPを敢えて7や6にしている人とか、気分で選択している人もいるから、均衡点の解はでない、みたいな。
— van (@Advance_Hacker) June 5, 2023
その他ツイート検索を見ている感じなるべく最後まで引き延ばすのが安定と考える人が多そうです。
計算方針
どのターンに攻撃するかを事前に決めるとして確率を計算する考え方もありますが、今回は各ターン毎に勝率の最も高くなる戦略を計算することにします。
PPが残り1の時は両者完全にランダムに手を選んで互いに勝率50%になることが直観的にわかると思います。残りPP2の時は次ターンになれば勝率50%になってしまうのがわかるのでそれを前提にして計算します。そして残りPP3の時は次ターンになれば不意打ちのPPが2になるのでPP2の結果を用いて計算するというようにPPが少ない方から繰り返していけばPP8の時まで順番に計算できます。
各ターンの計算はミニマックス戦略を求めることで行います。これは相手はこちらの戦略に対して最も有利な戦略を選択すると考え、その上で一番勝率の良い戦略を探します。
前準備
使用する定理
2×2の択では相手側から見て相手の二つの選択肢の勝率が同じになるように選ぶのが正解です。以下はその説明です。
こちらの勝率が次の表のようになっているとします。
$$
\def\arraystretch{1.5}
\begin{array}{c|cc}
& 選択肢A & 選択肢B \\ \hline
選択肢1 & a & c \\
選択肢2 & b & d
\end{array}
$$
選択肢1を確率$${x}$$で選ぶ時、相手が選択肢Aを選んだ時のこちらの勝率は$${xa+(1-x)b}$$になります。
相手が選択肢Bを選んだ時の勝率は$${xc+(1-x)d}$$になります。
相手はこちらの勝率を下げるような選択肢を選ぶと考え、相手側が持つ2つの選択肢のうちこちらの勝率の低い方がこちらの勝率になります。つまり次の青線と赤線の低い方を取ったグラフが$${x}$$と勝率の関係を表すグラフになります。
![](https://assets.st-note.com/img/1686491110543-IrBWeSWepJ.png)
相手が勝率が低い方の選択肢を選び、青線と赤線の低い方を取った結果として次の紫線のようになります。赤線と紫線が交わる点が最も勝率の高い$${x}$$になっていることがわかると思います。
赤線が選択肢Aの勝率、青線が選択肢Bの勝率だったので交点では二つの選択肢の勝率が同じになっています。
![](https://assets.st-note.com/img/1686491233800-2tpi4hJndH.png)
というわけでゲーム理論的にベストな戦略(ミニマックス戦略)は相手の二つの選択肢の勝率が等しい戦略です。
計算
ミニマックス戦略を探すことでナッシュ均衡の解を探します。
不意打ち側は不意打ちと攻撃技、相手側は攻撃技と変化技のそれぞれ二択があるとします。
$$
\def\arraystretch{1.5}
\begin{array}{c|cc}
& 不意打ち & 攻撃技 \\ \hline
攻撃技 & 不意打ち側の勝ち & 不意打ち側の負け \\
変化技 & 次のターンへ & 不意打ち側の勝ち
\end{array}
$$
PPや相手の先制技を耐えれる回数の為に不意打ちを打てる回数は限られます。ここでは残りPPと書きますが相手の先制技を数回しか耐えられないときなどは疑似的にPPが減ってると考えて結果を応用してください。
以下不意打ちを選ぶ確率を$${p}$$と書きます。添え字は省略しますが残りPPごとに違う確率が入ります。
また、単に勝率と書く時は不意打ち側が勝つ確率のことにします。なるべく"不意打ち側の"と付けるようにしますが、抜けがあったら不意打ち側の勝率を指していると思ってください。
残りPP1
読み負けたら負け、読み勝ったら勝ちです。
相手が攻撃技を選ぶ時不意打ち側の勝率は$${p}$$で、変化技を選ぶ時の勝率が$${1-p}$$なのでこれらを等号で結んだ$${p=(1-p)}$$を解いて$${p=\frac12=50\%}$$です。
残りPP2
こちらが不意打ち、相手が変化技を打った場合PP1になるので互いに勝率50%になります。
$$
\def\arraystretch{1.5}
\begin{array}{c|cc}
PP2の時& 不意打ち & 攻撃技 \\ \hline
攻撃技 & 不意打ち側の勝ち & 不意打ち側の負け \\
変化技 & 互いに勝率50\% & 不意打ち側の勝ち
\end{array}
$$
相手の選択肢ごとの不意打ち側の勝率は次のようになります。
相手が攻撃技を選ぶ時:$${p}$$
相手が変化技を選ぶ時:$${p\frac12 +(1-p)=1-\frac12p}$$
したがって$${p=1-\frac{p}{2}}$$を解いて$${p=2/3}$$
また勝率は$${p=p\frac12 +(1-p)=2/3}$$
残りPP3
上と同様に計算します。こちらが不意打ち、相手が変化技を打った場合PP2になるので不意打ち側の勝率$${\frac23}$$になります。
$$
\def\arraystretch{1.5}
\begin{array}{c|cc}
PP3の時& 不意打ち & 攻撃技 \\ \hline
攻撃技 & 不意打ち側の勝ち & 不意打ち側の負け \\
変化技 & 不意打ち側の勝率\frac23 & 不意打ち側の勝ち
\end{array}
$$
相手の選択肢ごとの勝率は次のようになります。
相手が攻撃技を選ぶ時:$${p}$$
相手が変化技を選ぶ時:$${p\frac23 +(1-p)=1-\frac13p}$$
したがって$${p=1-\frac{p}{3}}$$を解いて$${p=3/4}$$
また勝率は$${p=p\frac23 +(1-p)=3/4}$$
残りPPm
ここまでやると何となく法則が見えてきます。残りPP$${m}$$の勝率は$${\frac{m}{m+1}}$$になりそうなので数学的帰納法で示します。PPmの勝率を$${\frac{m}{m+1}}$$と仮定してPPm+1で勝率が$${\frac{m+1}{m+2}}$$となることを示します。
PP$${m+1}$$からこちらが不意打ち、相手が変化技を打った場合PPmになるので勝率$${\frac{m}{m+1}}$$になります。
PP$${m+1}$$の時の相手の選択肢ごとの勝率は次のようになります。
相手が攻撃技を選ぶ時:$${p}$$
相手が変化技を選ぶ時:$${p\frac{m}{m+1} +(1-p)=1-\frac1{m+1}p}$$
したがって$${p=1-\frac{p}{m+1}}$$を解いて$$p=\frac{m+1}{m+2}$$
勝率は$${p=p\frac{m}{m+1} +(1-p)=\frac{m+1}{m+2}$$. よってPPm+1の勝率が$${\frac{m+1}{m+2}}$$になることを示せたので数学的帰納法により証明完了です。
結論
まとめると以下の表のようになります。これはちょうど「どのターンに攻撃するかを事前にランダムに選ぶ」戦略の答えと一致します。
$$
\def\arraystretch{1.5}
\begin{array}{c|cccccccc}
& 8 & 7&6&5&4&3&2&1 \\ \hline
不意打ち側の勝率 & 8/9 &7/8&6/7&5/6&4/5&3/4&2/3&1/2 \\
不意打ちを選択すべき確率 & 8/9 & 7/8&6/7&5/6&4/5&3/4&2/3&1/2\\
攻撃を選択すべき確率&1/9&1/8&1/7&1/6&1/5&1/4&1/3&1/2
\end{array}
$$
残りPPが多いうちは不意打ちを押すのが安定、PPが少なくなってくるにつれ攻撃を押す確率を徐々に増やしていくのが良いことになります。
ただし、これは各ターン毎に攻撃するか不意打ちするかを判断する場合の話です。事前にどのターンに攻撃するかを決める場合には全てのターンで等確率で攻撃するのが良いという解釈になります。一見異なる結論に見えますが視点が違うだけで数学的には同じことを言っています。
まとめ
残りPPがmの時は不意打ち側が攻撃すべき確率は$${\frac{1}{m+1}}$$
これは事前に攻撃するターンをランダムに決めて行動するのと同じ結論
あとがき
いかがでしたか?定説では引き延ばしが良いされてるようですが、そのようなことはないという結論になりました。まああくまで均衡時の解がそうなるというだけなので、人間の心理のためにずれるかもといえば何も言えないわけですが...
過剰に引き延ばしても良い事はなさそうなのでわたしは以後サイコロ振って適当なターンに攻撃することにします。
ではではまた次回~~
この記事が気に入ったらサポートをしてみませんか?