User:Tholden/11-1100/Homework Part 1

From Drorbn
< User:Tholden
Revision as of 10:56, 10 October 2011 by Tholden (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search

This page showcases my work done in implementing the Non-Commutative Gaussian Elimination algorithm with direct application to solving a permutation puzzle. I would like it to be known that I had originally chosen the Megaminx puzzle and am still in the process of solving it. The algorithm is currently running on a Sun x4600 computational server using Matlab 2010b including eight Opteron 8212 processors with 32 GB of memory. However, the algorithm is not conducive to parallelization and so has yet to converge. As a test-case, I have solved the Rubik's cube, which I will also present here. In the event that the algorithm has not converged, I will submit the Rubik's cube for marking.

Theoretical Review of the Algorithm

The purpose of Non-Commutative Gaussian Elimination (NCGE) is to find the elements and order of a subgroup generated by a finite set of generators. The algorithm proceeds as follows:

Let . Define the pivot of to be the minimal such that . We prepare a table which is mostly empty

The table initialization for Non-Commutative Gaussian Elimination.
A mostly empty table for Gaussian Elimination

Feed in order. To feed a non-identity , find its pivotal position and let . \begin{enumerate} \item If box is empty, put in this box. \item If box is not-empty, feed into the table. \end{enumerate}


Matlab Implementation

Rubik's cube

Megaminx