|The Process of Solving Rubik's Cube
A few years ago, I solved the Rubik's cube. My solution was quite complex and because of this, prone to error. Now that I'm updating the site, I decided to take another crack at it today. This time I understood what I was getting into and was able to do things more methodically; I was able to find and document a complete solution within 7 hours.
I will now attempt to explain how I approached the puzzle and what my solution was.
It's good to think about solving the cube in terms of phases.
Phase 1 is the bottom layer of the cube. If you're like me and you want the white layer to be on top, the bottom layer is going to be all of the yellow blocks. Solving for the bottom layer is easy and shouldn't require any special tricks.
Phase 2 is the middle layer. It should be pretty easy to get the middle block for each of the 4 sides on this layer. Getting the corners is the first difficult step in the puzzle, because whenever you try to shift in the appropriate block, it seems that you've just shifted out a different block somewhere else. Now I seem to recall figuring out a relatively simple way of getting these blocks in the last time I solved the cube, but this time, I had to fall back on my 'moves'. Developing a complete set of moves is part of Phase 3 so, before I get into the moves, I'll quickly explain Phase 3...
Phase 3 is the top layer of the cube. This phase is broken up into 4 objectives. Part of solving the cube is figuring out which order to achieve theses objectives. The objectives are (in the order I solved them):
- Place the 4 side blocks (position)
- Place the 4 corner blocks (position)
- Rotate the side blocks (orientation)
- Rotate the corner blocks (orientation)
The first thing I did was define my notation. The cube has 9 possible points of rotation or 'axes' as I'll call them. I labeled them A through I, but it turns out only 3 of them are important: A, G and F.
Everything about the cube is relative; so if you rotate the entire cube, the A, G and F axes change: for example, if you rotated the above cube so that the white side was where the red side is now, the previous G, would become the new F.
I will talk a lot about 'rotating' along these axes. This is the basic way to interact with the cube; rotating one axis, independent of the others. Rotating follows the direction of the arrows in the above diagram. Rotating 4 times will take you all the way around, so 'A4' or 'F4' would be the same as not doing anything at all. Rotating 3 times is the same as rotating backwards once. You should get in the habit of rotating backwards whenever you have a '3'; it will save a lot of time.
I'll cover the rest of my notation as it becomes relevant.
Now that you have the basics of a notation system, it's time to begin experimenting with the 3 rotational axes (A,G,F) and recording results. It's easiest to do this if you have a clean cube (in the solution state); simply make the series of moves you want, record the results and then make the reverse set of moves to undo them. Believe me, if you have a mixed cube, you'll be spending all of your time writing down your start-state before each trial.
Here is an example of how I recorded moves:
This is an example of my first move; I called it 'a'. It might help you to give it a name like 'apple' if you think you might be confused with the rotation direction 'A'.
What we see on the left is a diagram of the effect on the cube, what we see on the right are the rotational instructions. Therefore, if you rotate on the F axis backwards once, then on the G axis forwards once, then the F forwards once and finally G backwards once, all of the blocks will be as you started with the exception of those marked in the diagram.
The four blue points are marking 4 corner blocks. The connecting lines designate blocks that have traded places. Therefore, if you were to perform 'a' twice in a row, the blue blocks would return to where they started (although they may have rotated orientation... more on that later). The red points have connecting lines with arrow heads; the arrows show directional movement. Therefore, if I perform 'a' once each of the 3 blocks will move along the circular course. If I perform it 3 times, they will all return to their original positions.
The trick is to find moves that affect the least number of blocks as possible. Your goal is to find moves that will help you fulfill the four phase-3 objectives.
If we perform 'a' twice in succession, we have another move that we can record. I called it '2a', where the '2' represents how many times I am performing 'a'.
I've included the rotational instructions on the right, although they shouldn't be necessary, as you already know them from 'a' (as you continue to build increasingly more complex combinational moves, writing them out in long-hand will become prohibitive).
As you can see, the corner blocks are not changing positions now that we've repeated the move and put them back. The center blocks have changed rotational direction, because moving twice counter-clockwise in the rotation is the same as moving once clockwise. Now that the corner blocks are staying put, we can observe their rotational orientation and see that they have indeed rotated in place. Therefore our move must note which ones have rotated clockwise and which have rotated counter-clockwise.
The process I've just gone through covers the basics of finding and recording moves. Each time you combine moves, your goal is to reduce the amount of activity. I created another move I called 'e': 3A 3G 1A 1G. If you do 2a followed by 2e and then do them both again, you get this very useful move:
This move allows you to rotate two corners without affecting any other blocks. This is a very useful move when you've reached the final objective of phase 3 and you need to rotate the corner blocks without disturbing anything else.
If you want a complete list of moves, I'm sure there are plenty out there on the internet that are better than mine, but the fun and accomplishment comes from solving the puzzle on your own.
If a move is going to result in limited activity, you're going to want to limit it to some combination of G and one of the other axes. It is also useful to make the second half of your moves mirror the first half, in reverse. Once you have a nice collection of simple moves and larger moves built out of combinations of those smaller moves you'll probably find you still need more. I found it useful to experiment with extra Gs at key points within larger moves, to get the results I needed.