0
エンタメ解説
文献あり

二体構築から一体選ぶゲームの相性関係: 単体間の相性から構築同士の相性へ

93
0
$$$$

はじめに

こんにちは。ポケモンチャンピオンズが発売されてポケモン熱が高まっているぴらんです。

わたし的には、ポケモン対戦は事前に構築を組む点が面白いと思っていて、この部分にフォーカスして考えるために「ポケモン単体同士の相性関係はわかっている」とした時に「数匹で組んだ構築同士の相性はどうなるか? ポケモン単体単位で強いのを寄せ集めれば構築単位で強いのか?」といった問題について調べています。

これまでの調査

さて、これまでわたしは"パワー"と"相性ベクトル"という概念を定義して、強さとは何か? 数学的にはどうあらわされるか? といったことを考えてきました。

過去記事(1種類の相性からなるゲームのナッシュ均衡)

別の記事を読んでくださいだと不親切なので、これまでの経緯のうち、今回の記事で使う内容をまとめます。

ポケモン単体に対する単相性モデル

ポケモン $i$$j$ の関係を、次のような行列であらわすことにします。正なら $i$ 有利、負なら $j$ 有利で、数字が大きいほど有利の程度も大きくなるとします。
$$ A_{ij}=p_i-p_j+x_i y_j-y_i x_j $$
$A_{ij}$$i$ というポケモンが $j$ というポケモンに対してどれだけ強いかを表しており、これが右辺のパワー $p$ と相性ベクトル $v$ で表されるという数式です。

$p$ が増えると相手 $j$ が誰であろうと利得行列は一定値増えます。つまり、相手が誰だろうが確実に勝率を担保できる潜在能力という意味でパワーです。

一方、相性部分は相手によって勝率が大きく変わり、自分の $v_i$ と相手を表す $v_j$ のベクトル同士の位置関係次第で大きく変化します。$v$ がどの方向を向いていれば最強というのがなく、ある方向を向いた $v$ に強ければ逆方向の $v$ に弱いといった相対的な関係を表すという意味で相性ベクトルと呼んでいます。
ポケモン単体のパワーの違いが大きい時は、構築単位で考える時でも単体パワーが高い順に並べた構築が最強になってしまい、あまり面白い結果にならないので、今回はパワーがほぼ同じポケモン同士の関係を考えます。

2択問題の公式

2択問題についての過去記事
$$ A=\begin{pmatrix} a & c \\ b & d \end{pmatrix} $$
上記のような $2\times2$ 行列のゲームを行う時の結果は次のような数式で表せます。これは敵味方がお互い2択のゲームで戦う状況を表しています。
ゲームの値 $g$
$$ g(A)=\frac{ad-bc}{a-b-c+d} $$
ただしこの公式は次の条件の時のみ成り立ちます。
$$ (a-b)(c-d)<0 $$
$$ (a-c)(b-d)<0 $$
これは $a,b,c,d$ が大小大小 or 小大小大の順になる時用の公式であることを表しています。これが成り立たない時は片方の選択肢が最強状態になってしまっていてゲームの構造が変わるので、数式が変わってきます。
公式が適用できる条件 公式が適用できる条件

例えば $a,b$ が共に大きいと相手目線で1列目が2列目と比べて常に大きく、確定で2列目の選択肢を選んだ方が良くなってゲームになりません($(a,b,c,d)=(4,3,2,1)$ など)。

構築同士のゲーム

ポケモン単体の関係がわかっている時に、その関係を元にして構築同士の関係を調べる、強い構築は何か? を考えるという事をやりたいです。

いきなり実際のポケモン通りの6匹VS6匹、3匹選出ルールでやると難しいので、2匹で構築をつくり、その中から1匹選んで戦うという簡略化されたゲームを考えます。

このルールではポケモンだけではなく、例えばカードゲームで事前に2デッキ申請して対戦時に実際に使うデッキを一つ決める(2デッキBO1)といった問題も同じ形式で扱えます。
以下では、自分の構築は1,2というポケモンによって構成されており、相手の構築は3,4という2匹から作られているとします。

これらのポケモン同士はこれまでの経緯の章で書いたような単相性モデルで表されているとします。パワーは同じくらいのポケモン同士を想定します。
$$ A_{ij}=p_i-p_j+x_i y_j-y_i x_j $$
この時、構築同士のゲームは自分が1,2のどちらかを選び、相手は3,4のいずれかを選ぶゲームを解いた結果として有利不利が決まると考えることができます。これは $2\times2$ ゲームなので、これまでの経緯で紹介した結果を使うことができます。
このような出発点の元で構築同士の相性関係が、ポケモン単体の関係性 $p,v$ を使ってどうあらわせるだろうか? というのが今回のテーマです。では、計算を進めていきましょう。

計算

それでは実際に$A$$a,b,c,d$をパワーと相性ベクトルを使った式で書き直してみます。
$$ \begin{align*} a&= p_1 -p_3 + v_1 \times v_3\\ b&= p_2 -p_3 + v_2 \times v_3\\ c&= p_1 -p_4 + v_1 \times v_4\\ d&= p_2 -p_4 + v_2 \times v_4 \end{align*} $$
$2\times2$ 行列の公式に代入すると次のようになります。分母分子で分けて計算します。
$$ \begin{align*} (分母)=&a+d-b-c\\ =& (p_1 -p_3 + v_1 \times v_3)\\ &-(p_2 -p_3 + v_2 \times v_3)\\ &-(p_1 -p_4 + v_1 \times v_4)\\ &+(p_2 -p_4 + v_2 \times v_4)\\ =&(v_1-v_2)\times(v_3-v_4) \end{align*} $$
計算の結果$p$ 部分が消えました。
分子の計算のためにちょっと便利な性質を確認します。
$$ v_i (v_j\times v_k) +v_j (v_k\times v_i)+ v_k (v_i\times v_j)=0 $$
つまり3つのベクトルを順番に入れ替えて足すと0になるという公式があります(プリュッカー関係式というらしいです)。
$$ \begin{align*} (分子)=& (p_1-p_3 + v_1\times v_3)(p_2-p_4 + v_2\times v_4)-(p_1-p_4 + v_1\times v_4)(p_2-p_3 + v_2\times v_3)\\ =& (v_1\times v_3)( v_2\times v_4 )- (v_1\times v_4) (v_2\times v_3) \\ &+\left((p_1-p_3)(v_2\times v_4)+(p_2-p_4)(v_1\times v_3)-(p_1-p_4)(v_2\times v_3)-(p_2-p_3)(v_1\times v_4) \right)\\ &+O(\Delta p^2) \end{align*} $$
第一項は次のように変形するとプリュッカー関係式を使えます。
$$ \begin{align*} (第一項) &= (v_1\times v_3)( v_2\times v_4) - (v_1\times v_4)( v_2\times v_3)\\ &= v_1 \times \bigl(v_3 (v_2\times v_4) -v_4 (v_2\times v_3)\bigr)\\ &= v_1 \times \bigl(-v_3 (v_4\times v_2) -v_4 (v_2\times v_3)\bigr)\quad (順番に入れ替えた形)\\ &= v_1 \times \bigl(v_2(v_3\times v_4)\bigr)\\ &= (v_1 \times v_2)(v_3\times v_4) \end{align*} $$
第二項は次のように $v_3,v_4$ でくくりだした後、気合で変形します。
$$ \begin{align*} (第二項) &=(p_1-p_3)(v_2\times v_4)+(p_2-p_4)(v_1\times v_3)-(p_1-p_4)(v_2\times v_3)-(p_2-p_3)(v_1\times v_4)\\ &=((p_1-p_3)v_2 - (p_2-p_3)v_1 )\times v_4- ( (p_2-p_4)v_1- (p_1-p_4)v_2)\times v_3\\ &=(p_1v_2-p_2v_1+p_3(v_1-v_2) )\times v_4 - (p_1v_2-p_2v_1-p_4(v_1-v_2)) \times v_3\\ &=(v_1-v_2)\times (p_3v_4-p_4v_3) -(p_1v_2 -p_2v_1)\times (v_3-v_4) \end{align*} $$
第3項(上記以外の項)はパワーの二乗なので、パワーが均等で、相性部分が支配的な状況では相対的に小さくなります。
まとめると構築同士の相性関係$B$は次のようになります。
$$ B_{ij}=\frac{(v_1 \times v_2)(v_3\times v_4)+ (v_1-v_2)\times (p_3v_4-p_4v_3) -(p_1v_2 -p_2v_1)\times (v_3-v_4)}{(v_1-v_2)\times(v_3-v_4)} $$
分子の第一項で分母分子を割ります。
$$ B_{ij} =\frac{1 + \frac{v_1-v_2}{v_1 \times v_2}\times \frac{p_3v_4-p_4v_3}{v_3\times v_4} - \frac{p_1v_2 -p_2v_1}{v_1 \times v_2}\times \frac{v_3-v_4}{v_3\times v_4} }{\frac{v_1-v_2}{v_1 \times v_2}\times \frac{v_3-v_4}{v_3\times v_4}} $$
ポケモン1と2からなる構築 $i$ VS ポケモン3と4からなる構築 $j$ の関係が、12からなる項と34からなる項とでキレイにまとめることができました。わかりやすいように次のように置きます。
$$ \begin{align*} V_i=&(X_i,Y_i)=\frac{v_1-v_2}{v_1 \times v_2}\\ V_j=&(X_j,Y_j)=\frac{v_3-v_4}{v_3 \times v_4}\\ U_i=&(U_{x_i},U_{y_i})=\frac{p_2v_1-p_1v_2}{v_1\times v_2}\\ U_j=&(U_{x_j},U_{y_j})=\frac{p_4v_3-p_3v_4}{v_3\times v_4}\\ \end{align*} $$
これを使って $i$$j$ の関係を表す行列は次です。
$$ B_{ij}=\frac{1+U_i\times V_j - V_i\times U_j}{V_i\times V_j} $$
特にポケモン単体同士の関係が等パワーの時は $U=V$ となるため第二項が消えて簡単になります。
$$ B_{ij}=\frac{1}{V_i\times V_j}\quad (等パワー) $$
つまり構築同士の関係は $V_i=(X_i,Y_i)=\frac{v_1-v_2}{v_1 \times v_2}$ をあらかじめ計算しておけば、
$V$ 同士の位置関係でどの構築がどの構築に強い/弱いかがわかるということを表しています。
また、ポケモン同士が等パワーでなくなった場合は構築同士の関係性に $U$ というベクトルが追加され、$U$ により関係性の程度が補正されることもわかります。

Uの書き換え

なお、$U$ は分母分子を $p_1p_2$ で割って次のように書いたほうがきれいかもしれません。
$$ U_i=(U_{x_i},U_{y_i}) =\frac{p_2v_1-p_1v_2}{v_1\times v_2} =\frac{v_1/p_1-v_2/p_2}{(v_1/p_1)\times (v_2/p_2)} =\frac{v_1'-v_2'}{v_1'\times v_2'} $$
ここで $v'=v/p$ としました。つまり、$v$ の代わりにパワーで割り算して補正した $v'$ を使った時の $V$ に当たるベクトルが $U$ となります。

適用範囲

ここまでの計算の適用範囲を確認します。
公式の適用範囲のために大小大小と交互になる必要があります。
$$ \begin{align*} (a-b)(c-d)&<0\\ (a-c)(b-d)&<0 \end{align*} $$
$a,b,c,d$に相性ベクトルを代入します。パワーは等しいとします。
$$ \begin{align*} ((v_1-v_2)\times v_3)((v_1-v_2)\times v_4)&<0\\ (v_1\times(v_3-v_4) )(v_2\times(v_3-v_4) )&<0 \end{align*} $$
一つ目の式は$v_1-v_2$の左右両側に$v_3,v_4$が一つずつ来ることを表しており、二つ目の式は$v_3-v_4$の両側に$v_1,v_2$が来ることを表しています。要は構築の二つが近すぎて相手視点で3だけ出してれば両対応、みたいな状況は公式の適用外になっています。
また、パワーの違いよりも相性の違いの方が重要と考えて式変形の途中でパワー差の二乗の項を落としました。パワーが極端に低い人は公式の適用外です。
以上をまとめると次のようになります。

  • $v_1-v_2$$v_3,v_4$の間を通らないような12構築vs34構築は正しく計算できない。
  • パワーが極端に違うポケモン入りの構築は正しく計算できない。

具体的なポケモンでいうとタイプ統一やパワーの低いマイナーポケモン入りの構築がからむ対戦が考察の適用外になります。

考察

計算の結果、次がわかりました。これがどういうことを言っているか考えます。
$$ B_{ij}=\frac{1}{V_i\times V_j}\quad (等パワー) $$

Vで決まるという事

数式の詳細を見る前に、そもそも $V$ というベクトル一つで構築の特徴をあらわせるという時点ですごく特徴的なことを言っています。本来二匹VS二匹の対決なので合計4匹の組み合わせによって構築同士の優劣が決まるはずですが、その組み合わせに関わらず $V$ が同じになる構築同士は同じ相手に同じ程度有利になることを主張します。
いうなれば、一旦相手側の構築を無視して自分の2匹だけ考えて $V$ というベクトルを計算するだけで「自分はこういう構築です」という特徴を計算することができると言っているのです。
そして今回その $V$ がポケモン単体の相性 $v$ を使ってどのように書けるかというところまで計算で突き止めました。構築に入れるポケモンの特徴から構築全体がどういう特徴を持つかを説明できるということです。
ちなみに等パワーではない時には $U$ というベクトルが付け加わります。この $U$ の影響を調べることでパワーの高いエースを補完するように相方を決めると強いのか??? みたいな話をできると期待しています。が、文字数と調査時間の都合で今回はやりません。後日別記事として調べられればいいなと思っています。

どういう時に有利になるか

ポケモン単体の相性の解釈と同じように、$V_i\times V_j$$V_i$$V_j$ が反時計回りになると正、時計回りに並んでいると負になる項です。
今回の場合大きく違うのは、これが逆数の形で入っているため、$V$ が同じ方向・正反対など、平行に近い関係の時に相性の影響が大きくあらわれるという点です。
またベクトルの絶対値の意味も反対になり、絶対値が大きい構築は有利不利の影響を受けにくく、絶対値が小さい構築は影響を受けやすくなります。
特に $V$ が原点付近の構築だと常に分母が0付近になってしまうので、正のときはすごく有利で負になる時はめっちゃ不利という極端な構築になることを表します。

Vがどういうときに有利になるか Vがどういうときに有利になるか

Vはどのように決まるか

計算の章では $V$ は次のように決まりました。どういうことを表しているか考えましょう。前節でみた通り、$V$ の絶対値が大きいほど相性の影響を受けにくい安定した構築になることを頭の隅に置いておきます。
$$ V= \frac{v_1-v_2}{v_1\times v_2} $$
基本的に $v_1$$v_2$ の差を表してるので、$v_1$$v_2$ が同じ方向を向いているほど小さくなり、反対方向を向くほど大きなベクトルになります。
二匹のポケモンが同じ方向を向くというのは、つまりタイプ統一のように、同じ相手が苦手なポケモンを揃える時に $V$ が小さくなります。これは有利不利が激しいことを表しますが、同じ特徴2匹で組むとそうなるのはわかりやすいですね。
逆に構築の2匹が逆方向を向いていると大きくなります。逆向きの二人というのは相互に補完できるバランスがよい構築をあらわしており、$V$ が大きくなり、構築単位の相性は安定すると言えそうです。

逆向きのポケモンからなる構築 逆向きのポケモンからなる構築

また、同じ「構築に入れる2匹が逆方向を向いていてバランスが良い構築」であっても、$x$ 軸方向に逆を向いているか $y$ 軸方向に逆を向くかでベクトルの向きが大きく異なることがわかります。
さらに $V$ の式には $v_1 \times v_2$ の補正が入っていることも考えましょう。$v_1-v_2$ が同じくらいでも $v_1\times v_2$ の積で割り算される分、$v_1$$v_2$ 単独の時点で絶対値が小さい方が $V$ が大きくなります。ポケモン単体の時点で有利不利が激しい二匹だと逆方向の二人を組み合わせて $v_1-v_2$ が小さくなったとしても、そもそも単体の時点で安定した二人の組み合わせで同じくらいの $v_1-v_2$ を実現したほうが $v_1 \times v_2$ の分 $V$ が大きくなり、安定した結果になることを示しています。

また $v_1 \times v_2$ は平行なほど0に近づき、$V$ にはこれが逆数で入っている関係上、$v_1$$v_2$ が厳密に真逆を向くときに $V$ の絶対値は無限大に大きくなります。相性が1種類な関係で、逆方向向いた二人を $1/2$ ずつで出すと相手に関わらず勝率50%になる仕様を反映していますね。

どっちが有利かを決めるのは $V$ の向きですが、これは $v_1-v_2$ の向きで決まります。$v_1\times v_2$ で割る関係上、時計回りになるように引き算したものが $V$ の向きになります。
例えば A(1,0) と B(0,1) の二人の構築は (1,-1) 方向なので、A(1,0)とC(0,-1) の二人の構築(Vの方向 (-1,-1)) に弱いです。

結局どれが強いの?

構築二つを決めたときにどっちが有利かは $V_i$$V_j$ を比べればわかるようになりました。では、全体を見渡した時にどれが強い構築として皆が使う構築になるでしょうか?
この問題は以下の行列のナッシュ均衡を計算すればよいはずです。
$$ B_{ij}=\frac{1}{V_i\times V_j}\quad (等パワー) $$
ただ、この問題を解析的に解こうとしたんですが無理でした。たとえばコレが逆数じゃなかったら「等パワーなら任意の3すくみが均衡になる! 比率はコレ!」ってビシっと数式で計算できるんですが、今回は逆数になってる関係で数式で求めようとするととってもむずかったです。数学強い人代わりに解いて教えて(はーと)。
対称ゲームのナッシュ均衡なので、固有値0の固有ベクトルを求めるだけでも均衡っぽくなるはずです。数学強い人教えてください。
仕方がないので数値的に調べたものを後日公開しようと思います。

まとめ

ポケモン単体のパワー・相性を出発点として、構築同士の相性関係をあらわす利得行列を求めました。結果として単体のポケモン1,ポケモン2からなる構築を次のベクトルで特徴づけることで、構築同士の関係性を完全に表すことができることがわかりました。
$$ \begin{align*} V=& \frac{v_1-v_2}{v_1\times v_2}\\ U=& \frac{v_1'-v_2'}{v_1'\times v_2'}\quad (v'=v/p)\\ \end{align*} $$
この時構築同士の相性関係は次の利得行列になりました。
$$ B_{ij}=\frac{1+U_i\times V_j - V_i\times U_j}{V_i \times V_j} $$
特にポケモン単体が等パワーの時はこの式は次のようになり、これらの数値が大きくなる条件などについて考察をおこないました。
$$ B_{ij}=\frac{1}{V_i \times V_j} $$

あとがき

ここまで読んでいただきありがとうございます&式変形お疲れ様です。

この問題に取り組み始めてからずっとやりたかった、ポケモン単体の相性と構築単位の相性の関係づけができました。思ったよりシンプルに構築の特徴を表すベクトル$V$というものを導入できたのでほくほくしてます。
構築に組み込むポケモンを互いに異なる特徴の2匹にしてバランスの良い構築にすることで、構築の特徴Vも有利/不利の差の少ない安定した関係性の利得行列にできるというのは実感にも合う形で定式化できたのは面白いと思います。

今回あまり詳しく触れなかったパワーの寄与$U$や数値的に調べる等、面白そうなテーマも残っているので今後に期待です。では~~

参考文献

投稿日:6日前
数学の力で現場を変える アルゴリズムエンジニア募集 - Mathlog served by OptHub

この記事を高評価した人

高評価したユーザはいません

この記事に送られたバッジ

バッジはありません。

投稿者

最近ポケモンやってます

コメント

他の人のコメント

コメントはありません。
読み込み中...
読み込み中