Sie sind auf Seite 1von 8

11.01.

2021

Das kürzeste-Wege-Problem

Eingabe: Ein kantengewichteter gerichteter oder


ungerichteter Graph mit positiven Gewichten
2 Knoten: Start und Ziel

Ausgabe: Ein kürzester Weg vom Start zum Ziel

Der Dijkstra-Algorithmus

1. Markiere den Startknoten rot und initialisiere ihn mit der


Distanz 0.
Bezeichne diesen als aktuellen Knoten.

1
11.01.2021

Der Dijkstra-Algorithmus
2. Gehe vom aktuellen Knoten zu allen Nachbarknoten.
Führe für jeden Nachbarknoten folgendes durch:
Berechne die Summe aus der Distanz am aktuellen Knoten und der
Länge der Strecke dorthin.
Unterscheide 3 Fälle:
(1) Nachbarknoten bereits rot markiert: Mache nichts
(2) Nachbarknoten hat keine Distanz: Weise ihm die Summe als
Distanz zu. Markiere die Strecke zum aktuellen Knoten.
(3) Nachbarknoten hat bereits eine Distanz:
Distanz kleiner als Summe: Mache nichts.
Distanz größer als Summe: Streiche die dortige Kennzahl
sowie die Markierung.
Weise Knoten danach die Summe als neue Distanz zu.
Markiere die Strecke zur aktuellen Stadt.

Der Dijkstra-Algorithmus

3. Betrachte alle Knoten, die zwar eine Distanz haben, aber


noch nicht rot markiert sind.
Suche den Knoten mit der kleinsten Distanz.

4. Bezeichne diesen als aktuellen Knoten.


Weisen mehrere Knoten die kleinste Distanz auf, wähle einen
beliebigen davon.

5. Markiere den aktuellen Knoten rot.


Zeichne die dort markierte Strecke in rot ein.

6. Falls es noch Knoten gibt, die nicht rot markiert sind, gehe zu 2.

2
11.01.2021

5
G2

3
b c
5
2

3
a 2 1 f

1
2
d e
1

Hausaufgabe: Bestimme die kürzesten Wege von Knoten a


zu allen anderen Knoten mittels Dijkstra-Algorithmus.

Lösung Hausaufgabe

3
11.01.2021

4
11.01.2021

5
11.01.2021

Kürzester Weg von a nach c?

6
11.01.2021

G3
4
b e

1 2 3 2
3 3
4
a d g
4
2 2
2 1

c f
4

Übung 2: Bestimme die kürzesten Wege von Knoten a zu


allen anderen Knoten mittels Dijkstra-Algorithmus.

Lösung Übung 2

Kürzester Weg von a nach g?

7
11.01.2021

G4
2 2
a d g
3 4 7 8
6

b e h
9 4 8 7

c f i
5 7

Zum Üben!