algorithmischere“ Schreibweise (Pseudocode).

Werbung
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
Herunterladen