# Creating a Rubik's Cube Algorithm

So, I realize this isn't a very math-oriented question, but I thought it fit better here than anywhere else. Anyway, I was simply wondering how people come up with the many Rubik's Cube algorithms, assuming there actually is a method to the apparent madness..

I assume you are referring to human methods and not using Rubik's cube solvers such as Cube Explorer to create algorithms for you.

In addition, I assume that you are wondering about how to create a set of algorithms which collectively solve a certain phase of a step-by-step process. Maybe you want to find an algorithm set which solves the last 3 corners? An algorithm which flips the last 4 edges?

First off, if you want to create an algorithm which affects a certain amount of pieces on a cube in a certain fashion (or at least a definable portion of a cube), it's only practical to be able to experiment with a solved cube. That is, use some computer animated Rubik's cube for which you can click the reset (solve) button to start off with a solved cube again whenever you try to do some moves but accidentally scramble the cube.

After a while of experimenting, if you write down short sequences you find which affect a few pieces at a time and learn about commutators and conjugates, then eventually you will have a small "library" of sequences which you use to build longer and more complicated algorithms from than you ever imagined.

An interesting technique I taught myself is that you can literally cyclically shift the moves of one algorithm to create another algorithm. For example, maybe you know of the Niklas commutator, R U' L' U R' U' L U. If we shift (conjugate it with the inverse of the first move) this algorithm once, we get an alternate 3 corner cycle algorithm U' L' U R' U' L U R.

In addition, we can invert turns in some existing algorithms to get other useful algorithms. Using the Niklas again, how about we invert all U face turns to get R U L' U' R' U L U'. How about convert some turns to half turns? R U L2 U' R' U L2 U'

This leads me into another strategy. I recall many times when I studied existing algorithms to see (or guess) how they work, and in that process of struggling, I perhaps not only understood how an existing algorithm worked, I created a new one based off of the "idea" of my interpretation of how that algorithm worked. In addition, some existing algorithms can be broken into several understandable steps, and so perhaps you can use a portion of an existing algorithm to create a new algorithm.

In addition, a simple technique (although algorithms found this way will be quite lengthy) is to repeat a short random sequence you find to create a base algorithm (instead of using commutators). For example, if you have the algorithm R U R' U' R (which appears to be random moves), you can repeat it three times to create an algorithm which swaps two edges: (R U R' U' R)3. It of course also cycles 4 corners, but maybe we can use it to do something we are familiar with. Let's give it a shot!

If we:

1. Expand it, R U R' U' R R U R' U' R R U R' U' R
2. Shift the first three moves U' R R U R' U' R R U R' U' R R U R'
3. Conjugate it with one move, B' U' R R U R' U' R R U R' U' R R U R' B

= B' U' R2 U R' U' R2 U R' U' R2 U R' B, then we have an algorithm which can be used to place an edge in the middle layer (where we assume we have solved the bottom layer and have not solved the top layer), for example.

All in all, it really depends what you want to accomplish with the algorithms you find for anyone to more accurately describe to you the methods humans use to do what you want to do in particular, as there are literally an unlimited number of algorithms you can find, and there are many sub-step methods (one of them being the beginner's layer by layer 3x3x3 solving method), some which are speedsolving methods, others are fewest move methods, others blind-solving methods, and so forth.

Personally, I have created hundreds of very short and complicated 4x4x4 parity algorithms from 2009-2013 which I eventually put on this page, and thus I probably do not look at parity algorithms the way anyone else does. The way I created so many algorithms is because when I found one algorithm, I remembered how I found it--the different pieces which make it up--and I later reused either those moves or simply the concept to construct a new parity algorithm. That is, the human mind has the memory capacity to be able to relate two unrelated algorithms (which can affect a cube differently) and form a third algorithm which you can think of as a "hybrid" of the two ideas from both algorithms. In addition, I started a thread about the methods I created and used to find several parity algorithms, if you're also interested in the 4x4x4.

I could continue on and on, but hopefully this post has given you a small idea of how humans can find algorithms without using solvers. However programs can be used to find all possible short sequences to do a specific task for you, for example, and you can then experiment with those short sequences and build algorithms from them: no one ever ruled out computer and human interaction.

• "In addition, a simple technique (although algorithms found this way will be quite lengthy) is to repeat a short random sequence you find to create a base algorithm (instead of using commutators)." What do you mean by "commutators" here? – Steven Sagona Aug 7 '18 at 1:20
• Also a more personal question: do you understand PLLs? Like if I give you a beginner-level PLL, do you think you will understand how the permutation works, and if you don't could you figure out how to learn how to understand it? – Steven Sagona Aug 7 '18 at 1:22
• "What do you mean by "commutators" here?" Just like in physics (which I see you are interested in), a commutator is a move sequence of the form X Y X-1 Y-1 = [X,Y], where X and Y are two different move sequences. The Niklas commutator is R U L' U' R' U L U' = [R, U L' U'], for example. – Christopher Mowla Aug 8 '18 at 2:15
• See my post math.stackexchange.com/questions/1822767/… for more details on my take on commutators. (I have done quite a bit of research on them and have written but have not published a book on them in far more detail than I've seen anywhere else!) – Christopher Mowla Aug 8 '18 at 2:17
• "Also a more personal question: do you understand PLLs? Like if I give you a beginner-level PLL, do you think you will understand how the permutation works, and if you don't could you figure out how to learn how to understand it?" Yes, absolutely. For example, see my "Last Layer Algorithm Explanations:" (1), (2), (3), and (4) in my post at speedsolving.com/forum/threads/…. If you would like to talk further (after having explored these topics to your liking), let me know and I will email you. – Christopher Mowla Aug 8 '18 at 2:19