# Gottes Algorithmus

Gottes Algorithmus (englisch God’s Algorithm) ist ein Begriff aus Diskussionen über die optimale Lösung des Zauberwürfels. Die Formulierung stammt von dem englischen Gruppentheoretiker John Conway oder einem seiner Kollegen in Cambridge. Sie kann auch auf andere Probleme der Kombinatorik und Spieltheorie bezogen werden. Ein Algorithmus wird als Gottes Algorithmus für ein Problem oder Puzzle bezeichnet, wenn er stets eine Lösung mit kleinstmöglichster Anzahl von Schritten oder Zügen produziert.

## Anwendungsbereich und Definition

Der Begriff Gottes Algorithmus bezieht sich jeweils auf ein Problem oder Puzzle, das eine endliche Anzahl von „Konfigurationen“ annehmen kann, in Verbindung mit einer eher kleinen, wohldefinierten Menge an „Zügen“, die Transformationen zwischen Konfigurationen darstellen. Ein Puzzle lösen heißt, von irgendeiner willkürlichen Startkonfiguration aus eine oder mehrere bestimmte spezifische „Endkonfigurationen“ (von endlicher Anzahl) durch die Anwendung einer Sequenz von Zügen zu erreichen. Eine solche Zugsequenz entspricht einer Lösung des Puzzles.
Auf einige gut bekannte Puzzle trifft die Beschreibung zu, z. B. Mechanische Geduldspiele wie den Zauberwürfel, Türme von Hanoi und das 15-Puzzle. Auch Solitaire zählt dazu, ebenso viele Logik-Puzzle wie das Problem der Missionare und Kannibalen. Ihnen gemeinsam ist die mathematische Modellierbarkeit als gerichteter Graph, wobei die Konfigurationen den Knoten („Punkten“) und die Züge den Kanten („Pfeilen“) des Graphen entsprechen. Eine lösende Zugsequenz (eine Lösung des Puzzles) entspricht dabei einem (gerichteten) Pfad im Graphen, der von einer Ausgangs- zu einer Endkonfiguration führt.
Ein Algorithmus heißt lösend, wenn er zu einer willkürlichen Anfangskonfiguration als Eingabe
* eine Lösung ausgibt, falls das Puzzle von der Anfangskonfiguration lösbar ist, und andernfalls
* ausgibt, dass es keine Lösung gibt.
Eine Lösung heißt optimal, wenn die Sequenz von Zügen so kurz wie möglich ist. Ein lösender Algorithmus für ein Puzzle wird Gottes-Algorithmus genannt, wenn er stets eine optimale Lösung ausgibt. Gottes Zahl schließlich ist definiert als die Länge der längsten Zugsequenz unter allen optimalen Lösungen für das Puzzle.
Ein echter „Gottes-Algorithmus“ soll auch praktikabel sein, d. h. nicht außergewöhnlich viel Speicherplatz oder Zeit benötigen. Bei vielen Puzzles könnte man zwar mit Hilfe einer riesigen Lookup-Tabelle, indiziert über alle Startkonfigurationen, schnell eine Lösung ausgeben können, aber dieses Vorgehen würde zu viel Speicherplatz erfordern.
Anstatt nach einer vollständigen Lösung zu fragen, kann man auch nach dem besten ersten Einzelzug nach der Startkonfiguration fragen. Ein Algorithmus für einzelne Züge kann in einen Algorithmus für die Gesamtlösung transformiert werden, indem man ihn bis zur Schlusskonfiguration wiederholt. Umgekehrt kann so auch der Algorithmus für die Gesamtlösung in Algorithmen für Einzelzüge zerlegt werden.

## Beispiele

| Problem | Gottes Zahl | Größe des Zustandsraums | Verdienst / Anmerkungen | Jahr |
| N-Puzzle (das verallg. 15-Puzzle) | ? | ? | NP-vollständig, vergleiche Ratner und Warmuth | 1990 |
| 15-Puzzle | 80 (durchschnittlich 52,6) | ${\frac {16!}{2}}=10.461.394.944.000$ | Korf und Schultze | 2005 |
| 8-Puzzle | 31 (durchschnittlich 22) | ${\frac {9!}{2}}=181.440$ | Reinefeld | 1993 |
| 3-Puzzle | 6 (durchschnittlich 3) | ${\frac {4!}{2}}=12$ | Reinefeld | 1993 |
| Türme von Hanoi mit n Scheiben | $2^{n}-1$ | $3^{n}$ | siehe auch Rueda | historisch |
| Zauberwürfel | 20 (Viertel- und Halbdrehungen) bzw. 26 (nur Vierteldrehungen; Halbdrehung zählt als 2 Vierteldrehungen) | ${\frac {8!\cdot 3^{8}\cdot 12!\cdot 2^{12}}{3\cdot 2\cdot 2}}=$ $43.252.003.274.489.856.000$ | Rokicki, Davidson, Dethridge und Kociemba, siehe auch Optimale Lösungen des Zauberwürfels | 2010 bzw. 2014 |
| Schach | ? | ? | Eine Endspieldatenbank im Schach findet den kürzesten Weg zum Schachmatt. | |