• Keine Ergebnisse gefunden

25.Juni2018 Vorlesung17:KürzestePfade(K24)Joost-PieterKatoen DatenstrukturenundAlgorithmen

N/A
N/A
Protected

Academic year: 2022

Aktie "25.Juni2018 Vorlesung17:KürzestePfade(K24)Joost-PieterKatoen DatenstrukturenundAlgorithmen"

Copied!
194
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Kürzeste Pfadalgorithmen

Datenstrukturen und Algorithmen

Vorlesung 17: Kürzeste Pfade (K24)

Joost-Pieter Katoen

Lehrstuhl für Informatik 2 Software Modeling and Verification Group

https://moves.rwth-aachen.de/teaching/ss-18/dsal/

25. Juni 2018

Joost-Pieter Katoen Datenstrukturen und Algorithmen 1/43

(2)

Kürzeste Pfadalgorithmen

Übersicht

1 Kürzeste Pfade

2 Single-Source Shortest Path Bellman-Ford

Dijkstra

3 All-Pairs Shortest Paths Transitive Hülle

Algorithmus von Warshall Der Algorithmus von Floyd

Joost-Pieter Katoen Datenstrukturen und Algorithmen 2/43

0am .⇒€oe \

in 1 a Prim "

gieig

"

O

(

Nl .

log

Nl +

LED

(3)

Kürzeste Pfadalgorithmen Kürzeste Pfade

Übersicht

1 Kürzeste Pfade

2 Single-Source Shortest Path Bellman-Ford

Dijkstra

3 All-Pairs Shortest Paths Transitive Hülle

Algorithmus von Warshall Der Algorithmus von Floyd

Joost-Pieter Katoen Datenstrukturen und Algorithmen 3/43

(4)

Kürzeste Pfadalgorithmen Kürzeste Pfade

Das Rechenproblem: kürzeste Pfade

Joost-Pieter Katoen Datenstrukturen und Algorithmen 4/43

(5)

Kürzeste Pfadalgorithmen Kürzeste Pfade

Das Rechenproblem: kürzeste Pfade

Joost-Pieter Katoen Datenstrukturen und Algorithmen 5/43

(6)

Kürzeste Pfadalgorithmen Kürzeste Pfade

Andere Rechenprobleme: kürzester Weg

Beispiel (kürzester Weg)

Eingabe: 1. Eine Straßenkarte, auf der der Abstand zwischen jedem Paar benachbarter Kreuzungen eingezeichnet ist, 2. eine Startkreuzung s , und

3. eine Zielkreuzung t.

Ausgabe: Der kürzeste Weg von s nach t.

Joost-Pieter Katoen Datenstrukturen und Algorithmen 6/43

:

in

(7)

Kürzeste Pfadalgorithmen Kürzeste Pfade

Kürzeste Pfade

Gegeben sei ein (kanten-)gewichteter Graph G = (V , E , W ).

Das Gewicht eines Pfades ist die Summe der Gewichte seiner Kanten. Ein kürzester Pfad von einem Knoten s œ V zu einem anderen Knoten v œ V ist ein Pfad von s nach v mit minimalem Gewicht.

Sei im Folgenden : (V ◊ V ) æ ( R fi { +inf} ) eine Funktion, sodaß:

I ”(s , v) ist das Gewicht des kürzesten Pfades von s nach v , und

I ”(s , v) = +inf gdw. v von s nicht erreichbar ist.

Joost-Pieter Katoen Datenstrukturen und Algorithmen 7/43

W

:E→1R

/

(8)

Kürzeste Pfadalgorithmen Kürzeste Pfade

Kürzeste Pfade

Gegeben sei ein (kanten-)gewichteter Graph G = (V , E , W ).

Das Gewicht eines Pfades ist die Summe der Gewichte seiner Kanten.

Ein kürzester Pfad von einem Knoten s œ V zu einem anderen Knoten v œ V ist ein Pfad von s nach v mit minimalem Gewicht.

Sei im Folgenden : (V ◊ V ) æ ( R fi { +inf} ) eine Funktion, sodaß:

I ”(s , v) ist das Gewicht des kürzesten Pfades von s nach v , und

I ”(s , v) = +inf gdw. v von s nicht erreichbar ist.

Joost-Pieter Katoen Datenstrukturen und Algorithmen 7/43

0-7>01,0-22,0

÷

(9)

Kürzeste Pfadalgorithmen Kürzeste Pfade

Kürzeste Pfade

Gegeben sei ein (kanten-)gewichteter Graph G = (V , E , W ).

Das Gewicht eines Pfades ist die Summe der Gewichte seiner Kanten.

Ein kürzester Pfad von einem Knoten s œ V zu einem anderen Knoten v œ V ist ein Pfad von s nach v mit minimalem Gewicht.

Sei im Folgenden : (V ◊ V ) æ ( R fi { +inf} ) eine Funktion, sodaß:

I ”(s , v) ist das Gewicht des kürzesten Pfades von s nach v , und

I ”(s , v) = +inf gdw. v von s nicht erreichbar ist.

Joost-Pieter Katoen Datenstrukturen und Algorithmen 7/43

(10)

Kürzeste Pfadalgorithmen Kürzeste Pfade

Kürzeste Pfade

Gegeben sei ein (kanten-)gewichteter Graph G = (V , E , W ).

Das Gewicht eines Pfades ist die Summe der Gewichte seiner Kanten.

Ein kürzester Pfad von einem Knoten s œ V zu einem anderen Knoten v œ V ist ein Pfad von s nach v mit minimalem Gewicht.

Sei im Folgenden : (V ◊ V ) æ ( R fi { +inf} ) eine Funktion, sodaß:

I ”(s , v) ist das Gewicht des kürzesten Pfades von s nach v , und

I ”(s , v) = +inf gdw. v von s nicht erreichbar ist.

Joost-Pieter Katoen Datenstrukturen und Algorithmen 7/43

s V

o_0

0

U s (

gv )

(11)

Kürzeste Pfadalgorithmen Kürzeste Pfade

Kürzeste Pfade

Es gibt verschiedene Varianten:

I Kürzeste Pfade von einem Startknoten s zu allen anderen Knoten:

Single-Source Shortest Paths (SSSP).

I Kürzeste Pfade von allen Knoten zu einem Zielknoten t. Lässt sich auf SSSP zurückführen.

I Kürzeste Pfade für ein festes Knotenpaar u, v.

Es ist kein Algorithmus bekannt, der asymptotisch schneller als der beste SSSP-Algorithmus ist.

I Kürzeste Pfade für alle Knotenpaare.

All-Pairs Shortest Paths (zweiter Teil dieser Vorlesung).

Joost-Pieter Katoen Datenstrukturen und Algorithmen 8/43

ie

- -

s - vev tuev

(12)

Kürzeste Pfadalgorithmen Kürzeste Pfade

Kürzeste Pfade

Es gibt verschiedene Varianten:

I Kürzeste Pfade von einem Startknoten s zu allen anderen Knoten:

Single-Source Shortest Paths (SSSP).

I Kürzeste Pfade von allen Knoten zu einem Zielknoten t.

Lässt sich auf SSSP zurückführen.

I Kürzeste Pfade für ein festes Knotenpaar u, v.

Es ist kein Algorithmus bekannt, der asymptotisch schneller als der beste SSSP-Algorithmus ist.

I Kürzeste Pfade für alle Knotenpaare.

All-Pairs Shortest Paths (zweiter Teil dieser Vorlesung).

Joost-Pieter Katoen Datenstrukturen und Algorithmen 8/43

(13)

Kürzeste Pfadalgorithmen Kürzeste Pfade

Kürzeste Pfade

Es gibt verschiedene Varianten:

I Kürzeste Pfade von einem Startknoten s zu allen anderen Knoten:

Single-Source Shortest Paths (SSSP).

I Kürzeste Pfade von allen Knoten zu einem Zielknoten t.

Lässt sich auf SSSP zurückführen.

I Kürzeste Pfade für ein festes Knotenpaar u, v.

Es ist kein Algorithmus bekannt, der asymptotisch schneller als der beste SSSP-Algorithmus ist.

I Kürzeste Pfade für alle Knotenpaare.

All-Pairs Shortest Paths (zweiter Teil dieser Vorlesung).

Joost-Pieter Katoen Datenstrukturen und Algorithmen 8/43

#

Bellman

-

Ford

&

-

pyhstra

(14)

Kürzeste Pfadalgorithmen Kürzeste Pfade

Kürzeste Pfade

Es gibt verschiedene Varianten:

I Kürzeste Pfade von einem Startknoten s zu allen anderen Knoten:

Single-Source Shortest Paths (SSSP).

I Kürzeste Pfade von allen Knoten zu einem Zielknoten t.

Lässt sich auf SSSP zurückführen.

I Kürzeste Pfade für ein festes Knotenpaar u, v.

Es ist kein Algorithmus bekannt, der asymptotisch schneller als der beste SSSP-Algorithmus ist.

I Kürzeste Pfade für alle Knotenpaare.

All-Pairs Shortest Paths (zweiter Teil dieser Vorlesung).

Joost-Pieter Katoen Datenstrukturen und Algorithmen 8/43

(15)

Kürzeste Pfadalgorithmen Kürzeste Pfade

Kürzeste Pfade

Es gibt verschiedene Varianten:

I Kürzeste Pfade von einem Startknoten s zu allen anderen Knoten:

Single-Source Shortest Paths (SSSP).

I Kürzeste Pfade von allen Knoten zu einem Zielknoten t.

Lässt sich auf SSSP zurückführen.

I Kürzeste Pfade für ein festes Knotenpaar u, v.

Es ist kein Algorithmus bekannt, der asymptotisch schneller als der beste SSSP-Algorithmus ist.

I Kürzeste Pfade für alle Knotenpaare.

All-Pairs Shortest Paths (zweiter Teil dieser Vorlesung).

Joost-Pieter Katoen Datenstrukturen und Algorithmen 8/43

.

(16)

Kürzeste Pfadalgorithmen Kürzeste Pfade

Kürzeste Pfade

Es gibt verschiedene Varianten:

I Kürzeste Pfade von einem Startknoten s zu allen anderen Knoten:

Single-Source Shortest Paths (SSSP).

I Kürzeste Pfade von allen Knoten zu einem Zielknoten t.

Lässt sich auf SSSP zurückführen.

I Kürzeste Pfade für ein festes Knotenpaar u, v.

Es ist kein Algorithmus bekannt, der asymptotisch schneller als der beste SSSP-Algorithmus ist.

I Kürzeste Pfade für alle Knotenpaare.

All-Pairs Shortest Paths (zweiter Teil dieser Vorlesung).

Joost-Pieter Katoen Datenstrukturen und Algorithmen 8/43

(17)

Kürzeste Pfadalgorithmen Kürzeste Pfade

Kürzeste Pfade

Es gibt verschiedene Varianten:

I Kürzeste Pfade von einem Startknoten s zu allen anderen Knoten:

Single-Source Shortest Paths (SSSP).

I Kürzeste Pfade von allen Knoten zu einem Zielknoten t.

Lässt sich auf SSSP zurückführen.

I Kürzeste Pfade für ein festes Knotenpaar u, v.

Es ist kein Algorithmus bekannt, der asymptotisch schneller als der beste SSSP-Algorithmus ist.

I Kürzeste Pfade für alle Knotenpaare.

All-Pairs Shortest Paths (zweiter Teil dieser Vorlesung).

Joost-Pieter Katoen Datenstrukturen und Algorithmen 8/43

o

(18)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Übersicht

1 Kürzeste Pfade

2 Single-Source Shortest Path Bellman-Ford

Dijkstra

3 All-Pairs Shortest Paths Transitive Hülle

Algorithmus von Warshall Der Algorithmus von Floyd

Joost-Pieter Katoen Datenstrukturen und Algorithmen 9/43

(19)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Single-Source Shortest Paths

Problem (Single-Source Shortest Path)

Für einen gegebenen Knoten s œ V (die Quelle / source), bestimme für jeden anderen Knoten t œ V , der aus s erreichbar ist, einen kürzesten Pfad von s zu t.

Joost-Pieter Katoen Datenstrukturen und Algorithmen 10/43

[ ]

(20)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Übersicht

1 Kürzeste Pfade

2 Single-Source Shortest Path Bellman-Ford

Dijkstra

3 All-Pairs Shortest Paths Transitive Hülle

Algorithmus von Warshall Der Algorithmus von Floyd

Joost-Pieter Katoen Datenstrukturen und Algorithmen 11/43

(21)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Der Bellman-Ford Algorithmus

I Kürzeste Pfade bei einem einzigen Startknoten.

I Erlaubt negative Kantengewichte.

I Er zeigt an, ob es einen Zyklus mit negativem Gewicht gibt, der vom Startknoten aus erreichbar ist.

I Falls ein solcher Zyklus gefunden wird, gibt es keine Lösung

I

(da die Gewichte der kürzesten Pfade nicht mehr wohldefiniert sind).

I Sonst verbessert der Algorithmus iterativ für jeden Knoten v eine obere Grenze dist[v] an ”(s , v ), bis das Minimum gefunden wird.

I Kürzeste Pfade können nach Terminierung mittels die im Array prev gespeicherten Vorgängerknoten entlang eines kürzesten Pfades konstruiert werden.

Joost-Pieter Katoen Datenstrukturen und Algorithmen 12/43

(22)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Der Bellman-Ford Algorithmus

I Kürzeste Pfade bei einem einzigen Startknoten.

I Erlaubt negative Kantengewichte.

I Er zeigt an, ob es einen Zyklus mit negativem Gewicht gibt, der vom Startknoten aus erreichbar ist.

I Falls ein solcher Zyklus gefunden wird, gibt es keine Lösung

I

(da die Gewichte der kürzesten Pfade nicht mehr wohldefiniert sind).

I Sonst verbessert der Algorithmus iterativ für jeden Knoten v eine obere Grenze dist[v] an ”(s , v ), bis das Minimum gefunden wird.

I Kürzeste Pfade können nach Terminierung mittels die im Array prev gespeicherten Vorgängerknoten entlang eines kürzesten Pfades konstruiert werden.

Joost-Pieter Katoen Datenstrukturen und Algorithmen 12/43

v, vz S

(

s, v,) =3

sy

'

#

Owe oGvd=

- ,

0

to

¥§fIqo_@

or

Is rays

.vn

)

. s

-2\qj@q%m{ 5+6,5+16

= k^^ >.

D. if

he,

5( s, v

7) Inn -22-6,2+-3

.

k |k7n }

= - a

(23)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Der Bellman-Ford Algorithmus

I Kürzeste Pfade bei einem einzigen Startknoten.

I Erlaubt negative Kantengewichte.

I Er zeigt an, ob es einen Zyklus mit negativem Gewicht gibt, der vom Startknoten aus erreichbar ist.

I Falls ein solcher Zyklus gefunden wird, gibt es keine Lösung

I

(da die Gewichte der kürzesten Pfade nicht mehr wohldefiniert sind).

I Sonst verbessert der Algorithmus iterativ für jeden Knoten v eine obere Grenze dist[v] an ”(s , v ), bis das Minimum gefunden wird.

I Kürzeste Pfade können nach Terminierung mittels die im Array prev gespeicherten Vorgängerknoten entlang eines kürzesten Pfades konstruiert werden.

Joost-Pieter Katoen Datenstrukturen und Algorithmen 12/43

(24)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Der Bellman-Ford Algorithmus

I Kürzeste Pfade bei einem einzigen Startknoten.

I Erlaubt negative Kantengewichte.

I Er zeigt an, ob es einen Zyklus mit negativem Gewicht gibt, der vom Startknoten aus erreichbar ist.

I Falls ein solcher Zyklus gefunden wird, gibt es keine Lösung

I

(da die Gewichte der kürzesten Pfade nicht mehr wohldefiniert sind).

I Sonst verbessert der Algorithmus iterativ für jeden Knoten v eine obere Grenze dist[v] an ”(s , v ), bis das Minimum gefunden wird.

I Kürzeste Pfade können nach Terminierung mittels die im Array prev gespeicherten Vorgängerknoten entlang eines kürzesten Pfades konstruiert werden.

Joost-Pieter Katoen Datenstrukturen und Algorithmen 12/43

(25)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Der Bellman-Ford Algorithmus

I Kürzeste Pfade bei einem einzigen Startknoten.

I Erlaubt negative Kantengewichte.

I Er zeigt an, ob es einen Zyklus mit negativem Gewicht gibt, der vom Startknoten aus erreichbar ist.

I Falls ein solcher Zyklus gefunden wird, gibt es keine Lösung

I

(da die Gewichte der kürzesten Pfade nicht mehr wohldefiniert sind).

I Sonst verbessert der Algorithmus iterativ für jeden Knoten v eine obere Grenze dist[v] an ”(s , v), bis das Minimum gefunden wird.

I Kürzeste Pfade können nach Terminierung mittels die im Array prev gespeicherten Vorgängerknoten entlang eines kürzesten Pfades konstruiert werden.

Joost-Pieter Katoen Datenstrukturen und Algorithmen 12/43

or Is

,v

) E dist [

v

]

(26)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Der Bellman-Ford Algorithmus

I Kürzeste Pfade bei einem einzigen Startknoten.

I Erlaubt negative Kantengewichte.

I Er zeigt an, ob es einen Zyklus mit negativem Gewicht gibt, der vom Startknoten aus erreichbar ist.

I Falls ein solcher Zyklus gefunden wird, gibt es keine Lösung

I

(da die Gewichte der kürzesten Pfade nicht mehr wohldefiniert sind).

I Sonst verbessert der Algorithmus iterativ für jeden Knoten v eine obere Grenze dist[v] an ”(s , v), bis das Minimum gefunden wird.

I Kürzeste Pfade können nach Terminierung mittels die im Array prev gespeicherten Vorgängerknoten entlang eines kürzesten Pfades konstruiert werden.

Joost-Pieter Katoen Datenstrukturen und Algorithmen 12/43

o

- d

'

-

if prevlsuz ]=v

,

SSSP - Baum

\

,

.

y→ .Y

prev Tv , ]=s

s

prev Ts

]=

- 1

(27)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Bellman-Ford: Idee

I Initialisierung: dist[v]=+inf , dist[start]=0 .

I Für alle Kanten (v , w ) œ E :

I

Relaxierung: Ist das bisher bekannte Gewicht dist[w] größer als dist[v] + W(v,w), dann verbessere dist[w] auf diesen Wert.

I Wiederhole den vorigen Schritt bis sich nichts mehr ändert, bzw. breche ab, falls ein negativer Zyklus gefunden wurde.

Korrektheit vom Bellman-Ford Algorithmus

Wenn nach | V |≠ 1 Iterationen noch Verbesserungen möglich sind, dann gibt es einen negativen Zyklus. Andernfalls dist[v] = ”(s, v ) für alle v œ V .

Beweis.

Beweisidee: Ein Pfad ohne Zyklen in (V , E , W ) hat eine Länge 6 | V |≠ 1.

Joost-Pieter Katoen Datenstrukturen und Algorithmen 13/43

5 (

s ,v

)

E dist

Tv ]

(28)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Bellman-Ford: Idee

I Initialisierung: dist[v]=+inf , dist[start]=0 .

I Für alle Kanten (v , w ) œ E :

I

Relaxierung: Ist das bisher bekannte Gewicht dist[w] größer als dist[v] + W(v,w), dann verbessere dist[w] auf diesen Wert.

I Wiederhole den vorigen Schritt bis sich nichts mehr ändert, bzw. breche ab, falls ein negativer Zyklus gefunden wurde.

Korrektheit vom Bellman-Ford Algorithmus

Wenn nach | V |≠ 1 Iterationen noch Verbesserungen möglich sind, dann gibt es einen negativen Zyklus. Andernfalls dist[v] = ”(s, v ) für alle v œ V .

Beweis.

Beweisidee: Ein Pfad ohne Zyklen in (V , E , W ) hat eine Länge 6 | V |≠ 1.

Joost-Pieter Katoen Datenstrukturen und Algorithmen 13/43

start V W

f.

WC

v. w

)

dist Eu

]

+ WG ,w

)

- <

dist

[u]

dist I

w]

÷ tTw]

Passe dist

a)

an

distIw]=distTu]+W(v=

(29)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Bellman-Ford: Idee

I Initialisierung: dist[v]=+inf , dist[start]=0 .

I Für alle Kanten (v , w ) œ E :

I

Relaxierung: Ist das bisher bekannte Gewicht dist[w] größer als dist[v] + W(v,w), dann verbessere dist[w] auf diesen Wert.

I Wiederhole den vorigen Schritt bis sich nichts mehr ändert, bzw.

breche ab, falls ein negativer Zyklus gefunden wurde.

Korrektheit vom Bellman-Ford Algorithmus

Wenn nach | V |≠ 1 Iterationen noch Verbesserungen möglich sind, dann gibt es einen negativen Zyklus. Andernfalls dist[v] = ”(s, v ) für alle v œ V .

Beweis.

Beweisidee: Ein Pfad ohne Zyklen in (V , E , W ) hat eine Länge 6 | V |≠ 1.

Joost-Pieter Katoen Datenstrukturen und Algorithmen 13/43

(30)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Bellman-Ford: Idee

I Initialisierung: dist[v]=+inf , dist[start]=0 .

I Für alle Kanten (v , w ) œ E :

I

Relaxierung: Ist das bisher bekannte Gewicht dist[w] größer als dist[v] + W(v,w), dann verbessere dist[w] auf diesen Wert.

I Wiederhole den vorigen Schritt bis sich nichts mehr ändert, bzw.

breche ab, falls ein negativer Zyklus gefunden wurde.

Korrektheit vom Bellman-Ford Algorithmus

Wenn nach | V |≠ 1 Iterationen noch Verbesserungen möglich sind, dann gibt es einen negativen Zyklus. Andernfalls dist[v] = (s, v ) für alle v œ V .

Beweis.

Beweisidee: Ein Pfad ohne Zyklen in (V , E , W ) hat eine Länge 6 | V |≠ 1.

Joost-Pieter Katoen Datenstrukturen und Algorithmen 13/43

(31)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Bellman-Ford in Pseudo-Code

1

bool bellmanFord(List adj[n], int n, int start,

2

int &dist[n], int &prev[n]) {

3

for (int v = 0; v < n; v++) { // für alle Knoten v

4

dist[v] = +inf; // +inf ist initiale Entfernung von start zu v

5

prev[v] = -1; // v hat noch kein Vorgänger

6

}

7

dist[start] = 0; // die Entfernung von start zu start ist 0

8

for (int i = 1; i < n; i++) // n-1 Durchläufe

9

for (int v = 0; v < n; v++) // für alle Knoten v

10

foreach (edge in adj[v]) // für jede aus v ausgehende Kante

11

if (dist[edge.target] > dist[v] + edge.weight) {

12

dist[edge.target] = dist[v] + edge.weight;

13

prev[edge.target] = v;

14

} // Relaxierung

15

for (int v = 0; v < n; v++) // für alle Knoten v

16

foreach (edge in adj[v]) // für jede aus v ausgehende Kante

17

if (dist[edge.target] > dist[v] + edge.weight)

18

return false; // es existiert Zyklus mit negativem Gewicht

19

return true;

20

}

I Zeitkomplexität: O(|V | · |E |).

Joost-Pieter Katoen Datenstrukturen und Algorithmen 14/43

s

.

•V=•W

:

ist LT

]

= S

(

start ,v

)

prev speicher

diesen SP - Baum

(32)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Bellman-Ford in Pseudo-Code

1

bool bellmanFord(List adj[n], int n, int start,

2

int &dist[n], int &prev[n]) {

3

for (int v = 0; v < n; v++) { // für alle Knoten v

4

dist[v] = +inf; // +inf ist initiale Entfernung von start zu v

5

prev[v] = -1; // v hat noch kein Vorgänger

6

}

7

dist[start] = 0; // die Entfernung von start zu start ist 0

8

for (int i = 1; i < n; i++) // n-1 Durchläufe

9

for (int v = 0; v < n; v++) // für alle Knoten v

10

foreach (edge in adj[v]) // für jede aus v ausgehende Kante

11

if (dist[edge.target] > dist[v] + edge.weight) {

12

dist[edge.target] = dist[v] + edge.weight;

13

prev[edge.target] = v;

14

} // Relaxierung

15

for (int v = 0; v < n; v++) // für alle Knoten v

16

foreach (edge in adj[v]) // für jede aus v ausgehende Kante

17

if (dist[edge.target] > dist[v] + edge.weight)

18

return false; // es existiert Zyklus mit negativem Gewicht

19

return true;

20

}

I Zeitkomplexität: O(|V | · |E |).

Joost-Pieter Katoen Datenstrukturen und Algorithmen 14/43

(33)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Bellman-Ford – Beispiel

0

Œ

Œ Œ

Œ

Œ

Œ Œ

14

6

4

10

9

-12 3

3 8

2

15

Joost-Pieter Katoen Datenstrukturen und Algorithmen 15/43

y y dist

[ 5k¥ dist [

..

]

=P

stt

(34)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Bellman-Ford – Beispiel

0

14

Œ Œ

Œ

Œ

Œ Œ

14

6

4

10

9

-12 3

3 8

2

15

Joost-Pieter Katoen Datenstrukturen und Algorithmen 15/43

preu ID

=s

a V S

(35)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Bellman-Ford – Beispiel

0

14

Œ Œ

6

Œ

Œ Œ

14

6

4

10

9

-12 3

3 8

2

15

Joost-Pieter Katoen Datenstrukturen und Algorithmen 15/43

(36)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Bellman-Ford – Beispiel

0

14

Œ Œ

6

Œ

Œ Œ

14

6

4

10

9

-12 3

3 8

2

15

Joost-Pieter Katoen Datenstrukturen und Algorithmen 15/43

(37)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Bellman-Ford – Beispiel

0

14

18 Œ

6

Œ

Œ Œ

14

6

4

10

9

-12 3

3 8

2

15

Joost-Pieter Katoen Datenstrukturen und Algorithmen 15/43

(38)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Bellman-Ford – Beispiel

0

14

18 Œ

6

24

Œ Œ

14

6

4

10

9

-12 3

3 8

2

15

Joost-Pieter Katoen Datenstrukturen und Algorithmen 15/43

(39)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Bellman-Ford – Beispiel

0

14

18 Œ

6

24

Œ Œ

14

6

4

10

9

-12 3

3 8

2

15

Joost-Pieter Katoen Datenstrukturen und Algorithmen 15/43

(40)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Bellman-Ford – Beispiel

0

14

18 27

6

24

Œ Œ

14

6

4

10

9

-12 3

3 8

2

15

Joost-Pieter Katoen Datenstrukturen und Algorithmen 15/43

(41)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Bellman-Ford – Beispiel

0

14

18 27

6

24

Œ Œ

14

6

4

10

9

-12 3

3 8

2

15

Joost-Pieter Katoen Datenstrukturen und Algorithmen 15/43

(42)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Bellman-Ford – Beispiel

0

14

18 27

6

24

15 Œ

14

6

4

10

9

-12 3

3 8

2

15

Joost-Pieter Katoen Datenstrukturen und Algorithmen 15/43

(43)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Bellman-Ford – Beispiel

0

14

18 27

6

24

15 Œ

14

6

4

10

9

-12 3

3 8

2

15

Joost-Pieter Katoen Datenstrukturen und Algorithmen 15/43

(44)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Bellman-Ford – Beispiel

0

9

18 27

6

24

15 Œ

14

6

4

10

9

-12 3

3 8

2

15

Joost-Pieter Katoen Datenstrukturen und Algorithmen 15/43

relaxiemng

(45)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Bellman-Ford – Beispiel

0

9

18 27

6

24

15 Œ

14

6

4

10

9

-12 3

3 8

2

15

Joost-Pieter Katoen Datenstrukturen und Algorithmen 15/43

(46)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Bellman-Ford – Beispiel

0

9

18 27

6

24

15 Œ

14

6

4

10

9

-12 3

3 8

2

15

Joost-Pieter Katoen Datenstrukturen und Algorithmen 15/43

(47)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Bellman-Ford – Beispiel

0

9

17 27

6

24

15 Œ

14

6

4

10

9

-12 3

3 8

2

15

Joost-Pieter Katoen Datenstrukturen und Algorithmen 15/43

(48)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Bellman-Ford – Beispiel

0

9

17 27

6

24

15 30

14

6

4

10

9

-12 3

3 8

2

15

Joost-Pieter Katoen Datenstrukturen und Algorithmen 15/43

(49)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Bellman-Ford – Beispiel

0

9

17 27

6

24

15 30

14

6

4

10

9

-12 3

3 8

2

15

Joost-Pieter Katoen Datenstrukturen und Algorithmen 15/43

(50)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Bellman-Ford – Beispiel

0

9

17 27

6

24

15 30

14

6

4

10

9

-12 3

3 8

2

15

Joost-Pieter Katoen Datenstrukturen und Algorithmen 15/43

(51)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Bellman-Ford – Beispiel

0

9

17 27

6

24

15 30

14

6

4

10

9

-12 3

3 8

2

15

Joost-Pieter Katoen Datenstrukturen und Algorithmen 15/43

(52)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Bellman-Ford – Beispiel

0

9

13 27

6

24

15 30

14

6

4

10

9

-12 3

3 8

2

15

Joost-Pieter Katoen Datenstrukturen und Algorithmen 15/43

(53)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Bellman-Ford – Beispiel

0

9

13 27

6

19

15 30

14

6

4

10

9

-12 3

3 8

2

15

Joost-Pieter Katoen Datenstrukturen und Algorithmen 15/43

(54)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Bellman-Ford – Beispiel

0

9

13 27

6

19

15 30

14

6

4

10

9

-12 3

3 8

2

15

Joost-Pieter Katoen Datenstrukturen und Algorithmen 15/43

(55)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Bellman-Ford – Beispiel

0

9

13 22

6

19

15 30

14

6

4

10

9

-12 3

3 8

2

15

Joost-Pieter Katoen Datenstrukturen und Algorithmen 15/43

(56)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Bellman-Ford – Beispiel

0

9

13 22

6

19

15 30

14

6

4

10

9

-12 3

3 8

2

15

Joost-Pieter Katoen Datenstrukturen und Algorithmen 15/43

(57)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Bellman-Ford – Beispiel

0

9

13 22

6

19

10 30

14

6

4

10

9

-12 3

3 8

2

15

Joost-Pieter Katoen Datenstrukturen und Algorithmen 15/43

(58)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Bellman-Ford – Beispiel

0

9

13 22

6

19

10 30

14

6

4

10

9

-12 3

3 8

2

15

Joost-Pieter Katoen Datenstrukturen und Algorithmen 15/43

(59)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Bellman-Ford – Beispiel

0

9

13 22

6

19

10 30

14

6

4

10

9

-12 3

3 8

2

15

Joost-Pieter Katoen Datenstrukturen und Algorithmen 15/43

(60)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Bellman-Ford – Beispiel

0

9

13 22

6

19

10 30

14

6

4

10

9

-12 3

3 8

2

15

Joost-Pieter Katoen Datenstrukturen und Algorithmen 15/43

(61)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Bellman-Ford – Beispiel

0

9

12 22

6

19

10 30

14

6

4

10

9

-12 3

3 8

2

15

Joost-Pieter Katoen Datenstrukturen und Algorithmen 15/43

(62)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Bellman-Ford – Beispiel

0

9

12 22

6

19

10 25

14

6

4

10

9

-12 3

3 8

2

15

Joost-Pieter Katoen Datenstrukturen und Algorithmen 15/43

(63)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Bellman-Ford – Beispiel

0

9

12 22

6

19

10 25

14

6

4

10

9

-12 3

3 8

2

15

Joost-Pieter Katoen Datenstrukturen und Algorithmen 15/43

(64)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Bellman-Ford – Beispiel

0

9

12 22

6

19

10 25

14

6

4

10

9

-12 3

3 8

2

15

Joost-Pieter Katoen Datenstrukturen und Algorithmen 15/43

(65)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Bellman-Ford – Beispiel

0

9

12 22

6

19

10 25

14

6

4

10

9

-12 3

3 8

2

15

Joost-Pieter Katoen Datenstrukturen und Algorithmen 15/43

(66)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Bellman-Ford – Beispiel

0

9

12 22

6

19

10 25

14

6

4

10

9

-12 3

3 8

2

15

Joost-Pieter Katoen Datenstrukturen und Algorithmen 15/43

(67)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Bellman-Ford – Beispiel

0

9

12 21

6

19

10 25

14

6

4

10

9

-12 3

3 8

2

15

Joost-Pieter Katoen Datenstrukturen und Algorithmen 15/43

(68)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Bellman-Ford – Beispiel

0

9

12 21

6

19

10 25

14

6

4

10

9

-12 3

3 8

2

15

Joost-Pieter Katoen Datenstrukturen und Algorithmen 15/43

(69)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Bellman-Ford – Beispiel

0

9

12 21

6

19

9 25

14

6

4

10

9

-12 3

3 8

2

15

Joost-Pieter Katoen Datenstrukturen und Algorithmen 15/43

(70)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Bellman-Ford – Beispiel

0

9

12 21

6

19

9 25

14

6

4

10

9

-12 3

3 8

2

15

Joost-Pieter Katoen Datenstrukturen und Algorithmen 15/43

(71)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Bellman-Ford – Beispiel

0

9

12 21

6

19

9 25

14

6

4

10

9

-12 3

3 8

2

15

Joost-Pieter Katoen Datenstrukturen und Algorithmen 15/43

(72)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Bellman-Ford – Beispiel

0

9

12 21

6

19

9 25

14

6

4

10

9

-12 3

3 8

2

15

Joost-Pieter Katoen Datenstrukturen und Algorithmen 15/43

(73)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Bellman-Ford – Beispiel

0

9

11 21

6

19

9 25

14

6

4

10

9

-12 3

3 8

2

15

Joost-Pieter Katoen Datenstrukturen und Algorithmen 15/43

(74)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Bellman-Ford – Beispiel

0

9

11 21

6

19

9 24

14

6

4

10

9

-12 3

3 8

2

15

Joost-Pieter Katoen Datenstrukturen und Algorithmen 15/43

(75)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Bellman-Ford – Beispiel

0

9

11 21

6

19

9 24

14

6

4

10

9

-12 3

3 8

2

15

Joost-Pieter Katoen Datenstrukturen und Algorithmen 15/43

(76)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Bellman-Ford – Beispiel

0

9

11 21

6

19

9 24

14

6

4

10

9

-12 3

3 8

2

15

Joost-Pieter Katoen Datenstrukturen und Algorithmen 15/43

(77)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Bellman-Ford – Beispiel

0

9

11 21

6

19

9 24

14

6

4

10

9

-12 3

3 8

2

15

Joost-Pieter Katoen Datenstrukturen und Algorithmen 15/43

(78)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Bellman-Ford – Beispiel

0

9

11 21

6

19

9 24

14

6

4

10

9

-12 3

3 8

2

15

Joost-Pieter Katoen Datenstrukturen und Algorithmen 15/43

(79)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Bellman-Ford – Beispiel

0

9

11 20

6

19

9 24

14

6

4

10

9

-12 3

3 8

2

15

Joost-Pieter Katoen Datenstrukturen und Algorithmen 15/43

(80)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Bellman-Ford – Beispiel

0

9

11 20

6

19

9 24

14

6

4

10

9

-12 3

3 8

2

15

Joost-Pieter Katoen Datenstrukturen und Algorithmen 15/43

(81)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Bellman-Ford – Beispiel

0

9

11 20

6

19

8 24

14

6

4

10

9

-12 3

3 8

2

15

Joost-Pieter Katoen Datenstrukturen und Algorithmen 15/43

(82)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Bellman-Ford – Beispiel

0

9

11 20

6

19

8 24

14

6

4

10

9

-12 3

3 8

2

15

Joost-Pieter Katoen Datenstrukturen und Algorithmen 15/43

(83)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Bellman-Ford – Beispiel

0

9

11 20

6

19

8 24

14

6

4

10

9

-12 3

3 8

2

15

Joost-Pieter Katoen Datenstrukturen und Algorithmen 15/43

(84)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Bellman-Ford – Beispiel

0

9

11 20

6

19

8 24

14

6

4

10

9

-12 3

3 8

2

15

Joost-Pieter Katoen Datenstrukturen und Algorithmen 15/43

(85)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Bellman-Ford – Beispiel

0

9

10 20

6

19

8 24

14

6

4

10

9

-12 3

3 8

2

15

Joost-Pieter Katoen Datenstrukturen und Algorithmen 15/43

(86)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Bellman-Ford – Beispiel

0

9

10 20

6

19

8 23

14

6

4

10

9

-12 3

3 8

2

15

Joost-Pieter Katoen Datenstrukturen und Algorithmen 15/43

(87)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Bellman-Ford – Beispiel

0

9

10 20

6

19

8 23

14

6

4

10

9

-12 3

3 8

2

15

Joost-Pieter Katoen Datenstrukturen und Algorithmen 15/43

(88)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Bellman-Ford – Beispiel

0

9

10 20

6

19

8 23

14

6

4

10

9

-12 3

3 8

2

15

Joost-Pieter Katoen Datenstrukturen und Algorithmen 15/43

(89)

Theorem ( komektheit BF Algorithms )

a.

Falls G Kaine Zyklen Mit negation Gewicht

eneichbar

ons

SEV hat

,

damn ergibt den

Algorithms

"

the

"

und dist [v]= JCS ,v )

fit all ve and der Vozoingerteilgrgsh

prev ist ein Baum teurzeste Pfade Mit

Wurzel s

.

b. Falls G hat neg

.

Zyklen eneiclba

ours

S

,

damn ezibt sicb " false "

.

÷

eveis ( skizne ) :

a .

Nehme as kein eneichban negative Zyklen

n

.

wivzeigh dist [v]=5( s ,v ) beiteminie

mng

.

Sei Vans s erreichbar and

p= ( Vo

,

4

, . - - . - - . .

,

Uk >

- in

=s

=✓

eiies azyklischenkurtesth Pfad

von s

had v

.

( Beni pexistiet wegen Annohme )

(90)

Es folgt k E IVI

-

T

,

da p azyklisch

Jede der NI

- 1

Iteration

en

der for Schleife

in den Zeier 11-73 relaxiet alle IEI Kates

.

Indo i

-

te Iteration aneh vi.

,

Y

.

Do

peinknr2estePfadist.giltiLdsth-distFvkJ-sCs.uk3-frCs@WennsYv.dannfo1gtdistLvT-D-sCs.v

)

2

.

Die Tatsache

,

dap prev ein Barm enthelt

Mit wurzels and

nur

kiirzeste Pfede

,

fast

des 1

-

+ die

Einfigwyesihprevimadeb

.

Sei Z= ( Vo

,

. . .

;Vk ) einen negative Zyklus

emeichb

-

and s

.

Also

± Z i.

,

WCV ...

,

,y

.

) < 0

Widerspmchsbeweis

.

Nehme

, an ,

DF gibt

3

the " ( stall

"

false

'

) zurich

.

(91)

Wenn BF

"

the

"

liefet

;

(* ) dist Tv ;] E dist [ vi.

,

] + W ( vi.

,

,ui )

Vociek

Summioesiuber Zykhis Z

=

Go

. ...

vk )

,

k he k

I dist To ;] E 2- dist [ vi.

,

] + I War

,

,v ;)

it i=

,

= i.

,

÷

.

Idt

...

+ dist Turk ]

=

dist Tvk ]

k

§g dist Tv ;] E §g dist Ii ] + E Wlvi

. ,

,v ;)

E in

# Widerspmch

|o

e KIZ

,

W( vi.

,

,vi ) zur

- Annahme

,

dap Z

negativist

(92)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Übersicht

1 Kürzeste Pfade

2 Single-Source Shortest Path Bellman-Ford

Dijkstra

3 All-Pairs Shortest Paths Transitive Hülle

Algorithmus von Warshall Der Algorithmus von Floyd

Joost-Pieter Katoen Datenstrukturen und Algorithmen 16/43

(93)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Dijkstras Algorithmus

Annahme

Kantengewichte sind nicht-negativ, d. h. W (v , w ) > 0 für all (v, w ) œ E .

I Also: Kürzeste Pfade enthalten keine Zyklen.

Edsger Wybe Dijkstra (1930-2002), Turing Award 1972

Joost-Pieter Katoen Datenstrukturen und Algorithmen 17/43

IS - IS

f F os€)

-

EWD 0 . . - .

goto

considered harmful

Tgsg

: MST , SSSP

1 - 10 + ^^

DNF

Dykstra

front

semaphores

Volkswagen

bus

Algol

60

=

tinny

machine

Tule

, Austin

- -

.

(94)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Dijkstras Algorithmus: Übersicht

Wie beim Algorithmus von Prim ordnen wir die Knoten in drei Kategorien:

Baumknoten: Knoten, die Teil vom bis jetzt konstruierten Baum sind.

Randknoten: Nicht im Baum, jedoch adjazent zu Knoten im Baum.

Ungesehene Knoten: Alle anderen Knoten.

Grundkonzept:

I Kein Knoten außerhalb des Baumes hat einen kürzeren Pfad als die Knoten im Baum.

I Jedem Knoten v ist ein Wert dist[v] zugeordnet. Dieser Wert ist:

I

für Baumknoten dist[v] = ”(s, v);

I

für Randknoten das Minimum der Gewichte aller Pfade vom Startknoten zu v, wobei die letzte Kante im Schnitt liegt;

I

für ungesehenen Knoten +inf.

Joost-Pieter Katoen Datenstrukturen und Algorithmen 18/43

"

gierige

"

strategic

inkremestelle Barm konstnktsvn .

#\⇐•←r

.

* # ⇐

(95)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Dijkstras Algorithmus: Übersicht

Wie beim Algorithmus von Prim ordnen wir die Knoten in drei Kategorien:

Baumknoten: Knoten, die Teil vom bis jetzt konstruierten Baum sind.

Randknoten: Nicht im Baum, jedoch adjazent zu Knoten im Baum.

Ungesehene Knoten: Alle anderen Knoten.

Grundkonzept:

I Kein Knoten außerhalb des Baumes hat einen kürzeren Pfad als die Knoten im Baum.

I Jedem Knoten v ist ein Wert dist[v] zugeordnet. Dieser Wert ist:

I

für Baumknoten dist[v] = ”(s, v);

I

für Randknoten das Minimum der Gewichte aller Pfade vom Startknoten zu v, wobei die letzte Kante im Schnitt liegt;

I

für ungesehenen Knoten +inf.

Joost-Pieter Katoen Datenstrukturen und Algorithmen 18/43

(96)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Dijkstras Algorithmus: Übersicht

Wie beim Algorithmus von Prim ordnen wir die Knoten in drei Kategorien:

Baumknoten: Knoten, die Teil vom bis jetzt konstruierten Baum sind.

Randknoten: Nicht im Baum, jedoch adjazent zu Knoten im Baum.

Ungesehene Knoten: Alle anderen Knoten.

Grundkonzept:

I Kein Knoten außerhalb des Baumes hat einen kürzeren Pfad als die Knoten im Baum.

I Jedem Knoten v ist ein Wert dist[v] zugeordnet. Dieser Wert ist:

I

für Baumknoten dist[v] = ”(s, v);

I

für Randknoten das Minimum der Gewichte aller Pfade vom Startknoten zu v, wobei die letzte Kante im Schnitt liegt;

I

für ungesehenen Knoten +inf.

Joost-Pieter Katoen Datenstrukturen und Algorithmen 18/43

T.se#a

(97)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Dijkstras Kürzeste-Wege-Algorithmus – Grundgerüst

1

// ungerichteter Graph G mit n Knoten

2

void dijkstraSP(Graph G, int n) {

3

initialisiere alle Knoten als ungesehen (WHITE);

4

markiere s als Baum (BLACK) und setze d(s, s) = 0;

5

reklassifiziere alle zu s adjazenten Knoten als Rand (GRAY);

6

while (es gibt Randknoten) {

7

wähle von allen Kanten zwischen einem Baumknoten t und

8

einem Randknoten v mit minimalem d(s, t) + W (t, v);

9

reklassifiziere v als Baum (BLACK);

10

füge Kante (t, v) zum Baum hinzu;

11

setze d(s, v ) = d(s, t) + W (t, v);

12

reklassifiziere alle zu v adjazenten ungesehenen Knoten

13

mit Rand (GRAY);

14

}

15

}

Unterschiede zu Prim’s Algorithmus sind in rot gekennzeichnet.

Joost-Pieter Katoen Datenstrukturen und Algorithmen 19/43

⇐ IE

.I€*¥

s

(98)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Dijkstras Kürzeste-Wege-Algorithmus – Beispiel

0

Œ

Œ

Œ

Œ

Œ Œ

Π14

6

10 55

33

44

88

2

15 15 99

Joost-Pieter Katoen Datenstrukturen und Algorithmen 20/43

start

.

(99)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Dijkstras Kürzeste-Wege-Algorithmus – Beispiel

0

14

6

10

Œ

5 Œ

Π14

6

10 55

33

44

88

2

15 15 99

Joost-Pieter Katoen Datenstrukturen und Algorithmen 20/43

go IF -

as

m

(100)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Dijkstras Kürzeste-Wege-Algorithmus – Beispiel

0

14

6

10

7

5 14

Π14

6

10 55

33

44

88

2

15 15 99

Joost-Pieter Katoen Datenstrukturen und Algorithmen 20/43

(101)

Kürzeste Pfadalgorithmen Single-Source Shortest Path

Dijkstras Kürzeste-Wege-Algorithmus – Beispiel

0

14

6

10

7

5 14

Π14

6

10 55

33

44

88

2

15 15 99

Joost-Pieter Katoen Datenstrukturen und Algorithmen 20/43

Referenzen

ÄHNLICHE DOKUMENTE

Sonst verbessert der Algorithmus iterativ für jeden Knoten v eine obere Grenze dist[v] für δ(s, v), bis das Minimum gefunden wird.. Kürzeste Pfade können nach Terminierung mittels

I Sonst verbessert der Algorithmus iterativ für jeden Knoten v eine obere Grenze dist[v] für δ(s, v), bis das Minimum gefunden wird. I Kürzeste Pfade können nach Terminierung

Ein Stapel (Kellerspeicher) speichert eine Ansammlung von Elementen und bietet folgende Operationen:.. I bool isEmpty(Stack s) gibt true zurück, wenn s leer ist und

Für einen gegebenen Knoten s ∈ V (die Quelle / source), bestimme für jeden anderen Knoten t ∈ V , der aus s erreichbar ist, einen kürzesten Pfad von s zu t. Joost-Pieter

I Sonst verbessert der Algorithmus iterativ für jeden Knoten v eine obere Grenze dist[v] an δ(s , v ), bis das Minimum gefunden wird. I Kürzeste Pfade können nach Terminierung

Nehme an, es gibt eine gemeinsame Teilsequenz D von A m−1 und B n−1 mit einer Länge von mindestens k.. Dies widerspricht der Annahme, dass C eine

(Imprimatur Varsoviae die 19. 407 Respons Na List pewny z Warszawy pisany w Materyi Dystrybuty Wakansow Pruskich takže Indygenatu „a recto &amp; bene sentiente Cive

Die Ausleerungen waren in den ersten Tagen regelmässig mehr oder weniger getrübt, auch dann, wenn der Urin in den Gummiblasen aufgefangen wurde, welche sonst auf ihren Inhalt