Grafy - Algorytmy grafowe --- wyszukiwanie najkrótszych ... · Algorytm Prima-Dijkstry 4...

215
Wprowadzenie Najkrótsze ścieżki Minimalne drzewa Najkrótsze ścieżki pomiędzy dowolną parą wierzcholków Grafy Algorytmy grafowe — wyszukiwanie najkrótszych ścieżek i minimalnych drzew spinających Rafal Nowak Instytut Informatyki Wydzial Matematyki i Informatyki Uniwersytet Wroclawski 17 kwietnia 2007 / Majówka z informatyką Rafal Nowak Grafy

Transcript of Grafy - Algorytmy grafowe --- wyszukiwanie najkrótszych ... · Algorytm Prima-Dijkstry 4...

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

GrafyAlgorytmy grafowe — wyszukiwanie najkrótszych ścieżek i minimalnych

drzew spinających

Rafał Nowak

Instytut InformatykiWydział Matematyki i Informatyki

Uniwersytet Wrocławski

17 kwietnia 2007 / Majówka z informatyką

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

GrafŚcieżkaCyklDrzewo

O czym to będzie?

1 Grafy - wprowadzenie

2 Wyszukiwanie najkrótszych ścieżek z jednego źródłaPrzeglądanie grafu wszerzAlgorytm Dijkstry

3 Minimalne drzewa spinająceAlgorytm Prima-Dijkstry

4 Najkrótsze ścieżki pomiędzy dowolną parą wierzchołkówAlgorytm Floyda-Warshalla

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

GrafŚcieżkaCyklDrzewo

Co to jest graf?

Definicja (nieformalna)

Graf to zbiór wierzchołków połączonych krawędziami

Przykłady

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

GrafŚcieżkaCyklDrzewo

Co to jest graf?

Definicja (nieformalna)

Graf to zbiór wierzchołków połączonych krawędziami

Przykłady

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

GrafŚcieżkaCyklDrzewo

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

GrafŚcieżkaCyklDrzewo

Wzorzec = abaaba

START b

a

a

a

ab

b

b

aba

a b

abaa

a

a

abaab

b

abaaba

a

b

a

Definicja (formalna)

Graf to para 〈V,E〉, gdzie V - oznacza zbiór wierzchołków,a E ⊂ V × V oznacza zbiór krawędzi. Krawędź 〈u, v〉 ∈ Ejest

parą uporządkowaną, w wypadku grafów skierowanych— digrafów,

parą nieuporządkowaną, w wypadku grafównieskierowanych

Definicja

Ścieżka to ciąg krawędzi 〈u1, u2〉, 〈u2, u3〉, . . . , 〈un−1, un〉

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

GrafŚcieżkaCyklDrzewo

a

b

d

e

c

0

2,2

1,1

1,2

1,2

2,1

1,0

Definicja

Cyklem nazywamy ścieżkę dla której u1 = un, tj. zaczynającąi kończącą się w tym samym wierzchołku.

Definicja

Stopniem wierzchołka u nazywamy liczbę krawędzi z nimpołączonych. Dla grafów skierowanych można mówić o stopniuwejściowym i wyjściowym.

Definicja (spójność)

Graf nieskierowany G jest spójny, jeśli każda para wierzchołkówjest połączona pewną ścieżką.

Definicja (acykliczność)

Graf nie zawierający żadnego cyklu nazywamy acyklicznym.

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

GrafŚcieżkaCyklDrzewo

a

b

d

e

c

0

2,2

1,1

1,2

1,2

2,1

1,0

Definicja

Cyklem nazywamy ścieżkę dla której u1 = un, tj. zaczynającąi kończącą się w tym samym wierzchołku.

Definicja

Stopniem wierzchołka u nazywamy liczbę krawędzi z nimpołączonych. Dla grafów skierowanych można mówić o stopniuwejściowym i wyjściowym.

Definicja (spójność)

Graf nieskierowany G jest spójny, jeśli każda para wierzchołkówjest połączona pewną ścieżką.

Definicja (acykliczność)

Graf nie zawierający żadnego cyklu nazywamy acyklicznym.

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

GrafŚcieżkaCyklDrzewo

a

b

d

e

c

0

2,2

1,1

1,2

1,2

2,1

1,0

Definicja

Cyklem nazywamy ścieżkę dla której u1 = un, tj. zaczynającąi kończącą się w tym samym wierzchołku.

Definicja

Stopniem wierzchołka u nazywamy liczbę krawędzi z nimpołączonych. Dla grafów skierowanych można mówić o stopniuwejściowym i wyjściowym.

Definicja (spójność)

Graf nieskierowany G jest spójny, jeśli każda para wierzchołkówjest połączona pewną ścieżką.

Definicja (acykliczność)

Graf nie zawierający żadnego cyklu nazywamy acyklicznym.

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

GrafŚcieżkaCyklDrzewo

a

b

d

e

c

0

2,2

1,1

1,2

1,2

2,1

1,0

Definicja

Cyklem nazywamy ścieżkę dla której u1 = un, tj. zaczynającąi kończącą się w tym samym wierzchołku.

Definicja

Stopniem wierzchołka u nazywamy liczbę krawędzi z nimpołączonych. Dla grafów skierowanych można mówić o stopniuwejściowym i wyjściowym.

Definicja (spójność)

Graf nieskierowany G jest spójny, jeśli każda para wierzchołkówjest połączona pewną ścieżką.

Definicja (acykliczność)

Graf nie zawierający żadnego cyklu nazywamy acyklicznym.

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

GrafŚcieżkaCyklDrzewo

Definicja

Drzewem nazywamy acykliczny graf spójny

Twierdzenie

Niech graf G ma n wierzchołków; poniższe zdania są równoważne:

G jest drzewem

G jest spójny i ma n− 1 krawędziG jest acykliczny i ma n− 1 krawędzi

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

GrafŚcieżkaCyklDrzewo

Definicja

Drzewem nazywamy acykliczny graf spójny

Twierdzenie

Niech graf G ma n wierzchołków; poniższe zdania są równoważne:

G jest drzewem

G jest spójny i ma n− 1 krawędziG jest acykliczny i ma n− 1 krawędzi

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

O czym to będzie?

1 Grafy - wprowadzenie

2 Wyszukiwanie najkrótszych ścieżek z jednego źródłaPrzeglądanie grafu wszerzAlgorytm Dijkstry

3 Minimalne drzewa spinająceAlgorytm Prima-Dijkstry

4 Najkrótsze ścieżki pomiędzy dowolną parą wierzchołkówAlgorytm Floyda-Warshalla

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Problem

Definicja

Odległością wierzchołka u od v jest długość najkrótszej ścieżki łączej uz v, przy czym, na razie, długość ścieżki określamy jako liczbę jejkrawędzi.

Problem

Dane:

graf (skierowany) G = 〈V,E〉pewien wierzchołek u ∈ V (źródło, ujście)

Wynik:

odległości wierzchołka u do wszystkich pozostałych wierzchołków

najkrótsze ścieżki wyznaczające te odległości

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Problem

Definicja

Odległością wierzchołka u od v jest długość najkrótszej ścieżki łączej uz v, przy czym, na razie, długość ścieżki określamy jako liczbę jejkrawędzi.

Problem

Dane:

graf (skierowany) G = 〈V,E〉pewien wierzchołek u ∈ V (źródło, ujście)

Wynik:

odległości wierzchołka u do wszystkich pozostałych wierzchołków

najkrótsze ścieżki wyznaczające te odległości

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Problem

Definicja

Odległością wierzchołka u od v jest długość najkrótszej ścieżki łączej uz v, przy czym, na razie, długość ścieżki określamy jako liczbę jejkrawędzi.

Problem

Dane:

graf (skierowany) G = 〈V,E〉pewien wierzchołek u ∈ V (źródło, ujście)

Wynik:

odległości wierzchołka u do wszystkich pozostałych wierzchołków

najkrótsze ścieżki wyznaczające te odległości

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Problem

Definicja

Odległością wierzchołka u od v jest długość najkrótszej ścieżki łączej uz v, przy czym, na razie, długość ścieżki określamy jako liczbę jejkrawędzi.

Problem

Dane:

graf (skierowany) G = 〈V,E〉pewien wierzchołek u ∈ V (źródło, ujście)

Wynik:

odległości wierzchołka u do wszystkich pozostałych wierzchołków

najkrótsze ścieżki wyznaczające te odległości

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład 1 (drzewo)

1

7

2

10

12

85

3

11 14

46

9

13

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład 1 (drzewo)

INF

INF

INF

INF

INF

INF0

INF

INF INF

INFINF

INF

INF

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład 1 (drzewo)

2

3

1

3

4

40

2

4 4

34

4

5

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład 1 (drzewo)

INF

INF

INF

INF

INF

INF0

INF

INF INF

INFINF

INF

INF

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład 1 (drzewo)

INF

INF

1

INF

INF

INF0

INF

INF INF

INFINF

INF

INF

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład 1 (drzewo)

INF

INF

1

INF

INF

INF0

INF

INF INF

INFINF

INF

INF

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład 1 (drzewo)

2

INF

1

INF

INF

INF0

INF

INF INF

INFINF

INF

INF

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład 1 (drzewo)

2

INF

1

INF

INF

INF0

2

INF INF

INFINF

INF

INF

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład 1 (drzewo)

2

INF

1

INF

INF

INF0

2

INF INF

INFINF

INF

INF

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład 1 (drzewo)

2

3

1

INF

INF

INF0

2

INF INF

INFINF

INF

INF

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład 1 (drzewo)

2

3

1

3

INF

INF0

2

INF INF

INFINF

INF

INF

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład 1 (drzewo)

2

3

1

3

INF

INF0

2

INF INF

INFINF

INF

INF

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład 1 (drzewo)

2

3

1

3

INF

INF0

2

INF INF

3INF

INF

INF

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład 1 (drzewo)

2

3

1

3

INF

INF0

2

INF INF

3INF

INF

INF

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład 1 (drzewo)

2

3

1

3

4

40

2

INF INF

34

INF

INF

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład 1 (drzewo)

2

3

1

3

4

40

2

INF INF

34

INF

INF

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład 1 (drzewo)

2

3

1

3

4

40

2

4 4

34

4

INF

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład 1 (drzewo)

2

3

1

3

4

40

2

4 4

34

4

INF

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład 1 (drzewo)

2

3

1

3

4

40

2

4 4

34

4

INF

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład 1 (drzewo)

2

3

1

3

4

40

2

4 4

34

4

INF

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład 1 (drzewo)

2

3

1

3

4

40

2

4 4

34

4

INF

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład 1 (drzewo)

2

3

1

3

4

40

2

4 4

34

4

INF

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład 1 (drzewo)

2

3

1

3

4

40

2

4 4

34

4

INF

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład 1 (drzewo)

2

3

1

3

4

40

2

4 4

34

4

5

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład 1 (drzewo)

2

3

1

3

4

40

2

4 4

34

4

5

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład 1 (drzewo)

2

3

1

3

4

40

2

4 4

34

4

5

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład 1 (drzewo)

2

3

1

3

4

40

2

4 4

34

4

5

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład 2

INF

INF

INF

INF INF

INF

INF

0 INFINF

INF

INF INFINFINF

INF

INF

INF

INF

INF

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład 2

INF

INF

INF

INF INF

INF

INF

0 INFINF

INF

INF INF1INF

INF

INF

INF

INF

INF

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład 2

INF

INF

INF

INF INF

INF

INF

0 INFINF

INF

INF INF1INF

INF

INF

INF

1

INF

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład 2

INF

INF

INF

1 INF

INF

INF

0 INFINF

INF

INF INF1INF

INF

INF

INF

1

INF

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład 2

INF

INF

INF

1 INF

INF

INF

0 INFINF

INF

INF INF1INF

INF

INF

INF

1

INF

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład 2

INF

INF

INF

1 2

INF

INF

0 INFINF

INF

INF INF1INF

INF

INF

INF

1

INF

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład 2

INF

INF

2

1 2

INF

INF

0 INFINF

INF

INF INF1INF

INF

INF

INF

1

INF

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład 2

INF

INF

2

1 2

INF

INF

0 INFINF

INF

INF INF1INF

INF

INF

INF

1

INF

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład 2

INF

INF

2

1 2

INF

INF

0 INFINF

INF

INF INF1INF

INF

INF

INF

1

2

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład 2

INF

INF

2

1 2

INF

INF

0 INFINF

INF

INF INF1INF

INF

INF

INF

1

2

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład 2

2

INF

2

1 2

2

INF

0 22

INF

INF INF12

INF

INF

INF

1

2

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład 2

2

INF

2

1 2

2

INF

0 22

INF

INF INF12

INF

INF

INF

1

2

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład 2

2

3

2

1 2

2

INF

0 22

INF

INF INF12

INF

INF

INF

1

2

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład 2

2

3

2

1 2

2

INF

0 22

INF

INF INF12

INF

INF

INF

1

2

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład 2

2

3

2

1 2

2

3

0 22

INF

INF INF12

INF

INF

INF

1

2

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład 2

2

3

2

1 2

2

3

0 22

INF

INF INF12

INF

INF

INF

1

2

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład 2

2

3

2

1 2

2

3

0 22

INF

INF INF12

INF

INF

INF

1

2

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład 2

2

3

2

1 2

2

3

0 22

INF

INF INF12

INF

INF

INF

1

2

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład 2

2

3

2

1 2

2

3

0 22

INF

INF INF12

INF

INF

INF

1

2

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład 2

2

3

2

1 2

2

3

0 22

INF

INF INF12

INF

INF

INF

1

2

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład 2

2

3

2

1 2

2

3

0 22

INF

INF INF12

INF

INF

INF

1

2

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład 2

2

3

2

1 2

2

3

0 22

INF

INF INF12

INF

INF

INF

1

2

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład 2

2

3

2

1 2

2

3

0 22

4

INF INF12

INF

INF

INF

1

2

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład 2

2

3

2

1 2

2

3

0 22

4

INF INF12

INF

INF

INF

1

2

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład 2

2

3

2

1 2

2

3

0 22

4

INF INF12

4

INF

INF

1

2

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład 2

2

3

2

1 2

2

3

0 22

4

INF INF12

4

INF

INF

1

2

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład 2

2

3

2

1 2

2

3

0 22

4

5 512

4

INF

INF

1

2

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład 2

2

3

2

1 2

2

3

0 22

4

5 512

4

INF

INF

1

2

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład 2

2

3

2

1 2

2

3

0 22

4

5 512

4

5

INF

1

2

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład 2

2

3

2

1 2

2

3

0 22

4

5 512

4

5

INF

1

2

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład 2

2

3

2

1 2

2

3

0 22

4

5 512

4

5

INF

1

2

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład 2

2

3

2

1 2

2

3

0 22

4

5 512

4

5

INF

1

2

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład 2

2

3

2

1 2

2

3

0 22

4

5 512

4

5

6

1

2

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład 2

2

3

2

1 2

2

3

0 22

4

5 512

4

5

6

1

2

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład 2

2

3

2

1 2

2

3

0 22

4

5 512

4

5

6

1

2

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przeglądanie Grafu Wszerz (ang. breadth first search)

BFS(G, s)

1: for all u ∈ V do2: color[u]← BIAŁY; dist[u]←∞; prev[u]← NIL3: end for4: color[s]← CZERWONY; dist[s]← 0; Q.push(s)5: while not Q.empty() do6: u← Q.front() {u to wierzchołek pierwszy w kolejce}7: for all v ∈ Adj[u] do8: if color[v] = BIAŁY then9: color[v]← CZERWONY10: dist[v]← dist[u] + 1; prev[v]← u11: Q.push(v) {wstaw v na koniec kolejki}12: end if13: end for14: Q.pop(); color[u]← SZARY {zabierz u z kolejki i pomaluj go na szaro}15: end while

Złożoność: O(n+m), alg. Dijkstry

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Problem

Rozważmy teraz grafy ważone, tzn. niech dana będzie nieujemnafunkcja wagowa c : E → 〈0,∞).

Długość ścieżki definiujemy jako sumę wag jej krawędzi

a

b

15

d

8

10

c

10

7

B

C

10

A

10

D

7 8

Problem

Dane:

ważony graf (skierowany)G = 〈V,E, c : E → 〈0,∞)〉pewien wierzchołek u ∈ V (źródło, ujście)

Wynik:

odległości wierzchołka u do wszystkichpozostałych wierzchołków

najkrótsze ścieżki wyznaczające te odległości

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Problem

Rozważmy teraz grafy ważone, tzn. niech dana będzie nieujemnafunkcja wagowa c : E → 〈0,∞).Długość ścieżki definiujemy jako sumę wag jej krawędzi

a

b

15

d

8

10

c

10

7

B

C

10

A

10

D

7 8

Problem

Dane:

ważony graf (skierowany)G = 〈V,E, c : E → 〈0,∞)〉pewien wierzchołek u ∈ V (źródło, ujście)

Wynik:

odległości wierzchołka u do wszystkichpozostałych wierzchołków

najkrótsze ścieżki wyznaczające te odległości

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Problem

Rozważmy teraz grafy ważone, tzn. niech dana będzie nieujemnafunkcja wagowa c : E → 〈0,∞).Długość ścieżki definiujemy jako sumę wag jej krawędzi

a

b

15

d

8

10

c

10

7

B

C

10

A

10

D

7 8

Problem

Dane:

ważony graf (skierowany)G = 〈V,E, c : E → 〈0,∞)〉pewien wierzchołek u ∈ V (źródło, ujście)

Wynik:

odległości wierzchołka u do wszystkichpozostałych wierzchołków

najkrótsze ścieżki wyznaczające te odległości

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Problem

Rozważmy teraz grafy ważone, tzn. niech dana będzie nieujemnafunkcja wagowa c : E → 〈0,∞).Długość ścieżki definiujemy jako sumę wag jej krawędzi

a

b

15

d

8

10

c

10

7

B

C

10

A

10

D

7 8

Problem

Dane:

ważony graf (skierowany)G = 〈V,E, c : E → 〈0,∞)〉pewien wierzchołek u ∈ V (źródło, ujście)

Wynik:

odległości wierzchołka u do wszystkichpozostałych wierzchołków

najkrótsze ścieżki wyznaczające te odległości

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Problem

Rozważmy teraz grafy ważone, tzn. niech dana będzie nieujemnafunkcja wagowa c : E → 〈0,∞).Długość ścieżki definiujemy jako sumę wag jej krawędzi

a

b

15

d

8

10

c

10

7

B

C

10

A

10

D

7 8

Problem

Dane:

ważony graf (skierowany)G = 〈V,E, c : E → 〈0,∞)〉pewien wierzchołek u ∈ V (źródło, ujście)

Wynik:

odległości wierzchołka u do wszystkichpozostałych wierzchołków

najkrótsze ścieżki wyznaczające te odległości

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

BFS – źle działa

0

INF

5

INF

100

INF

6

INF1

INF

2

INF

100

100

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

BFS – źle działa

0

5

5

INF

100

INF

6

INF1

INF

2

INF

100

100

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

BFS – źle działa

0

5

5

100

100

INF

6

INF1

INF

2

INF

100

100

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

BFS – źle działa

0

5

5

100

100

INF

6

INF1

INF

2

INF

100

100

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

BFS – źle działa

0

5

5

100

100

11

6

INF1

INF

2

INF

100

100

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

BFS – źle działa

0

5

5

100

100

11

6

INF1

INF

2

INF

100

100

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

BFS – źle działa

0

5

5

100

100

11

6

INF1

INF

2

200

100

100

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

BFS – źle działa

0

5

5

100

100

11

6

INF1

INF

2

200

100

100

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

BFS – źle działa

0

5

5

100

100

11

6

121

INF

2

200

100

100

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

BFS – źle działa

0

5

5

100

100

11

6

121

INF

2

200

100

100

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

BFS – źle działa

0

5

5

100

100

11

6

121

300

2

200

100

100

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

BFS – źle działa

0

5

5

100

100

11

6

121

300

2

200

100

100

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

BFS – źle działa

0

5

5

100

100

11

6

121

300

2

200

100

100

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

BFS – źle działa

0

5

5

100

100

11

6

121

300

2

200

100

100

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Algorytm BFS należy zmodyfikować tak, aby wybierał z kolejkiwierzchołki o najmniejszej odległości od źródła

Tak zmodyfikowany algorytm powinień poprawiać odległości nawetczerwonym (czyli odwiedzonym wcześniej) wierzchołkom

W ten sposób, otrzymujemy algorytm Dijkstry

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Algorytm BFS należy zmodyfikować tak, aby wybierał z kolejkiwierzchołki o najmniejszej odległości od źródła

Tak zmodyfikowany algorytm powinień poprawiać odległości nawetczerwonym (czyli odwiedzonym wcześniej) wierzchołkom

W ten sposób, otrzymujemy algorytm Dijkstry

0

INF

5

INF

100

INF

6

INF1

INF

2

INF

100

100

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Algorytm BFS należy zmodyfikować tak, aby wybierał z kolejkiwierzchołki o najmniejszej odległości od źródła

Tak zmodyfikowany algorytm powinień poprawiać odległości nawetczerwonym (czyli odwiedzonym wcześniej) wierzchołkom

W ten sposób, otrzymujemy algorytm Dijkstry

0

5

5

INF

100

INF

6

INF1

INF

2

INF

100

100

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Algorytm BFS należy zmodyfikować tak, aby wybierał z kolejkiwierzchołki o najmniejszej odległości od źródła

Tak zmodyfikowany algorytm powinień poprawiać odległości nawetczerwonym (czyli odwiedzonym wcześniej) wierzchołkom

W ten sposób, otrzymujemy algorytm Dijkstry

0

5

5

100

100

INF

6

INF1

INF

2

INF

100

100

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Algorytm BFS należy zmodyfikować tak, aby wybierał z kolejkiwierzchołki o najmniejszej odległości od źródła

Tak zmodyfikowany algorytm powinień poprawiać odległości nawetczerwonym (czyli odwiedzonym wcześniej) wierzchołkom

W ten sposób, otrzymujemy algorytm Dijkstry

0

5

5

100

100

INF

6

INF1

INF

2

INF

100

100

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Algorytm BFS należy zmodyfikować tak, aby wybierał z kolejkiwierzchołki o najmniejszej odległości od źródła

Tak zmodyfikowany algorytm powinień poprawiać odległości nawetczerwonym (czyli odwiedzonym wcześniej) wierzchołkom

W ten sposób, otrzymujemy algorytm Dijkstry

0

5

5

100

100

11

6

INF1

INF

2

INF

100

100

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Algorytm BFS należy zmodyfikować tak, aby wybierał z kolejkiwierzchołki o najmniejszej odległości od źródła

Tak zmodyfikowany algorytm powinień poprawiać odległości nawetczerwonym (czyli odwiedzonym wcześniej) wierzchołkom

W ten sposób, otrzymujemy algorytm Dijkstry

0

5

5

100

100

11

6

INF1

INF

2

INF

100

100

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Algorytm BFS należy zmodyfikować tak, aby wybierał z kolejkiwierzchołki o najmniejszej odległości od źródła

Tak zmodyfikowany algorytm powinień poprawiać odległości nawetczerwonym (czyli odwiedzonym wcześniej) wierzchołkom

W ten sposób, otrzymujemy algorytm Dijkstry

0

5

5

100

100

11

6

121

INF

2

INF

100

100

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Algorytm BFS należy zmodyfikować tak, aby wybierał z kolejkiwierzchołki o najmniejszej odległości od źródła

Tak zmodyfikowany algorytm powinień poprawiać odległości nawetczerwonym (czyli odwiedzonym wcześniej) wierzchołkom

W ten sposób, otrzymujemy algorytm Dijkstry

0

5

5

100

100

11

6

121

INF

2

INF

100

100

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Algorytm BFS należy zmodyfikować tak, aby wybierał z kolejkiwierzchołki o najmniejszej odległości od źródła

Tak zmodyfikowany algorytm powinień poprawiać odległości nawetczerwonym (czyli odwiedzonym wcześniej) wierzchołkom

W ten sposób, otrzymujemy algorytm Dijkstry

0

5

5

100

100

11

6

121

14

2

INF

100

100

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Algorytm BFS należy zmodyfikować tak, aby wybierał z kolejkiwierzchołki o najmniejszej odległości od źródła

Tak zmodyfikowany algorytm powinień poprawiać odległości nawetczerwonym (czyli odwiedzonym wcześniej) wierzchołkom

W ten sposób, otrzymujemy algorytm Dijkstry

0

5

5

100

100

11

6

121

14

2

INF

100

100

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Algorytm BFS należy zmodyfikować tak, aby wybierał z kolejkiwierzchołki o najmniejszej odległości od źródła

Tak zmodyfikowany algorytm powinień poprawiać odległości nawetczerwonym (czyli odwiedzonym wcześniej) wierzchołkom

W ten sposób, otrzymujemy algorytm Dijkstry

0

5

5

100

100

11

6

121

14

2

114

100

100

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Algorytm BFS należy zmodyfikować tak, aby wybierał z kolejkiwierzchołki o najmniejszej odległości od źródła

Tak zmodyfikowany algorytm powinień poprawiać odległości nawetczerwonym (czyli odwiedzonym wcześniej) wierzchołkom

W ten sposób, otrzymujemy algorytm Dijkstry

0

5

5

100

100

11

6

121

14

2

114

100

100

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Algorytm BFS należy zmodyfikować tak, aby wybierał z kolejkiwierzchołki o najmniejszej odległości od źródła

Tak zmodyfikowany algorytm powinień poprawiać odległości nawetczerwonym (czyli odwiedzonym wcześniej) wierzchołkom

W ten sposób, otrzymujemy algorytm Dijkstry

0

5

5

100

100

11

6

121

14

2

114

100

100

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Algorytm BFS należy zmodyfikować tak, aby wybierał z kolejkiwierzchołki o najmniejszej odległości od źródła

Tak zmodyfikowany algorytm powinień poprawiać odległości nawetczerwonym (czyli odwiedzonym wcześniej) wierzchołkom

W ten sposób, otrzymujemy algorytm Dijkstry

0

5

5

100

100

11

6

121

14

2

114

100

100

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład

INF

INF

12

INF

5

INF

50

INF

10

10

INF

6

INF

4

30

INF

4

INF

7 80 INF

10

18

INF

1

INF

13 INF

2

0

15

1

10

10

13INF

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład

INF

INF

12

INF

5

INF

50

INF

10

10

INF

6

INF

4

30

INF

4

INF

7 80 INF

10

18

INF

1

INF

13 INF

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład

INF

INF

12

INF

5

INF

50

INF

10

10

INF

6

INF

4

30

INF

4

15

7 80 INF

10

18

INF

1

INF

13 INF

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład

INF

INF

12

INF

5

INF

50

INF

10

10

INF

6

INF

4

30

INF

4

15

7 80 INF

10

18

INF

1

INF

13 INF

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład

INF

INF

12

INF

5

INF

50

20

10

10

INF

6

INF

4

30

INF

4

15

7 80 INF

10

18

INF

1

INF

13 INF

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład

INF

INF

12

INF

5

INF

50

20

10

10

INF

6

INF

4

30

INF

4

15

7 80 INF

10

18

INF

1

INF

13 INF

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład

INF

INF

12

INF

5

INF

50

20

10

10

INF

6

INF

4

30

INF

4

15

7 80 25

10

18

INF

1

INF

13 INF

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład

INF

INF

12

INF

5

INF

50

20

10

10

33

6

INF

4

30

INF

4

15

7 80 25

10

18

INF

1

INF

13 INF

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład

INF

INF

12

INF

5

INF

50

20

10

10

33

6

INF

4

30

INF

4

15

7 80 25

10

18

16

1

INF

13 INF

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład

INF

INF

12

INF

5

INF

50

20

10

10

33

6

INF

4

30

INF

4

15

7 80 25

10

18

16

1

28

13 INF

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład

INF

INF

12

22

5

INF

50

20

10

10

33

6

INF

4

30

INF

4

15

7 80 25

10

18

16

1

28

13 INF

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład

INF

INF

12

22

5

INF

50

20

10

10

33

6

INF

4

30

INF

4

15

7 80 25

10

18

16

1

28

13 17

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład

INF

INF

12

22

5

95

50

20

10

10

33

6

INF

4

30

INF

4

15

7 80 25

10

18

16

1

28

13 17

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład

INF

INF

12

22

5

95

50

20

10

10

33

6

INF

4

30

INF

4

15

7 80 25

10

18

16

1

28

13 17

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład

INF

INF

12

22

5

95

50

20

10

10

33

6

INF

4

30

INF

4

15

7 80 25

10

18

16

1

28

13 17

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład

INF

INF

12

22

5

95

50

20

10

10

33

6

30

4

30

INF

4

15

7 80 25

10

18

16

1

28

13 17

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład

INF

INF

12

22

5

95

50

20

10

10

33

6

30

4

30

INF

4

15

7 80 25

10

18

16

1

27

13 17

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład

INF

INF

12

22

5

95

50

20

10

10

33

6

30

4

30

INF

4

15

7 80 25

10

18

16

1

27

13 17

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład

INF

INF

12

22

5

95

50

20

10

10

33

6

30

4

30

INF

4

15

7 80 25

10

18

16

1

21

13 17

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład

INF

50

12

22

5

95

50

20

10

10

33

6

30

4

30

INF

4

15

7 80 25

10

18

16

1

21

13 17

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład

30

50

12

22

5

95

50

20

10

10

33

6

30

4

30

INF

4

15

7 80 25

10

18

16

1

21

13 17

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład

30

50

12

22

5

95

50

20

10

10

33

6

30

4

30

24

4

15

7 80 25

10

18

16

1

21

13 17

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład

30

50

12

22

5

95

50

20

10

10

33

6

30

4

30

24

4

15

7 80 25

10

18

16

1

21

13 17

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład

30

50

12

22

5

95

50

20

10

10

33

6

30

4

30

24

4

15

7 80 25

10

18

16

1

21

13 17

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład

27

50

12

22

5

95

50

20

10

10

33

6

30

4

30

24

4

15

7 80 25

10

18

16

1

21

13 17

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład

27

50

12

22

5

95

50

20

10

10

33

6

30

4

30

24

4

15

7 80 25

10

18

16

1

21

13 17

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład

27

50

12

22

5

95

50

20

10

10

33

6

30

4

30

24

4

15

7 80 25

10

18

16

1

21

13 17

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład

27

50

12

22

5

95

50

20

10

10

33

6

30

4

30

24

4

15

7 80 25

10

18

16

1

21

13 17

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład

27

39

12

22

5

95

50

20

10

10

33

6

30

4

30

24

4

15

7 80 25

10

18

16

1

21

13 17

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład

27

39

12

22

5

77

50

20

10

10

33

6

30

4

30

24

4

15

7 80 25

10

18

16

1

21

13 17

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład

27

39

12

22

5

77

50

20

10

10

33

6

30

4

30

24

4

15

7 80 25

10

18

16

1

21

13 17

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład

27

39

12

22

5

34

50

20

10

10

33

6

30

4

30

24

4

15

7 80 25

10

18

16

1

21

13 17

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład

27

39

12

22

5

34

50

20

10

10

33

6

30

4

30

24

4

15

7 80 25

10

18

16

1

21

13 17

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład

27

39

12

22

5

34

50

20

10

10

33

6

30

4

30

24

4

15

7 80 25

10

18

16

1

21

13 17

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład

27

39

12

22

5

34

50

20

10

10

33

6

30

4

30

24

4

15

7 80 25

10

18

16

1

21

13 17

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Przykład

27

39

12

22

5

34

50

20

10

10

33

6

30

4

30

24

4

15

7 80 25

10

18

16

1

21

13 17

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Dijkstra(G, s)

1: dist[s]← 0; Q.insert(s)2: for all u ∈ V \ {s} do3: dist[u]←∞; prev[u]← NIL; Q.insert(u)4: end for5: while not Q.empty() do6: u← Q.min() {u to wierzchołek z minimalną wartością dist}7: for all v ∈ Adj[u] do8: if dist[u] + c (〈u, v〉) < dist[v] then9: dist[v]← dist[u] + c (〈u, v〉); prev[v]← u10: Q.decreaseKey(v) {uaktualnij kolejkę Q}11: end if12: end for13: Q.delMin() {usuń minimalny wierzchołek z kolejki priorytetowej}14: end while

Złożoność: O ((m+ n) logn) = O(n2 logn

),O (m+ n logn) = O

(n2),

alg. BFS , alg. Prima-Dijkstry

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

BFSDijkstra

Algorytm Dijkstry znajduje pewne drzewo spinające

27

39

12

22

5

34

50

20

10

10

33

6

30

4

30

24

4

15

7 80 25

10

18

16

1

21

13 17

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

Prim-Dijkstra

O czym to będzie?

1 Grafy - wprowadzenie

2 Wyszukiwanie najkrótszych ścieżek z jednego źródłaPrzeglądanie grafu wszerzAlgorytm Dijkstry

3 Minimalne drzewa spinająceAlgorytm Prima-Dijkstry

4 Najkrótsze ścieżki pomiędzy dowolną parą wierzchołkówAlgorytm Floyda-Warshalla

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

Prim-Dijkstra

Problem

Dane:

nieskierowany graf ważony G = 〈V,E, c〉, c : E → 〈< 0,∞)Wynik:

minimalne drzewo spinające grafu G (ang. minimum spanning tree), tj.takie drzewo spinające, dla którego suma wag na krawędziach jestminimalna.

99

818

3

6

9

42

10

8 7

93

4

9

29 5

4

1

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

Prim-Dijkstra

Problem

Dane:

nieskierowany graf ważony G = 〈V,E, c〉, c : E → 〈< 0,∞)Wynik:

minimalne drzewo spinające grafu G (ang. minimum spanning tree), tj.takie drzewo spinające, dla którego suma wag na krawędziach jestminimalna.

99

818

3

6

9

42

10

8 7

93

4

9

29 5

4

1

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

Prim-Dijkstra

Algorytm Dijkstry nie znajduje minimalnego drzewa spinającego

27

39

12

22

5

34

50

20

10

10

33

6

30

4

30

24

4

15

7 80 25

10

18

16

1

21

13 17

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

Prim-Dijkstra

Algorytm Prima-Dijkstry znajduje minimalne drzewo spinające

5

12

12

7

5

4

50

1

10

10

6

6

13

4

30

4

4

15

7 80 10

10

18

1

1

10

13 2

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

Prim-Dijkstra

Algorytm Dijkstry należy zmodyfikować tak, abydist[v] = c (〈prev[v], v))

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

Prim-Dijkstra

Przykład

INF

INF

12

INF

5

INF

50

INF

10

10

INF

6

INF

4

30

INF

4

INF

7 80 INF

10

18

INF

1

INF

13 INF

2

0

15

1

10

10

13INF

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

Prim-Dijkstra

Przykład

INF

INF

12

INF

5

INF

50

INF

10

10

INF

6

INF

4

30

INF

4

INF

7 80 INF

10

18

INF

1

INF

13 INF

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

Prim-Dijkstra

Przykład

INF

INF

12

INF

5

INF

50

INF

10

10

INF

6

INF

4

30

INF

4

15

7 80 INF

10

18

INF

1

INF

13 INF

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

Prim-Dijkstra

Przykład

INF

INF

12

INF

5

INF

50

INF

10

10

INF

6

INF

4

30

INF

4

15

7 80 INF

10

18

INF

1

INF

13 INF

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

Prim-Dijkstra

Przykład

INF

INF

12

INF

5

INF

50

18

10

10

INF

6

INF

4

30

INF

4

15

7 80 INF

10

18

INF

1

INF

13 INF

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

Prim-Dijkstra

Przykład

INF

INF

12

INF

5

INF

50

18

10

10

INF

6

INF

4

30

INF

4

15

7 80 INF

10

18

INF

1

INF

13 INF

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

Prim-Dijkstra

Przykład

INF

INF

12

INF

5

INF

50

18

10

10

INF

6

INF

4

30

INF

4

15

7 80 10

10

18

INF

1

INF

13 INF

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

Prim-Dijkstra

Przykład

INF

INF

12

INF

5

INF

50

18

10

10

18

6

INF

4

30

INF

4

15

7 80 10

10

18

INF

1

INF

13 INF

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

Prim-Dijkstra

Przykład

INF

INF

12

INF

5

INF

50

18

10

10

18

6

INF

4

30

INF

4

15

7 80 10

10

18

1

1

INF

13 INF

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

Prim-Dijkstra

Przykład

INF

INF

12

INF

5

INF

50

18

10

10

18

6

INF

4

30

INF

4

15

7 80 10

10

18

1

1

13

13 INF

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

Prim-Dijkstra

Przykład

INF

INF

12

7

5

INF

50

18

10

10

18

6

INF

4

30

INF

4

15

7 80 10

10

18

1

1

13

13 INF

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

Prim-Dijkstra

Przykład

INF

INF

12

7

5

INF

50

18

10

10

18

6

INF

4

30

INF

4

15

7 80 10

10

18

1

1

13

13 2

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

Prim-Dijkstra

Przykład

INF

INF

12

7

5

80

50

18

10

10

18

6

INF

4

30

INF

4

15

7 80 10

10

18

1

1

13

13 2

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

Prim-Dijkstra

Przykład

INF

INF

12

7

5

80

50

18

10

10

18

6

INF

4

30

INF

4

15

7 80 10

10

18

1

1

13

13 2

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

Prim-Dijkstra

Przykład

INF

INF

12

7

5

80

50

18

10

10

18

6

INF

4

30

INF

4

15

7 80 10

10

18

1

1

13

13 2

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

Prim-Dijkstra

Przykład

INF

INF

12

7

5

80

50

18

10

10

18

6

13

4

30

INF

4

15

7 80 10

10

18

1

1

13

13 2

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

Prim-Dijkstra

Przykład

INF

INF

12

7

5

80

50

18

10

10

18

6

13

4

30

INF

4

15

7 80 10

10

18

1

1

10

13 2

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

Prim-Dijkstra

Przykład

INF

INF

12

7

5

80

50

18

10

10

18

6

13

4

30

INF

4

15

7 80 10

10

18

1

1

10

13 2

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

Prim-Dijkstra

Przykład

5

INF

12

7

5

80

50

18

10

10

18

6

13

4

30

INF

4

15

7 80 10

10

18

1

1

10

13 2

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

Prim-Dijkstra

Przykład

5

INF

12

7

5

80

50

10

10

10

18

6

13

4

30

INF

4

15

7 80 10

10

18

1

1

10

13 2

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

Prim-Dijkstra

Przykład

5

INF

12

7

5

80

50

10

10

10

18

6

13

4

30

INF

4

15

7 80 10

10

18

1

1

10

13 2

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

Prim-Dijkstra

Przykład

5

12

12

7

5

80

50

10

10

10

18

6

13

4

30

INF

4

15

7 80 10

10

18

1

1

10

13 2

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

Prim-Dijkstra

Przykład

5

12

12

7

5

50

50

10

10

10

18

6

13

4

30

INF

4

15

7 80 10

10

18

1

1

10

13 2

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

Prim-Dijkstra

Przykład

5

12

12

7

5

50

50

10

10

10

18

6

13

4

30

INF

4

15

7 80 10

10

18

1

1

10

13 2

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

Prim-Dijkstra

Przykład

5

12

12

7

5

50

50

1

10

10

18

6

13

4

30

INF

4

15

7 80 10

10

18

1

1

10

13 2

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

Prim-Dijkstra

Przykład

5

12

12

7

5

50

50

1

10

10

18

6

13

4

30

10

4

15

7 80 10

10

18

1

1

10

13 2

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

Prim-Dijkstra

Przykład

5

12

12

7

5

50

50

1

10

10

18

6

13

4

30

10

4

15

7 80 10

10

18

1

1

10

13 2

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

Prim-Dijkstra

Przykład

5

12

12

7

5

50

50

1

10

10

18

6

13

4

30

4

4

15

7 80 10

10

18

1

1

10

13 2

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

Prim-Dijkstra

Przykład

5

12

12

7

5

50

50

1

10

10

18

6

13

4

30

4

4

15

7 80 10

10

18

1

1

10

13 2

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

Prim-Dijkstra

Przykład

5

12

12

7

5

50

50

1

10

10

18

6

13

4

30

4

4

15

7 80 10

10

18

1

1

10

13 2

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

Prim-Dijkstra

Przykład

5

12

12

7

5

50

50

1

10

10

18

6

13

4

30

4

4

15

7 80 10

10

18

1

1

10

13 2

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

Prim-Dijkstra

Przykład

5

12

12

7

5

50

50

1

10

10

18

6

13

4

30

4

4

15

7 80 10

10

18

1

1

10

13 2

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

Prim-Dijkstra

Przykład

5

12

12

7

5

50

50

1

10

10

6

6

13

4

30

4

4

15

7 80 10

10

18

1

1

10

13 2

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

Prim-Dijkstra

Przykład

5

12

12

7

5

4

50

1

10

10

6

6

13

4

30

4

4

15

7 80 10

10

18

1

1

10

13 2

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

Prim-Dijkstra

Przykład

5

12

12

7

5

4

50

1

10

10

6

6

13

4

30

4

4

15

7 80 10

10

18

1

1

10

13 2

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

Prim-Dijkstra

Przykład

5

12

12

7

5

4

50

1

10

10

6

6

13

4

30

4

4

15

7 80 10

10

18

1

1

10

13 2

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

Prim-Dijkstra

Przykład

5

12

12

7

5

4

50

1

10

10

6

6

13

4

30

4

4

15

7 80 10

10

18

1

1

10

13 2

2

0

15

1

10

10

132

2

6

20

18

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

Prim-Dijkstra

Dijkstra-Prim(G, s = 1)

1: dist[s]← 0; Q.insert(s)2: for all u ∈ V \ {s} do3: dist[u]←∞; prev[u]← NIL; Q.insert(u)4: end for5: while not Q.empty() do6: u← Q.min() {u to wierzchołek z minimalną wartością dist}7: for all v ∈ Adj[u] ∩Q do8: if c (〈u, v〉) < dist[v] then9: dist[v]← c (〈u, v〉); prev[v]← u10: Q.decreaseKey(v) {uaktualnij kolejkę Q}11: end if12: end for13: Q.delMin() {usuń minimalny wierzchołek z kolejki priorytetowej}14: end while

Złożoność: O ((m+ n) logn) = O(n2 logn

),O (m+ n logn) = O

(n2),

alg. Dijkstry

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

Floyd-Warshall

O czym to będzie?

1 Grafy - wprowadzenie

2 Wyszukiwanie najkrótszych ścieżek z jednego źródłaPrzeglądanie grafu wszerzAlgorytm Dijkstry

3 Minimalne drzewa spinająceAlgorytm Prima-Dijkstry

4 Najkrótsze ścieżki pomiędzy dowolną parą wierzchołkówAlgorytm Floyda-Warshalla

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

Floyd-Warshall

Problem

Problem

Dane:

ważony graf (skierowany) G = 〈V,E, c : E → 〈0,∞)〉

Wynik:

odległości pomiędzy dowolną parą wierzchołków u, v (d[u][v])

najkrótsze ścieżki wyznaczające te odległości

Algorytm Naiwny

dla każdego wierzchołka u ∈ V wykonajza pomocą algorytmu Dijkstra(G, u) oblicz wartościd[u][v]← dist[v]

Złożoność: O (n(m+ n) logn) = O(n3 logn

),O(mn+ n2 logn

)= O(n3),

alg. Dijkstry

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

Floyd-Warshall

Problem

Problem

Dane:

ważony graf (skierowany) G = 〈V,E, c : E → 〈0,∞)〉Wynik:

odległości pomiędzy dowolną parą wierzchołków u, v (d[u][v])

najkrótsze ścieżki wyznaczające te odległości

Algorytm Naiwny

dla każdego wierzchołka u ∈ V wykonajza pomocą algorytmu Dijkstra(G, u) oblicz wartościd[u][v]← dist[v]

Złożoność: O (n(m+ n) logn) = O(n3 logn

),O(mn+ n2 logn

)= O(n3),

alg. Dijkstry

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

Floyd-Warshall

Problem

Problem

Dane:

ważony graf (skierowany) G = 〈V,E, c : E → 〈0,∞)〉Wynik:

odległości pomiędzy dowolną parą wierzchołków u, v (d[u][v])

najkrótsze ścieżki wyznaczające te odległości

Algorytm Naiwny

dla każdego wierzchołka u ∈ V wykonajza pomocą algorytmu Dijkstra(G, u) oblicz wartościd[u][v]← dist[v]

Złożoność: O (n(m+ n) logn) = O(n3 logn

),O(mn+ n2 logn

)= O(n3),

alg. Dijkstry

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

Floyd-Warshall

Algorytm Floyda-Warshalla

Definicja

Wierzchołkiem wewnętrznym ścieżki 〈u1, u2〉, 〈u2, u3〉, . . . , 〈un−1, un〉nazywamy dowolny wierzchołek ze zbioru {u2, u3, . . . , un−1}.

Oznaczenia

Załóżmy, że wierzchołki ze zbioru V są ponumerowane liczbaminaturalnymi od 1 do n.

Niech D[u, v, k] oznacza minimalną długość ścieżki od u do v, którejwierzchołki wewnętrzne należą do zbioru {1, 2, . . . , k},Naszym zadaniem jest obliczyć D[u, v, n] dla dowolnej pary u, v,

Niech

D[u, v, 0] =

0, gdy u = v,c (〈u, v〉) , gdy 〈u, v〉 ∈ E,∞, gdy 〈u, v〉 /∈ E,

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

Floyd-Warshall

Algorytm Floyda-Warshalla

Definicja

Wierzchołkiem wewnętrznym ścieżki 〈u1, u2〉, 〈u2, u3〉, . . . , 〈un−1, un〉nazywamy dowolny wierzchołek ze zbioru {u2, u3, . . . , un−1}.

Oznaczenia

Załóżmy, że wierzchołki ze zbioru V są ponumerowane liczbaminaturalnymi od 1 do n.

Niech D[u, v, k] oznacza minimalną długość ścieżki od u do v, którejwierzchołki wewnętrzne należą do zbioru {1, 2, . . . , k},Naszym zadaniem jest obliczyć D[u, v, n] dla dowolnej pary u, v,

Niech

D[u, v, 0] =

0, gdy u = v,c (〈u, v〉) , gdy 〈u, v〉 ∈ E,∞, gdy 〈u, v〉 /∈ E,

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

Floyd-Warshall

Algorytm Floyda-Warshalla

Definicja

Wierzchołkiem wewnętrznym ścieżki 〈u1, u2〉, 〈u2, u3〉, . . . , 〈un−1, un〉nazywamy dowolny wierzchołek ze zbioru {u2, u3, . . . , un−1}.

Oznaczenia

Załóżmy, że wierzchołki ze zbioru V są ponumerowane liczbaminaturalnymi od 1 do n.

Niech D[u, v, k] oznacza minimalną długość ścieżki od u do v, którejwierzchołki wewnętrzne należą do zbioru {1, 2, . . . , k},

Naszym zadaniem jest obliczyć D[u, v, n] dla dowolnej pary u, v,

Niech

D[u, v, 0] =

0, gdy u = v,c (〈u, v〉) , gdy 〈u, v〉 ∈ E,∞, gdy 〈u, v〉 /∈ E,

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

Floyd-Warshall

Algorytm Floyda-Warshalla

Definicja

Wierzchołkiem wewnętrznym ścieżki 〈u1, u2〉, 〈u2, u3〉, . . . , 〈un−1, un〉nazywamy dowolny wierzchołek ze zbioru {u2, u3, . . . , un−1}.

Oznaczenia

Załóżmy, że wierzchołki ze zbioru V są ponumerowane liczbaminaturalnymi od 1 do n.

Niech D[u, v, k] oznacza minimalną długość ścieżki od u do v, którejwierzchołki wewnętrzne należą do zbioru {1, 2, . . . , k},Naszym zadaniem jest obliczyć D[u, v, n] dla dowolnej pary u, v,

Niech

D[u, v, 0] =

0, gdy u = v,c (〈u, v〉) , gdy 〈u, v〉 ∈ E,∞, gdy 〈u, v〉 /∈ E,

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

Floyd-Warshall

Algorytm Floyda-Warshalla

Definicja

Wierzchołkiem wewnętrznym ścieżki 〈u1, u2〉, 〈u2, u3〉, . . . , 〈un−1, un〉nazywamy dowolny wierzchołek ze zbioru {u2, u3, . . . , un−1}.

Oznaczenia

Załóżmy, że wierzchołki ze zbioru V są ponumerowane liczbaminaturalnymi od 1 do n.

Niech D[u, v, k] oznacza minimalną długość ścieżki od u do v, którejwierzchołki wewnętrzne należą do zbioru {1, 2, . . . , k},Naszym zadaniem jest obliczyć D[u, v, n] dla dowolnej pary u, v,

Niech

D[u, v, 0] =

0, gdy u = v,c (〈u, v〉) , gdy 〈u, v〉 ∈ E,∞, gdy 〈u, v〉 /∈ E,

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

Floyd-Warshall

Jak wyznaczyć D[u, v, k]?Zależność rekurencyjna

u vD[u,v,k-1]

k

u

k

D[u,k,k-1]

v

D[k,v,k-1]

Są dwaj kandydaci na wartość D[u, v, k]:

D[u, v, k − 1] — ścieżka od u do v niewykorzystująca wierzchołka kD[u, k, k − 1] +D[k, v, k − 1] — ścieżka od u do kplus ścieżka od k do v

Jako D[u, v, k] należy obrać wartość minimalną spośróddwóch kandydatów.

Zależność rekurencyjna

D[u, v, k]← min ( D[u, v, k − 1], D[u, k, k − 1] +D[k, v, k − 1] )

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

Floyd-Warshall

Jak wyznaczyć D[u, v, k]?Zależność rekurencyjna

u vD[u,v,k-1]

k

u

k

D[u,k,k-1]

v

D[k,v,k-1]

Są dwaj kandydaci na wartość D[u, v, k]:

D[u, v, k − 1] — ścieżka od u do v niewykorzystująca wierzchołka k

D[u, k, k − 1] +D[k, v, k − 1] — ścieżka od u do kplus ścieżka od k do v

Jako D[u, v, k] należy obrać wartość minimalną spośróddwóch kandydatów.

Zależność rekurencyjna

D[u, v, k]← min ( D[u, v, k − 1], D[u, k, k − 1] +D[k, v, k − 1] )

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

Floyd-Warshall

Jak wyznaczyć D[u, v, k]?Zależność rekurencyjna

u vD[u,v,k-1]

k

u

k

D[u,k,k-1]

v

D[k,v,k-1]

Są dwaj kandydaci na wartość D[u, v, k]:

D[u, v, k − 1] — ścieżka od u do v niewykorzystująca wierzchołka kD[u, k, k − 1] +D[k, v, k − 1] — ścieżka od u do kplus ścieżka od k do v

Jako D[u, v, k] należy obrać wartość minimalną spośróddwóch kandydatów.

Zależność rekurencyjna

D[u, v, k]← min ( D[u, v, k − 1], D[u, k, k − 1] +D[k, v, k − 1] )

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

Floyd-Warshall

Jak wyznaczyć D[u, v, k]?Zależność rekurencyjna

u vD[u,v,k-1]

k

u

k

D[u,k,k-1]

v

D[k,v,k-1]

Są dwaj kandydaci na wartość D[u, v, k]:

D[u, v, k − 1] — ścieżka od u do v niewykorzystująca wierzchołka kD[u, k, k − 1] +D[k, v, k − 1] — ścieżka od u do kplus ścieżka od k do v

Jako D[u, v, k] należy obrać wartość minimalną spośróddwóch kandydatów.

Zależność rekurencyjna

D[u, v, k]← min ( D[u, v, k − 1], D[u, k, k − 1] +D[k, v, k − 1] )

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

Floyd-Warshall

Jak wyznaczyć D[u, v, k]?Zależność rekurencyjna

u vD[u,v,k-1]

k

u

k

D[u,k,k-1]

v

D[k,v,k-1]

Są dwaj kandydaci na wartość D[u, v, k]:

D[u, v, k − 1] — ścieżka od u do v niewykorzystująca wierzchołka kD[u, k, k − 1] +D[k, v, k − 1] — ścieżka od u do kplus ścieżka od k do v

Jako D[u, v, k] należy obrać wartość minimalną spośróddwóch kandydatów.

Zależność rekurencyjna

D[u, v, k]← min ( D[u, v, k − 1], D[u, k, k − 1] +D[k, v, k − 1] )

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

Floyd-Warshall

Floyd-Warshall(G = 〈V,E, c〉)1: for u = 1 to n do2: for v = 1 to n do

3: D[u, v, 0] =

0, gdy u = v,c (〈u, v〉) , gdy 〈u, v〉 ∈ E,∞, gdy 〈u, v〉 /∈ E,

4: end for5: end for6: for k = 1 to n do7: for u = 1 to n do8: for v = 1 to n do9: D[u, v, k]← min (D[u, v, k − 1], D[u, k, k − 1] +D[k, v, k − 1])10: end for11: end for12: end forEnsure: ∀u,v∈V d[u][v] = D[u, v, n]

Złożoność czasowa i pamięciowa: O(n3)

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

Floyd-Warshall

Algorytm Floyda-Warshalla można zaimplementować używającO(n2) pamięci

Aby mieć wiadomość o ścieżce od u do v realizującej najkrótsząodległość, wystarczy pamiętać π[u, v] będądy wierzchołkiempośrednim pomiędzy u i v.

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

Floyd-Warshall

Algorytm Floyda-Warshalla można zaimplementować używającO(n2) pamięciAby mieć wiadomość o ścieżce od u do v realizującej najkrótsząodległość, wystarczy pamiętać π[u, v] będądy wierzchołkiempośrednim pomiędzy u i v.

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

Floyd-Warshall

Floyd-Warshall(G = 〈V,E, c〉)1: for u = 1 to n do2: for v = 1 to n do3: d[u, v]←∞; π[u, v]← NIL4: end for5: d[u, u]← 06: end for7: for all 〈u, v〉 ∈ E do8: d[u, v]← c (〈u, v〉); π[u, v]← u9: end for10: for k = 1 to n do11: for u = 1 to n do12: for v = 1 to n do13: if d[u, v] > d[u, k] + d[k, v] then14: d[u, v]← d[u, k] + d[k, v]; π[u, v]← π[k, v]15: end if16: end for17: end for18: end for

Złożoność czasowa: O(n3), Złożoność pamięciowa: O(n2)

Rafał Nowak Grafy

WprowadzenieNajkrótsze ścieżkiMinimalne drzewa

Najkrótsze ścieżki pomiędzy dowolną parą wierzchołków

Floyd-Warshall

Dziękuję

Koniec

Rafał Nowak Grafy