Iterative Deepening A * (IDA * ) benutzt die l -Werte der Knoten (d.h. g(x) + h(x) ), um die Suche zu begrenzen. Es wird eine Tiefensuche durchgeführt mit einer vorgegebenen Kostenschranke b . Falls l (x) > b , so wird nicht weiter expandiert. Wird keine Lösung innerhalb der momentanen Kostenschranke gefunden, wird eine neue Suche mit einer größeren Kostenschranke gestartet. Die erste Kostenschranke ist l (s) mit s = Startknoten. Wegen g(s) = 0 folgt l (s) = h(s) . Das Minimum der l -Werte der erzeugten, aber wegen der Kostenschranke nicht weiter verfolgten Knoten aus Suche i wird zur Kostenschranke für Suche i + 1 . Falls h zulässig ist, so findet IDA * das Optimum.
Zur Verwaltung der Tiefensuche bietet sich ein Keller an, auf dem die unbesuchten Alternativen zusammen mit ihren Vaterknoten abgelegt sind.
Best First Search operiert nicht wie Depth First Search
am letzten besuchten Knoten, sondern an dem
Knoten mit der größten Erfolgsaussicht.
Hierfür entsteht Speicherbedarf proportional zur Größe des
durchsuchten Zustandsraums.
Der A * -Algorithmus expandiert jeweils den Knoten
mit dem niedrigsten l -Wert.
Dessen Söhne kommen auf die sogenannte OPEN-List
(es sei denn, sie befinden sich bereits dort), der expandierte Knoten
kommt auf die CLOSED-List (es sei denn, er
befindet sich bereits dort).
Best First Search für ein 8-Puzzle | |
Startkonfiguration (a) | |
Zielkonfiguration (b) | |
Zustände erzeugt durch 4 Schritte Best First Search (c) | |
Zustände sind markiert mit ihrem l -Wert = Manhattandistanz zwischen Zustand und Zielzustand + bisherige Weglänge |