You are on page 1of 2

The solution of the Rubik's Cube 

First interim report 


Team: Kravchuk Sophia, Pochynok Julia, Haletska Sofiya 
 
1. Describe the research area of your project and why it is interesting/important (e.g., the 
project is on face recognition ... ) 
 
As we have written in the questionnaire, we are researching the methods of solving 
Rubik’s cube using linear algebra. Since none of us can solve this puzzle, we decided to 
try to do it with our knowledge of math and programming. Why do we choose exactly 
Rubik’s cube?  
The nice thing about the cube is, it's a puzzle with no hidden information. 
Everything is right there in the open and it's all about observation, experiments, noticing 
patterns, etc... Although it takes determination, there is absolutely no luck involved in 
solving the cube. It's virtually impossible to solve the cube "by luck" as opposed to 
understanding. 
Our project will be a program that can randomly shuffle Rubic’s cube, solve it and 
show a step-by-step solution. Also, you can put your data (your cube’s situation), the 
program will make the calculations to find the answer, and you will get the detailed 
moves on how to solve it. 
  
2. Describe the aim of the project and tasks you want to achieve (e.g. develop an 
automated face recognition system using LA techniques)  
 
We want to develop a program that will find a solution for a given or randomly 
shuffled Rubik's Cube’s position and return a set of moves that will help to solve it. The 
first goal of this project is to investigate different approaches for solving the Rubik’s cube 
using matrix algebra (inverses, eigenvalues/eigenvectors), Iterative methods for solving 
linear systems, Linear/nonlinear least squares and applications, Iterative methods for 
solving linear systems, Matrix factorization and applications, to find out which uses the 
least amount of time and moves. 
 
3. Describe possible approaches and available solutions (literature review) and explain 
which method you'll use and why. 
 
Variations of possible cube configurations have inspired many computer 
scientists as well as mathematicians to study the Rubik’s cube since the cube contains 
43 quintillion states. Professors and scientists around the world have often used the 
Rubik’s cube as a case for studying optimal solutions, creating new 
algorithms(step-by-step guide solving a Rubik’s cube) or permutations(ordering of the 
faces of the cube). So we have found a lot of methods, for example: 
 
● Fridrich Method 
● Roux Method 
● ZZ Method 
 
But we do not know how to use LA with these methods so we have found other ones: 
Gaussian Estimation​ - an algorithm in ​linear algebra​ for solving a system o
​ f l​ inear 
equations. To perform row reduction on a matrix three types of elementary row 
operations are used: swapping two rows, multiplying a row by a nonzero number, 
adding a multiple of one row to another row. 
 
Matrix-vector multiplication​ - u​ sing manipulations between Cube’s matrix and 
rotation vector to get the needed solution. 
 
4. Describe the pipeline of the implementation (if any). 
 
A Rubik’s cube algorithm is an operation or a series of rotations, that reorients the blocks 
into the desired outcome. They are usually written with a capital letter denoting the face 
that should be rotated, a lowercase i if that rotation should be counterclockwise, and a 
number 2 if it should be rotated twice. Permutation refers to the act of moving the 
blocks into the desired formation, or the arrangement of the pieces. 
We know that a 3x3x3 Rubik's cube has 43 quintillion possible positions. So it would be 
impossible to go over all the positions and we should find the proper algorithm to solve 
this puzzle. To solve a scrambled Rubik’s(fig a) cube, one needs an algorithm, which is a 
sequence of moves in order to come closer to a solution of the puzzle. Such sequences 
usually require more than fifty to hundred moves for a regular human being. However, it 
is believed that any cube can be solved in less than twenty moves. 
Our goal now is to choose the approach for solving the Rubik’s cube that uses the least 
amount of time and moves. We have two options but have not decided which is better 
yet. If we implement one of the methods, we will later try to do it with another method 
as well. 
 
5. ​How will you test your implementation? Do you have the necessary data? 
 
Our program will need the data given by the user or it will randomly shuffle Rubik's 
Cube, so yes we have the necessary data. Also, it will return a set of moves that are 
needed to do while solving the puzzle. So it will be very easy to check the solution and 
test the program. 
 
6. Briefly outline the plan of future research (tasks to perform and time schedule). 
1. Choose the approach to solve the Rubik’s cube that uses the least amount of time and 
moves (till 19.04.2020) 
2. Solve only one face of 3x3 cubic (till 26.04.2020) 
3. Solve the whole 3x3 cubic (till 13.05.2020) 
4. Transform the solution into step-by-step instruction and make the program 
user-friendly (till 20.05.2020) ((If we will manage to do it faster we will present it 
beforehand) 
 
7. Are there any challenges that might hamper your work? 
 
We think that it will be difficult to fully understand all the manipulations and nuances in 
the methods, so it will take a lot of time to get used to and implement the method. In 
our opinion there will not be a lot of troubles with solving only one face of 3x3 cubic with 
method implementation however solving the whole 3x3 cubic might be much more 
difficult. 
  
Literature that we have read and used to make the report: 
● http://www.logicalpoetry.com/rubik/math_joyner.pdf 
● http://www.math.ubc.ca/~cass/courses/m308/projects/rtran/rtran.pdf 
● https://blog.prepscholar.com/how-to-solve-a-rubiks-cube 
● http://drorbn.net/AcademicPensieve/2013-01/NCGE/NCGE.html 

You might also like