zondag 19 juni 2011

Dag 0

In plaats van naar de kerk te gaan, hebben wij ons op zondag verdiept in de verschillende methoden om een Rubic's Cube (cube) op te lossen. Een permutatie van een cube wordt in de wereld van de 'cubers' gedefinieerd als de zijde van de cubes, bijvoorbeeld r is 90° graden het rechter vlak met de klok mee en dd is 180° de 'down' kant van de cube bewegen.

Tijdens ons project zullen wij beginnen met een brute force implementatie van ons programma. In deze implementatie zal de computer alle mogelijke moves gaan toepassen om zo uiteindelijk tot een oplossing te komen. Wij denken nu al dat dit veel efficiënter kan (en dat brute force niet de grootste uitdaging is), dus wij zijn op zoek gegaan naar andere methoden om de cube zo optimaal mogelijk op te lossen.

Een beetje rondkijken op internet (en een hoop voorkennis van Rémi) leverde twee fijne methodes op: het Thistlethwaite's Algorithm en de ZZ method naar Zbigniew Zborowski.

In beide strategieën wordt er geprobeerd om het aantal bewegingen dat er gemaakt kan worden te reduceren. Aan het begin zijn dit natuurlijk 18 (6*3) bewegingen, daarna zijn er nog maar 15 nuttige bewegingen over, want twee keer achter elkaar aan hetzelfde vlak draaien kan natuurlijk ook in één beweging..

In het Thistlethwaite algoritme wordt de cube in een bepaalde stand gebracht waardoor deze met slechts 6 verschillende bewegingen oplosbaar is. De complexiteit neemt daarmee sterk af. Dit algoritme ligt aan de basis van bijna ieder algoritme dat gebruikt wordt door computers.
In de ZZ methode, dé methode die door cube fanaten gebruikt wordt, wordt de cube óók naar een bepaalde stand gebracht, maar ditmaal naar één waarbij de cube met 9 verschillende bewegingen oplosbaar is. Negen bewegingen zijn natuurlijk ook aanzienlijk veel minder dan 18, dus ook dit is een goede methode om het oplossen te starten.