2018年10月24日水曜日

スクエア1 EPの出現確率

 キューブパズルのPLL各手順の出現確率は、パーツの入れ替わり方の回転対称性に依存しています。あらゆる可能なパーツの配置の出現確率が同様に確からしい(= キューブが十分にスクランブルされている)という前提のもと、PLL各手順に分類されるパーツ配置の数がパーツの入れ替わり方の回転対称性によって異なるからです。

パーツの入れ替わり方の回転対称性と分類されるパーツ配置の数の関係。F-permは1回対称(90°や180°回しても重ならない)なのでパーツの配置が4種類あるのに対し、H-permは4回対称(90°回すと元の配置と重なる) なのでパーツの配置が1種類しかない。あらゆる可能なパーツの配置の出現確率が同様に確からしい(= キューブが十分にスクランブルされている)条件のもとではf1, f2, f3, f4, h1は全て出現確率が等しいから、F-permはH-permと比べて4倍出やすいことになる。


 ところが、スクエア1のスピードソルブの場合、EPの出現確率にはこの考え方が通用しません。直前のCPの時にコーナー-エッジのペアを選択的に保存するため、あらゆるパーツ配置の出現確率が同様に確からしいという前提が崩れるからです。

 そこで、CP時のペア保存を行ったうえでの各EPの出現確率を計算してみることにします。スクエアは手順の暗記量がものを言いますが、どうせEPを覚えるなら出現確率の高いものから覚えていった方がコスパが良いでしょう。


方法

  1. 片面のPLL44種類を列挙し、それらがペア保存CPによりどのEPに遷移するかを考えます。PLLの出現確率とPLL→EPの遷移確率の積を計算すると、そのEPが特定のPLLを経由して出現する確率が求まります。(PLL→EPの遷移確率については後述)
  2. 10種類の片面EP(skip, cwU, ccwU, Z, H, adj, opp, W, cwO, ccwO)のそれぞれについて、1で求めたEPの出現確率をすべてのPLLの経由について足し合わせます。これにより、ペア保存CPを行った場合の片面EPの出現確率が求まります。
  3. 各両面EPの出現確率は、上下面それぞれの片面EPの出現確率の積を計算することで求まります。

完全に脳筋数え上げ戦法です。もっとスマートな方法はあるんでしょうか?


細かい条件

  • CP時に使用する手順はJ-permとN-perm(と無交換)を組み合わせたものに限る。
    例えばpJ-pJ(0,-1/-2,1/2,2/0,-3/-1,1)のように新たにペア作り出す手順は使わないこととします。
  • CSPやParity CPは使用しないこととする。
    ちなみにCSPを使用する場合は、パリティありのEPの出現確率は0となり、パリティなしのEPの出現確率は一律に2倍になります。Parity CPを使用する場合はパリティありの時にペア保存の選択ができない(はず?)ので単純に確率2倍という訳にはいきません。
  • CO終了後、上下面それぞれのパーツの配置は完全にランダムとする。
    CO終了時点ではあらゆるパーツの配置の出現確率が同様に確からしいということです。
  • ペア保存の仕方が2通りあり、双方の保存ペア数が異なる場合は、常にペア保存数が多くなる方の回し方を選ぶこととする。
    例えばJb-permの場合、そのままCPすると4ペア、(1,0)をしてからCPすると1ペアが保存されますが、ここは4ペアが保存される方を選びます。
  • ペア保存の仕方が2通りあり、双方の保存ペア数が等しい場合は、どちらの回し方も等しく確率1/2で選ぶこととする。
    前節で述べたPLL→EPの遷移確率の話です。例えばPa-permの場合、どちらの回し方を選んでも2ペアが保存されますが、この場合はどちらの回し方も等確率で選ぶことにします。P-permではもう一方の面のEPの残り方に合わせてadjとoppのどちらか良い方を選ぶようにペア保存の仕方を変えるというテクニックがありますが、ここではこれは使わないこととします。

スピードソルブ時の実情に配慮しつつ、計算が単純になるようにするための条件付けです。


数える

それでは、実際に数え上げをしていきましょう。(単純作業ですが。)

CPなし


当然ですが、CP無しの場合はCP前後で配置の変化はありません。


隣接CP(パリティなし)


余談ですが、一部のパリティなしPLLはあえてCPが揃わない向きでCP手順を回すことでJ-permやN-permを作ることができます(例えばAa-permなら図の向きから(4,0)してJ-permを回せばJb-permになる)。上下面ともにこれに該当するPLLの場合には、1回目のCPでJ-permやN-permを両面に作ってから2回目のCPで揃えることで、普通にCP→EPとするよりも短手数で解くことができるというテクニックがあります(ちなみに私は使えていません)。

隣接CP(パリティあり)




これも余談ですが、CPの前後でコーナー-エッジのペアの数は変わらないことに注意しましょう(ペア保存の原理を考えれば当たり前ですね)。保存するペアの個数をCPを回す前に数えておくことで、その後のEPをかなり絞り込めます(1個保存ならU-perm、2個保存ならadjかopp、など)。


対角CP 


以上ですべてのPLLの遷移を網羅しました。きちんとペア保存をすればH-permやZ-permの出現率は相当低くすることができそうです。


結果

というわけで、片面のEPの出現確率は前節で求めた出現確率を足し合わせることで以下のように求まります。
ペア保存をしているわけなので当然と言えば当然ですが、ペア無しのEPの出現確率はかなり低くなっています。特にH-permはCP skipした場合の1通りの遷移でしか現れません。

 そして、両面EPの出現確率は上の表の値から2つをとってきて掛け合わせることで求まります。結果は次の通りです。
長いので最初の方だけ記載しました。全体はこちら
 出現確率が高い順に並べ替えてあります。一番出やすいのはadj-adj、その後にU-adjやU-Uなどが続いていきます。大体感覚通りな気がしますね。
 一番右の列は累積分布関数と言って、その順位までのすべてのEPの出現確率を上から順に足していった値が書かれています。EP手順を出やすい順に覚えていったときに、何番目まで覚えると出現確率相当でどのくらいのEPを網羅したことになるのか、というのがこの数値からわかるわけです。グラフにするとこんな感じです。
EPは全部で100種類(skip-skip含む)ありますが、そのうちのおよそ13手順で50%、32手順で80%、48手順で90%を網羅できるようです。実用的な観点で言えば、EP手順を出やすい方から32手順覚えればavg of 5のうち4回の試技の割合でEPを1 lookで乗り切れることになります。


 ちなみにCSPありだとこんな感じ。

adj-adjとU-U4種だけで42%の割合を占めています。CSPの強力さを物語っている感じです。



 当初はこの後でEP手順を出やすい順にまとめようかと思っていたのですが、大変そうなのでやめました。
 それでは、スクエア1の練習がんばってください。

記事作成に使用したツール