• Keine Ergebnisse gefunden

1.4ErklärungamBeispiel 1.3Grundidee 1.2Überblick 1.1Aufgabentyp 1Dijkstra-Algorithmus

N/A
N/A
Protected

Academic year: 2022

Aktie "1.4ErklärungamBeispiel 1.3Grundidee 1.2Überblick 1.1Aufgabentyp 1Dijkstra-Algorithmus"

Copied!
3
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Wolfgang Hönig / Andreas Ecke WS 09/10

1 Dijkstra-Algorithmus

1.1 Aufgabentyp

Gegeben sei folgender Graph: [...]

Berechnen sie mit Hilfe des Dijkstra-Algorithmus die minimalen Entfernungen vom Knoten mit der Nummer [...] zu allen erreichbaren Knoten. Protokollieren Sie schrittweise die aktuelle Randknotenmenge und den zugehörigen Auswahlknoten. Geben Sie abschließend für alle berechneten kürzesten Wege die jeweils zu durchlaufende Knotenfolge an.

1.2 Überblick

1. s sei Startknoten; Starttupel:(s,0,−)

2. Randknotenmenge berechnen (vorheriger Knotens) 3. Solange noch Randknoten übrig:

a) neuer gewählter Knoten: Knoten aus Randknotenmenge entnehmen mit gerings- ter Bewertung

b) neue Randknotenmenge: besser erreichbare Knoten vom neuen gewählten Kno- ten UND übrige Elemente aus alter Randknotenmenge

4. kürzeste Wege aus gewählten Knoten ablesen Notation:(Zielknoten, Bewertung, vorheriger Knoten)

1.3 Grundidee

Nicht immer sind die kürzesten Wege zwischen allen Knoten gefragt, sondern oft ist der Startknoten bekannt. Dies nutzt der Dijkstra-Algorithmus aus, indem nur die kürzesten Wege von einem Startknoten aus berechnet werden.

Dabei wird ein bereits bekannter kürzester Weg benutzt und um eine Kante (zu dem jeweils nächsten) Nachfolgeknoten ergänzt. Am Anfang ist nur der Startknoten bekannt, welcher einen kürzesten Weg zu sich selbst hat (mit der Länge 0). Dadurch entsteht letztendlich eine Baumstruktur, welche die kürzesten Wege von einem Startknoten repräsentiert.

1.4 Erklärung am Beispiel

Folgender gerichteter Graph sei gegeben:

4 1

3 2

5 4 2

5

1 3

6

2 6

7

4 3

1 2 11

Es soll mittels Dijkstra-Algorithmus alle kürzesten Wege vom Startknoten 2 berechnet werden.

1

(2)

Wolfgang Hönig / Andreas Ecke WS 09/10

Zuerst wird die 2 als Startknoten gewählt. Jeder Knoten wird mit Zusatzinformationen versehen und dann als Dreiertupel aufgeschrieben (Zielknoten, Bewertung, vorheriger Kno- ten). Mit 2 als Ziel- und Startknoten ergibt sich damit als erstes Tupel: (2,0,-). Der Ziel- knoten ist also 2, Die Länge von 2 nach 2 beträgt 0 und die 2 hat keinen direkten Vorgän- gerknoten.

Von der 2 sind die Knoten 1, 5 und 7 erreichbar. In der Tupelschreibweise ergibt sich:

(1,2,2),(5,11,2),(7,3,2).

gewählt markiert

(2,0,-) (1,2,2),(5,11,2),(7,3,2)

Nun wird der Knoten mit der geringsten Bewertung gewählt, also das Tupel (1,2,2). Dies wird das neue markierte Tupel und es ist klar, dass der Weg von 2 nach 1 schon optimal (minimal) ist. Vom Knoten 1 sind nun die Knoten 3 und 7 erreichbar. Da Knoten 3 vorher gar nicht erreichbar war, ist dies eine Verbesserung (3,4,1). Dabei wird die Bewertung im- mer weiter aufsummiert, enthält also stets die Weglänge vom Startknoten (hier 2) bis zum Zielknoten (hier 3). Der Weg 2 nach 7 über 1 ist offenbar schlechter als der Direktkontakt vorher, also wird hier der alte Wert übernommen:

gewählt markiert

(2,0,-) (1,2,2),(5,11,2),(7,3,2) (1,2,2) (3,4,1),(5,11,2),(7,3,2)

Jetzt wird wieder der Knoten mit der geringsten Entfernung gewählt, also das Tupel (7,3,2) wird der neue markierte Knoten. Von hier aus ist die 6 mit (6,9,7) erreichbar und es ergibt sich:

gewählt markiert

(2,0,-) (1,2,2),(5,11,2),(7,3,2) (1,2,2) (3,4,1),(5,11,2),(7,3,2) (7,3,2) (3,4,1),(5,11,2),(6,9,7)

Jetzt wird das Tupel (3,4,1) gewählt, da 4 die geringste Bewertung ist. Die Wege zur 1 bzw. 2 brauchen nicht betrachtet zu werden, da die beiden Knoten bereits besucht wurden.

Allerdings hat sich der Weg zu Knoten 5 von 11 auf 5 verbessert (die Bewertung 5 entsteht aus der bisherigen Bewertung 4 vom Knoten 2 nach 3 plus der Bewertung 1 der Kante von Knoten 3 nach 5):

gewählt markiert

(2,0,-) (1,2,2),(5,11,2),(7,3,2) (1,2,2) (3,4,1),(5,11,2),(7,3,2) (7,3,2) (3,4,1),(5,11,2),(6,9,7) (3,4,1) (5,5,3),(6,9,7)

Der neue markierte Knoten wird die 5. Von hier aus ist die 4 mit der Bewertung 9 erreichbar:

gewählt markiert

(2,0,-) (1,2,2),(5,11,2),(7,3,2) (1,2,2) (3,4,1),(5,11,2),(7,3,2) (7,3,2) (3,4,1),(5,11,2),(6,9,7) (3,4,1) (5,5,3),(6,9,7)

(5,5,3) (4,9,5),(6,9,7)

Da hier „Gleichstand“ besteht, kann entweder die 4 oder die 6 gewählt werden. Durch die Wahl der 4 und danach 6 ergibt sich (da keine Verbesserung möglich):

2

(3)

Wolfgang Hönig / Andreas Ecke WS 09/10

gewählt markiert

(2,0,-) (1,2,2),(5,11,2),(7,3,2) (1,2,2) (3,4,1),(5,11,2),(7,3,2) (7,3,2) (3,4,1),(5,11,2),(6,9,7) (3,4,1) (5,5,3),(6,9,7)

(5,5,3) (4,9,5),(6,9,7) (4,9,5) (6,9,7)

(6,9,7) ∅

Nun können aus der Tabelle die kürzesten Wege und deren Längen abgelesen werden. Die Länge steht immer im gewählt-Tupel in der Mitte. Der Weg kann durch eine Suche von hinten gefunden werden. Zum Beispiel liefert (4,9,5), dass der Weg von Knoten 2 zum Knoten 4 die Länge 9 hat. Der Pfad endet offenbar mit einer 4 und der Vorgänger der 4 war eine 5. Mit (5,5,3) erhält man, dass der Vorgänger der 5 Knoten 3 war. Durch (3,4,1) weiß man, dass der Vorgänger der 3 der Knoten 1 war und mit (1,2,2) erhält man schließlich den Vorgänger der 1, was die 2 war. Damit ergibt sich als Pfad: [2,1,3,5,4].

Insgesamt erhält man:

von Knoten 2 nach:

2: 0, [2]

1: 2, [2,1]

7: 3, [2,7]

3: 4, [2,1,3]

5: 5, [2,1,3,5]

4: 9, [2,1,3,5,4]

6: 9, [2,7,6]

1.4.1 Eigenschaften

Komplexität:

Liste als Datenstruktur:O(n2+m)

Fibonacci-Heap als Datenstruktur:O(n·logn+m)mit n . . .Anzahl Knoten,m . . .Anzahl Kanten

3

Referenzen

ÄHNLICHE DOKUMENTE

Weisen Sie nach, dass ω = 4 eine primitive vierte Einheitswurzel in Z 17 ist (dabei ist Z 17 der K¨ orper mit 17 Elementen, der sich ergibt, wenn in Z Addition und Multiplikation

Jedes dieser Zweigwerke bietet ein Produkt an, das sowohl für den Markt, aber auch für die jeweils zwei anderen Zweigwerke und den eigenen Bedarf produziert wird.. Für das letzte

Ob ein Schluss von einer Aussage auf eine andere richtig ist, sollte sich völlig unabhängig vom Gehalt dieser Aussagen nur aufgrund von formalen Regeln begründen lassen.“

So ist die Beschreibung, wie man am schnellsten von Ascona nach Brindisi kommt, kein Algorithmus im eigentlichen Sinne (auch wenn diese eine Handlungsanweisung an einen

Beweis: Nach Ablauf des Algorithmus sind alle erreichbaren Knoten BLAU gefärbt. Die Behauptung folgt dann aus

x in AS1 AS1 3a‐1c y in AS2 AS1‐AS2 3a‐1c. z in AS3

verschiebe den Knoten mit der kleinsten Distanz von rest nach opti4. berechne die Distanzen für die Knoten in

Erweitern Sie den Server-Code um eine Implementierung des Schnappschuß-Algorithmus nach Chandy und Lamport, so daß jederzeit die Gesamtzahl der Aufgaben im System ermittelt werden