Checkmark on Circle.png

Dijkstra-Algorithmus

Aus KGS-Wiki
Version vom 31. März 2023, 09:14 Uhr von Sn (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „{{Thumbnailbox| INHALT={{#mermaid:graph LR a((A)) b((B)) c((C)) d((D)) e((E)) a -- 3 --- b a -- 1 --- c b -- 7 --- c b -- 5 --- d b -- 1 --- e c -- 2 --- d d -- 7 --- e }} |CAPTION=Ein Beispielgraph}}Der Dijkstra-Algorithmus ist ein Algorithmus zum Finden kürzester Wege in einem gewichteten Graphen. Konkret findet dieser Algorithmus von einem gegebenen Startknoten aus die kürzesten Wege zu allen anderen Knoten im Graphen. Er wurde 195…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Ein Beispielgraph

Der Dijkstra-Algorithmus ist ein Algorithmus zum Finden kürzester Wege in einem gewichteten Graphen. Konkret findet dieser Algorithmus von einem gegebenen Startknoten aus die kürzesten Wege zu allen anderen Knoten im Graphen.

Er wurde 1956 von Edsger Dijkstra entdeckt und funktioniert nur bei Graphen mit ausschließlich positiven Kantenlängen. Die Idee dahinter ist nämlich Folgende:

Wir betrachten zunächst alle Nachbarn des Startknoten. Derjenige von ihnen mit der kürzesten Entfernung zum Startknoten kann auch über Umwege nicht schneller erreicht werden, da der Weg zu all seinen Nachbarn schon länger ist und dies auch durch eine negative Kante nicht ausgeglichen werden kann. Diesen Knoten können wir also als gesetzt betrachten und auch all seine Nachbarn hinzuziehen. Wieder gilt: derjenige Knoten mit der kürzesten Entfernung zum Startknoten kann nicht schneller erreicht werden... und so weiter, bis alle Entfernungen berechnet sind.

  1. Markiere alle Knoten des Graphen als noch nicht besucht.
  2. Weise jedem Knoten des Graphen seine Entfernung vom Startknoten zu. Für den Startknoten ist diese offensichtlich 0, für alle anderen Knoten wird sie vorerst auf gesetzt.
  3. Solange es noch unbesuchte Knoten mit einer Entfernung gibt, führe folgende Schritte aus:
    1. Wähle einen unbesuchten Knoten mit der kürzesten Entfernung zum Startknoten aus.
    2. Markiere als besucht.
    3. Betrachte nun alle Nachbarknoten von :
      1. Wenn die Entfernung von zum Startknoten größer ist als die Entfernung vom Startknoten zu plus die Länge der Kante zwischen und , dann setze die Entfernung von zum Startknoten auf die Entfernung vom Startknoten zu plus die Länge der Kante zwischen und

Beispiel

In diesem Beispiel suchen wir die kürzesten Wege vom Knoten B aus.