Hallo Quadro,
Der Computer müsste doch eigentlich die schnellste Lösung irgendwie finden können?!
Drückt eine völlig falsche Erwartungshaltung aus.
- Der Computer findet gar nichts, der führt nur aus. Wenn, dann findet dein als Programm geschriebener Algorithmus was.
- "Eigentlich" ist da gar nichts. Und mit "irgendwie" deutest du die Abwesenheit eines Plans/ Algorithmus an. Deines Plans!
- "Schnellste Lösung" im Sinne "minimale Schrittanzahl" ist eine gänzlich andere Anforderung, als den Würfel überhaupt planmäßig zu lösen.
Den Würfel gibt es schon eine Weile und "schnellste Lösung" wurde für den 3x3 erst 2010 gelöst, wie von Ford erwähnt bei Kociemba dokumentiert ist. Eine solche wissenschaftliche Leistung willst du nicht ernsthaft mit RoboPro nachvollziehen wollen.
Übrigens ist "schnellste Lösung" im Sinne "minimale Schrittanzahl" möglicherweise so aufwändig zu berechnen, dass ein einfacherer Algorithmus die zusätzlichen mechanischen Bewegungen für eine suboptimale Lösung längst ausgeführt haben könnte. "Schnellste Lösung" in Sekunden bis zum fertigen Würfel hängt aber extrem von der Mechanik ab und wie gut programmiert wurde.
Du solltest dir die zu lösende Aufgabenstellung mal genauer überlegen und sauber hinschreiben.
(Für mich) klar ist doch schon mal folgendes:
1. Du musst die Anfangssituation erfassen: Alle 6*3*3 Oberflächen mit dem Sensor abfahren bzw. ihm hinhalten (Ich vermute eine Mischung, hängt aber von deiner Mechanik ab) und in einem geeigneten internen Würfelmodell erfasen.
2. Auf diesem Würfelmodell führst du deinen Lösungsalgorithmus aus. U.U. bedeutet das, erst den ganzen Lösungsweg zu errechnen, ehe überhaupt irgendetwas wieder bewegt wird.
3. Jeden vorberechnete Schritt musst dann auch in der Realität ausgeführt werden. Dann ist der Würfel auch real gelöst.
Ob man sich erst die Mechanik und deren Ansteuerung baut, oder erst das Würfelmodell und den Lösungsalgorithmus schreibt ist Geschmackssache. Wie schon angedeutet hängen 2. & 3. nur lose zusammen. Sie können nacheinander oder aber auch ineinander verzahnt ausgeührt werden. Ideal ist wohl, wenn der Rechenthread von der Mechaniksteuerung nicht ausgebremst wird und umgekehrt die reale Verdreherei so früh wie möglich anfängt. Macht also schon mal zwei Threads ...
Viele Grüße, Michael