momoken連戦祭配ぷよ索引
前回述べた通り、momoken連戦祭(
https://www.youtube.com/watch?v=CQBNW0TNzDI,
https://www.youtube.com/watch?v=7LvKq_1ulE4)の全試合(490本)の配ぷよデータを作成した。490本という数字が十分かというとやや心もとないが、一回の大型連戦を対象にすれば、サンプリングの基準が明確になるのは利点である。(注1)作成したデータは次で公開する。
https://2424study.netlify.com/rensenmatsuri/
データの内容はリンク先の解説の通りである。データの精度検証等に使うために、土台形の情報を含む索引も作成したが(注2)、配ぷよ研究に必要なのは「配ぷよデータ」の方である。
https://2424study.netlify.com/rensenmatsuri/rensenmatsuri_haipuyo.txt
このデータは各試合で現れた配ぷよを、一行一試合、軸ぷよ先のフォーマットで記録したものである。アルゴリズムが判明したおかげで、観測された配ぷよから続きを補完できるので、それもデータに含めている。ツモパターンが確定する位置(組ぷよではなくぷよ単位)を'!'記号で、観測範囲の終端を'$'記号で示す。ツモが128手以上になった試合(一試合だけであるが)は$抜きで全ツモを示す。
前回の投稿で書いた通り、生成可能な配ぷよの中には互いによく似たものが含まれていて、パターンが一意に確定するまでに長い手数を要する場合がある。幸いなことに、momoken連戦祭の配ぷよは、全て観測範囲のツモで一意に確定できる。一番きわどいのは
https://youtu.be/7LvKq_1ulE4?t=10745で、8手目で2パターンに絞られて以降ずっと確定せず、最終局面の1Pのネクネクの黄緑で確定する。
配ぷよの偏りの分析
公開したデータの配ぷよの偏りについて、簡単な分析を行う。偏りを調査するには何らかの指標があると便利だが、ここではつみ氏による「配ぷよの偏り」(
https://puyo-camp.jp/posts/104263)を用いておく。(以下、評価指標の「偏り」を一般語としての偏りと区別するためにかぎかっこを用いる)(注3)前回触れた通りACぷよ通のツモは単純にループするわけではないが、最初の128手がループすると想定して計算する。(この単純化の影響は無視してよいだろう)「偏り」は配ぷよ列のぷよ単位で計算されるので、念のため「組ぷよ(手数)単位の偏り」も計算しておく。(その際ゾロは同じ色が距離0で二回出現したものと考える。)これを「偏り(組)」と呼ぶことにする。
「128手分の配ぷよ補完が可能だ」というのは今のところは私が勝手に言っているだけなので、補完分を含めた128手ループではなく、観測可能な区間だけで計算できる指標もあったほうが良いだろう。ここでは仮に、与えられたぷよ列の直前と直後に全色があると想定して同色距離を計算し、「偏り」同様分散を求めたものを使う。これを「偏り(区間)」と呼ぶことにする。(本来の「偏り」ではぷよ列四週分の距離がぷよ数と同じ数の同色ペアに分配されるが、「偏り(区間)」の場合は距離、ペア数とも植木算式に値がずれることになる。「偏り(区間)」はループ版の「偏り」と似た値になるが、ループ版や、手数の違うぷよ列で計算した値と無条件に比較しないように注意する。)
まず、ツモ予見で補完したmomoken連戦祭490本各128手分の配ぷよと、他の128手色均等系の配ぷよについて、「偏り」を計算して比較する。(表中N/Aは理論値の算出を断念した。)括弧内には、それぞれの分布から490本抽出してデータを作成した場合の「偏り」とその標準偏差を、モンテカルロ法(試行10000回)で推定して示す。「メガドライブぷよ通(初期値ランダム)」は、2^32通りの初期値を一様に選んだ場合に得られる分布である。(それだと配ぷよが被ることがあるが、現時点ではその方が現実の配ぷよ生成器の用法に近い可能性が高いと判断した。)「メガドライブぷよ通風」は、前回述べたアルゴリズムで、乱数生成器だけ差し替えたものである。実機を模倣した部分以外の乱数生成には全てMT19937に基づくC++およびPythonのライブラリ実装を用いた。
配ぷよ生成法 |
偏り |
偏り(組) |
momoken連戦祭 |
11.944 |
3.1272 |
メガドライブぷよ通(初期値ランダム) |
11.813(11.813±0.070) |
3.0972(3.0972±0.018) |
メガドライブぷよ通風 |
N/A(11.776±0.071) |
N/A(3.0887±0.018) |
128手色均等(ランダムシャッフル、冒頭三手三色ツモ) |
11.781(11.781±0.070) |
3.0899(3.0898±0.018) |
128手色均等(ランダムシャッフル、冒頭二手三色ツモ) |
11.697(11.696±0.069) |
3.0682(3.0681±0.018) |
現行セガぷよ(65536通りランダム) |
11.397(11.398±0.066) |
2.9918(2.9922±0.017) |
128手全体の「偏り」をみると、「メガドライブぷよ通風」は、128手色均等より「偏り」がやや小さく、これはおそらく誤差ではないが(この点の理論的解析は今回は断念した)、差は非常に小さい。一方、「メガドライブぷよ通(初期値ランダム)」は、逆にやや「偏り」が大きい。これは乱数生成器の問題かもしれない。いずれにせよこれら三つの差は微妙で、少なくとも「偏り」による比較では、小規模なデータで区別するのは困難である。「現行セガぷよ」と「128手色均等(冒頭二手三色ツモ)」では前者の方が偏りが小さいのは既存の分析の通りであるが、その差は今回作成したサイズのデータで「偏り」を用いて検出できる程度に大きい。
momoken連戦祭の補完された配ぷよは「メガドライブぷよ通(初期値ランダム)」の配ぷよとしてはやや「偏り」が大きく、大雑把に言って上位3%の「当たりくじ」を引いた程度と考えられる。この偏りに何か意味があるのか結論付けるには現状のデータは不十分だが、少なくとも「偏り」で検出できるような形で、実戦配ぷよの偏りが抑えられている可能性は低いであろう。
前回述べた通り、メガドライブぷよ通(風)の配ぷよアルゴリズムではシャッフルが一様でなく、ぷよ列中の位置によって偏りに差が出ることが考えられる。この点を確認するために、ぷよ列の先頭だけ取って「偏り(区間)」の期待値を計算したものを比較してみる。(*は試行1000000回のモンテカルロ法によった。)
配ぷよ生成法 |
偏り(区間)/偏り(区間、組)先頭16手 |
同32手 |
同64手 |
メガドライブぷよ通(初期値ランダム) |
9.8171/2.6196 |
10.696/2.8247 |
11.164/2.9366 |
メガドライブぷよ通風* |
9.8199/2.6207 |
10.697/2.8254 |
11.156/2.9350 |
128手色均等(ランダムシャッフル、冒頭三手三色ツモ) |
9.8212/2.6207 |
10.701/2.8260 |
11.159/2.9356 |
(2020-01-24 追記:次の段落の、「メガドライブぷよ通風」に関する議論にはいろいろ問題があるが、最後の「今回は影響は無視してよい」というのは正しいと思われるのでとりあえずこのままにしておく。)
(冒頭の三色ツモ以外)場所によらず均質な「128手色均等(冒頭三手三色ツモ)」と比較すると、「メガドライブぷよ通風」は、手数が進むにつれてだんだん「偏り」が大きくなる傾向を持っている。(これも理論的解析を望みたいところだが、今回は断念した。)「メガドライブぷよ通(初期値ランダム)」はその傾向がより強く、128手全体では「メガドライブぷよ通風」より「偏り」が大きいにもかかわらず、先頭16手を比較すると逆転しているようである。ただ、どちらも「128手色均等」との差はわずかで、今回の規模の調査では影響は無視してよい。
最後に、momoken連戦祭の観測範囲の配ぷよについて、「偏り(区間)」を計算したものを示す。実戦のデータ以外は、490本分の配ぷよを各試合実戦と同じ長さで生成した場合の期待値を示す。(括弧内の数値等は、128手ループ版の「偏り」の表と同様である。)各試合でツモ数が違うので、重みづけ等も検討すべきかもしれないが、単純に試合毎に「偏り」を求めた後で平均等を計算した。
配ぷよ生成法 |
偏り(区間) |
偏り(区間、組) |
momoken連戦祭 |
11.157 |
2.9351 |
メガドライブぷよ通(初期値ランダム) |
10.955(10.954±0.103) |
2.8864(2.8865±0.027) |
メガドライブぷよ通風 |
N/A(10.951±0.103) |
N/A(2.8857±0.027) |
128手色均等(ランダムシャッフル、冒頭三手三色ツモ) |
10.954(10.954±0.102) |
2.8864(2.8866±0.027) |
128手色均等(ランダムシャッフル、冒頭二手三色ツモ) |
10.829(10.830±0.103) |
2.8496(2.8499±0.027) |
現行セガぷよ(65536通りランダム) |
10.497(10.496±0.097) |
2.7622(2.7622±0.025) |
観測範囲の配ぷよについても、128手全体とほぼ同様のことがいえる。「対戦は色が偏ったところで終わりやすいので、実戦の観測範囲は平均的な配ぷよより偏りが大きくなる」といったことは考えられるかもしれず、そのような傾向がないとは言えないが、結論を出すにはやはり今回のデータ量では不十分である。
今後の課題
今回調べた範囲であえて結論を出すなら、ACぷよ通の実戦配ぷよは、少なくとも前回の投稿で与えたアルゴリズムから想定される程度に「偏り」が大きく、従って前々回の投稿(
https://puyo-camp.jp/posts/104093)も踏まえれば、現行セガぷよ、すなわちぷよスポやぷよクロより「偏って」いる、ということになる。ただ、前々回の投稿も含めて、ここに至る論証にはデータが公開できていなかったり、量的に十分とは思えなかったりする部分がある。
また、今回公開したデータには、量の不足以外にも不満がある。私は「偏り」の評価の際に配ぷよ補完を援用したが、補完手法は公開できていないので、公正に考えるなら、観測範囲の配ぷよだけを見て配ぷよの偏りを評価しなければならない。観測範囲の配ぷよは、128手色均等で想定されるのと同等以上に「偏って」いるが、先ほど触れた「実戦配ぷよの観測範囲は偏りが大きい」という仮説でこの「偏り」を説明するとすれば、依然として「ACぷよ通には色の偏りを抑える選別が働いている」といった考えは反証されていないともいえるかもしれない。
この問題を克服する方法として、現行セガぷよについて、今回私が公開したのと同様のデータを作成することは考えられる。セガぷよについては配ぷよデータによるツモ補完が一定の信頼を得ているだろうから、観測範囲の偏りと、配ぷよ全体の偏りとの間にどの程度隔たりが出るかが、データに基づいて検証できるはずである。(あるいは、ツモ予見法自体を、ウェブアプリなどの形で公開できないか、といったことも検討したいところである。)
動画等から自動的にぷよ譜等を抽出する試みには様々なものがあり、進行中のプロジェクトも少なからず存在するようである。(この投稿の準備中にも、東京eスポーツフェスタで、自動的な盤面認識による観戦補助システム「CLIP-LIVE」のデモが行われていた。)そのような試みが増えて、ぷよ譜等のデータが流通しやすくなれば、データ不足による論証の不備も解消されていくだろう。(それをなぜゲームの外部でやっているのか、という疑問はあるが……)
もちろん「偏り」のような単純な指標による検証が十分なのかという問題は未解決である。また、プレーヤーの配ぷよへの評価が、配ぷよ以外の要因にどの程度影響を受けているか(ゲームバランスによって思考時間が短くなったり、長い伸ばしを要求される場面が多くなったり、といったことが配ぷよへの不満に影響するのか等)、という問題についても検証が望まれるところである。
(注1)連戦動画等からぷよ譜を収集する試みには先例があり、私の知っている大規模なものだとぷよ譜検索(
https://cuboktahedron.github.io/q/pse/)、ぷよ譜DB(
http://shinh.skr.jp/puyodb/)等が挙げられる。これらから配ぷよを取得することも可能だろうし、前回の投稿で述べた成果により、ツモがある程度の手数分かっていれば続きを補完することもできる。ただ、配ぷよ分析を目的にするなら試合のサンプリングが配ぷよとは独立になっている必要があり、ぷよ譜検索やぷよ譜DBのデータで実現するのは難しいように思われる。mayahの1000先等のデータがあれば非常に有用だが、ぷよ譜等は残っているのだろうか?
(注2)なお、このデータを作成中に、以前公開したデータ(
https://puyo-camp.jp/posts/86266)のABCD表記が、投稿内の説明に反して「普通の表記」ではないことに気づいた(ABAAとABBBが区別されるなど)が、面倒だし需要もそれほどないだろうから修正はしない。
(注3)「偏り」がよい指標なのかというと私にははっきりしたことは分からないが、今回のデータではその他類似の指標を計算しても大差ない結果になったのでひとまずここでは「偏り」に絞って結果を述べる。