Beruflich Dokumente
Kultur Dokumente
Referenzlösung
Hinweis: In unserer Methode den geringsten Knoten zu finden, wird einmal die
Zuordnung über eine Hashmap gemacht. Unter der Annahme eines Zugriffs in O(1)
ergibt sich die oben beschriebene Laufzeit. Für den Worst-Case liegt der Zugriff
jedoch schätzungsweise selbst in linearer Laufzeit, sodass wir am Ende sogar in
O(n3 ) landen würden. Beide Lösungen werden akzeptiert.
Zusätzlich war in Aufgabenteil b nach einer Datenstruktur gefragt, welche die Gesamt-
laufzeit minimiert. Hier wär beispielsweise ein Fibonacci Heap denkbar.
Aufgabenteil c
Sei s der Startknoten, δ(v) ein temporärer Distanzwert und ∆(v) der kürzeste (v, s)-
Pfad. Nach h ≥ 0 Durchläufen gilt:
1. Die Liste enthält alle Knoten bis auf s und h weitere Knoten.
2. Für die noch nicht abgearbeiteten Knoten v ist δ(v) die Länge eines kürzesten
Pfades (s, v), welche nur Knoten betrachtet, welche bereits abgearbeitet wur-
den.
3. Für die Knoten v welche bereits abgearbeitet wurden gilt δ(v) = ∆(v).
3.1.5 Kürzester Pfad zu allen Knoten
Aufgabenteil a
Bei einem Zykel der Länge m, stehen spätestens in Iteration m − 1 bei allen Knoten,
die in diesem Zykel sind, negative Werte auf der Hauptdiagonalen. Daher funk-
tioniert der Algorithmus für negative Zykel nicht mehr korrekt. Man könnte einen
immer kleineren Weg bauen, indem man immer wieder über den Zykel läuft und
erreicht niemals DEN kürzesten Weg.
Beispiel:
Aufgabenteil b
Wir updaten pro Iteration n2 -Matrixeinträge. Das Updaten eines Matrixeintrages
liegt in Θ(n), da wir für das Updaten für Pfad (v, w) in konstanter Laufzeit für alle
Knoten x den Pfad (v, x) nachschlagen und auf (x, w) addieren und mit dem alten
Wert vergleichen. Insgesamt läuft der Algorithmus n − 1 Iterationen, sodass wir
insgesamt eine asymptotische Komplexität von Θ(n4 ) haben.