Das Schiebepuzzle, welches wohl jedem bekannt sein dürfte, verfügt über einen unendlichen
(Zyklen!)
Suchraum,
weshalb ein blindes Vorgehen
(brute force)
wie bei der Breitensuche sehr viel Speicherplatz verbraten würde.
Deshalb wird für das
8−Puzzles−Schiebepuzzle
eine informierte Suche eingesetzt, meist das
A*−Suchverfahren.
Für dieses Suchbeispiel sind zwei heuristische Funktionen bekannt:
- Manhattenabstand
{Der Manhattenabstand ist nicht der diagonale bzw. euklid'sche Abstand, sondern die Summe von Horizontal- und Vertikalabstand. Der Manhattenabstand wird manchmal auch "city block distance" genannt - durch einen Häuserblock fährt es sich nicht so leicht hindurch. :-)}
aller Puzzle-Teilchen
mit
h(n) = |x − x(n)| + |y − y(n)|
- Summe der falsch positionierten Puzzle-Teilchen
(etwas effizienter zu berechnen)
Es bleibt dem Entwickler überlassen, für welche heuristische Funktion er sich entscheidet.
An dieser Stelle möchte ich Sie kurz darauf hinweisen, dass die heuristische Funktion dazu da ist, um einen kürzestmöglichen Lösungsweg zu finden.
Die heuristische Funktion
h
muss lediglich eine Bedingung erfüllen: Optimisums!
:−)
Das heißt, die heuristische Funktion
h
gibt immer eine kürzere Weglänge zurück, als es tatsächlich der Fall sein wird.
Wird die erforderliche Eigenschaft der Heuristik verletzt, so erhält man dennoch eine Lösung.
Ob diese Lösung dann ein kürzester Lösungsweg ist, hängt vom Zustand des Suchraumes ab:
- Der maximale Fehlerabstand der Lösungswege ist kleiner oder gleich dem maximalen Schätzfehler einer zu pessemistischen Heuristik.
Näheres zur
A*−Suche
finden Sie in den Unterlagen zu
meinem Hauptseminar.
Und nun viel Spaß mit dem Schiebepuzzle.
:−)