まとめ
スクランブルプログラムの中のソルバーも、人が解くときもまずはEOを揃えようとする。 これが一致してしまうのを避けたい。 全ての軸のEOを変え、理解しやすく覚えやすく回しやすい手順として R' U' F が追加されている。
詳細
(ルービック)キューブの競技と聞いて想像するのは、「世界記録更新3.13秒」のようないかに速く揃えるかというものである。 実は、速く揃えることではなく、いかに短い手数で揃えるのかを競う最少手数競技(FMC)という競技種目もある。 これがなかなか面白い。
公式のスクランブルプログラムTNoodleでスクランブルを生成してみると、速解き用と最少手数競技用でスクランブルの見た目が異なる。
速解き用。

最少手数競技用。



最少手数競技用のスクランブルは、先頭と末尾に常に R' U' F が付いている。 これが何なのか気になる。
答えはTNoodleのソースコードに書かれている。 リンク先のGoogle Groupsは消えているっぽい。
// For fewest moves, we want to minimize the probability that the // scramble has useful "stuff" in it. The problem with conventional // Kociemba 2 phase solutions is that there's a pretty obvious // orientation step, which competitors might intentionally (or even // accidentally!) use in their solution. To lower the probability of this happening, // we intentionally generate dumbed down solutions. // We eventually decided to go with "Tom2", which is described by Tom // Rokicki (https://groups.google.com/d/msg/wca-admin/vVnuhk92hqg/P5oaJJQjDQAJ): // START TOM MESSAGE // If we're going this direction, and the exact length isn't critical, why not combine a bunch of the // ideas we've seen so far into something this simple: // // 1. Fix a set of prefix/suffix moves, say, U F R / U F R. // 2. For a given position p, find *any* solution where that solution prefixed and suffixed with // the appropriate moves is canonical. // // That's it. So we generate a random position, then find any two-phase solution g such // that U F R g U F R is a canonical sequence, and that's our FMC scramble. // // The prefix/suffix will be easily recognizable and memorable and ideally finger-trick // friendly (if it matters). // // Someone wanting to practice speed FMC (hehe) can make up their own scrambles just // by manually doing the prefix/suffix thing on any existing scrambler. // // It does not perturb the uniformity of the random position selection. // // It's simple enough that it is less likely to suffer from subtle defects due to the // perturbation of the two-phase search (unlikely those these may be). // // And even if the two-phase solution is short, adding U F R to the front and back makes it // no longer be unusually short (with high probability). // END TOM MESSAGE // Michael Young suggested using R' U' F as our padding (https://groups.google.com/d/msg/wca-admin/vVnuhk92hqg/EzQfG_vPBgAJ): // START MICHAEL MESSSAGE // I think that something more like R' U' F (some sequence that // involves a quarter-turn on all three "axes") is better because it // guarantees at least one bad edge in every orientation; with EO-first // options becoming more popular, "guaranteeing" that solving EO // optimally can't be derived from the scramble is a nice thing to // have, I think. (Someone who was both unscrupulous and lucky could // see that R' F R doesn't affect U2/D2 EO, and therefore find out how // to solve EO by looking at the solution ignoring the R' F R. That // being said, it still does change things, and I like how // finger-tricky/reversible the current prefix is.) Just my two cents, // 'tho. // END MICHAEL MESSSAGE String[] scramblePrefix = AlgorithmBuilder.splitAlgorithm("R' U' F"); String[] scrambleSuffix = AlgorithmBuilder.splitAlgorithm("R' U' F");
スクランブルは単に手順をランダムに生成しているわけではない。
大会規則で、「解くのに 2 手以上要する全ての状態からランダムに選ばれた状態(各状態は等確率)でなければならない」と定められている。
手順をランダムに生成するだけでは、本当に全ての状態が生成されるのか分からないし、各状態が等確率で生成されるという保証も無い。 そこで、まずは状態をランダムに選び、その状態を解くことでスクランブル手順を生成している。
解く際にはKociembaのTwo-phase Algorithmというアルゴリズムが使われている。
https://kociemba.org/twophase.htm
このアルゴリズムを最少手数競技用語で説明すると、DR(domino reduction)の前後で分けて探索しているということである。
最少手数競技用語で説明できるように、最少手数競技の競技者が行っていることに近い。 プログラムと人間が同じ状態を同じように解くと、手順が似通ってくる可能性がある。 特に、最少手数競技の最初のステップであるEOが一致するのは良くない。 ということで、スクランブルの先頭と末尾に特定の手順が出てくるようにしている。
条件はEOを全ての軸で変えることで、後は、理解しやすくて、覚えやすくて、できれば回しやすい手順ということで R' U' F が選ばれているらしい。
末尾だけではなく先頭にも付けているのは、NISSを考えてのことだろう。
先頭と末尾で同じ手順を選ぶ必要は無いけれど、変える必要も無いので、同じ手順になっているのだと思う。