Corners-first: metoda skládání nejprve rohů, poté hran


V létě roku 2004 jsem začal se skládáním Rubikovy kostky. Zprvu sám a bez nápovědy. Dospěl jsem (nutno podotknouti náhodně) do toho bodu, kdy na kostce byly špatně orientovány jen 2 hrany - viz značení tahů Rubikovy kostky. Při zkoušení vyřešení tohoto problému jsem si však kostku rozmíchal a už jsem se k tomuto stavu nepřiblížil.

Dnes mě mrzí, že jsem tehdá kostku nesložil intuitivně. Našel jsem si na internetu návod (začátečnickou metodu: skládání po vrstvách) a hlavolam podle něho složil. I když to bylo podle návodu, poprvé složená Rubikova kostka ve mně vyvolala pocit nepopsatelné radosti (skoro takové, jakou ve mně vyvolala poprvé složená kostka poslepu).

Protože jsem hravý a soutěživý typ, skládání mě nejenom chytlo, ale i nutilo ke stále rychlejšímu provedení. Brzo jsem zjistil, že existují i rychlejší metody než ta, se kterou jsem doposud skládal (pojem "rychlejší metoda" je hloupost – metody nemůžou být "rychlé"). V češtině tenkrát byly na webu k dispozici jen corners-first (doslovný překlad: nejdříve rohy) a CFOP (corners-first bývá zkracováno písmeny CF, což zejména začátečníky může mást právě s CFOP). Mimochodem, ani jedna z český stránek, ze kterých jsem čerpal v mých kostkařských začátcích (speedcubing.wz.cz (CF) od Jana Balhara, resp. cube.misto.cz (CFOP) od Josefa Jelínka), už dnes bohužel neexistuje. Protože CFOP obsahovala více algoritmů, vyhrála u mě metoda CF.

Nějaký čas jsem strávil nad jejím studováním, ale nepochopil jsem ji. Alespoň algoritmickou část při skládání hran. Proto jsem si ji poupravil do takové podoby, která mi byla pochopitelná a kterou popisuji níže.

Jedná se přesně o ty algoritmy, které používám. Netvrdím, že jsou nejlepší. Naopak tvrdím, že by mohly být lepší. I přesto jsem s nimi (a žádnými dalšími) dne 6. 11. 2010 dosáhl časy 16.66 + 2 = 18.66, 21.45, 19.76, 18.71, 17.57, (24.56), 22.27, 17.03, 18.51, (16.20), 19.03, 16.45 průměrného výkonu 18.94 vteřin z 12 pokusů a dne 9. 3. 2010 hodnoty 3.45 s pro kostku 2x2x2, opět z 12 pokusů. Kdyby to někoho zajímalo, pokusy na 2x2x2 byly následující:

  1. 4.12   F R F' U R U' F U R' U2
  2. 3.21   R F R2 F' R F2 R F U
  3. 4.64   R U' R F2 U' R' U F2 U2
  4. 3.21   U' F R' U2 R2 F R' U' F2 U'
  5. 3.92   U2 R' F U F' U R'
  6. 4.06   F' U F2 R' F2 R F' U R'
  7. 3.08   U2 F2 R2 U' R U' F
  8. (5.09)   U' F R' U F U2 F R
  9. 2.89   R F2 R' U2 F U' R2 F U
  10. 2.43   U R U' R' U F2 R' F' R U2
  11. (2.31)   R2 U2 R' U2 R' F
  12. 2.95   R2 F U' F R F' R2 F' R'

Metoda skládání corners-first zaznamenala největší rozmach v období 80. let (mj. i vítěz 1. mistrovství světa používal tuto metodu). V dnešní době existuje spousta variant metody CF, ale vím pouze o jednom člověku z Francie, který při rychloskládání Rubikovy kostky 3x3x3 používá více-méně stejné pořadí kroků, jenž jsou popsány níže. Metoda bývá často označována jako Ortega (přesněji Ortega pro kostku 3x3x3), protože první krok skládání odpovídá skládání Rubikovy kostky 2x2x2 právě metodou Ortega (tzn. že metoda Ortega se primárně používá pro kostku 2x2x2, ale může se použít i v některém kroku pro kostku 3x3x3). Historicky vzato - kostka 2x2x2 byla uvedena na trh později než kostka 3x3x3 - se ale metoda Ortega používala nejdříve právě pro rohy Rubikovy kostky 3x3x3 a to stejným způsobem, jak je uvedeno níže.

Metoda může být rozdělena do tří hlavních kroků:

Složení rohů

Po dokončení prvního kroku by hlavolam mohl vypadat následovně:

corners first rohy

Ale nemusí. Osobně nelpím na tom, aby rohy byly takto "složené". Jde mi jen o to, aby byly správně permutované a orientované jak rohy horní vrstvy, tak dolní vrstvy, ale jejich vzájemná poloha mě v danou chvíli nezajímá. Je mi tedy jedno, jestli je horní vrstva na obrázku otočena tahem U, U2 či U3 = U', nebo jestli jsou rohy "složené" (jako v případě obrázku).

Při skládání jsem tzv. color-neutral, což považuji za vcelku značnou výhodu. Znamená to, že mi nezáleží na tom, jakou barvu (v tomto případě rohů) skládám jako první.

Začínám většinou orientací 4 rohů, poté orientuju 4 opozitní rohy a pak všechny rohy permutuju. Způsob, jakým toho dosahuju, je takový, že v průběhu inspekce před samotným skládáním si vyberu 4 rohy jedné barvy (protože jsem color-neutral, tak je mi jedno jaké), které můžu nejrychleji umístit k jednomu středu. Orientace těchto 4 rohů (v případě color-neutrality) zabere v průměru 3.97 tahů a je vždy možné ji udělat do pěti tahů.

Schválně jsem si s kostkou 2x2x2 (což jsou v prvním přiblížení rohy 3x3x3) udělal takový malý test. Stokrát jsem ji rozmíchal a do 15 vteřin (to je inspekční čas) složil co nejmenším počtem tahů jednu stěnu. Počet tahů každého pokusu jsem si zaznamenal. Zde jsou výsledky:

0 tahů potřebných ke složení stěny: 0x
1 tah pořebný ke složení stěny: 6x
2 tahy potřebné ke složení: 12x
3 tahy potřebné ke složení: 35x
4 tahy potřebné ke složení: 37x
5 tahů potřebné ke složení: 9x
6 tahů potřebné ke složení: 1x
průměr: 3.34 tahů na složení stěny

Výsledek mě vcelku překvapil, protože jsem očekával větší průměrnou hodnotu. Důvodem toho, proč je průměr tak malý, by mohlo být to, že jsem kostku míchal náhodně (a ne podle optimálního počítačového řešení) v kombinaci s tím, že jakmile jsem jednu stěnu složil, začal jsem s rozmícháním kostky (což podle mě zvyšuje pravděpodobnost menšího počtu tahů v případě skládání stěny jiné barvy v dalším pokusu). Pokus, u kterého jsem potřeboval 6 tahů, bych složil méně tahy, ale potřeboval bych k tomu delší časový interval než 15 vteřin.

U kostky 3x3x3 se obvykle nesnažím orientovat 4 rohy a pak k nim přesunout střed, ale spíše co nejefektivněji přesunout rohy ke středu – tzn. nejlépe již orientované. Ale není to podmínkou. Zároveň držím kostku tak, aby orientované rohy se středem byly dole (na dolní stěně). Důvod je prostý: nemusím pak s kostkou jako celkem otáčet a ušetřím tak nějaký čas. Potom orientaci opozitních rohů provádím těmito algoritmy (za předpokladu, že jsou v dolní stěně orientované "bílé" rohy a při použití tzv. BOY schématu (bílá naproti žluté, zelená proti modré a červená proti oranžové)).

Orientace rohů
číslo
algoritmu
pozice
algoritmus
1
corners first 1
R U R' U R U2' R'
2
corners first 2
R U2' R' U' R U' R'
3
corners first 3
R2 U2' R U2' R2'
4
corners first 4
R U' R2' F R2 U' R'
5
corners first 5
R2 U R U2 R U2 R
6
corners first 6
R U R' y+U' L' U' L
7
corners first 7
L U' L' y'+U' R' F R

Po dokončení orientace rohů je bude třeba permutovat (většinou). Společně s následujícími obrázky jsou uvedeny i algoritmy, které používám. Žlutou barvou části obrázku jsou označeny rohy horní stěny, bílou barvou pak rohy spodní. Šipka znázorňuje to, které rohy se mají prohodit (permutovat).

Permutace rohů
číslo
algoritmu
pozice
algoritmus
8
corners first 8
R U2' R' U' R U2' l' U R' U' l
9
corners first 9
L U L2 U R U R' U R U L2 U R'
10
corners first 10
L2' U' L2' y+U2 L2 U' L2'
11
corners first 11
L2' U' L2' U L2 U' L2' U L2
12
corners first 12
R2' F2 R2

Někteří z vás si mohli všimnout, že pro permutaci rohů nejsou uvedeny případy, kdy je v dolní stěně potřeba vyměnit dva diagonální rohy (symetrie s pozicí 9), stejně tak jako sousedící rohy (symetrie s pozicí 8) anebo v dolní stěně permutovat diagonální a v horní stěně sousedící rohy (symetrie s pozicí 11). Je to proto, že zmíněné případy neumím algoritmicky řešit. Obyčejně v takové situaci obrátím kostkou jako celkem - tah x2' - a řeším již známou pozici. Zkrátka jsem línej naučit se tři algoritmy navíc (u symetrie k pozici č. 11 někdy místo počátečního L2' dělám r2' a potom pokračuji v algoritmu). Protože se mi některé tahy lépe provádějí na kostce 2x2x2 než 3x3x3, algoritmus č. 5 provádím na 2x2x2 takto: R2 U R U2' R U2' R. Ostatní algoritmy jsou v mém provedení stejné pro 3x3x3 i 2x2x2.

Mnou používaný systém skládání rohů není optimální z žádného hlediska a dal by se vylepšit, tzn. zrychlit, ve dvou věcech. Tou první je použít lepší metodu skládání pro Rubikovu kostku 2x2x2. Například CLL, SS nebo EG (místo použité metody Ortega).

Druhou věcí je pak optimalizace algoritmů. Na internetu je k nalezení hromada algoritmů pro výše zmíněné metody na kostku 2x2x2. Za všechny jsem dříve zmiňoval polskou databázi s více než 40 000 algoritmy, ovšem v roce 2018 se mi ji už nepodařilo dohledat. Kdybych se měl učit algoritmy z tabulky znova, vybral bych si jiný pro pozici č. 9, a možná i 4, 6, 7 a 11.

Složení rohů je nejnáročnější část skládání, alespoň co se týče počtu algoritmů. Složení všech hran až na ty, které patří do M-prstence provádím intuitivně a na hrany M-prstence používám jen několik algoritmů (jestli se tak ty sekvence tahů dají vůbec nazvat), viz dále.

Složení všech hran až na ty, které patří do M-prstence

V tuto chvíli otáčím kostkou jako celkem (provedu tah z') a skládám 3 hrany, které patří do původní horní stěny (v tomto případě žluté barvy). Protože mám zautomatizované algoritmy na permutaci rohů, stíhám při jejich dokončení sledovat umístění některých hran. Tím pádem většinou plynule přejdu od složení rohů ke skládání hran.

Skládaná hrana se může vyskytovat ve třech vrstvách: levé (tam patří), prostřední (označme ji M-prstencem) a pravé. Pokud se skládaná hrana nachází v levé vrstvě, přesunu ji do M-prstence (viz dva levé simulátory níže). Pokud je skládaná vrstva v M-prstenci, umístím ji vždy na pozici FD (což je v daném případě to samé jako DF) a zároveň místo, kam hrana patří, umístím na pozici UL = LU. Potom pokračuji postupem ukázaným u prostředních dvou simulátorů. Pokud je skládaná hrana zprvu umístěna v pravé vrstvě (stěně, chcete-li), přesunu ji na pozici UR (neboli RU) a zároveň místo, kam hrana patří, umístím na pozici UL = LU. Poté provádím tahy znázorněné na simulátorech vpravo.

Jakmile poskládám 3 ze 4 hran v levé stěně, kostkou jako celkem otočím (obvykle z2') a skládám stejným způsobem všechny 4 hrany v současné levé stěně (tzn. bílé hrany v tomto případě). To z2' je ztráta času (nemusí být vůbec provedeno – hrany se dají skládat do pravé stěny), ale ze zvyku to dělám. Samotný proces skládání bílých hran samozřejmě musí probíhat tak, aby se již složené žluté hrany nerozmíchaly. K tomu slouží "díra" - pozice na místě nesložené žluté hrany (anglicky se tomu říká keyhole, příp. working edge).

Po doskládání čtvrté bílé hrany kostkou nijak neotáčím. Chybějící žlutá hrana může být buď v pravé vrstvě (v takovém případě provádím tahy znázorněné levým simulátorem níže) nebo v M-prstenci (viz prostřední a pravý simulátor níže).

Při vkládání poslední bílé hrany (v našem případě) se podívám, zda-li náhodou není na pozici "díry", tedy UR. Pokud je (a pokud je i hrana patřící na UR v M-prstenci), skládám obvykle poslední dvě hrany (jednu bílou a jednu žlutou) najednou (viz simulátory níže). Ale není to podmínkou, záleží vždy na tom, jak rychle uvidím obě hrany. Když jednu z těch dvou nevidím téměř okamžitě, poslední dvě hrany skládám tak, že složím nejprve jednu a pak tu druhou.

V závislosti na libovolném výskytu posledních dvou hran na kostce jsem občas schopen je složit jednorázově (např. když je třeba vyměnit hrany UL a UR, provedu U' M2' U2 M2 U', nebo když orientuju hranu UL a hrana patřící na UR je na pozici FD, dělám U' M U2' M2' U', resp. pro orientaci hrany UR a hranu patřící na pozici UL vyskytující se na FD dělám U M U2' M2' U). Není to ale pravidlem a jak již bylo řečeno, pokud je rychlejší najít nejdříve jednu hranu a potom druhou, skládám je (i za cenu vyššího počtu tahů) dvoufázově.

Stejně jako v případě skládání rohů i pro skládání hran, které nejsou v M-prstenci, vidím řadu možných vylepšení. První z nich je skládání hran po páru - čili dvě hrany pro jednu situaci (něco na způsob předešlých 4 simulátorů a minulého odstavce, ale pro všechny hrany kromě těch patřící do M-prstence - např. by se mohly skládat vždy hrany na pozicích UR a UL a po jejich složení by se daly provést tahy R L', aby se celý proces mohl následně opakovat. Relativně jednoduše lze skládat hrany na pozicích UL + UR tím, že patřičné hrany umístíme po jedné na pozice DF a DB. Pak stačí provést tah U nebo U' v návaznosti na to, aby další tah M2 hrany na nynějších pozicích UF + UB složil. Poté už jen zbývá zarovnat právě složené hrany do svých vrstev (tahem U nebo U'), provést např. tahy R L' a stejným způsobem pokračovat ve skládání jiných dvou hran naráz). Dalšího zrychlení můžeme dosáhnout skládáním posledních 5 nebo 6 hran najednou (to se dělá v metodě Watermanově, resp. Roux), nebo alespoň orientováním hran patřící do M-prstence za současného skládání hran nepatřící do tohoto prstence.

Složení hran M-prstence

Až teprve teď si "složím" všechny rohy, tzn. že provádím obvykle tahy R a L do té doby, kdy mohou být nesložené jen 4 hrany M-prstence.

V tuto chvíli existuje 21 případů rozmístění zbylých hran. 1 případ je pro všechny hrany složené (tudíž i složenou celou kostku), ze zbývajících 20 případů jsou další 2 případy inverzními k jiným, takže pro jednorázové složení všech 4 hran je zapotřebí se naučit 18 algoritmů.

Tolik jich zdaleka neumím. Nejčastěji řeším skládání zbylých 4 hran dvoufázově, někdy jednofázově (když znám ten pravý z 18 algoritmů), ale jsou i případy, kdy složení hran řeším třífázově (to je vopruz, ale když je člověk línej naučit se pár algoritmů navíc, nic jiného mu nezbývá).

Nuže všechny algoritmy, které používám, jsou shrnuty v následující tabulce (pro symetrický případ k číslu 15, kdy je kostka pootočena o tah y2 používám U2' M' U2' M místo y2 a algoritmu č. 15).

Složení hran M-prstence
číslo
algoritmu
pozice
algoritmus
13
U2' M2 U2' M2
14
z' M2 E' M2 E'
15
U2' M U2' M'
16
M' U M' U M' U2 M U M U M U2'
17
y' R2 U M U' R2 U M' U'
18
y' U M U' R2 U M' U' R2'

Proces skládání hran M-prstence lze samozřejmě zrychlit navýšením počtu algoritmů (ideální je naučení se všech 18).

Když se to tak vezme kolem a kolem, víc než 15 algoritmů neumím. 12 pro rohy a pár pro hrany (algoritmy 13 - 15 jsou čtyřtahové a poněkud nezapadají do definice "algoritmu". Algoritmus číslo 16 je jednoduše zapamatovatelný a 17 s 18 jsou navzájem inverzní).

Co se mi líbí na metodě corners-first je poměr cena/výkon, aneb s 15 algoritmy se dá dosahovat časů pod 19 vteřin. Nedá mi to a musím parafrázovat jednoho politika: "dámy a pánové nechci se vás dotknout, ale kdo z vás to má?"

S takto uvedeným návrhem skládání si myslím, že časy v průměru kolem 16 vteřin jsou lidským maximem. S navrženými vylepšeními (efektivnější skládání rohů i hran) si myslím, že lidské maximum by se dalo stlačit na časy kolem 12 vteřin (přičemž samotná Jessica Fridrich odhadovala pro svůj systém skládání limit v hodnotě 11 vteřin, který mnozí rychloskladači překonali i o více než 4 sekundy).



Graficky stránku obohatili Conrad Rider a Michael Feather.