arXiv探訪

興味の赴くままに数学するだけ

【WoWs】コレクション完成に必要な個数は?【はいふり】

World of Warships(通称WoWs)というオンラインゲームがあります。軍艦を操作し、砲撃や魚雷などで相手を沈め、チームを勝利に導くことが目的のゲームです。自分もかれこれ2年以上プレイを続けています。

store.steampowered.com

さて、このゲームにはコレクションという収集要素があるのですが、今やってる「ハイスクール・フリート」とのコラボイベントでは、キャラクターを模したコレクションを集めることができます。全部集めると旗や大和の迷彩などが貰え、特に迷彩はゲーム内リソースの節約に繋がるので是非とも集めたい感じです。

f:id:mathmathniconico:20180131211348j:plain

f:id:mathmathniconico:20180131211357j:plain

ここからが数学です。

問題 コレクションは全部で35種類あります。1回でランダムに1個手に入りますが、重複が5個集まればまだ持ってない1種類と交換できます。全部で何個コレクションを集めればコンプリートできるでしょうか?

まず条件を整理しましょう。コレクションは全部で{ n }種類、1回で1個手に入る確率は{ p }とします。重複が{ a }個で交換できるとします。

所持している種類が{ k }種類になってから{ (k+1) }種類になるまでにかかる回数を表す確率変数を{ X_{k} }とします。この回数が{ t }回になる確率{ P(X_{k}=t) }は、{ (t-1) }回既に持っている種類を入手し、{ t }回目に新しい種類を入手する確率なので、

{ P(X_{k}=t)=(kp)^{t-1}(n-k)p }

になります。ここで

{ \displaystyle 1+2r+3r^{2}+\dotsb = \sum_{t=1}^{\infty}tr^{t-1}=\frac{1}{(1-r)^{2}} }

に注意すれば、

{ \displaystyle E\lbrack X_{k} \rbrack = \sum_{t=1}^{\infty}P(X_{k}=t)\cdot t=(n-k)p\sum_{t=1}^{\infty}t(kp)^{t-1}=\frac{(n-k)p}{(1-kp)^{2}} }

となります。

今考えたいのは{ p=\frac{1}{n} }の場合です。すると{ m }種類集めるまでの回数の期待値{ N_{m} }

{ \displaystyle N_{m}=E\lbrack X_{0}+\dotsb+X_{m-1} \rbrack=\sum_{k=0}^{m-1}\frac{n}{n-k}=n\left( \frac{1}{n}+\dotsb+\frac{1}{n-m+1} \right) }

と分かります。故に

{ \displaystyle \frac{1}{a}(N_{m}-m)+m\ge n }

を満たす最小の{ m }に対し、{ N_{m} }が求める値になります。

{ n=35, a=5 }として計算すると、{ m=29 }{ N_{m}=59.38 }回となるので、約60個集めれば期待値的にはコンプリートができることがわかります。(これはExcelで出した)

……ちょっと待ってください? 所謂ガチャに関して期待値だけを見るのは少々危険です。ちゃんと分布まで見ておくべきでしょう。

ということでjulia言語を使って1万人にガチャをやってもらいました。汚いですが、ソースはこんな感じ。

rng = MersenneTwister(1234)

size = 10000
sorts = 35
dupli = 5
counts = zeros(Int64, size)
tests = dupli * sorts

function notzeros(cards::Array{Int64, 1})
    res = 0
    for i in cards
        if (i != 0)
            res += 1
        end
    end
    return res
end

for j = 1:size
    cards = zeros(Int64, sorts)
    for i = 1:tests
        index = rand(rng, 1:sorts)
        cards[index] += 1
        collected = notzeros(cards)
        if ((i - collected) / dupli + collected >= sorts)
            counts[j] = i
            break
        end
    end
end

countsヒストグラムで表示すると以下の図になりました。

f:id:mathmathniconico:20180131213016p:plain

意外なことに、周期4でピークが出ています。また運が悪いと70回近くかかる人が出てくることが分かります。(バランス的に期待値60じゃない気がするんですが…どこか間違えたか?)

ところで、イベントではHSF Harekaze及びHSF Graf Speeという二種類の課金艦、及び大和(tier10なので相当やらないと所持できない)と武蔵(フリー経験値で購入なので大和以上にやらないと手に入らない)でプレイすると、特殊なコンテナを一定数手に入れることができます。特に課金艦二つ(お船のみ合計約7000円になっております)では、20個ずつのコンテナが手に入り、コンテナ1つで2個、計80個のコレクションが手に入ります。上の図に依れば、運が悪くても80個あれば、まぁ間違いなくそろえることが出来ますね!

なおコラボ系の販売は2/7まで、またコラボ参加申請もそれくらい、特殊コンテナは4/30までと期間限定です。デイリーコンテナからも1個(確率で)出るのですが、こちらは9/30まで(色々ややこしい)

Dynkin図形の分類について

まずはディンキン図形 - Wikipediaという項目を見て欲しい。英語版の翻訳に過ぎないのだが、とりあえず全部詰め込んでおくか、という内容で全く整理されていない。それはディンキン図形が数学の様々な分野で現れるため、それぞれ都合よく解釈され、類推として拡張されてしまったことによる影響だろう。「おっこれA型じゃーん」「じゃあE型の対応物あるんじゃね?」「お、そうだな。調べたらあったからE型って名前付けとくわ」みたいな。なので今回は全ての核となる部分のみに着目し、リー代数とかルート系とかそういった話は一切せずに、非常に良く纏まった美しい分類の証明を紹介しようと思う。ベクトル空間の基本的な性質のみで示すことが出来る。

許容集合とはユークリッド空間{ \mathbb{R}^{n} }の正規基底{ \lbrace v_{1}, \dotsc, v_{n} \rbrace }(独立かつ全体空間を張り、長さが{ 1 }のベクトルたち)であって、ベクトルたちの成す角が{ \frac{\pi}{2}, \frac{2\pi}{3}, \frac{3\pi}{4}, \frac{5\pi}{6} }の何れかとなるものを指す。つまり90度、120度、135度、150度の開きしか認めない。

そんなものは本当にあるのかと思うかもしれないが、少なくとも{ n=1 }の場合は角度の条件は意味をなさないし、{ n=2 }の場合も角度に応じて(角度を保つ線型写像による同型を除き){ 4 }種類あることが分かる。{ n=3 }の場合も、上記の組み合わせでできるものや、そうでないものを作ることが出来る。

角度の条件は{ \langle v_{i}, v_{j} \rangle\le 0 }かつ{ 4\langle v_{i}, v_{j} \rangle^{2}\in \lbrace 0, 1, 2, 3 \rbrace }と書き換えることができる。そこで{ v_{i} }を頂点とし、辺に{ 4\langle v_{i}, v_{j} \rangle^{2} }という重みを付けたグラフ(重みゼロは結ばないこととする)を考え、これを許容図形と呼ぶことにする。慣例として重み{ 2 }は二重線、重み{ 3 }は三重線で書く。(辺が複数あるという意味ではない。)

定理 連結な許容図形はA型、BまたはC型、D型と呼ばれる無限系列(古典型)と、E6型、E7型、E8型、F4型、G2型と呼ばれる(無限系列ではないという意味での)例外型しかない。

はてなブログの仕様的に各々の図をtexで書くのは難しいですのでちょっと誤魔化します。ディンキン図形 - Wikipediaにあるグラフのうち、向きを表す矢印を落としたものに対応します。丸の数が{ n }に対応し、黒丸で分岐しています。分岐後は~の後に書いてあります。

A型:○ー・・・ー○

BまたはC型:○ー・・・ー○=○

D型:○ー・・・ー●ー○、~●ー○

E6型:○ー○ー●ー○ー○、~●ー○

E7型:○ー○ー●ー○ー○ー○、~●ー○

E8型:○ー○ー●ー○ー○ー○ー○、~●ー○

F4型:○ー○=○ー○

G2型:○≡○

AからGまでの文字に意味はありません。これは単にカルタンが分類定理を発表したときに付けた番号にすぎません。

定理の証明

補題 一つの頂点から、重みも考慮して、{ 4 }本以上の辺は出ない。

(証明){ v=\sum v_{i} }を考えると、独立性より{ v\neq 0 }が従うから

{ \displaystyle 0\lt \langle v, v\rangle = \sum_{i} \langle v_{i}, v_{i} \rangle+2\sum_{i\lt j}\langle v_{i}, v_{j} \rangle = n+\sum_{i\lt j}2\langle v_{i}, v_{j} \rangle }

となる。二つの頂点{ v_{i}, v_{j} }が辺で結ばれているなら{ 2\langle v_{i}, v_{j} \rangle }{ -1, -\sqrt{2}, -\sqrt{3} }の何れかである。特に{ -1 }以下なので、和の項数は{ n-1 }を超えることが出来ない。ところがグラフは連結なので{ n-1 }個のペアが必要となる。つまり辺はちょうど{ n-1 }本ある。するとオイラーの定理などを使ってグラフにループがないことが分かる。

頂点{ c }から{ v_{1}, \dotsc, v_{k} }(必要なら並び替えて)に向かって辺が出ているとする。ループは存在しないので{ i\neq j }なら{ \langle v_{i}, v_{j} \rangle=0 }となる。さて、再び独立性より{ c }{ v_{1}, \dotsc, v_{k} }の線型和で書くことが出来ない。{ c }{ v_{1}, \dotsc, v_{k} }が張る空間の直交補空間への射影を考える。正規化したものを{ v_{0} }と書けば、{ v_{0}, \dotsc, v_{k} }は正規直交基底を為す。このとき{ c=\sum_{i=0}^{n}\langle c, v_{i} \rangle v_{i} }と表せるが、{ \langle c, v_{0} \rangle\neq 0 }である。故に{ c }より出る重みを込めた辺の本数は

{ \displaystyle \sum_{i=1}^{k} 4\langle c, v_{i} \rangle^{2} \lt 4\sum_{i=0}^{k} \langle c, v_{i} \rangle^{2} = 4\langle c, c \rangle = 4 }

となる。{ \square }

これより直ちにG2型が出る。つまり重み3の辺を持つ場合はG2型しか存在しない。

許容集合の部分集合も(適切なユークリッド空間において)許容集合となるが、特に許容図形が○ー・・・ー○となる部分を単純鎖と呼ぶ。

補題 { v_{1}, \dotsc, v_{k} }の許容図形が単純鎖の場合、これらの頂点を{ v=\sum v_{i} }で置き換えても許容集合となる。

(証明)単純鎖の場合、{ j=i+1 }のときに限り{ \langle v_{i}, v_{j} \rangle }は正の値を取る。このとき辺の重みは{ 1 }なので、{ \langle v_{i}, v_{i+1} \rangle = -\frac{1}{2} }を得る。故に

{ \displaystyle \langle v, v \rangle = k+2\sum_{i\lt j}\langle v_{i}, v_{j} \rangle = k+2\sum_{i=1}^{k-1}\langle v_{i}, v_{i+1} \rangle=k-(k-1)=1 }

だから、{ v }は単位ベクトルである。また{ x }を単純鎖に属さない別の頂点とすると、グラフにループがないので高々{ 1 }つの頂点{ v_{j} }と繋がる。よって

{ \displaystyle \langle x, v \rangle = \sum_{i=1}^{k}\langle x, v_{i} \rangle= \langle x, v_{j} \rangle }

となるため、角度を保つ。このことから{ v_{1}, \dotsc, v_{k} }{ v }で置き換えたものも許容集合となることが分かる。{ \square }

この補題より、例えば○=○ー・・・ー○=○が許容図形なら○=○=○も許容図形となり、これは矛盾する。同様に重み{ 2 }の辺が二つ以上ある場合、分岐が二つ以上ある場合、重み{ 2 }の辺と分岐を両方持つ場合は、いずれも許容図形にならないことが分かる。言い換えれば、許容図形は既に分類したG2型を除き、単純鎖の場合、重み{ 2 }の辺を{ 1 }本だけ持つ場合、分岐を{ 1 }個だけ持つ場合に分けられる。

単純鎖の場合はA型に相当する。

重み{ 2 }の辺を{ 1 }本だけ持つ場合

許容図形は○ー・・・ー○=○ー・・・ー○である。頂点を{ u_{1}, \dotsc, u_{p}, v_{q}, \dotsc, v_{1} }と置く。ここでなぜか

{ \displaystyle u=\sum_{i=1}^{p} i\cdot u_{i} }

を考える。このとき{ \langle u_{i}, u_{i+1} \rangle =-\frac{1}{2} }だから、

{ \displaystyle \begin{align*} \langle u, u \rangle &= \sum_{i=1}^{p}i^{2}\langle u_{i}, u_{i} \rangle+\sum_{i=1}^{p-1}i(i+1)2\langle u_{i}, u_{i+1} \rangle \\ &= \sum_{i=1}^{p}i^{2}-\sum_{i=1}^{p-1}i(i+1) \\ &=\frac{p(p+1)}{2} \end{align*} }

となる。同様に{ v=\sum j\cdot v_{j} }と置けば{ \langle v, v \rangle=\frac{q(q+1)}{2} }となる。

一方{ \langle u, v \rangle=pq\langle u_{p}, v_{q} \rangle }なので、{ \langle u, v \rangle^{2}=\frac{p^{2}q^{2}}{2} }であり、有名なCauchy-Shwartzの不等式から({ u, v }が独立なので強形が従う)

{ \displaystyle \frac{p^{2}q^{2}}{2}\lt \frac{p(p+1)}{2}\frac{q(q+1)}{2} \Leftrightarrow (p-1)(q-1)\lt 2 }

を得る。

{ p=q=2 }は○ー○=○ー○となりF4型である。

{ p=1 }のときは{ q }は任意となるため、BまたはC型という無限系列を得る。

分岐を{ 1 }個だけ持つ場合

許容集合は○ー・・・○ー●ー○ー・・・ー○、~●ー○ー・・・ー○である。頂点を{ u_{1}, \dotsc, u_{p-1}, c, v_{q-1}, \dotsc, v_{1} }、および{ w_{r-1}, \dotsc, w_{1} }と置く。{ u=\sum i\cdot u_{i}, v=\sum j\cdot v_{j}, w=\sum k\cdot w_{k} }を考える。{ c }{ u_{i}, v_{j}, w_{k} }の線型和で書けないので、これらの張る空間の直交補空間への{ c }の射影はゼロでない。つまり{ u, v, w }の正規化を{ u^{\prime}=\frac{u}{\sqrt{\langle u, u \rangle}}, v^{\prime}=\frac{v}{\sqrt{\langle v, v \rangle}}, w^{\prime}=\frac{w}{\sqrt{\langle w, w \rangle}} }とすると、

{ 1=\langle c, c \rangle \gt \langle c, u^{\prime} \rangle^{2}+\langle c, v^{\prime} \rangle^{2}+\langle c, w^{\prime} \rangle^{2} }

を得る。

ここで{ c }と繋がるのは{ u_{p-1}, v_{q-1}, w_{r-1} }のみなので

{ \displaystyle \langle c, u \rangle^{2}=\sum_{i=1}^{p-1} i^{2}\langle c, u_{i} \rangle^{2}=(p-1)^{2}\langle c, u_{p-1} \rangle^{2} = \frac{(p-1)^{2}}{4} }

を得る。{ \langle u, u \rangle=\frac{(p-1)p}{2} }(先の場合と同様だが添え字が{ p-1 }であることに注意)なので、結局

{ \displaystyle \langle c, u^{\prime} \rangle^{2}=\frac{\langle c, u \rangle^{2}}{\langle u, u \rangle} = \frac{p-1}{2p} }

が従う。{ v, w }についても同様で、先ほどの式は

{ \displaystyle \frac{1}{p}+\frac{1}{q}+\frac{1}{r} \gt 1 }

と同値になる。

{ p\ge q\ge r\ge 2 }について解くと、{ r\ge 3 }なら解なしなので{ r=2 }が分かる。

{ q=2 }のときは{ p }は任意でよく、無限系列D型が出る。

{ q=3 }のときは{ p=3, 4, 5 }に合わせて例外型のE6型、E7型、E8型が出る。

{ q\ge 4 }のときは解がない。

所感

角度の条件から不等式へと至る仮定は実に見事な証明だと思う。

本来のディンキン図形はここに長さの条件で二重線や三重線に「向き」を加えたものだが、そこまで述べるとまたややこしくなる。

Steam冬セールの戦利品

新年一発目はSteamの冬セール戦利品でも紹介しましょうか。今回はパズルメインに小物を4本ほど購入しました。大作は今積んでるのをちゃんと崩してからやろうという意思の強さが伺えます。

まずはLinelightというパズルアクション。

f:id:mathmathniconico:20180107154508j:plain

光る棒を操作して線の上を辿り、黄色や緑色の星を集めていく。道中には様々なギミックがあり、通過すると道が変わったり、当たるとダメな赤い棒、自分の動きに合わせて動く黄色い棒などがある。パズルの作りや難易度の調整が絶妙で、心地良いSEとBGMが素晴らしい作品。今回の中では一番お勧めしたい。

f:id:mathmathniconico:20180107154858p:plain

上の状態は青のスイッチを押したもの。ここからオレンジのスイッチを押せば道が繋がり、先に進むことが出来る。

store.steampowered.com

次はGlassMasqueradeという絵合わせパズル。

f:id:mathmathniconico:20180107155315j:plain

各国を代表する物を描いたステンドグラス風のアートワークが美しく、神秘的なBGMと共に素敵な時間を過ごすことが出来る。

f:id:mathmathniconico:20180107155356p:plain

ただしやってると眠くなるので注意。あと自分の環境だと操作が途中で止まったりした。(Alt+Tabでアクティブを一端外せば元に戻る)

store.steampowered.com

Bejeweled 3はマッチスリーと呼ばれる種類のパズル。

f:id:mathmathniconico:20180107155807j:plain

Steamにあるマッチスリーの中で一番出来が良いという噂。様々なモードがあって長く楽しめる。

f:id:mathmathniconico:20180107155817p:plain

250円だったけど夏頃(GWだったかな?)のセールまで待てば125円で買えるはず。

store.steampowered.com

最後は2DアクションのThe Vagrantです。

f:id:mathmathniconico:20180107160849j:plain

まだアーリーだけど、ちょっと触った感じクオリティは高い。アイテムが色々あってハクスラっぽいシステムになってる。一面のボスが固すぎて5つもゲージがあった(一回やられてしまった)。

f:id:mathmathniconico:20180107160902p:plain

通常攻撃とロール移動の連打で大体勝てるので、色々あるスキルが機能していない点、バランス調整はこれからって感じ。

store.steampowered.com

遊びはこれくらいにして、次からは数学の記事を書きます。本年もarXiv探訪をどうぞよろしくお願いします。