De Rubiks kubus is een driedimensionale combinatiepuzzel uitgevonden door Emo Rubik in 1974. De fysieke versie van de Rubiks kubus bestaat uit kleine blokjes die rond een centrale as draaien. Klassiek heeft de puzzel zes vlakken, elk met negen blokken gerangschikt in een vierkant van 3 × 3. Er bestaan meer gecompliceerde versies van de Rubiks kubus met N × N vlakken. Elk blok heeft een gekleurde sticker in wit, rood, blauw, oranje, groen of geel. Om de puzzel op te lossen, moet de speler één strook blokken tegelijk roteren totdat elk van de zes vlakken van de kubus gevuld is met een enkele kleur. Elk jaar worden er over de hele wereld tientallen Rubiks kubuscompetities gehouden waarbij het doel is om de puzzel zo snel mogelijk op te lossen. Er bestaat een aantal gemakkelijk te onthouden algoritmen waarmee spelers elke configuratie van Rubik’s kubus kunnen oplossen. Het oplossen van deze puzzels is echter niet alleen interessant voor spelers. Er is ook veel academische interesse in het ontwerpen van efficiënte algoritmen om een Rubiks kubus in zo min mogelijk beurten op te lossen. Het doel van deze case study is om een mixed-integer programma te presenteren dat een N × N × N Rubiks kubus kan oplossen vanuit elke startconfiguratie. METHODOLOGIE Beschouw de tweedimensionale weergave van een standaard 3 × 3 × 3 Rubiks kubus. In deze roteert een rotatie van vlak 6 van de kubus ook een rij in de vier aangrenzende vlakken. Het is gemakkelijk om te verifiëren dat alle zetten kunnen worden uitgeput door een willekeurig vlak te nemen en alle rij- en kolomgewijze bochten te overwegen, en vervolgens een verticaal (horizontaal) aangrenzend vlak te nemen en alle rijgewijze (kolomgewijze) bochten te overwegen. Met de standaard 3 × 3 × 3 kubus levert dit 18 unieke zetten op. Meer in het algemeen levert dit 6N unieke bewegingen op voor een N × N × N-kubus. NOTATIE N staat voor het aantal vlakken op de Rubiks kubus (voor deze case study gaan we uit van N = 3).
|
https://breinbrekers.be |