Grafy - Algorytmy grafowe --- wyszukiwanie najkrótszych ... · Algorytm Prima-Dijkstry 4...
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