FMC

ルービックキューブ関連 > FMC


ルービックキューブのFMC(Fewest Move Challenge、最少手数競技)とは、通常の競技のように揃える時間を競うのではなく、短い手数で揃えることを競う競技である。 FMCで使う解法をまとめる。 このページの解法で30手を切ることは目指せる。

もちろん他の解法もある。 2023年現在、この解法が主流のように思えるが、上位に他の解法の人もいる。 また、細かいところでも他のテクニックが色々とありそう。

全体の流れ

次の順番で進める。

  1. EO
  2. DR
  3. HTR
  4. (FR)
  5. スケルトン作成
  6. インサート
  7. スライスインサート

各ステップでは、軸が違うものを試して手数が短くなるものを選択したり、NISSで逆方向から手順を探したりする。 色々試してDRが完了した状態を何個も見つけ、その中で良いものを1個選択して、多少NISSを使ったりしつつ完成に向かうという流れが良いのではないかと思う。

EO

Scramble: R' U' F U' L2 B R2 F2 U L B2 U' F2 U B2 L2 F2 L2 U2 F2 U L' U2 R' U' F
Solution: L B L' U R2 F

以降、各ステップで揃える例を載せていく。

EO(Edge Orientation)はエッジの向きを揃えるステップである。

エッジの向きは、U/DステッカーがU/D面にあるときを正しい向きとする。 U/Dステッカーが無いエッジは、U/Dステッカーの代わりにF/Bステッカーを見る。 エッジがE層にあるときは、U/D面の代わりにF/B面にステッカーがあるときを正しい向きとする。 これは「F/B軸」に対する定義で、他にL/R軸とU/D軸も考えられる。 U/Dのステッカーと面をまず見ているのに「F/B軸」と言っているのは、この定義の「U/D」を「L/R」に置き換えてもエッジが正しい向きかどうかが変化せず、「F/B」を「L/R」に置き換えると変化しうるからである。

EOが完了した(全てのエッジの向きが正しくなった)かどうかと、<U, D, L, R, F2, B2> の動きだけで(FBの90度回転を使わないで)キューブを揃えられるかどうかは同値である。

解法

F/B軸の場合の解法。 他の軸の場合は適宜面や動きを置き換える。 同様に、他のステップも特定の軸の場合の解法を書く。

FF' でF面にある4個のエッジの向きが合っているかどうかが反転する。 合っていない4個のエッジをF面に集めて、FF' でそれらのエッジの向きが合う。 F面の代わりにB面でも良い。

向きの合っていないエッジの個数は必ず偶数である。 向きの合っていないエッジの個数が4の倍数でないときは、3個の向きの合っていないエッジをF面に集めて F によって向きの合っていないエッジを1個にしたり、1個のエッジをF面に置いて3個にしたりする。 エッジの個数は12個なので、スクランブル状態で向きの合っていないエッジは6個になる確率が高い。 F面かB面に3個のエッジを集めて向きの合っていないエッジを4個にし、もう一方の面に4個を集めて全てのエッジの向きを合わせることが多い。

DR

Scramble: R' U' F U' L2 B R2 F2 U L B2 U' F2 U B2 L2 F2 L2 U2 F2 U L' U2 R' U' F
Solution: L B L' U R2 F D2 R' U' D R D R

(U/D軸の)DR(Domino Reduction)とは、EOに加え、U/D面にU/Dステッカーだけが見えている状態にすることである。 この状態のキューブは、<U, D, L2, R2, F2, B2> の動きだけでキューブを揃えることができる。

DRは次の2個のステップに分かれる。

DR ?e?c

EOでエッジの向きは揃えているので、DRの条件を満たすためには、U/DステッカーのあるエッジをU/D面に、それ以外のエッジのE層に置くことになる。 この位置が合っていないエッジの個数を2eなどのように表す。 コーナーの向きを、U/DステッカーがU/D面を向いているときに合っていると定めたとき、向きの合っていないコーナーの個数を3cなどのように表す。

なお、エッジについては、U/D面にあるE層エッジの個数で表しているものもある。 この場合は、eの値が半分になる。 DRトリガーの一覧を見るときなどには注意が必要。 また、「DR ?e?c」について、「DRまで残り何個」という意味で、マイナスを使って「DR-?e?c」と書いている人も多い。

このステップでは、DR 2e4cかDR 2e3cの状態を目指す。 DR 4e4cでも良いが、次のDRトリガーのステップで手数が掛かるので、DRトリガーに容易に持ち込める場合だけにするのが良いと思う。 DR 2e0cやDR 4e0cでも良い。 しかし、このステップで手数が掛かってしまう場合が多いと思う。

LL'RR')でL面(R面)にあるキューブの状態が変わるので、EOの場合と同様に、L面(R面)に合っていないキューブを持っていって状態を変えれば良い。

DRトリガー

DRトリガーとは、DRが完了した状態にするときに最後に使う手順である。 <U, D, L2, R2, F2, B2> の動きでは、合っていないピースの個数は変化しない。 これらの動きでDRトリガーが使える位置にピースを持っていって、DRトリガーを使う。

DRトリガー。 次のページから良く使うものを転載した。 最後の動きは逆でも良いので、次のHTRの手数が短くなるほうを選ぶ。

DRトリガー 集めました

?e?c Image Algorithm Memo
2e4c R U2 R'
2e3c R U R' 2e3cは2種類あるので手数が短くなるほうを選ぶ。
2e3c R U' R'
4e4c R
2e0c L U2 B2 D2 R 位置の合っていないエッジを同じ面に持ってきて、その面以外を順に180度回転。
4e0c L U2 D2 R

HTR

Scramble: R' U' F U' L2 B R2 F2 U L B2 U' F2 U B2 L2 F2 L2 U2 F2 U L' U2 R' U' F
Solution: L B L' U R2 F D2 R' U' D R D R B2 U' R2 U L2 F2 B2 D'

HTR(Half Turn Reduction)とは、キューブを180度回転(<U2, D2, L2, R2, F2, B2>)だけで揃えられる状態にすることである。 EOやDRと異なり、特定の軸というものはない。

HTRが完了しているかどうかは、次の条件を全て満たしているかどうかと同値である。

HTRが一番難しい。 以降では、QT、コーナーの揃え方、エッジの揃え方の順に説明する。

QT

QT(Quarter Turns)とは、HTR完了までに必要な90度回転の最少回数である。 (U/D軸の)DRが完了した時点で側面の90度回転は使わないので、90度回転は <U, D> である。 HTRが完了したら180度回転だけでキューブを揃えられるため、キューブを揃えるまでに必要な90度回転と言い換えても良い。 QTの偶奇と、2点交換でコーナーを揃えるときの交換回数の偶奇は一致する。

QTは、HTRでコーナーを揃えるときの指針になるとともに、HTRに掛かる手数の目安になる。 DRが完了した段階でQTを調べて、例えば、多少手数が短くてもQTが多かったら、そのDRは諦めて他のDRを探すということができる。

この節の内容は次の文章を元にしている。 筆者は、QTの偶奇(パリティ)に加えてU/D面の状態の考慮も必要なことを指して、hyper-parityと言っている。

Hyper-Parity - Google ドキュメント

U/D面

DRが完了しているので、U/D面にはU/Dステッカーだけがある。 180度回転で一致するものを同一視すると、U/D面の状態は次の4個の状態に分けられる。

見づらいので黄色を黒にしている。 D面の何も無いように見えるところは、実際は白色。 画像は例で、全ての状態を列挙しているわけではない。

Name Images Memo
Solved 完成状態。 本当に完成していなくても、180度回転で揃う状態であれば良い。
Bars (180度回転によって)上下にバーができる状態。 上下のバーが90度ずれている。 180度ずれているとSolvedになる。
Slashes 上下にずれたスラッシュができている。 スラッシュの向きが揃っていると、Solved。
Bar/Slash バーとスラッシュができている。 上に1個で下に3個のときがBarsと良く似ているので注意。 3個の色が集まっている角、もしくはその対角の位置の反対側に同じ色の1個があるのが、Bar/Slash。

1回の90度回転で可能な遷移を線で結ぶと下の図になる。

F/B面

F/B面に対してL/R面は一意に定まるので、L/R面を見る必要は無い。 F/D面の状態は次の4通りに分けられる。 FとB、LとRは同一視する。 合っていないコーナーの個数が6個と8個のときは、それぞれ2個と0個の場合と同様に進め、途中でU面の代わりにD面を回すなどすれば良い。

Name Images Memo
Solved 完成状態。
One Face 合っていない4個のコーナーを180度回転でU面に集めることが可能な状態。 ここからは1回の90度回転で揃う。
Bars 上下に90度ずれたバーを作れる状態。180度ずれているとOne barになる。
One Bar バーを1個だけ作れる状態。合っていないコーナーが2個。

1回の90度回転で可能な遷移を線で結ぶと下の図になる。 U/D面と似ているが、Solvedの位置が異なることに注意。

Hyper-Parity Maze

U/D面とF/B面の状態には存在しない組み合わせもあるし、遷移に制限が掛かる。 U/D面とF/B面の状態の組み合わせに対し、可能な遷移を図示したのが次の「Hyper-Parity Maze」である。 この迷路上で、90度回転の回数の偶奇が合うようにSolved + Solvedに遷移するときの最少移動回数がQTである。

基本的には、偶奇が異なってもQTが±1のルートがある。 ただし、Solve + Solved(偶数: 0、奇数: 3)、Bars + One Face(偶数: 4、奇数: 1)、Bar/Slash + Bars(偶数: 2、奇数: 5)は±3変わる。

U/D面とF/B面の状態が同じでも、Hyper-Parity Maze上の状態は異なることがある。 判別方法は次の通り。

Solved + One Face
Name Image Memo
ST1 Same。U/D面がUのコーナーのF/B面の色が全て同じ。
ST2 Different。U/D面がUのコーナーのF/B面の色が2色ずつである。
Bars + Bars
Name Image Memo
BB1 Same。 U/D面とF/B面に同時にバーを作ることができ、U/D面がUのコーナーのF/B面の色が2色ずつである。 色が異なるのに「Same」なのは、Solved + One Faceに遷移するときの90度回転でF/B面の色が変わることで、ST1に遷移できるからだろう。
BB2 Different。 U/D面がUのコーナーのF/B面の色が全て同じ。
BB3 Exclusive。 U/D面とF/B面に同時にバーを作ることができない。 なお、F/B面に縦(U/D軸方向)に同じ色が並んでいても、バーとは見なさない。
Bar/Slash + One Face
Name Image Memo
BS1 Parallel。 U/D面をバーとスラッシュの状態にし、合っていない2個のコーナーでF/B面にバーを作ったとき、U/D面とF/B面のバーが並行になっている。
BS2 Perpendicular。 U/D面をバーとスラッシュの状態にし、合っていない2個のコーナーでF/B面にバーを作ったとき、U/D面とF/B面のバーが垂直になっている。

コーナーの揃え方

素直にQTを減らしていけば良い。 Hyper-Parity Maze上の遷移は数が多いので、U/D面の状態とF/B面の状態に分けて、どの形で U などを回せば遷移できるのかを書く。 U/D面とF/B面を同時に目的の状態に遷移可能な形にすれば良い。 これは、最初の1回の遷移以外は、直前の動きを UU' のどちらにするかと、 R2F2R2 U2 F2F2 U2 R2 のいずれかの手順で達成できる(らしい)。

U/D面

State 1 Image 1 State 2 Image 2 Memo
Slashes Solved U面にスラッシュを作る。
Solved Solved U面を同色にする。
Solved Bars U面にバーを作る。
Bars Bar/Slash U面にUが1個か3個にする。
Bar/Slash Bar/Slash U面にバーかスラッシュを作る。

F/B面

State 1 Image 1 State 2 Image 2 Memo
Solved One Face Solved → One Face: そもそもこの図の形しかない。 One Face → Solved: 合っていない4個のコーナーをU面かD面に集める。
One Face One Face 合っていないコーナーを対角の位置に置く。 コーナーのF/B面の色は90度回転で反転するので、90度回転してもこの形のままになる。
One Face Bars 合っていない4個のコーナーのうち2個をU面に持ってくる。
Bars One Bar Bars → One Bar: 合っていない4個のコーナーのうち1個か3個をU面に持ってくる。 One Bar → Bars: 合っていない2個のコーナーのうち1個をU面に持ってくる。
One Bar One Bar 合っていない2個のコーナーをU面かD面に置く。

エッジの揃え方

コーナーを揃える手順を元に、途中にコーナーの状態を変えないような動きを挿入して、エッジを揃える。

次のドキュメントが詳しい。エッジの手順というより、コーナーもエッジも合わせて揃えていく。

HTR Theory - Google ドキュメント

覚えきれないので、私はこの中の1QTの手順を主に使っている。 コーナーのQTを減らしていき、1QTになったところで手順を使う。

手順一覧。合っていないエッジとコーナーを表示している。 1QTから1回の90度回転で、F/B面がSolvedだがU/D面がSolvedではない状態に行くことはないので、U/D面は気にする必要が無い。

Bad Edges Image Algorithm Memo
UL, UF, UR, UB U
DL, UF, DR, UB F2 B2 D
UL, DF, UR, UB R2 F2 R2 U
UL, DF, DR, UB F2 R2 F2 R2 F2 R2 U 2e2eのエッジ交換の手順(6手のほう)。
DF, UR, DR, UB R2 F2 R2 U2 F2 R2 F2 U 2e2eのエッジ交換の手順(8手のほう)。最後の U2 はキャンセルで消える。

F/B面にある合っていないエッジの個数が2個ではないときは、1QTから揃えることはできない。 2QTに戻り、R2 L2F2 B2R2 F2 R2 などのコーナーの状態を変えない手順で、エッジの状態を変える。

どうしようもないときは、先にコーナーを揃え、その後で次の手順を使ってエッジを揃える。 一見短い手順に思えるが、セットアップも含めると、基本的には1QTのときに揃えたほうが良いはず。

Bad Edges Image Algorithm Memo
DL, UF, DR, UB U F2 B2 D'
UF, DR U F2 L2 B2 D'

FR

Scramble: R' U' F U' L2 B R2 F2 U L B2 U' F2 U B2 L2 F2 L2 U2 F2 U L' U2 R' U' F
Solution: L B L' U R2 F D2 R' U' D R D R B2 U' R2 U L2 F2 B2 D' R2 F2 R2 F2 U2 R2 F2 U2

このステップは必須ではない。

参考: Floppy Reduction - Google ドキュメント

(U/D軸の)FR(Floppy Reduction)とは、キューブを <L2, R2, F2, B2, E> の動きだけで揃えられる状態にすることである。 E層以外を <L2, R2, F2, B2> の動きで揃えられる状態と言っても良い。 HTRと異なり、DRのように軸がある。 スライスインサート(後述)のために、DRと同じ軸を採用するのが良いと思う。

次の両方の条件を満たしていることと同値である。

解法

Floppy ReductionのGoogleドキュメントに全てのパターンについての最短手順が載っている。 覚えきれないので、私は次のように揃えている。

FRを完了させるのに必要な U2 もしくは D2 の回数をU2とする。 U2ごとにその回数でFRを完了させられる条件と、解法を書く。 これを順番に確認していく。 U2と2点交換の回数の偶奇は一致している。 HTRの最後は U などの動きなので、それを逆にすれば、手数を増やすことなくU2の偶奇を変えることができる。 例えば、2点交換の回数が奇数であれば、HTRの最後の動きを逆にして0 U2を確認し、最後の動きをそのままにして1 U2を確認して……と見ていけば良い。 (HTRの最後の動きを逆にすることも行えば)2 U2以内でFRを完了させることができる。

0 U2

FRが完了した状態の条件を満たしていれば終わり。 満たしていなければ0 U2で完了させることは不可能(当たり前)。

1 U2

次の条件を満たしていれば、1回の U2 などで完了させることができる。

次の条件を満たすようにし、U2 などで揃う。

コーナーの状態と、対面の合っていないエッジが(U面とD面のうちの)同じ面にあるかどうかという状態は、R2L2 のどちらでも同じように変化する。 F2B2 も同様。 つまり、これらの状態だけを見るならば、R2 F2 R2 F2 ...F2 R2 F2 R2 ... の2通りの手順しかない。 短いほうの手順を選択し、R2L2 に置き換えるなどして、全ての合っていないエッジが同じ面に来るようにする。

2 U2

1回以下の U2 などで完了させることができなければ、2回の U2 などで完了させることができる。

次の条件を満たすようにし、U2 などで1 UTになる。

FRは必要なのか?

HTRから直接スケルトンを作るときに、充分に短い手数の解を見つけられる実力があるならば不要である。 FRで使う動きはHTR後に許されている動きに含まれているので、もしFRしてからスケルトンを作るのが最適な手順ならば、その手順を見つけられるはずだからである。

その実力が無いとき、まずはFRを使わずにスケルトンを作り、終了時間が近くなったときに短い手順が見つかっていなかったらFRを試すというのが良さそうに思える。 しかし、FRからスケルトンを作る場合はスライスインサートができる形になるというのが大きなメリットだが、スライスインサートは通常のインサートよりも手間が掛かるので、間に合わない可能性がある。 まずはFRを試すというのも、後からFRを使わない短い解法が見つかったら、FRに掛けた時間が無駄になってしまう。 FRを使わないスケルトン作成をまず試し、良い手順が無さそうならFRで解いて保険として、その後またFRを使わないで解法を探すというのが良いだろうか?

スケルトン作成

HTRから直接。

Scramble: R' U' F U' L2 B R2 F2 U L B2 U' F2 U B2 L2 F2 L2 U2 F2 U L' U2 R' U' F
Solution: L B L' U R2 F D2 R' U' D R D R B2 U' R2 U L2 F2 B2 D' B2 D2 L2 F2 L2 U2 R2 U2

FRから。

Scramble: R' U' F U' L2 B R2 F2 U L B2 U' F2 U B2 L2 F2 L2 U2 F2 U L' U2 R' U' F
Solution: L B L' U R2 F D2 R' U' D R D R B2 U' R2 U L2 F2 B2 D' R2 F2 R2 F2 U2 R2 F2 U2 B2 F2 L2 F2 L2 F2

少数のエッジ以外が揃った「骨組み」を作る。 揃っていないエッジを「2e2e」などのように表す。 この表記は2点交換が2個という意味で、4個のエッジをローテートさせると揃う「4e」とは異なる。 2e2eか3eができると良い。2e2e2e2eや4e、2e2e3eなどでもだめなわけではないが、インサートの手数がどうしても長くなってしまう。 E層のみが揃っていない状態(leave slice)にできるとなお良い。 E層なのかどうかを区別するため、合っていないエッジがE層にあるときは「3E」のように大文字で書くこともある。 もちろん、(短い手数で)キューブが完全に揃うのがベストである。

このステップには、これといったアルゴリズムは無さそう。 私は、1x1x2のブロックを見つけて2x2x2にし、2x2x3にして、これを壊さずに動かせる面は2個しかないので、そこを動かしてコーナーを揃えるということをしている。 DRが出てくる前に広く使われていたブロックビルディングと同じことなので、その説明が参考になる。

第2章 ソルブの進め方 - 最少手数競技入門 by Sebastiano Tronto 第三版 - スピードキューブ日本語翻訳

スケルトン作成より前に手数が同じ複数の動きの選択肢があるとき、なるべくコーナーとエッジが合うものを選んでおくと、スケルトン作成の手数が減る気がする。

FRを経ている場合は、容易にE層以外を揃えることができる。 知らないと困る手順は、インサートの2e2eの手順である R2 F2 R2 F2 R2 F2 くらい。

インサート

Scramble: R' U' F U' L2 B R2 F2 U L B2 U' F2 U B2 L2 F2 L2 U2 F2 U L' U2 R' U' F
Solution: L B L' U R2 F D2 R' U' D R D R B2 U' R2 U L2 L2 D2 R2 D2 L2 U2 F2 B2 D' B2 D2 L2 F2 L2 U2 R2 U2

ここまでの解法の途中に手順を「挿入」することで、残りのエッジを揃える。

後述のNISSを使っている場合は、NISSを使わない形に書き下す。 揃っていないエッジにマスキングテープなどを貼り、マークを書き込んで目印にする。 私は、2e2eの場合は交換するエッジに同じマークを書き、3eの場合は1, 2, 3と交換の順に数字を書いている。 最初から手順を回していき、次のエッジ交換手順が使える位置になったところに手順を挿入する。 エッジ交換手順は交換するエッジ以外に影響しないので、これによって最後まで回したときにキューブが完成する。 前後の動きとのキャンセルがなるべく多くなるところに挿入すると良い。

エッジ交換手順

下記のページから良く使うものを抜粋した。

DRで使うエッジ手順まとめ - uesyuu's Blog

この手順をそのまま使うだけではなく、逆にしたり、左右を反転したり、順番を並び替えられる動きは並び替えたりしても使う。

Edges Image Algorithm Memo
DF→UF→UB U2 L R' F2 L' R
DF→UF→UB (F2 R2 U2 R2)×2 上の手順と同じ交換で、6手が8手と増えている。 しかし、全て180度回転であるため、180度回転を多用するこの解法では大きなキャンセルが起こる可能性がある。 最初に180度回転する面が上の手順とは違うことに注意。
UF→UL→DF R2 B2 L2 D L2 B2 R2 U HTR後にエッジがこの状態になることはないが、HTR前に挿入しようとすると必要になることがある。 [R2 Fw2 R2, U] U2 というコミュテーター。
UF↔DF, UR↔DR (R2 F2)×3
UF↔DF, UR↔DR R2 B2 L2 F2 L2 B2 上の手順とは全く別に思えるが、R2 Fw2 R2 F2 R2 Fw2 ということである。
UF↔DF, UR↔DL R2 F2 R2 D2 F2 R2 F2 D2 2個上の手順の途中に D2
UF↔DF, UR↔DL R2 B2 L2 U2 F2 L2 B2 D2 2個上の手順の途中に U2D2
UF↔UB, DF↔DB U2 L2 R2 D2 L2 R2
UF↔DB, UB↔DF U2 D2 L' R F2 B2 L R' 対角同士の交換。
UL↔DR, UF↔DF R2 U2 F2 R2 F2 U2 R2 F2

スライスインサート

Scramble: R' U' F U' L2 B R2 F2 U L B2 U' F2 U B2 L2 F2 L2 U2 F2 U L' U2 R' U' F
Solution: L B L' U R2 F D2 R' U' D R D R B2 U' R2 U L2 F2 B2 D' E' R2 F2 R2 F2 U2 E2 R2 F2 U2 E' B2 F2 L2 F2 L2 F2

E を使わないように書き換えると、

Solution: L B L' U R2 F D2 R' U' D R D R B2 U' R2 U L2 F2 B2 U' B2 R2 B2 R2 D2 F2 L2 U D B2 F2 L2 F2 L2 F2

<E> を挿入してE層のエッジを揃える。 DR完了後はE層に含まれるのは本来E層にあるべきエッジのみであることと、(持ち替えや二層回しを使っていなければ)センターは動かないことから、通常のインサートと異なり、複数の箇所に分割して挿入することができる。 また、<E><U, D> とキャンセルしうるため、少ない手数でE層のエッジを揃えることができる。 たいていは+1手。 追加の手数無しで揃えられることも多い。

解法

この配信を見た。

スライスインサートの話 - Shota (@MegaDBL) - ツイキャス

元ネタはこの動画らしい。

Using rNISS to Find E-Slice Insertions - YouTube

抽象的に説明をするのが難しいので、上記の例にスライスインサートする流れを書く。

スクランブルに続けて、(NISSを展開した)解法を書く。 DRが完了している区間(NISSを使っている場合、後半にDRが完了してない区間が出てくる)の最初の <U, D> と最後の <U, D> に印を付ける。

R' U' F U' L2 B R2 F2 U L B2 U' F2 U B2 L2 F2 L2 U2 F2 U L' U2 R' U' F L B L' U R2 F D2 R' U' D R D R B2 [U' R2 U L2 F2 B2 D' R2 F2 R2 F2 U2 R2 F2 U2] B2 F2 L2 F2 L2 F2

後の印以降を先頭に持ってくる。

B2 F2 L2 F2 L2 F2 R' U' F U' L2 B R2 F2 U L B2 U' F2 U B2 L2 F2 L2 U2 F2 U L' U2 R' U' F L B L' U R2 F D2 R' U' D R D R B2 [U' R2 U L2 F2 B2 D' R2 F2 R2 F2 U2 R2 F2 U2]

印を付けた区間に <E> を挿入して、手順を回したときにキューブが完成するようにすれば良い。 今はE層にしか興味が無いので、印より前はE層の変化が同じ手順に変えてしまって良い。 これは、実際に回してE層がどうなったかを確認し、E層をそのようにする手順にする。 印の中も <U, D> 以外の動きが続くところは、等価な短い手順にしてしまう。 <U, D> 以外の箇所に <E> の挿入が必要になることがあるのか無いのかは分からないが、経験上必要になったことは無い。

L2 R2 [U' R2 U L2 F2 B2 D' F2 R2 U2 R2 F2 U2]

これに対して <E> の挿入を試していく。 FMCのルール上 E は使えないので、解答にする際には U D' などとする必要がある。 <U, D> の後に挿入すると、UD はまとめられて+1手になる。 U2 の後に E2 など、キャンセルで消える場合には+0手になる。 もし、<U, D> 以外の場所に挿入すると、+2手になる。 なるべく+0手に近づける。

最後の R2 F2 U2 の直前で、E層は B2 R2 を回した状態になっている。 ここでどのような動きを挿入しても、 R2 F2 では揃わない。 少し戻って次のように挿入することで、+1手の解が得られた。

L2 R2 [U' R2 U L2 F2 B2 D' E' F2 R2 U2 E2 R2 F2 U2 E']

すでに+1手の解が得られているので、もう手数が増えるような(<U, D> とキャンセルしないような)挿入は試す必要が無い。 F2 R2 U2 R2 F2 U2 に+0手の挿入で揃えるためには、この直前でのE層は、揃っているか E2L2 R2L2 R2 E2のいずれかの手順を回した状態になっている必要がある。 これより前の挿入も、試すのは+0手のものだけである。 そのような挿入で得られる状態は、F2 B2R2 B2 E'F2 B2 EB2 R2のいずれかの手順を回した状態である。 これらのうち、何もしないか(D' とキャンセルする)E' で一致するものは無いため、+0手の解は無い。

NISS

Scramble: R' U' F U' L2 B R2 F2 U L B2 U' F2 U B2 L2 F2 L2 U2 F2 U L' U2 R' U' F

(L F B2 R) // EO (L/R) (4/4)
F' D2 B U // DR 2e3c (F/B) (4/8)
D B' D // DR (F/B, 3qt) (3/11)
F' R2 F D2 R2 F' // HTR (6/17)
U2 F2 R2 D2 R2 B2 // FR (F/B) (6/23)
L2 D2 U2 L2 // finish (4/27)

Solution: F' D2 B U D B' D F' R2 F D2 R2 F' U2 F2 R2 D2 R2 B2 L2 D2 U2 L2 R' B2 F' L'

NISSを使い、ついでに軸も色々と試して解いた例。

与えられたスクランブルで良い解が得られないとき、与えられたスクランブルの逆手順をスクランブルとして解き、その解の逆手順を解とする手法がある。 NISS(Normal-Inverse Scramble Switch)は、それを一般化し、解いているときの任意のタイミングで逆手順に切り替える手法である。

手法

途中まで解いてたときの手順が次のようになっていたとする。 カッコは逆方向からの手順だったという印である。 AやBは、実際には L B L' U R2 F などの手順。

A (B) // EO
C // DR 2e3c
(D) // hoge
(E) // fuga

ここで、順方向から次のステップの手順を探すならば、カッコの付いている動きを逆から回し、スクランブルを回して、カッコの付いていない動きを回す。 例では、Eの逆手順 → Dの逆手順 → Bの逆手順 → スクランブル → A → C となる。 ここで良い手順Fが見つかったら、カッコを付けずにFを付け足す。

順方向で短い手順が見つからず「逆方向から探したいな」と思ったら、カッコの付いていない動きを逆から回し、スクランブルの逆手順を回して、カッコの付いている手順を回す。 例では、Cの逆手順 → Aの逆手順 → スクランブルの逆手順 → B → D → E となる。 見つけた手順は (F) のようにカッコを付けて書く。

キューブが完成したとき、もしくはインサートの前に、NISSを使わない形に書き下す。 これは、カッコの付いていない動きの後に、カッコの付いている動きを逆から書けば良い。

A (B) // EO
C // DR 2e3c
(D) // hoge
(E) // fuga
F // 2e2e

このようなスケルトンが得られたならば、A C F Eの逆手順 Dの逆手順 Bの逆手順 をスケルトンとしてインサート以降に進む。

気持ち

キューブが揃った状態からスクランブルと解答を続けて回すと、当たり前だが、キューブは揃った状態になる。 次の図のように円環になっている。

この円環は、スクランブルの開始地点以外でも、どこから回し初めても1周するとキューブが揃った状態になる。 セクシームーブ6回の (R U R' U')×6 はキューブが元に戻るが、切れ目を変えた (R' U' R U)×6 でも元に戻る。

キューブを揃えるというのは、スクランブルに繋げて円環になるような手順を探すということである。 普通に(NISSを使わずに)揃えるときは、時計回りに手順を埋めていくことになる。 これを下の図のように両側から埋めていこうというのがNISSである。

いつ使うのか?

一区切りっぽいところなら、基本的にどこでも使えるはず。

NISSで方向を切り替えると、今の状態を得られる手順の逆の手順を回した状態になる。 これはBLDトレースのループが逆向きになった状態である。 例えば、順方向でUFの位置にRUのエッジがある(左図)ならば、逆方向ではRUの位置にUFのエッジがある(右図)。

次のようなことが成り立つ。

キューブの状態数とEO → DR → HTRで揃えているもの

これを知ったからといってすぐにFMCが上達するわけではないが、何かの役に立つかもしれない。

ルービックキューブの状態数は、$2^{11}\times 12! \times 3^7 \times 8! \times \frac{1}{2} = 43,252,003,274,489,856,000$ 通りであることが知られている。 エッジは1個の向きが2通りで12個ある。 ただし、パリティがあるので $2^{11}$。 コーナーは1個の向きが3通りで8個あり、パリティによって $3^7$。 エッジとコーナーの位置はそれぞれ $12!$$8!$ 通りだが、ここでもパリティがあり、エッジとコーナーで2点交換での交換回数の偶奇が異なるような状態はキューブを分解しないと作れないので、$\frac{1}{2}$

EOではエッジの向きを揃えている。 EOが完了した1個の状態には $2^{11} = 2,048$ 個の状態が対応しており、EOが完了した状態の個数は、全ての状態の個数の $\frac{1}{2,048}$ になる。

DRではコーナーの向きを揃えている。 コーナーの向きは $3^7=2,187$ 通り。 さらに、エッジも揃えている。 エッジの向きはEOですでに揃えており、U/D面にU/Dステッカーが見えるようにするということは、U/D面にあるべきエッジを位置をU/D面に、E層にあるべきエッジの位置をE層にするということである。 EOが完了した段階ではエッジの配置は $12! = 479,001,600$ 通りあり、これを $8!\times 4!= 9,676,80$ 通りにしている。 DRが完了した1個の状態には、$3^7 \times \binom{12}{8} = 1,082,565$ 個のEOが完了した状態が対応している。

HTRでは、下図の○の位置にあるべきコーナーを○のどこかに、×にあるべきコーナーを×のどこかに移動する。 エッジは、DRで△の位置にあるべきエッジを△の場所に移動しており、これに加えて、○と×のエッジをそれぞれの位置に置くことになる。 これがF/B面にはF/Bのステッカーだけがあるようにすることに対応している。 U/D面の状態がSolvedであることをコーナーの位置で捉えると、○にあるコーナーの2組の2点交換を同時に行うことによって、上下に並んだ○と×を(U/D面以外は)同じ色にできるということになる。 2組の2点交換を同時に行うというのは、180度回転ではこの操作しかできないからである。 3cの状態にできないという点で、偶数回の2点交換とは異なる。 これは6通りある。 よって、HTRが完了した1個の状態には、$\binom{8}{4}\times\binom{8}{4}\times 6 = 29,400$ 個のDRが完了した状態が対応している。

HTRが完了した状態からキューブを完成させるというのは、○△×のそれぞれのグループ内での位置を揃えることである。 ただし、コーナーについてはHTRで一部を揃えている。 HTRが完了した状態は $4!^5\times \frac{1}{6} \times \frac{1}{2} = 663,552$ 個ある。 $\frac{1}{6}$ はHTRでコーナーを揃えている分で、$\frac{1}{2}$ はエッジとコーナーの位置のパリティである。

各ステップで完了した1個の状態に直前のステップの何個の状態が対応しているのかを掛け合わせると、キューブの全ての状態数になる。

$$2,048\times 1,082,565\times 29,400\times 663,552=43,252,003,274,489,856,000$$

統計

各ステップの最少手数

EO, DR, HTR, FR, finishの各ステップで、軸を固定し、前後のステップとの繋がりを一切考慮しない場合に、最少手数の分布がどのようになるのかを調べた。

kusano/fmc_analysis

例えば、4手のDRの手順を見つけたら、それは1 %未満の幸運でありDRで粘っても手順を縮められる可能性は低い、9手のDRの手順を見つけたらまだ縮められる可能性がある……というような使い方ができる。 もっとも、人力で最少手数が常に見つけられるわけではないし、逆にEOの段階でDRの手数が短くなるような最後の動きを選択したりもするので、そんなに当てになるものではない。 何度もFMCを解いて、「自分ならDRはこのくらいの手数で解ける」という感覚を身に付けることのほうが重要だろう。

EO

平均: 4.61手

moves num. % cum. %
010.05 %10.05 %
120.10 %30.15 %
2251.22 %281.37 %
32029.86 %23011.23 %
462030.27 %85041.50 %
590043.95 %1,75085.45 %
628513.92 %2,03599.37 %
7130.63 %2,048100.00 %

DR

平均: 7.80手

moves num. % cum. %
010.00 %10.00 %
120.00 %30.00 %
2170.00 %200.00 %
31340.01 %1540.01 %
41,0650.10 %1,2190.11 %
58,1900.76 %9,4090.87 %
654,6945.05 %64,1035.92 %
7267,57624.72 %331,67930.64 %
8560,56851.78 %892,24782.42 %
9187,20417.29 %1,079,45199.71 %
103,1140.29 %1,082,565100.00 %

HTR

平均: 8.80手

moves num. % cum. %
010.00 %10.00 %
120.01 %30.01 %
290.03 %120.04 %
3360.12 %480.16 %
41240.42 %1720.59 %
55301.80 %7022.39 %
61,8066.14 %2,5088.53 %
73,73212.69 %6,24021.22 %
85,15817.54 %11,39838.77 %
97,07024.05 %18,46862.82 %
107,21824.55 %25,68687.37 %
113,20210.89 %28,88898.26 %
124881.66 %29,37699.92 %
13240.08 %29,400100.00 %

Finish

平均: 10.13手

moves num. % cum. %
010.00 %10.00 %
160.00 %70.00 %
2270.00 %340.01 %
31200.02 %1540.02 %
45190.08 %6730.10 %
51,9320.29 %2,6050.39 %
66,4840.98 %9,0891.37 %
720,3103.06 %29,3994.43 %
855,0348.29 %84,43312.72 %
9113,89217.16 %198,32529.89 %
10178,49526.90 %376,82056.79 %
11179,19627.01 %556,01683.79 %
1289,72813.52 %645,74497.32 %
1316,1762.44 %661,92099.75 %
141,4880.22 %663,40899.98 %
151440.02 %663,552100.00 %

FR

平均: 5.94手

moves num. % cum. %
010.35 %10.35 %
120.69 %31.04 %
293.13 %124.17 %
3186.25 %3010.42 %
4269.03 %5619.44 %
54816.67 %10436.11 %
66823.61 %17259.72 %
75218.06 %22477.78 %
85619.44 %28097.22 %
982.78 %288100.00 %

FRからのfinish (leave slice)

FR後に可能な動きである <L2, R2, F2, B2> ではE層は揃えられないので、E層残し(leave slice)。

平均: 4.43手

moves num. % cum. %
010.52 %10.52 %
142.08 %52.60 %
2105.21 %157.81 %
32412.50 %3920.31 %
45327.60 %9247.92 %
56433.33 %15681.25 %
63116.15 %18797.40 %
742.08 %19199.48 %
810.52 %192100.00 %

HTRからのfinish (leave slice)

HTR後にFRをするとどのくらい手数が増えるのかが気になる。 E層も含めたfinishでは比較ができないので、HTRからE層は揃えなくても良いとした場合の手数を調べた。 平均8.64手。 FRを行った場合は、leave sliceまでに平均で 5.94 + 4.43 = 10.36 手。 FRによって平均1.72手増える。

平均: 8.64手

moves num. % cum. %
010.00 %10.00 %
160.01 %20.00 %
2270.05 %80.01 %
31080.20 %350.06 %
43870.71 %1430.26 %
51,2002.20 %5300.97 %
63,2185.89 %1,7303.17 %
77,02012.85 %4,9489.06 %
811,90121.79 %11,96821.91 %
914,33826.25 %23,86943.70 %
1011,44220.95 %38,20769.94 %
114,9769.11 %49,64990.89 %
126721.23 %54,625100.00 %

QTの分布

DRが完了した状態について、QTの分布を調べた。

kusano/fmc_hyper_parity

あるDRを見つけたときに、そのままHTRに進むのか、他のDRを探すのかの判断に使えるかもしれない。

QT num. % cum. %
01920.48 %1920.48 %
11,1522.86 %1,3443.33 %
25,76014.29 %7,10417.62 %
311,32828.10 %18,43245.71 %
414,20835.24 %32,64080.95 %
57,68019.05 %40,320100.00 %

元になったHyper-Parityの状態別の発生確率は次の通り。

UD FB Parity QT num. %
SlashesOne Face021920.48 %
SlashesOne Face111920.48 %
SlashesBars043840.95 %
SlashesBars133840.95 %
SolvedSolved001920.48 %
SolvedSolved131920.48 %
SolvedOne Face(Same)021920.48 %
SolvedOne Face(Same)111920.48 %
SolvedOne Face(Different)027681.90 %
SolvedOne Face(Different)137681.90 %
SolvedBars027681.90 %
SolvedBars137681.90 %
SolvedOneBar041,5363.81 %
SolvedOneBar151,5363.81 %
BarsSolved043840.95 %
BarsSolved133840.95 %
BarsOne Face047681.90 %
BarsOne Face117681.90 %
BarsBars(Same)027681.90 %
BarsBars(Same)137681.90 %
BarsBars(Different)043840.95 %
BarsBars(Different)133840.95 %
BarsBars(Exclusive)041,5363.81 %
BarsBars(Exclusive)151,5363.81 %
BarsOneBar043,0727.62 %
BarsOneBar133,0727.62 %
Bar/SlashOne Face041,5363.81 %
Bar/SlashOne Face131,5363.81 %
Bar/SlashBars023,0727.62 %
Bar/SlashBars153,0727.62 %
Bar/SlashOneBar(Parallel)043,0727.62 %
Bar/SlashOneBar(Parallel)133,0727.62 %
Bar/SlashOneBar(Perpendicular)041,5363.81 %
Bar/SlashOneBar(Perpendicular)151,5363.81 %

@kusano_k