Beruflich Dokumente
Kultur Dokumente
Ben Lorenz
2 Funktionsweise
2.1 Die Grundsätzliche Idee des A Stern
Der A Stern Algorithmus untersucht immer den Knoten zuerst, der mit der gröÿten
Wahrscheinlichkeit schnell zum Ziel führt. Um diese Wahrscheinlichkeit zu evaluieren,
bekommt jeder Knoten x einen Wert f (x) zugeordnet. Dieser entspricht der Länge
des Pfades im günstigsten Fall, d.h. ohne Berücksichtigung etwaige Hindernisse, unter
Verwendung des Knotens x. Der Wert errechnet sich wie folgt:
f (x) = g(x) + h(x)
wobei g(x) den bisherigen Kosten vom Startknoten aus entspricht und h(x) den
geschätzten Kosten bis zum Zielknoten. Es können nun verschiedene Schätzfunk-
tionen, also Heuristiken verwendet werden.
1
2.2 Heuristiken für den A Stern
Es kommen grundsätzlich zwei Klassen von Heuristiken für den A Stern Algorithmus
in Frage. Diese werden zulässige und monotone Heuristiken genannt. Dabei ist jede
monotone Heuristik auch zulässig. Eine Heuristik ist zulässig, wenn sie die Kosten
zum Ziel nie überschätzt. Wenn also K die tatsächlichen Kosten zum Ziel sind, schätzt
eine zulässige Heuristik im Intervall [0, K].
Neben der Eigenschaft der Zulässigkeit müssen monotone Heuristiken noch die Dreieck-
sungleichung erfüllen. Für jeden Knoten x und alle Nachfolgerknoten x0 gilt:
h(x) ≤ c(x, x0 ) + h(x0 )
d.h. h(x) darf nicht gröÿer sein, als die Summe der Kosten zum Nachbarknoten
c(x, x0 ) und die geschätzten Kosten des Nachbarknotens zum Ziel h(x0 ). Der euk-
lidische Abstand d(x, y) = kx − yk2 , umgangssprachlich die "Luftlinie", erfüllt diese
Bedingung und ist somit eine häug verwendete, monotone Heuristik.
2
Algorithm 1 A Stern
Eingabe: Menge von Knoten, Start- und Zielknoten
Ausgabe: optimaler Pfad von Start- zu Zielknoten
openList := Start . bekannte Knoten
closedList := leer . untersuchte Knoten
vorgaenger := leer . aktueller Pfad
gW ert[Start] := 0
f W ert[Start] := gW ert[Start] + hW ert(Start, Ziel) . hWert geschaetzte Kosten
zum Ziel
while openList 6= leer do
aktuellerKnoten := Knoten mit kleinstem f W ert[]
if aktuellerKnoten = Ziel then
return pf adRekonstruktion(vorgaenger, Ziel)
end if
remove aktuellerKnoten aus openList
fuege aktuellerKnoten zu closedList hinzu
for all N achbar von aktuellerKnoten do
gW ertT est := gW ert[aktuellerKnoten]+dist(aktuellerKnoten, N achbar)
if N achbar aus closedList und gW ertT est ≥ gW ert[N achbar] then
continue
end if
if N achbar ∈
/ openList oder gW ertT est < gW ert[N achbar] then
vorgaenger[N achbar] := aktuellerKnoten
gW ert[N achbar] := gW ertT est
f W ert[N achbar] := gW ert[N achbar] + hW ert(N achbar, Ziel)
if N achbar nicht in openList then
fuege N achbar der openList hinzu
end if
end if
end for
end while
return false
3 Eigenschaften
Der A Stern Algorithmus ist vollständig, d.h. er ndet immer eine Lösung, falls eine
existiert. Des Weiteren ist er optimal, es wird immer die optimale Lösung gefunden.
Wenn es mehrere optimale Lösungen gibt, wird eine von ihnen gefunden. A Stern ist
optimal ezient, d.h. es gibt keinen anderen Algorithmus, der unter Verwendung der
gleichen Heuristik schneller arbeitet. Anders ausgedruckt: A Stern expandiert immer
die minimale Anzahl der Knoten, die zur Lösung des Problems notwendig ist.
3.1 Optimalität
A Stern arbeitet optimal, wenn eine monotone Heuristik verwendet wird. Wird keine
closedList verwendet, ist er auch für zulässige Heuristiken optimal. Der folgende
Beweis bezieht sich auf die Optimalität bei einer monotonen Heuristik.
Behauptung: A* ndet immer die optimale Lösung.
Beweis. Sei L eine optimale Lösung mit Kosten K ∗ und L2 eine suboptimale Lösung.
1
Da eine monotone Heuristik zulässig ist, also die Kosten bis zum Ziel nie überschätzt,
gilt für den Zielknoten und L2 : h(L2 ) = 0
Da L2 suboptimal ist gilt für die Kosten K2 :
3
3.2 Zeitkomplexität
Die Zeitkomplexität oder asymptotische Laufzeit spielt für den A Stern Algorithmus
nur eine untergeordnete Rolle, da durch die heuristisch unterstützte, zielgerichtete
Suche nur ein kleiner Teil der Knoten untersucht werden muss. Liegt jedoch ein
Labyrinth vor, kann sich die Laufzeit der worst-case Laufzeit annähern. Diese hängt
von zwei Faktoren ab:
• Genauigkeit der Heuristik: Eine nichtmonotone Heuristik führt zu exponen-
tieller Laufzeit, da Knoten möglicherweise mehrfach untersucht werden. Je
genauer die Heuristik ist, desto weniger Knoten müssen untersucht werden.
• Implementierung der open− und closedList: Der kostenintensivste Teil des A*
ist das Verwalten der beiden Listen, also Elemente hinzufügen, löschen und
aktualisieren. Eine eziente Datenstruktur kann diese Operationen beschleu-
nigen. Die openList lässt sich beispielsweise als binärer Heap implementieren,
während für die closedList ein Array ausreicht.
Bei der beschriebenen Implementierung besitzt der A Stern Algorithmus für einen
Graphen mit der Knotenmenge V eine worst-case Laufzeit von: O(|V |2 ).
3.3 Nachteile
Nachdem die Laufzeit für den A Stern ein geringes Problem darstellt, ergeben sich je-
doch Probleme beim Speicherplatz. Der Graph eines einfachen 15-Puzzle Schieberät-
sel besitzt beispielsweise bereits 16! = 22.922.789.888.000 Knoten.
Jeder bekannte Knoten muss in der open− oder closedList gespeichert werden. Bei
entsprechend ungünstig langem Lösungsweg kann der verfügbare Speicher nicht aus-
reichen und A Stern ndet keine Lösung.
Literatur
[RUS04] Stuart Russell, Peter Norvig, Künstliche Intelligenz - Ein moderner Ansatz,
2004
[HA+68] P. E. Hart, N. J. Nilsson, B. Raphael, A Formal Basis for the Heuristic
Determination of Minimum Cost Paths, IEEE Transactions on Systems Science
and Cybernetics SSC4 (2), 100-107, 1968
[LES05] Patrick Lester, A* Pathnding for Beginners,
http://www.policyalmanac.org/games/aStarTutorial.htm, 2005