1 / 39

Grundlagen des A*-Algorithmus und Anwendung in der Routenplanung

Grundlagen des A*-Algorithmus und Anwendung in der Routenplanung. GIS Seminar WS 02/03 Christian Siemes. Übersicht. Wiederholung Dijkstra-Algorithmus Ableitung des A*-Algorithmus Wichtigste Eigenschaften Adaption auf die Routenplanung

candid
Download Presentation

Grundlagen des A*-Algorithmus und Anwendung in der Routenplanung

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Grundlagen des A*-AlgorithmusundAnwendung in der Routenplanung GIS Seminar WS 02/03 Christian Siemes

  2. Übersicht • Wiederholung • Dijkstra-Algorithmus • Ableitung des A*-Algorithmus • Wichtigste Eigenschaften • Adaption auf die Routenplanung • Vergleich mit Floyd-Algorithmus und Dijkstra-Algorithmus

  3. 10 1 3 1 5 20 5 4 2 15 Problemvorstellung

  4. Startknoten 10 1 3 1 Zielknoten 5 20 5 4 2 15 Problemvorstellung

  5. kürzester Weg 10 10 1 1 3 3 1 1 5 5 20 20 5 5 4 4 2 2 15 15 Problemvorstellung Startknoten Zielknoten

  6. Problemvorstellung • Laufzeit • Bestimmende Faktoren • Anzahl der untersuchten Knoten im Graphen • Rechenzeit für jeden Knoten

  7. Datenstrukturen • Graph G • Suchbaum T • Liste OPEN • G(N) • Kosten des Pfades von S bis N • N ist der aktuell betrachtete Knoten

  8. 10 T OPEN G(N) 1 S 3 1 1 0 5 5 20 4 2 Z 15 Dijkstra-Algorithmus • Initialisieren • OPEN und T schaffen • S auf OPEN setzen mit G(N) = 0

  9. Dijkstra-Algorithmus • Schleife • Falls OPEN leer, beende die Schleife 10 T OPEN G(N) 1 S 3 1 1 0 5 5 20 4 2 Z 15

  10. 5 Z 10 1 S 3 1 5 5 20 4 2 15 Dijkstra-Algorithmus OPEN G(N)

  11. Dijkstra-Algorithmus • Schleife • Falls OPEN leer, beende die Schleife • Entferne den ersten Knoten aus OPEN und setze ihn in T 10 T OPEN G(N) 1 S 3 1 1 0 5 5 20 4 2 Z 15

  12. Dijkstra-Algorithmus • Schleife • Falls OPEN leer, beende die Schleife • Entferne den ersten Knoten aus OPEN und setze ihn in T 10 T OPEN G(N) 1 S 3 1 1 5 5 20 4 2 Z 15

  13. Dijkstra-Algorithmus • Schleife • Falls OPEN leer, beende die Schleife • Entferne den ersten Knoten aus OPEN und setze ihn in T • Falls Z gefunden, rekonstruiere Pfad und beende die Schleife 10 T OPEN G(N) 1 S 3 1 1 5 5 20 4 2 Z 15

  14. Dijkstra-Algorithmus • Schleife • Falls Z gefunden, rekonstruiere Pfad und beende die Schleife • Falls Z nicht gefunden, setze alle Nachfolger auf OPEN und berechne deren Kosten G(N) 10 T OPEN G(N) 1 S 3 1 1 5 5 20 4 2 Z 15

  15. Dijkstra-Algorithmus • Schleife • Falls Z gefunden, rekonstruiere Pfad und beende die Schleife • Falls Z nicht gefunden, setze alle Nachfolger auf OPEN und berechne deren Kosten G(N) 10 T OPEN G(N) 1 S 3 1 2 20 1 5 5 20 3 10 4 2 Z 15

  16. Dijkstra-Algorithmus • Ordne OPEN bezüglich G(N) aufsteigend • Schleife • Falls Z gefunden, rekonstruiere Pfad und beende die Schleife • Falls Z nicht gefunden, setze alle Nachfolger auf OPEN und berechne deren Kosten G(N) 10 T OPEN G(N) 1 S 3 1 2 20 1 5 5 20 3 10 4 2 Z 15

  17. Dijkstra-Algorithmus • Ordne OPEN bezüglich G(N) aufsteigend • Schleife • Falls Z gefunden, rekonstruiere Pfad und beende die Schleife • Falls Z nicht gefunden, setze alle Nachfolger auf OPEN und berechne deren Kosten G(N) 10 T OPEN G(N) 1 S 3 1 3 10 1 5 5 20 2 20 4 2 Z 15

  18. 10 T OPEN G(N) 1 S 3 1 3 10 1 5 5 20 2 20 4 2 Z 15 Dijkstra-Algorithmus • Schleife • Wiederhole die Schleife

  19. 10 T OPEN G(N) 1 S 3 1 3 10 1 5 5 20 2 20 4 2 Z 15 10 T OPEN G(N) 1 S 3 1 2 20 1 5 5 20 3 4 2 Z 15 Dijkstra-Algorithmus

  20. 10 T OPEN G(N) 1 S 3 1 2 20 1 5 5 20 3 4 2 Z 15 10 T OPEN G(N) 1 S 3 1 2 15 1 5 5 20 4 11 3 4 2 Z 15 Dijkstra-Algorithmus

  21. 10 T OPEN G(N) 1 S 3 1 2 15 1 5 5 20 4 11 3 4 2 Z 15 10 T OPEN G(N) 1 S 3 1 4 11 1 5 5 20 2 15 3 4 2 Z 15 Dijkstra-Algorithmus

  22. 10 T OPEN G(N) 1 S 3 1 4 11 1 5 5 20 2 15 3 4 2 Z 15 1 3 4 10 T OPEN G(N) 1 S 3 1 2 15 1 5 5 20 3 4 2 Z 15 4 Dijkstra-Algorithmus G(4) = 11

  23. S Z S Z Gerichtete Suche Ungerichtete Suche Spezialisierungzu Algorithmus A • Problem • Dijkstra-Algorithmus sucht in allen Richtungen • Idee • Suche bevorzugt in Richtung des Zielknotens

  24. Spezialisierungzu Algorithmus A • Problem • Dijkstra-Algorithmus sucht in allen Richtungen • Idee • Suche bevorzugt in Richtung des Zielknotens • Umsetzung • Abschätzung der Kosten von N zu Z: H(N) • F(N) = G(N) + H(N) berechnen und OPEN bezüglich F(N) aufsteigend sortieren

  25. Spezialisierungzu Algorithmus A • F(N) schätzt die Kosten, die der kürzeste Pfad von S zu Z, der zwangsweise über N führt, besitzt. G(N) N S 10 1 3 H(N) 1 5 20 5 4 Z 2 15

  26. Algorithmus A* • Notation • G(N),H(N) (geschätzte Kosten) • G*(N),H*(N) (wirkliche Kosten) • Gilt H(N)H*(N), dann findet Algorithmus A immer den kürzesten Pfad zum Zielknoten. • Algorithmus A wird zu Algorithmus A*.

  27. Eigenschaften von A* Definition Ein Algorithmus ist zulässig, wenn er immer den kürzesten Pfad vom Startkonten zum Zielkonten findet, wenn dieser existiert. Eigenschaft 4 A* ist zulässig. Eigenschaft 6 • A1 und A2 sind zwei Versionen von A* • A2 ist besser informiert als A1, falls H1(N) < H2(N) • A2 erkundet höchstens die gleiche Anzahl von Knoten wie A1

  28. Nj H(Nj) C(Nj ,Nk) Nk H(Nk) Eigenschaften von A* Monotonie-EinschränkungC(Nj ,Nk) H(Nj) - H(Nk), bzw. H(Nk) + C(Nj ,Nk) H(Nj)

  29. Eigenschaften von A* Eigenschaft 7 Ist die Monotonie-Einschränkung erfüllt, dann hat der A*-Algorithmus den kürzesten Pfad zu jedem Knoten gefunden, der zur Erkundung ausgewählt wird.

  30. H(2)=6 4 2 Z 2 4 3 OPEN 3 7 F(3)=7+1=8 1 S H(3)=1 F(2)=3+6=9 Eigenschaften von A*

  31. H(2)=6 4 2 Z 2 4 3 OPEN 3 7 F(2)=3+6=9 1 S H(3)=1 F(4)=11 Widerspruch! C(2,3)=2  H(6)-H(3)=5 Eigenschaften von A*

  32. Adaption des A*-Algorithmus auf die Routenplanung • Graph besitzt Geometrie • H(N)H*(N) muss erfüllt sein. Luftlinie von N zu Z * höchste Geschwindigkeit

  33. Adaption des A*-Algorithmus auf die Routenplanung • Luftlinie = euklidischen Abstand • eukl(N) = Wurzel [(xZ - xN)² + (yZ - yN)²] • Höchste Geschwindigkeit = maximale im Graph vorkommende Geschwindigkeit • Vmax • H(N) = Vmax * eukl(N)

  34. Vergleich mit anderen Algorithmen • Beispiele für die Größenordnung der Graphen:

  35. Laufzeit und Speicherplatz ( n ... Anzahl der Knoten e ... Anzahl der Kanten) • Floyd-Algorithmus einmal ausführen, um alle kürzesten Wege im Graphen zu finden • Anwenden, wenn viele kürzeste Wege im Graphen gesucht werden

  36. Dijkstra-Alogrithmus • Unterschied zum A*-Algorithmus • Dijkstra-Algorithmus: F(N) = G(N) • A*-Algorithmus: F(N) = G(N) + H(N) • Speicherplatz ist für beide Algorithmen gleich • Laufzeitunterschiede wegen H(N)

  37. Dijkstra-Alogrithmus Empirische Untersuchungen von Stephan Hasselberg haben ergeben: • A*-Algorithmus untersucht 2 bis 5 mal weniger Knoten • Vorteil wird nahezu aufgehoben wegen H(N) • Bei großen geometrischen Distanzen zwischen S und Z wird H(N) so rechenintensiv, dass der Dijkstra-Algorithmus schneller ist

  38. Schlussbemerkung War alles umsonst? Overdo-Faktor: F(N) = G(N) + fOV * H(N) mit fOV > 1 Bei guter Wahl • maximale Fehler in Grenzen • durchschnittliche Fehler klein

  39. Vielen Dank für die Aufmerksamkeit!

More Related