Lösungen QM 3 GRAPHENTHEORIE Lösung zu Aufgabe 3.3 Hinweis: Neuer Lösungsvorschlag, etwas algorithmischere“ Schreibweise (Pseudocode). ” Der alte Lösungsvorschlag ist weiter unten. Symbole: G Graph E Kanten V Knoten (Index: i und j) λij Kantenbewertung der Kante (i, j) ∈ E Ni Nachfolgerknoten des Knoten i im Graph G q Startknoten (Quelle) dj aktuelle Distanz des kürzesten Weges von q nach j S Warteschlange: Liste der Knoten, geordnet nach dem FIFO Prinzip h Erstes Element der Warteschlange S (head) t Letztes Element der Warteschlange S (tail) S̃i Nachfolgerknoten von i innerhalb der Wartschlange S πi Vorgängerknoten i auf dem kürzesten Weg von q Teilfunktion 1: Initialisierung des Kürzesten-Wege-Problems (KWP): Algorithmus 1 INITIALISIERUNG-KWP(V,q) for all i ∈ V do di := ∞ πi := NIL end for dq := 0 Teilfunktion 2: Relaxierungs-Schritt an einem Knoten: Algorithmus 2 RELAXIERUNG(i, j, λi,j ) if dj > di + λij then dj := di + λij πj := i return true else return false end if FIFO- und FIFO-LIFO Algorithmen: 55 Lösungen QM 3 GRAPHENTHEORIE 56 Algorithmus 3 FIFO-Algorithmus(V,E,λ) INITIALISIERUNG-KWP(V,q) t := q, h := q STOP:=false repeat for all j ∈ Nh do if RELAXIERUNG(h, j, λhj ) and j ∈ / S then S̃t := j ( S := S ∪ {j} ) t := j end if end for if h = t then STOP:=true else S := S \ {h} h := S̃h end if until STOP Algorithmus 4 FIFO-LIFO-Algorithmus(V,E,λ) INITIALISIERUNG-KWP(V,q) t := q, h := q STOP:=false repeat for all j ∈ Nh do if dj = ∞ then if RELAXIERUNG(h, j, λhj ) and j ∈ / S then S̃t := j ( S := S ∪ {j} ) t := j end if else if RELAXIERUNG(h, j, λhj ) and j ∈ / S then S̃j := S̃h S̃h := j ( S := S ∪ {j} ) end if end if end for if h = t then STOP:=true else S := S \ {h} h := S̃h end if until STOP Lösung zu Aufgabe 3.3 ALTE VERSION Start: H (Schlangenanfang) := T (Schlangenende) := q (Startknoten); D[q] := 0 sowie D[j] := ∞ für alle Knoten j 6= q; Iteration µ(= 1, 2, . . .): • Betrachte alle j ∈ N (H) : betrachte alle Nachfolger des aktuellen