# 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