Ranzha
Friendly, Neighbourhoodly
- Joined
- Jul 24, 2009
- Messages
- 2,551
- Location
- Reno, Nevada, United States
- WCA ID
- 2009HARN01
- YouTube
- Visit Channel
Hello! This thread is meant for people to post dissections of algorithms. If you're unfamiliar with the concept of algorithm dissection, dissecting an algorithm is the practice of breaking an algorithm down into easily definable chunks in an attempt to better understand the reason why the algorithm is effective. For instance, a simple algorithm dissection would be dissecting the T-perm (R U R' U' R' F R2 U' R' U' R U R' F') by saying that it's the result of two OLL algorithms done sequentially (R U R' U' R' F R F' and F R U' R' U' R U R' F').
Over the years, I've seen posts where people have dissected algorithms, but the posts are very few and far between. As I did some algorithm dissection of my own today, I thought it would be a worthwhile idea to see what all people can come up with in a more organised fashion.
Without further ado, here's the composition of the optimal L-perm:
Optimal L-perm: x U2 r' U' r U2 l' U R' U' R2 x2
Over the years, I've seen posts where people have dissected algorithms, but the posts are very few and far between. As I did some algorithm dissection of my own today, I thought it would be a worthwhile idea to see what all people can come up with in a more organised fashion.
Without further ado, here's the composition of the optimal L-perm:
Optimal L-perm: x U2 r' U' r U2 l' U R' U' R2 x2
Algorithm reference list:
Alg 1: [R': M U' M' U] -- 5-cycle of BD-UB-FU-LU-BR.
Alg 2: R U2 R' U' R U' R' -- Inverse of Sune (aka Antisune)
Alg 3: R U' L' U R' U' L -- Niklas, without the final move of the comm
Alg 4: [R' U R U', M'] -- Common alg for the H-OLL, 3-cycle of UR-UB-FU.
By combining alg 2 and alg 3, we get a J-perm:
R U2 R' U' R U' R' R U' L' U R' U' L
=
R U2 R' U' R U2 L' U R' U' L
Note that the optimal L-perm is similar to this algorithm, starting from the second move of this J-perm.
This said, move the beginning R to the back of the algorithm with premove R':
[R': R U2 R' U' R U2 L' U R' U' L)]
=
R' (R U2 R' U' R U2 L' U R' U' L) R
=
U2 R' U' R U2 L' U R' U' L R
This algorithm swaps BUR with BDR and UF with BR.
Note how the opening of the optimal L-perm starts with U2 r' U' r U2, which is similar to U2 R' U' R U2 that begins our now conjugated J-perm. By starting this new algorithm with the start of the optimal L-perm and then the inverse of the start of the J-perm, we get:
(U2 r' U' r U2) + (U2 R' U R U2) + (U2 R' U' R U2 L' U R' U' L R)
=
U2 r' U' r U2 U2 R' U R U2 U2 R' U' R U2 L' U R' U' L R
Since the second parenthetical algorithm and the first five moves of the third parenthetical algorithm are inverses, they cancel, but we'll save that cancellation until the end (because it's more magical that way).
This leaves us with an L-perm on B and the familiar 3-cycle ELL. (I can hear the "wat" at your screen)
Why does this work? Because the result of applying the first two parenthetical algorithms (U2 r' U' r U2) + (U2 R' U R U2) is the same as our first algorithm with premove U2:
U2 r' U' r (U2 U2) R' U R U2
=
U2 r' U' (r R') U R U2
=
U2 r' U' M' U R U2
=
[U2: R' M U' M' U R]
=
[U2: [R': M U' M' U]]
As said previously, alg 1 cycles BD-UB-FU-LU-BR. By adding the U2 premove, the cycle becomes BD-UF-BU-RU-BR. Considering that the conjugated J-perm from before cycles BUR-BDR and BR-UF, the result of the cycles in succession becomes:
BD-UF-BU-RU-BR-BR-UF-BR
=
BD-UF-BU-RU-UF-BR
=
UF-BU-RU and BD-BR
Thus the BD-BR of the L-perm on B is now done, at the expense of three edges displaced. Luckily, there's a couple of cool ways to solve this, and of them, alg 4!
If we tack alg 4 onto the end of our current solution, here's what we get:
(U2 r' U' r U2 U2 R' U R U2 U2 R' U' R U2 L' U R' U' L R) + (R' U R U' M' U R' U' R M)
=
U2 r' U' r U2 U2 R' U R U2 U2 R' U' R U2 L' U R' U' L R R' U R U' M' U R' U' R M
Luckily, the last L move is done before the final algorithm that doesn't affect the L edges. Because of this, we can simply move the L to the end:
U2 r' U' r U2 U2 R' U R U2 U2 R' U' R U2 L' U R' U' L R R' U R U' M' U R' U' R M
=
U2 r' U' r U2 U2 R' U R U2 U2 R' U' R U2 L' U R' U' R R' U R U' M' U R' U' R M L
(This can also be accomplished by doing an L' premove to alg 4 and just inserting that at the end of the previous solution, but I digress.)
This algorithm solves the L-perm. But it looks absolutely disgusting. Let's start cancelling!
U2 r' U' r (U2 | U2) (R' U R U2 | U2 R' U' R) U2 L' (U R' U' R | R' U R U') M' U R' U' R M L
=
U2 r' U' r U2 L' M' U R' U' R M L
=
U2 r' U' r U2 l' U R' U' R l
=
U2 r' U' r U2 l' U R' U' R2 x'
This condensed algorithm is the L-perm we're used to. Now just start with premove x to get this L-perm from on B to on U:
x U2 r' U' r U2 l' U R' U' R2 x' x'
=
x U2 r' U' r U2 l' U R' U' R2 x2
Done!
Alg 1: [R': M U' M' U] -- 5-cycle of BD-UB-FU-LU-BR.
Alg 2: R U2 R' U' R U' R' -- Inverse of Sune (aka Antisune)
Alg 3: R U' L' U R' U' L -- Niklas, without the final move of the comm
Alg 4: [R' U R U', M'] -- Common alg for the H-OLL, 3-cycle of UR-UB-FU.
By combining alg 2 and alg 3, we get a J-perm:
R U2 R' U' R U' R' R U' L' U R' U' L
=
R U2 R' U' R U2 L' U R' U' L
Note that the optimal L-perm is similar to this algorithm, starting from the second move of this J-perm.
This said, move the beginning R to the back of the algorithm with premove R':
[R': R U2 R' U' R U2 L' U R' U' L)]
=
R' (R U2 R' U' R U2 L' U R' U' L) R
=
U2 R' U' R U2 L' U R' U' L R
This algorithm swaps BUR with BDR and UF with BR.
Note how the opening of the optimal L-perm starts with U2 r' U' r U2, which is similar to U2 R' U' R U2 that begins our now conjugated J-perm. By starting this new algorithm with the start of the optimal L-perm and then the inverse of the start of the J-perm, we get:
(U2 r' U' r U2) + (U2 R' U R U2) + (U2 R' U' R U2 L' U R' U' L R)
=
U2 r' U' r U2 U2 R' U R U2 U2 R' U' R U2 L' U R' U' L R
Since the second parenthetical algorithm and the first five moves of the third parenthetical algorithm are inverses, they cancel, but we'll save that cancellation until the end (because it's more magical that way).
This leaves us with an L-perm on B and the familiar 3-cycle ELL. (I can hear the "wat" at your screen)
Why does this work? Because the result of applying the first two parenthetical algorithms (U2 r' U' r U2) + (U2 R' U R U2) is the same as our first algorithm with premove U2:
U2 r' U' r (U2 U2) R' U R U2
=
U2 r' U' (r R') U R U2
=
U2 r' U' M' U R U2
=
[U2: R' M U' M' U R]
=
[U2: [R': M U' M' U]]
As said previously, alg 1 cycles BD-UB-FU-LU-BR. By adding the U2 premove, the cycle becomes BD-UF-BU-RU-BR. Considering that the conjugated J-perm from before cycles BUR-BDR and BR-UF, the result of the cycles in succession becomes:
BD-UF-BU-RU-BR-BR-UF-BR
=
BD-UF-BU-RU-UF-BR
=
UF-BU-RU and BD-BR
Thus the BD-BR of the L-perm on B is now done, at the expense of three edges displaced. Luckily, there's a couple of cool ways to solve this, and of them, alg 4!
If we tack alg 4 onto the end of our current solution, here's what we get:
(U2 r' U' r U2 U2 R' U R U2 U2 R' U' R U2 L' U R' U' L R) + (R' U R U' M' U R' U' R M)
=
U2 r' U' r U2 U2 R' U R U2 U2 R' U' R U2 L' U R' U' L R R' U R U' M' U R' U' R M
Luckily, the last L move is done before the final algorithm that doesn't affect the L edges. Because of this, we can simply move the L to the end:
U2 r' U' r U2 U2 R' U R U2 U2 R' U' R U2 L' U R' U' L R R' U R U' M' U R' U' R M
=
U2 r' U' r U2 U2 R' U R U2 U2 R' U' R U2 L' U R' U' R R' U R U' M' U R' U' R M L
(This can also be accomplished by doing an L' premove to alg 4 and just inserting that at the end of the previous solution, but I digress.)
This algorithm solves the L-perm. But it looks absolutely disgusting. Let's start cancelling!
U2 r' U' r (U2 | U2) (R' U R U2 | U2 R' U' R) U2 L' (U R' U' R | R' U R U') M' U R' U' R M L
=
U2 r' U' r U2 L' M' U R' U' R M L
=
U2 r' U' r U2 l' U R' U' R l
=
U2 r' U' r U2 l' U R' U' R2 x'
This condensed algorithm is the L-perm we're used to. Now just start with premove x to get this L-perm from on B to on U:
x U2 r' U' r U2 l' U R' U' R2 x' x'
=
x U2 r' U' r U2 l' U R' U' R2 x2
Done!