Wegfindung mit A*
Aus Spieleprogrammierer-Wiki
(Unterschied zwischen Versionen)
[gesichtete Version] | [gesichtete Version] |
K (Farbe der Closedlist-Spalte der aus dem Bild angepasst) |
(Rechtschreibung und Grammatik) |
||
Zeile 91: | Zeile 91: | ||
=== Beschreibung === | === Beschreibung === | ||
− | Zu | + | Zu Beginn sind dem Algorithmus nur zwei Knoten bekannt, der Startknoten und der Zielknoten. Der Startknoten wird der Openlist hinzugefügt. Den Zielknoten behalten wir erst einmal nur im Hinterkopf. |
− | In der Openlist wird nun nach dem | + | In der Openlist wird nun nach dem geeignetsten Knoten gesucht. Da hier nur der Startknoten enthalten ist, fällt die Wahl nicht schwer. Jetzt wird der Startknoten untersucht, das bedeutet, dass nach allen benachbarten begehbaren Knoten gesucht wird. Für jeden gefundenen Knoten werden die Werte für <math>H</math>, <math>G</math> und <math>F</math> ermittelt. Die ermittelten Werte werden in den jeweiligen Knoten gespeichert. Weiterhin muss auch gespeichert werden, von welchem Knoten man auf den neuen Knoten gekommen ist. Die neu gefunden Knoten werden alle in die Openlist eingefügt. Der Startknoten wird von einem bekannten Knoten zu einem untersuchten Knoten und wird damit in die Closedlist eingefügt. |
− | Jetzt wird in der Openlist nach dem Knoten gesucht der den geringsten F Wert hat. Von diesem Knoten werden nun wieder alle benachbarten Knoten gesucht und analysiert. Dabei kann es vorkommen | + | Jetzt wird in der Openlist nach dem Knoten gesucht der den geringsten <math>F</math>-Wert hat. Von diesem Knoten werden nun wieder alle benachbarten Knoten gesucht und analysiert. Dabei kann es vorkommen, dass im Laufe der Zeit Knoten die schon in der Openlist stehen, erneut analysiert werden. Wenn der <math>F</math>-Wert sich verbessert, sollten alle Daten des Knotens überschrieben werden. Sind die Daten gleich oder schlechter, können die alten Daten beibehalten werden. |
− | So arbeitet der Algorithmus die Openlist ab, fügt unbekannte Knoten der Openlist zu und fügt untersuchte Knoten der Closedlist zu. Wenn jetzt der Zielknoten der Closedlist zugefügt wird | + | So arbeitet der Algorithmus die Openlist ab, fügt unbekannte Knoten der Openlist zu und fügt untersuchte Knoten der Closedlist zu. Wenn jetzt der Zielknoten der Closedlist zugefügt wird, endet der Algorithmus. Der günstigste Weg ist gefunden. |
− | Nun kann ausgehend vom Zielknoten | + | Nun kann ausgehend vom Zielknoten nachvollzogen werden, von welchem Knoten man auf den Zielknoten kam. Von diesem ausgehend wird dann wieder geschaut, von welchem Knoten man auf diesen kam, und immer so weiter, bis man wieder am Startknoten angekommen ist. Auf diese Weise wird der komplette Weg rekonstruiert. |
− | Wenn die Openlist leer ist bevor man den Zielknoten erreicht hat kann der Algorithmus abgebrochen werden, da dann kein Weg zwischen Start- und | + | Wenn die Openlist leer ist, bevor man den Zielknoten erreicht hat, kann der Algorithmus abgebrochen werden, da dann kein Weg zwischen Start- und Zielknoten existiert. |
=== Schritt für Schritt mit Bildern === | === Schritt für Schritt mit Bildern === |
Version vom 21. November 2011, 08:18 Uhr
Klicke hier, um diese Version anzusehen.