Quantumleap
3240 words
16 minutes
キンシャケ探しインデックスバグの詳細

インデックスバグについて#

前回の記事で WAVE1 に発生するキンシャケ探しにおいてアタリ位置が大きく偏っていることは解説したが、実際にどのくらい偏っているのかを調べたのが今回の記事の内容になります。

各ステージのインデックスはキンシャケ探しデータベースに載せてあります。

通常潮位の場合#

前回の記事では絶対に初手でアタリ位置にならないポイントがあると述べましたが、それぞれのアタリの確率を全通り調べることでチェックしました。

シェケナダムドンブラコシャケト場トキシラズポラリス
A0.0000%0.0000%0.0000%0.0000%-
B12.2175%13.6241%12.2175%16.3615%-
C12.2274%14.1779%12.2274%17.0888%-
D12.4400%14.4848%12.4400%17.4402%-
E12.6129%14.6779%12.6129%20.5351%-
F12.7169%18.0336%12.7169%14.2890%-
G15.5655%12.5000%15.5655%14.2855%-
H11.1076%12.5017%11.1076%--
I11.1121%-11.1121%--

通常のキンシャケ探しでは全てのアタリ位置に対して二つ以上ゴール候補が存在するので、どこがアタリ位置になるかは初期シードとカンケツセン数だけで決まります。

なのでシェケナダムとシャケト場は必ず同じアタリ位置になりますし、トキシラズとポラリスも必ずおなじになります。特筆すべきはトキシラズとポラリスで、アタリ候補は 7 つあるので同様に確からしいとすればアタリの確率は約 14.2875%のはずなのですが、インデックスバグにより初手は必ず A がアタリにならず、しかも本来 A がアタリになるべき期待値が残りの候補に均等に割り振られていないため、E のアタリ確率が 1/5 よりも大きくなっています。

なので、開栓手数やコンテナとの距離などを考えなければトキシラズとポラリスにおいては初手 E を開けるのが最も良いということになります。

満潮の場合#

シェケナダムドンブラコシャケト場トキシラズポラリス
A--0.0000%--
B--28.4996%--
C---0.0000%-
D---28.4996%0.0000%
E0.0000%0.0000%-31.4996%50.0145%
F28.4996%50.0145%-19.9962%24.9789%
G31.4996%24.9789%31.4996%20.0045%25.0067%
H19.9962%25.0067%19.9962%--
I20.0045%-20.0045%--

ポラリスに関してはアタリ位置に対してゴール位置が一つしかないため、ゴール位置を決めるときに乱数を消費しません。その結果、本来 D の位置がアタリになるべき確率が全て E に吸収されるという(まるでモンティ・ホール問題)異常事態が発生しています。また、同様にドンブラコでも E のアタリ位置の確率が全て F に吸収されています。

ポラリスはともかく、ドンブラコであれば初手は確実に F 開けが良いでしょう。

連続しないアタリ位置#

更に予想されたのは初手以外のカンケツセンのアタリ位置にも偏りが出てくるのではないかということです。

というのも、前回ポラリス満潮を検証したときに WAVE1 である位置が三連続で同じ位置がアタリにならなかったためです。これを利用すれば、開栓手順がもっと効率化できる可能性があるわけです。

この章の解析は C++を使って全通り(4000 万通り全て!)について検証したのでプログラムにバグがない限りは確実な精度を保証できます。

通常の場合#

A 以外のアタリ位置に関しては二連続同じ位置がアタリになるケースが存在することがわかりました。

::: tip 三連続の場合

また、追加で調べたところ三連続同じアタリ位置も存在することがわかりました。

確率に差がある可能性はありますが、現状通常潮位では使いみちがなさそうです。

:::

満潮の場合#

WAVE1 の満潮の場合、ドンブラコとポラリス以外は同じ場所が初手から二連続でアタリになることは絶対にありません。

シェケナダムドンブラコシャケト場トキシラズポラリス
A--NO--
B--NO--
C---NO-
D---NONO
ENONO-NOYES
FNOYES-NOYES
GNOYESNONOYES
HNOYESNO--
INO-NO--

これが一体何に使えるんだということになりますが、例えばトキシラズだと対岸のどちらかがアタリなら、次は両方開ける必要がないケースが存在することになります。

トキシラズのカンケツセンの内部 ID はこのようになっていますが、例えば初手で C がアタリなら二回目は C は絶対ではアタリではありません。なので二回目は D を先にあけ、大なら E がアタリとわかるので C よりも優先して D を開けたほうが良いことがわかります。ちなみに D が小の場合は C が大か小かでアタリ位置が F か G かが変わってくるのでこの場合はどちらも開けなければ確定させることはできません。

::: tip 三連続

WAVE1 の満潮キンシャケ探しで三連続同じ位置がアタリになるシードは存在しません。

かつてポラリスでコンテナ横が連続するシードで記録をだそうとしても WAVE2 と WAVE3 でしか見つからなかったのはこれが理由だったのですね、納得。

:::

満潮の GraphNode 出力#

このままだとわかりにくかったので、とりあえず 100 万通りくらいのカンケツセンアタリ位置のフローチャートを出力してみました。

Python が遅すぎるので全部で 4000 万通りある中で 100 万通りしか検証していないため、ここで取得漏れしている組み合わせがあるかもしれませんが、まあ多分ないでしょう(無責任

シェケナダム満潮#

  1. 初手は必ず E ではない
  2. 初手と二回目は同じアタリ位置ではない

三つ目からは普通に候補が五つでてきているのでそれ以上の面白い成果は特にありません。

ドンブラコ満潮#

  1. 初手は必ず E ではない
  2. 二回目と三回目は同じアタリ位置ではない

ドンブラコについては少し変わっていて、初回と二回目は連続する可能性があるものの、二回目と三回目は違うアタリ位置になるようです。

シャケト場満潮#

  1. 初手は必ず A ではない
  2. 初手と二回目は同じアタリ位置ではない

というわけで、シャケト場はシェケナダムと同じようですね。

トキシラズ満潮#

  1. 初手は必ず C ではない
  2. 初手と二回目は同じアタリ位置ではない

というわけで、トキシラズはシャケト場やシェケナダムと同じようですね。

ポラリス満潮#

  1. 初手は必ず D ではない
  2. 二回目と三回目は同じアタリ位置ではない

ポラリスはドンブラコと同じ法則になっていて、二回目と三回目が必ず違うアタリ位置になります。

ちなみに、ポラリスとドンブラコは四回目以降のアタリ位置も調べてみたのですが「絶対にアタリにならないカンケツセン」は存在しませんでした。どうも、四回目以降については気にしなくて良さそうです。

::: tip 確率も計算させてみた

プログラムのコーディングの問題で直接確率を出せなかったのでとりあえず場合の数だけ表示してみました。

プログラムで 0x1000000 通り調べようとしたらミスって 0x1000001 通り出力されているのですが、そこはスルーでお願いします。実際には WAVE1 が満潮キンシャケ探しであるシードは 4000 万通りもあるので、全体の 2.5%くらいしか調べられていないのですが、まあこれだけ調べれば洩れている組み合わせはないと思います。

:::

ちなみに四回目に偏りがあるかどうか調べてみたのですが、有意な差は見つかりませんでした。

なので、インデックスバグが使えるのは初手から三回だということになります。

満潮キンシャケ探し最良手順#

少なくとも、めちゃくちゃ偏っているポラリスの満潮については確実に変わります。

今までの最良手順は全てのアタリ位置が同様に確からしいという前提になっていましたが、その前提が崩れてしまったからです。

以前の解析ではポラリス満潮については、最良手順で開栓をした場合に平均手数 2.00、最悪手数 3.00 であることがわかっています。また、理論的な下限として最悪手数 2.32 という値も得られています。

更に良い開栓手順を考えて平均手数を 2.00 よりどのくらい下げることができるか考えてみましょう。

偏りがあったとしても、結局は手数を最小化すれば良いだけなので今までと同じ解析手法が使えます。

プログラムを組んでもよいのですが、ヒューリスティックに解を求めてみましょう。

一回目#

まず初手ですが、D が絶対にアタリではないのでカンケツセンが実質三つしかありません。なので二手で確実にアタリ位置を見つけることができます。例えば G を開けて大なら E で確定、小なら F で確定です。乱獲においては D あけがスタンダードになりつつありますが、WAVE1 であれば絶対に当たらない D を真っ先に開ける意味は全くないです。

このとき、G をあけるか E を開けるかはなかなか難しい問題になります。G を最初にあければ盤石ですが、G をあけても無駄に終わる可能性が 50%もあるためです。しかし期待値を重視して E をあけてスカだった場合にコンテナ横がザコシャケまみれになります。連携ができていれば G スカからの即 E あけないしは F あけはできると思うので、初手 G が良いのかなという気はします。

平均手数最悪手数
初手 G1.752.00
初手 E1.502.00

二回目#

二回目は全てのカンケツセンがアタリ候補になりますが、二連続同じ場所になる確率が一番高いです。

同様に確からしいならば 25%のはずですが、同じ場所がアタリになる確率は 29%ほどあります。もちろん、全てが候補になる以上いたずらに手数を増やす F やコンテナ横の E はこの 4%程度の差のためにわざわざ開けなくていいと思います。

ですが、一回目で G がアタリだった場合はこの 4%の恩恵を受けるために D ではなく G をあけたほうが僅かに得になります。

三回目#

二回目がアタリだったカンケツセンがアタリにならないため候補が三通りになります。

一回目の場合は候補が三通りかつ偏りがありましたが、三回目の場合は偏りは存在しません。なので、前回アタリでなかったところを無視して最小手数となる手順を選択します。

二回目のアタリ位置初手初手が大の場合初手が小の場合平均手数最悪手数
DGEF1.672.00
E---2.003.00
FD/GEG/D1.672.00
GDEF1.672.00

すると上のような図になります。二回目が E がアタリのときだけは有効活用することができません。D、F、G のどこをあけても必ず小になります。F がアタリだった場合は D でも G でも期待値は変わりません。

事前にどちらに揃えておくか相談しておくと良いでしょう。

まとめ#

思っていたより偏っていて、最大三回までこの恩恵を受けることができるとわかった。

ポラリスとドンブラコ以外は二回までしか偏りがないのだが、二回目に絶対に出現アタリにならないカンケツセン+偏りがあるので、利用できる情報の数はどのステージでも差がない。が、やはり利用できる回数が重要だと思うので、ポラリスやドンブラコの方が利用価値は高いだろう。

本記事では紙面の都合上(めんどくさい)ポラリス満潮しか取り扱わなかったが、他のステージでもより良い開栓手順が見つかる可能性が多分にある。

それは読者の皆様への宿題ということにしておこう(めんどくさい)

記事は以上。

キンシャケ探しインデックスバグの詳細
https://fuwari.vercel.app/posts/2021/03/goldieseekingindexbug/
Author
tkgling
Published at
2021-03-28