23.06.2013 Aufrufe

aktuelle Version des Vorlesungsskripts - ZIB

aktuelle Version des Vorlesungsskripts - ZIB

aktuelle Version des Vorlesungsskripts - ZIB

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

5 Bäume und Wege<br />

(a) F. Schiller. (b) Vierwaldstätter See. (c) W. Tell.<br />

Abbildung 5.2: Mathematik in der Belletristik: Schillers Schauspiel „Wilhelm Tell“.<br />

gegeben ist. Ferner seien ein Startknoten s und möglicherweise ein Endknoten t gegeben.<br />

Das Verfahren findet einen kürzesten gerichteten Weg von s zu allen anderen Knoten<br />

bzw. einen kürzesten (s, t)-Weg.<br />

Der Algorithmus wird häufig als Markierungsmethode bezeichnet. (Warum, wird aus<br />

dem Weiteren klar.) Seine Idee kann man wie folgt beschreiben.<br />

Wir beginnen im Startknoten s, markieren s und ordnen s die permanente Distanz<br />

Null (= Länge <strong>des</strong> kürzesten Weges von s zu sich selbst) zu. Alle übrigen Knoten v<br />

seien unmarkiert, und wir ordnen ihnen als temporäre Distanz (= Länge <strong>des</strong> kürzesten<br />

bisher gefundenen (s, v)-Weges) entweder +∞ oder die Länge <strong>des</strong> Bogens (s, v), falls<br />

dieser in D existiert, zu. Der unmarkierte Knoten mit der kleinsten temporären Distanz<br />

ist dann der Knoten, der am nächsten zu s liegt. Nennen wir den Knoten u. Da alle<br />

Bogenlängen nicht-negativ sind, ist der Bogen (s, u) der küzeste Weg von s nach u. Wir<br />

markieren daher u und erklären die temporäre Distanz von u als permanent, weil wir<br />

den (global) kürzesten (s, u)-Weg gefunden haben. Nun bestimmen wir alle Nachfolger<br />

v von u und vergleichen die temporäre Distanz von v mit der permanenten Distanz von<br />

u plus der Länge <strong>des</strong> Bogens (u, v). Ist diese Summe kleiner als die bisherige temporäre<br />

Distanz, wird sie die neue temporäre Distanz, weil der bisher bekannte Weg von s nach<br />

v länger ist als der Weg von s über u nach v. Wir wählen nun wieder eine kleinste der<br />

temporären Distanzen, erklären sie als permanent, da der bisher gefundene Weg durch<br />

Umwege über andere Knoten nicht verkürzt werden kann, markieren den zugehörigen<br />

Knoten und fahren so fort bis entweder alle Knoten oder der gesuchte Endknoten t<br />

markiert sind. Etwas formaler kann man diesen Algorithmus wie folgt aufschreiben.<br />

(5.17) DIJKSTRA-Algorithmus.<br />

Eingabe: Digraph D = (V, A), Gewichte c(a) ≥ 0 für alle a ∈ A, ein Knoten s ∈ V<br />

(und möglicherweise ein Knoten t ∈ V \ {s}).<br />

Ausgabe: Kürzeste gerichtete Wege von s nach v für alle v ∈ V und ihre Länge (bzw. ein<br />

kürzester (s, t)-Weg).<br />

92

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!