# Commutator generation, 5cycles and more



## Roman (Jul 1, 2017)

tl; dr: I generated a lot of speed-optimized 3cycles for wings and x-centers, you're welcome to use them.

I was playing around with commutator algs recently when I found this:
Urb->Brd->Rdb: [r', 4Uw' l 4Uw].
Wondering how many other curious things I have never noticed, I decided to write a generator. In this post I will present some interesting results. Here are raw generated lists for x-centers and wings: https://github.com/Roman-/comms/tree/master/oneMovePartA_raw

First notable thing: commutator algs can solve not only 3cycles, but also 5cycles and 2cycle pairs, although they're slightly less intuitive.

2cycle pairs are cool: they're usually [A, B], where A is an 'interchange' move, and B changes just two pieces on the layer A. Examples:
Bdl-Ful & Dfl-Ubl: [l, U2 f2 U2]
LDb-LUf & LBu-LFd: [L, U' D' r2 D U]
BLd-UFl & UBr-URf: [U, F' R' d R F]

Centers 5cycles often have this pattern: whilist 3cycles are usually [A,BCB'], 5cycles are [A,BCB]. Examples:
Urb-Dbr-Bru-Fru-Blu: [r', u' R' u']
Urb-Dlb-Fru-Bur-Dbr: [r, b L' b]
Ul-Dl-Bl-Fl-Br: [l, E R2 E]

Eventually I found two pure algs for Urb->Brd->Rdb:
[r', D' b D] // = [r', 4Uw' l 4Uw]
[b, D r' D']
Unfortunately, these kind of algorithms are impractical. [F' d F, r] is one more example of the comm of this nature, it's pretty interesting how they work though, I didn't know about them before.

*Setup moves*

Not all 3cycles cases can be solved with pure commutators, so I also tried obtaining a list of all possible 3cycle commutators [A, B] with 3 moves part B and one move part A, with up to 3 setup moves stm. Turned out there are too many of them (~18millions for x-centers, a lot more for t-centers), and they don't even include such good algs as [U' Rw' U [M', U r U']] because (U' Rw' U) is 4 moves stm.

*The practical aspect of it*

Certainly I have to somehow filter the results to be able to find good algs. But what are the criteria?
Descard slice setups? But then I'll miss cool nine-movers like [l [l d' l', U2]]. Lower number of setups down to 1 or 2? Well, the for UF-UB-DF I haven't found any center-safe alg faster than [U' R' U [M2, U R U']]. Disallow F and B? [Rw' F [l2, U' r U]] is good. Disallow f and b? But [b', r B r'] can be executed fast if you do x' rotation before.
As you see, finding practical algs is more difficult task than it seems, but that's exactly what I'm aimed to do eventually.

*What's next?*

My current goal for this project is: for every 3cycle case, output a list of all commutators sorted from fastest (and/or shortest) to the most impractical. For this, I have to come up with a good speed/convinience estimation criteria I mentioned earlier. Then, questions like "what alg would you use for this 3cycle case?" will stop making sense because they're all there sorted and it's not possible to come up with a good alg that's not among the first few lines of the list (unless it has a non-commutator structure).
If you have any ideas for the good algs criteria, please discuss it there. If we succeed to implement it, such algorithms collection will be a tremendous help to anyone looking for a good alg for a specific 3cycle case.

Cheers!



Spoiler: misc tech details about generation



Obviously I forbidded consecutive moves to be the same layer turns (like l2 l'). But on my first launch, I noticed it generates things like [S', r2 b' S'] which is essentially equal to [S', r2] (this swaps Ur-Dr and Ld-Rd). I realized that [A,BCA] = [A,BC], and, generally,
[A, B C] = [A, B] if A is parallel to C. Indeed,
if A||C, then (C A' C') = (C C' A') = (A'). Hence,
[A, B C] = A BC A' C'B' = A B (C A' C') B' = A B (A') B' = [A, B].

Also, [A, A' B] = A A' B A' B' A = B A' B' A = [B, A']. These are the majority of generated scrambles with [one move, four moves]. Example: Dlb-Rdb-Rbu: [R, R' u' l u] = [u' l u, R'].


----------



## Cale S (Jul 1, 2017)

[L, U' D' r2 D U] can also be done with a z rotation to (Rw2 B2 Rw2 U')2, which is 2 moves shorter and very fast to execute


----------



## Iamdrewbrees (Jul 2, 2017)

Any way you could get it to work with cube explorer or something in a way that short non-commutative solutions would show up? A fair amount of the worst commutator cases have good algorithmic alternatives


----------



## Theo Leinad (Aug 19, 2017)

So, I was searching for a comm for UBL-URB-FLD, but find none... 
Maybe you should just try to use a fixed buffer and cover all the cases from there, you should be able to reduce the repetitive cases if you use the fixed buffer... 

For example, I found out that for any 3 corner commutators you only need one of a 27 pool of different cases using BH corner commutators. (from 8 to 12 HTM)

You're close to a good set of algs, i found this in BH speedsolve algs: 
(URB FLD UBL) U R D2 R' U' R D2 R' (8 HTM) Drop and Catch


----------



## Roman (Aug 20, 2017)

Theo Leinad said:


> So, I was searching for a comm for UBL-URB-FLD, but find none...
> Maybe you should just try to use a fixed buffer and cover all the cases from there, you should be able to reduce the repetitive cases if you use the fixed buffer...
> 
> For example, I found out that for any 3 corner commutators you only need one of a 27 pool of different cases using BH corner commutators. (from 8 to 12 HTM)
> ...



I haven't covered corners algs yet, but you can try find one here: https://bestsiteever.ru/tables/


----------



## Theo Leinad (Aug 21, 2017)

Hey Roman, 
I got bit confused, you're cool with what you're doing, just as a suggestion, try to have them sorted by cubies... 
all ULB first, then UBR then UFL... etc... 
just a suggestion...


----------



## Roman (Aug 22, 2017)

*Part 2*
As mentioned earlier, my final goal for this project was: for each 3cycle case, generate a list of the most convinient algorithms. So far I've done it for wings and x-centers, so here they are:

wings(UFl, DFr, UBr, URf buffers): click

x-centers (U-layer buffers): click

x-centers (D-layer buffers): click
I also did it for edges and corners but haven't formalized the tables yet. Definitely will publish it when I have some free time.
Looking through these lists, I was amazed how many good algs are there that I never knew about. If I will ever start practicing BLD seriously again, I would begin with changing my algs according to the generated tables.


----------



## Iamdrewbrees (Aug 23, 2017)

Roman said:


> *Part 2*
> As mentioned earlier, my final goal for this project was: for each 3cycle case, generate a list of the most convinient algorithms. So far I've done it for wings and x-centers, so here they are:
> 
> wings(UFl, DFr, UBr, URf buffers): click
> ...


No UFr?


----------



## Roman (Aug 23, 2017)

Iamdrewbrees said:


> No UFr?


UFr == UFl mirrored left-to-right


----------



## pinser (Aug 24, 2017)

Roman said:


> *Part 2*
> As mentioned earlier, my final goal for this project was: for each 3cycle case, generate a list of the most convinient algorithms. So far I've done it for wings and x-centers, so here they are:
> 
> wings(UFl, DFr, UBr, URf buffers): click
> ...


This is amazing, thanks so much!


----------



## G2013 (Aug 24, 2017)

Gold contribution! That's so helpful!


----------



## Hari (Aug 25, 2017)

This is so cool Roman. Thanks for making this. The minute I too get some time to dedicate back to big BLD, I'm revising my lists with these. Think it could make a serious improvement in my execution.


----------



## abunickabhi (Feb 19, 2021)

Sorry for the bump.

I have been working on 5-cycle xcenters for a while and have come up with a cool sheet to list all the cases. The buffer I used is Ubr, which was my previous 3-style buffer for x-centers.

Documentation of the 5-cycle with the references that I used

So, the algs generated by Roman are from many buffers in part 1, and it will need a bit of processing to make it seep into other people's algsheets.
My idea is to make a Part 2 which roman made for all U and D layer buffer 3-cycle cases, and made a sheet that lists 5-cycles.

The additional thing I did was to colour code the targets, so eg yellow-orange-blue-red-white case say. It will help people find 5-cycles for the cases not listed on my sheet, but are quite similar, yellow-orange-blue-red-white but having different sticker targets on each layer. So there has to be a few face turn setup moves in order to execute the 5-cycles.



Currently there are 10k Ubr 5-cycles that were generated and made them into an algsheet that is easier to use. The colorful columns indicate the pieces color that the targets are shot to in the 5-cycle (Done from the YO orientation)

I still have to work with Roman's generated 5cycles (link1 link2) for xcenters, and find more Ubr cases that I can add up to the 10k algs sheet that I have generated.


----------



## Roman (Feb 23, 2021)

*Some updates*
(they do not have any practical applications though but may soon have).

1) I have re-generated all pure commutators in my comms repo as some of them were not center-safe. All algs are now solved-centers-safe. I've also added 5BLD edge flips and corner twists.
2) I have uploaded my C++ code used for generating pure comms to my github: https://github.com/Roman-/commfinder

*What does it mean?*
I can now make t-centers generated alg sheet similar to these x and w tables posted above.
I can also make the same table for center-safe 2e2e and edge flip.

This will eventually grow to a collaborative commDB project where you can search for any 3cycle/2swap/5cycle case and get a list of algorithms sorted by the amount of users liked them. I have already made this some years ago but did not released for some reason. Here is what it looked like:



Spoiler: commdb screenshot


----------



## abunickabhi (Feb 23, 2021)

Roman said:


> *Some updates*
> (they do not have any practical applications though but may soon have).
> 
> 1) I have re-generated all pure commutators in my comms repo as some of them were not center-safe. All algs are now solved-centers-safe. I've also added 5BLD edge flips and corner twists.
> ...


Will the commDB be integrated with colpi?
Will all the spreadsheet algs from bestsiteever/tables be imported to future commdb? (Edit: I think it is being imported from some of the spreadsheets)
How many years ago did you first have the idea of a resource like commdb?

CommDB sounds like a good idea. I was planning to add 3-style floating algs to speedcubeDB, and I pinged Gils and discussed a bit.

There are now 47k 5cycle xcenter as compared to 12k generated in 2017. They are from lot of buffers.

5BLD edge flip and corner twist addition is good, thanks for adding more files to the repo.


----------

