Rubik's cube


Fastest Rubik's cube solver in the world

This program contains code for solving a Rubik's cube position in a minimum number of moves. Minimal move seqences are computed with respect to the quarter turn (QT) metric. You can download the program and try it yourself.

The program is set up to run on top of the Cilk parallel multithreaded language. Using Cilk on a multiprocessor speeds up searches by efficiently scheduling the computation on the available processors. If you have only a uniprocessor and do not wish to install Cilk, check the instructions in the README file of the distribution to convert the code in this distribution to C.

The Rubik's cube solver uses lots of memory. As configured, you will need about 1.2 GB of DRAM and the same amount of free disk space. You can get away with using less space by modifying the program according to the instructions in the README. However, you will probably need at least 200 MB in any case.

The solver has been tested on Digital Alphas running Digital UNIX and UltraSPARCs running Solaris. It should work without significant modification on any UNIX system.


Results

I've used this program to explore Rubik's cube.

Near superflip

Check out a neat graph of the conjugacy classes of Rubik's cube near the superflip cube. The graph is arranged into levels corresponding to depth. Circlular nodes represent conjugacy classes for which all neighbors are shown. Square nodes have unexplored neighbors in the graph.

Depth histogram

I have used the Rubik's cube solver to solve over 400 random cubes. Check out the histogram of the depths of these >400 random cubes.
home page