![Page 1: Struktury danych i złożoność obliczeniowa Wykład 5....i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott Algorytmy grafowe: •podstawowe pojęcia, •reprezentacja](https://reader036.vdocuments.pub/reader036/viewer/2022070214/61154af36958d76347796db4/html5/thumbnails/1.jpg)
Struktury danych
i złożoność obliczeniowa
Wykład 5.
Prof. dr hab. inż. Jan Magott
![Page 2: Struktury danych i złożoność obliczeniowa Wykład 5....i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott Algorytmy grafowe: •podstawowe pojęcia, •reprezentacja](https://reader036.vdocuments.pub/reader036/viewer/2022070214/61154af36958d76347796db4/html5/thumbnails/2.jpg)
Algorytmy grafowe:
• podstawowe pojęcia,
• reprezentacja grafów,
• metody przeszukiwania,
• minimalne drzewa rozpinające,
• problemy ścieżkowe.
![Page 3: Struktury danych i złożoność obliczeniowa Wykład 5....i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott Algorytmy grafowe: •podstawowe pojęcia, •reprezentacja](https://reader036.vdocuments.pub/reader036/viewer/2022070214/61154af36958d76347796db4/html5/thumbnails/3.jpg)
Algorytmy grafowe: podstawowe pojęcia
Graf nieskierowany jest parą uporządkowaną 𝐺 = 𝑉, 𝐸 , gdzie 𝑉 = 𝑣1, 𝑣2, … , 𝑣𝑛 jest zbiorem wierzchołków (ang.
vertices),
𝐸 = 𝑒1, 𝑒2, … , 𝑒𝑛 jest zbiorem krawędzi (ang. edges),
𝑒𝑖 = {𝑣1, 𝑣2} jest krawędzią będącą zbiorem dwuelementowym
wierzchołków.
𝑣3
𝑣1
𝑣5
𝑣4 𝑣2
𝑣6
𝑒1
𝑒1 = {𝑣1, 𝑣2}
Nie ma pętli {𝑣𝑖 , 𝑣𝑖}.
![Page 4: Struktury danych i złożoność obliczeniowa Wykład 5....i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott Algorytmy grafowe: •podstawowe pojęcia, •reprezentacja](https://reader036.vdocuments.pub/reader036/viewer/2022070214/61154af36958d76347796db4/html5/thumbnails/4.jpg)
Algorytmy grafowe: podstawowe pojęcia
Droga (ścieżka) w grafie nieskierowanym jest ciągiem
krawędzi ({𝑣1, 𝑣2}, 𝑣2, 𝑣3 , … , {𝑣𝑘−2, 𝑣𝑘−1}, 𝑣𝑘−1, 𝑣𝑘 ), który
można wyrazić ciągiem wierzchołków
(𝑣1, 𝑣2, 𝑣3, … , 𝑣𝑘−2, 𝑣𝑘−1, 𝑣𝑘).
𝑣3
𝑣5
𝑣4 𝑣2
𝑣6
𝑣1
({𝑣6, 𝑣5}, 𝑣4, 𝑣5 , {𝑣3, 𝑣4}, {𝑣3, 𝑣2}, 𝑣1, 𝑣2 ) Niekiedy dla uproszczenia przyjmuje się:
((𝑣6, 𝑣5), (𝑣5, 𝑣4), (𝑣4,𝑣3), (𝑣3, 𝑣2), (𝑣2, 𝑣1))
(𝑣6, 𝑣5, 𝑣4, 𝑣3, 𝑣2 , 𝑣1 )
![Page 5: Struktury danych i złożoność obliczeniowa Wykład 5....i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott Algorytmy grafowe: •podstawowe pojęcia, •reprezentacja](https://reader036.vdocuments.pub/reader036/viewer/2022070214/61154af36958d76347796db4/html5/thumbnails/5.jpg)
Algorytmy grafowe: podstawowe pojęcia
Graf skierowany jest parą uporządkowaną 𝐺 = 𝑉, 𝐴 , gdzie
𝑉 = 𝑣1, 𝑣2, … , 𝑣𝑛 jest zbiorem wierzchołków (ang. vertices),
𝐴 = 𝑎1, 𝑎2, … , 𝑎𝑛 jest zbiorem łuków (ang. arcs),
𝑎𝑖 = 𝑣𝑗 , 𝑣𝑘 lub 𝑎𝑖 =< 𝑣𝑗 , 𝑣𝑘 > jest łukiem będącym parą
uporządkowaną wierzchołków.
𝑣3
𝑣1
𝑣5
𝑣4 𝑣2
𝑣6
𝑎1
𝑎1 = (𝑣2, 𝑣1)
![Page 6: Struktury danych i złożoność obliczeniowa Wykład 5....i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott Algorytmy grafowe: •podstawowe pojęcia, •reprezentacja](https://reader036.vdocuments.pub/reader036/viewer/2022070214/61154af36958d76347796db4/html5/thumbnails/6.jpg)
Algorytmy grafowe: podstawowe pojęcia
Droga (ścieżka) w grafie skierowanym jest ciągiem łuków
((𝑣1, 𝑣2), (𝑣2, 𝑣3), … , (𝑣𝑘−2, 𝑣𝑘−1), (𝑣𝑘−1, 𝑣𝑘)), który można
wyrazić ciągiem wierzchołków (𝑣1, 𝑣2, 𝑣3, … , 𝑣𝑘−2, 𝑣𝑘−1, 𝑣𝑘).
𝑣3
𝑣5
𝑣4 𝑣2
𝑣6
𝑣1
( 𝑣6, 𝑣5 , 𝑣5, 𝑣4 , (𝑣4, 𝑣3 ), (𝑣3, 𝑣2))
(𝑣6, 𝑣5, 𝑣4, 𝑣3, 𝑣2 )
![Page 7: Struktury danych i złożoność obliczeniowa Wykład 5....i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott Algorytmy grafowe: •podstawowe pojęcia, •reprezentacja](https://reader036.vdocuments.pub/reader036/viewer/2022070214/61154af36958d76347796db4/html5/thumbnails/7.jpg)
Algorytmy grafowe: podstawowe pojęcia
Rozmiary grafu:
• Liczba wierzchołków 𝑛,
• Liczba krawędzi (łuków) 𝑚.
![Page 8: Struktury danych i złożoność obliczeniowa Wykład 5....i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott Algorytmy grafowe: •podstawowe pojęcia, •reprezentacja](https://reader036.vdocuments.pub/reader036/viewer/2022070214/61154af36958d76347796db4/html5/thumbnails/8.jpg)
Algorytmy grafowe: podstawowe pojęcia
Graf nieskierowany z wagami krawędzi jest trójką
uporządkowaną 𝐺 = 𝑉, 𝐸, 𝑊 , gdzie:
𝑅 jest zbiorem liczb rzeczywistych,
𝑊: 𝐸 → 𝑅 jest funkcją wagi krawędzi.
Graf nieskierowany z wagami wierzchołków jest trójką
uporządkowaną 𝐺 = 𝑉, 𝐸, 𝑊 , gdzie
𝑊: 𝑉 → 𝑅 jest funkcją wagi wierzchołków.
Graf skierowany z wagami łuków jest trójką uporządkowaną
𝐺 = 𝑉, 𝐴, 𝑊 , gdzie:
𝑊: 𝐴 → 𝑅 jest funkcją wagi łuku.
![Page 9: Struktury danych i złożoność obliczeniowa Wykład 5....i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott Algorytmy grafowe: •podstawowe pojęcia, •reprezentacja](https://reader036.vdocuments.pub/reader036/viewer/2022070214/61154af36958d76347796db4/html5/thumbnails/9.jpg)
Algorytmy grafowe: podstawowe pojęcia
Przykład grafu nieskierowanego z wagami krawędzi i jego
macierz wag.
Niekiedy na przekątnej wpisywane są inne
wartości wyróżnione.
𝑣3
𝑣1
𝑣5
𝑣4 𝑣2
𝑣6
2 4
1 4 7
2
5
3 1
∞ 2 4 ∞ ∞ ∞2 ∞ 1 4 ∞ ∞4 1 ∞ 7 5 3∞ 4 7 ∞ 2 ∞∞ ∞ 5 2 ∞ 1∞ ∞ 3 ∞ 1 ∞
1 2 3 4 5 6
1 2 3 4 5 6
![Page 10: Struktury danych i złożoność obliczeniowa Wykład 5....i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott Algorytmy grafowe: •podstawowe pojęcia, •reprezentacja](https://reader036.vdocuments.pub/reader036/viewer/2022070214/61154af36958d76347796db4/html5/thumbnails/10.jpg)
Algorytmy grafowe: podstawowe pojęcia
Wagą (długością) drogi w grafie nieskierowanym jest suma
wag krawędzi tej drogi.
Wagą (długością) drogi w grafie skierowanym jest suma
wag łuków tej drogi.
![Page 11: Struktury danych i złożoność obliczeniowa Wykład 5....i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott Algorytmy grafowe: •podstawowe pojęcia, •reprezentacja](https://reader036.vdocuments.pub/reader036/viewer/2022070214/61154af36958d76347796db4/html5/thumbnails/11.jpg)
Algorytmy grafowe: podstawowe pojęcia
𝑣3
𝑣5
𝑣4 𝑣2
𝑣6
2 4
1 4 7
2
5
3 1
𝑣1
Waga drogi między wierzchołkami 𝑣1 a 𝑣6 równa 21
![Page 12: Struktury danych i złożoność obliczeniowa Wykład 5....i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott Algorytmy grafowe: •podstawowe pojęcia, •reprezentacja](https://reader036.vdocuments.pub/reader036/viewer/2022070214/61154af36958d76347796db4/html5/thumbnails/12.jpg)
Algorytmy grafowe: podstawowe pojęcia
𝑣3
𝑣5
𝑣4 𝑣2
𝑣6
2 4
1 4 7
2
5
3 1
𝑣1
Waga drogi między wierzchołkami 𝑣1 a 𝑣6 równa 6
![Page 13: Struktury danych i złożoność obliczeniowa Wykład 5....i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott Algorytmy grafowe: •podstawowe pojęcia, •reprezentacja](https://reader036.vdocuments.pub/reader036/viewer/2022070214/61154af36958d76347796db4/html5/thumbnails/13.jpg)
Algorytmy grafowe: podstawowe pojęcia
Graf nieskierowany jest spójnym, jeśli istnieje droga
między każdą parą jego wierzchołków.
Graf skierowany jest spójnym, jeśli jego wersja
nieskierowana jest grafem spójnym.
Drzewo nieskierowane jest grafem nieskierowanym
spójnym i acyklicznym.
𝐸 = 𝑉 − 1.
Dołączenie krawędzi do drzewa nieskierowanego tworzy
cykl. Usunięcie krawędzi z drzewa nieskierowanego
powoduje jego niespójność.
![Page 14: Struktury danych i złożoność obliczeniowa Wykład 5....i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott Algorytmy grafowe: •podstawowe pojęcia, •reprezentacja](https://reader036.vdocuments.pub/reader036/viewer/2022070214/61154af36958d76347796db4/html5/thumbnails/14.jpg)
Algorytmy grafowe: podstawowe pojęcia
Podgrafem grafu nieskierowanego 𝐺 = 𝑉, 𝐸 jest taki
graf, że 𝑉′ ⊂ 𝑉 i 𝐸′ ⊂ 𝐸.
Drzewo rozpinające nieskierowanego grafu spójnego
𝐺 = (𝑉, 𝐸) jest podgrafem 𝑆 = (𝑉𝑆, 𝐸𝑆) spójnym będącym
drzewem takim, że 𝑉𝑆 = 𝑉.
Minimalne drzewo rozpinające grafu nieskierowanego z
wagami jest drzewem rozpinającym o minimalnej sumie
wag.
![Page 15: Struktury danych i złożoność obliczeniowa Wykład 5....i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott Algorytmy grafowe: •podstawowe pojęcia, •reprezentacja](https://reader036.vdocuments.pub/reader036/viewer/2022070214/61154af36958d76347796db4/html5/thumbnails/15.jpg)
Algorytmy grafowe: podstawowe pojęcia
Przykład drzewa rozpinającego nieskierowanego grafu
spójnego
𝑣3
𝑣5
𝑣4 𝑣2
𝑣6
2 4
1 4 7
2
5
3 1
𝑣3
𝑣5
𝑣4 𝑣2
𝑣6
2 4
1 4 7
2
5
3 1
𝑣1 𝑣1
Waga drzewa rozpinającego 20
![Page 16: Struktury danych i złożoność obliczeniowa Wykład 5....i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott Algorytmy grafowe: •podstawowe pojęcia, •reprezentacja](https://reader036.vdocuments.pub/reader036/viewer/2022070214/61154af36958d76347796db4/html5/thumbnails/16.jpg)
Algorytmy grafowe: podstawowe pojęcia
Przykład drzewa rozpinającego nieskierowanego grafu
spójnego
𝑣3
𝑣5
𝑣4 𝑣2
𝑣6
2 4
1 4 7
2
5
3 1
𝑣3
𝑣5
𝑣4 𝑣2
𝑣6
2 4
1 4 7
2
5
3 1
𝑣1 𝑣1
Waga drzewa rozpinającego 11
![Page 17: Struktury danych i złożoność obliczeniowa Wykład 5....i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott Algorytmy grafowe: •podstawowe pojęcia, •reprezentacja](https://reader036.vdocuments.pub/reader036/viewer/2022070214/61154af36958d76347796db4/html5/thumbnails/17.jpg)
Algorytmy grafowe: reprezentacja grafów
Podział grafów nieskierowanych ze względu na liczbę
krawędzi względem liczby wierzchołków grafu pełnego:
• Rzadki, gdy |𝐸| ≪ |𝑉|2,
• Gęsty, gdy |𝐸| bliskie |𝑉|2.
Reprezentacja grafów, jeśli ważniejsza zajętość pamięci:
Rzadkich - raczej za pomocą list,
Gęstych - raczej macierzowa.
Reprezentacja macierzowa daje szybszy dostęp. Oszczędność
pamięci można uzyskać przez pamiętanie ośmiu składowych
macierzy w jednym bajcie.
![Page 18: Struktury danych i złożoność obliczeniowa Wykład 5....i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott Algorytmy grafowe: •podstawowe pojęcia, •reprezentacja](https://reader036.vdocuments.pub/reader036/viewer/2022070214/61154af36958d76347796db4/html5/thumbnails/18.jpg)
Algorytmy grafowe: podstawowe pojęcia
Rozmiary grafu:
• Liczba wierzchołków 𝑛,
• Liczba krawędzi (łuków) 𝑚.
![Page 19: Struktury danych i złożoność obliczeniowa Wykład 5....i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott Algorytmy grafowe: •podstawowe pojęcia, •reprezentacja](https://reader036.vdocuments.pub/reader036/viewer/2022070214/61154af36958d76347796db4/html5/thumbnails/19.jpg)
Algorytmy grafowe: reprezentacja grafów
Graf nieskierowany i jego macierz sąsiedztwa.
0 1 1 0 0 01 0 1 1 0 01 1 0 1 1 10 1 1 0 1 00 0 1 1 0 10 0 1 0 1 0
1 2 3 4 5 6
1 2 3 4 5 6
𝑣3
𝑣1
𝑣5
𝑣4 𝑣2
𝑣6 Niekiedy na przekątnej wpisywane
są inne wartości wyróżnione.
Zajętość pamięci 𝑂(𝑛2)
![Page 20: Struktury danych i złożoność obliczeniowa Wykład 5....i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott Algorytmy grafowe: •podstawowe pojęcia, •reprezentacja](https://reader036.vdocuments.pub/reader036/viewer/2022070214/61154af36958d76347796db4/html5/thumbnails/20.jpg)
Algorytmy grafowe: reprezentacja grafów
Graf nieskierowany i jego listy sąsiedztwa
1
2
3
4
5
6
4 2 3 2
4 2 11 1 3 4
4 2 11 4 2 1
2 11 5 6
4 2 11 3 2 5
4 2 11 4 3 6
4 2 5 3
𝑣3
𝑣5
𝑣4 𝑣2
𝑣6
Zajętość pamięci 𝑂(𝑛 + 𝑚)
𝑣1
![Page 21: Struktury danych i złożoność obliczeniowa Wykład 5....i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott Algorytmy grafowe: •podstawowe pojęcia, •reprezentacja](https://reader036.vdocuments.pub/reader036/viewer/2022070214/61154af36958d76347796db4/html5/thumbnails/21.jpg)
Algorytmy grafowe: reprezentacja grafów
Graf nieskierowany i jego macierz incydencji.
𝑣3
𝑣1
𝑣5
𝑣4 𝑣2
𝑣6
𝑒2 𝑒4
𝑒1 𝑒3
𝑒5
𝑒6
𝑒7
𝑒8 𝑒9
0 1 1 0 0 0 0 0 01 1 0 1 0 0 0 0 01 0 1 0 1 0 1 1 00 0 0 1 1 1 0 0 00 0 0 0 0 1 1 0 10 0 0 0 0 0 0 1 1
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6
![Page 22: Struktury danych i złożoność obliczeniowa Wykład 5....i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott Algorytmy grafowe: •podstawowe pojęcia, •reprezentacja](https://reader036.vdocuments.pub/reader036/viewer/2022070214/61154af36958d76347796db4/html5/thumbnails/22.jpg)
Algorytmy grafowe: reprezentacja grafów
Graf skierowany i jego macierz sąsiedztwa
𝑣3
𝑣1
𝑣5
𝑣4
𝑣6
𝑎1
0 0 0 0 0 01 0 0 0 0 01 1 0 0 1 10 1 1 0 1 00 0 0 0 1 10 0 0 0 0 0
1 2 3 4 5 6
1 2 3 4 5 6
𝑣2
![Page 23: Struktury danych i złożoność obliczeniowa Wykład 5....i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott Algorytmy grafowe: •podstawowe pojęcia, •reprezentacja](https://reader036.vdocuments.pub/reader036/viewer/2022070214/61154af36958d76347796db4/html5/thumbnails/23.jpg)
Algorytmy grafowe: reprezentacja grafów
Graf skierowany i jego macierz incydencji
𝑣3
𝑣1
𝑣5
𝑣4 𝑣2
𝑣6
𝑎2 𝑎4
𝑎1 𝑎3
𝑎5
𝑎6
𝑎7
𝑎8 𝑎9
0 −1 −1 0 0 0 0 0 01 1 0 −1 0 0 0 0 0
−1 0 1 0 1 0 1 1 00 0 0 1 −1 1 0 0 00 0 0 0 0 −1 −1 0 10 0 0 0 0 0 0 −1 −1
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6
![Page 24: Struktury danych i złożoność obliczeniowa Wykład 5....i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott Algorytmy grafowe: •podstawowe pojęcia, •reprezentacja](https://reader036.vdocuments.pub/reader036/viewer/2022070214/61154af36958d76347796db4/html5/thumbnails/24.jpg)
Algorytmy grafowe: reprezentacja grafów
Przykład grafu nieskierowanego z wagami krawędzi i jego
macierz wag.
Niekiedy na przekątnej wpisywane są inne
wartości wyróżnione.
𝑣3
𝑣1
𝑣5
𝑣4 𝑣2
𝑣6
2 4
1 4 7
2
5
3 1
∞ 2 4 ∞ ∞ ∞2 ∞ 1 4 ∞ ∞4 1 ∞ 7 5 3∞ 4 7 ∞ 2 ∞∞ ∞ 5 2 ∞ 1∞ ∞ 3 ∞ 1 ∞
1 2 3 4 5 6
1 2 3 4 5 6
![Page 25: Struktury danych i złożoność obliczeniowa Wykład 5....i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott Algorytmy grafowe: •podstawowe pojęcia, •reprezentacja](https://reader036.vdocuments.pub/reader036/viewer/2022070214/61154af36958d76347796db4/html5/thumbnails/25.jpg)
Algorytmy grafowe: podstawowe pojęcia
Przykład grafu nieskierowa-
nego z wagami krawędzi i
jego lista krawędzi w
postaci tablicy.
𝑣3
𝑣1
𝑣5
𝑣4 𝑣2
𝑣6
2 4
1 4 7
2
5
3 1
𝒊𝒏𝒅(𝒗𝒊) 𝒊𝒏𝒅(𝒗𝒋) 𝑾({𝒗𝒊, 𝒗𝒋})
1 2 2
1 3 4
2 3 1
2 4 4
3 4 7
3 5 5
4 5 2
3 6 3
5 6 1
Zajętość pamięci 𝑂(𝑚)
![Page 26: Struktury danych i złożoność obliczeniowa Wykład 5....i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott Algorytmy grafowe: •podstawowe pojęcia, •reprezentacja](https://reader036.vdocuments.pub/reader036/viewer/2022070214/61154af36958d76347796db4/html5/thumbnails/26.jpg)
Algorytmy grafowe: metody przeszukiwania
Cel przeszukiwania grafu:
Odwiedzenie wszystkich wierzchołków
poprzez przechodzenie krawędziami lub
łukami.
Metody przeszukiwania:
• Wszerz (ang. Breadth-First Search),
• W głąb (ang. Depth-First Search).
![Page 27: Struktury danych i złożoność obliczeniowa Wykład 5....i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott Algorytmy grafowe: •podstawowe pojęcia, •reprezentacja](https://reader036.vdocuments.pub/reader036/viewer/2022070214/61154af36958d76347796db4/html5/thumbnails/27.jpg)
Algorytmy grafowe: metody przeszukiwania
Kolejność odwiedzania wiezrchołków w BFS działającej
na drzewie
1
2 3
13 12 11 10 9 8
7 6 5 4
17 16 15 14
![Page 28: Struktury danych i złożoność obliczeniowa Wykład 5....i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott Algorytmy grafowe: •podstawowe pojęcia, •reprezentacja](https://reader036.vdocuments.pub/reader036/viewer/2022070214/61154af36958d76347796db4/html5/thumbnails/28.jpg)
Algorytmy grafowe: metody przeszukiwania
Przeszukiwanie wszerz
Kolory ( ang. 𝑐𝑜𝑙𝑜𝑟) wierzchołków:
• Biały (nieodwiedzony),
• Szary (odwiedzony, nie wszyscy sąsiedzi tegoż odwiedzeni),
• Czarny (odwiedzeni: ten i jego sąsiedzi).
Metoda wykonywana z:
• jednego źródła,
• wielu źródeł.
![Page 29: Struktury danych i złożoność obliczeniowa Wykład 5....i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott Algorytmy grafowe: •podstawowe pojęcia, •reprezentacja](https://reader036.vdocuments.pub/reader036/viewer/2022070214/61154af36958d76347796db4/html5/thumbnails/29.jpg)
𝑑[𝑢] – zmienna przechowująca odległość od źródła 𝑠 do wierzchołka 𝑢 – najkrótszą odległość daną liczbą krawędzi, 𝑑 𝑠 = 0, 𝜋 𝑢 − zmienna wskazująca wierzchołek, z którego wierzchołek 𝑢 został odwiedzony, 𝜋 𝑢 =NIL, jeśli 𝑢 = 𝑠 lub 𝑢 nie został jeszcze odwiedzony.
𝑂( 𝑉 + |𝐸|)
[CLRS, Wprowadzenie do algorytmów]
![Page 30: Struktury danych i złożoność obliczeniowa Wykład 5....i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott Algorytmy grafowe: •podstawowe pojęcia, •reprezentacja](https://reader036.vdocuments.pub/reader036/viewer/2022070214/61154af36958d76347796db4/html5/thumbnails/30.jpg)
Algorytmy grafowe: metody przeszukiwania
Kolejność odwiedzania wierzchołków w DFS działającej
na drzewie
![Page 31: Struktury danych i złożoność obliczeniowa Wykład 5....i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott Algorytmy grafowe: •podstawowe pojęcia, •reprezentacja](https://reader036.vdocuments.pub/reader036/viewer/2022070214/61154af36958d76347796db4/html5/thumbnails/31.jpg)
Algorytmy grafowe: metody
przeszukiwania
Przeszukiwanie w głąb
Kolory ( ang. 𝑐𝑜𝑙𝑜𝑟) wierzchołków:
• Biały (nieodwiedzony),
• Szary (odwiedzony, nie wszyscy sąsiedzi tegoż
odwiedzeni),
• Czarny (odwiedzeni: ten i jego sąsiedzi).
Metoda wykonywana z:
• jednego źródła,
• wielu źródeł.
![Page 32: Struktury danych i złożoność obliczeniowa Wykład 5....i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott Algorytmy grafowe: •podstawowe pojęcia, •reprezentacja](https://reader036.vdocuments.pub/reader036/viewer/2022070214/61154af36958d76347796db4/html5/thumbnails/32.jpg)
𝑂( 𝑉 + |𝐸|) [CLRS, Wprowadzenie do algorytmów]
![Page 33: Struktury danych i złożoność obliczeniowa Wykład 5....i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott Algorytmy grafowe: •podstawowe pojęcia, •reprezentacja](https://reader036.vdocuments.pub/reader036/viewer/2022070214/61154af36958d76347796db4/html5/thumbnails/33.jpg)
Algorytmy grafowe: minimalne drzewa
rozpinające
Drzewo rozpinające nieskierowanego grafu spójnego
𝐺 = (𝑉, 𝐸) jest podgrafem 𝑆 = (𝑉𝑆, 𝐸𝑆) spójnym będącym
drzewem takim, że 𝑉𝑆 = 𝑉.
Minimalne drzewo rozpinające grafu nieskierowanego z
wagami krawędzi jest drzewem rozpinającym o minimalnej
sumie wag krawędzi.
![Page 34: Struktury danych i złożoność obliczeniowa Wykład 5....i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott Algorytmy grafowe: •podstawowe pojęcia, •reprezentacja](https://reader036.vdocuments.pub/reader036/viewer/2022070214/61154af36958d76347796db4/html5/thumbnails/34.jpg)
Algorytmy grafowe: minimalne drzewa
rozpinające
Idea algorytmu Kruskala: z posortowanej niemalejąco wg
wag listy krawędzi – dołączane są kolejne, jeśli nie tworzą
cyklu (algorytm zachłanny).
Lista uporządkowana: {𝑣2,𝑣3} {𝑣5,𝑣6} {𝑣5,𝑣4} {𝑣1,𝑣2} {𝑣1,𝑣3}
{𝑣2,𝑣4} {𝑣6,𝑣3} {𝑣5,𝑣3} {𝑣4,𝑣3}
𝑣3
𝑣5
𝑣4 𝑣2
𝑣6
2 4
1 4 7
2
5
4 1
𝑣1
𝑣3
𝑣5
𝑣4 𝑣2
𝑣6
2 4
1 4 7
2
5
4 1
𝑣1
𝑣3
𝑣5
𝑣4
𝑣6
2 4
1 4 7
5
4 1
𝑣1 𝑣2
2
![Page 35: Struktury danych i złożoność obliczeniowa Wykład 5....i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott Algorytmy grafowe: •podstawowe pojęcia, •reprezentacja](https://reader036.vdocuments.pub/reader036/viewer/2022070214/61154af36958d76347796db4/html5/thumbnails/35.jpg)
Algorytmy grafowe: minimalne drzewa
rozpinające
Idea algorytmu Kruskala: z posortowanej niemalejąco wg
wag listy krawędzi – dołączane są kolejne, jeśli nie tworzą
cyklu (algorytm zachłanny).
Lista uporządkowana: {𝑣2,𝑣3} {𝑣5,𝑣6} {𝑣5,𝑣4} {𝑣1,𝑣2} {𝑣1,𝑣3}
{𝑣2,𝑣4} {𝑣6,𝑣3} {𝑣5,𝑣3} {𝑣4,𝑣3}
2 𝑣3
𝑣5
𝑣4
𝑣6
2 4
1 4 7
5
4 1
𝑣1 𝑣2
2 𝑣3
𝑣5
𝑣4
𝑣6
2 4
1 4 7
5
4 1
𝑣1 𝑣2
2 𝑣3
𝑣5
𝑣4
𝑣6
2 4
1 4 7
5
4 1
𝑣1 𝑣2
![Page 36: Struktury danych i złożoność obliczeniowa Wykład 5....i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott Algorytmy grafowe: •podstawowe pojęcia, •reprezentacja](https://reader036.vdocuments.pub/reader036/viewer/2022070214/61154af36958d76347796db4/html5/thumbnails/36.jpg)
Algorytmy grafowe: minimalne drzewa
rozpinające
Idea algorytmu Kruskala: z posortowanej niemalejąco wg
wag listy krawędzi – dołączane są kolejne, jeśli nie tworzą
cyklu (algorytm zachłanny).
Lista uporządkowana: {𝑣2,𝑣3} {𝑣5,𝑣6} {𝑣5,𝑣4} {𝑣1,𝑣2} {𝑣1,𝑣3}
{𝑣2,𝑣4} {𝑣6,𝑣3} {𝑣5,𝑣3} {𝑣4,𝑣3}
2 𝑣3
𝑣5
𝑣4
𝑣6
2 4
1 4 7
5
4 1
𝑣1 𝑣2
2 𝑣3
𝑣5
𝑣4
𝑣6
2 4
1 4 7
5
4 1
𝑣1 𝑣2
![Page 37: Struktury danych i złożoność obliczeniowa Wykład 5....i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott Algorytmy grafowe: •podstawowe pojęcia, •reprezentacja](https://reader036.vdocuments.pub/reader036/viewer/2022070214/61154af36958d76347796db4/html5/thumbnails/37.jpg)
Algorytmy grafowe: minimalne drzewa
rozpinające
Idea algorytmu Kruskala:
1. Wszystkie wierzchołki zostają parami różnie
pokolorowane tworząc jednowierzchołkowe drzewa,
2. Z posortowanej niemalejąco wg wag listy krawędzi –
dołączane są kolejne, jeśli nie tworzą cyklu (algorytm
zachłanny),
3. Dla dwu drzew łączonych w jedno ujednolicane zostają
kolory.
![Page 38: Struktury danych i złożoność obliczeniowa Wykład 5....i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott Algorytmy grafowe: •podstawowe pojęcia, •reprezentacja](https://reader036.vdocuments.pub/reader036/viewer/2022070214/61154af36958d76347796db4/html5/thumbnails/38.jpg)
Algorytmy grafowe: minimalne drzewa
rozpinające
Idea algorytmu Kruskala: z posortowanej niemalejąco wg
wag listy krawędzi – dołączane są kolejne, jeśli nie tworzą
cyklu (algorytm zachłanny).
Przy próbie dołączenia krawędzi (𝑢, 𝑣) występują
następujące przypadki:
1. Wierzchołki 𝑢, 𝑣 nie zostały wybrane (nie dołączono
krawędzi incydentnych z nimi), są różnie pokolorowane,
2. Dokładnie jeden z wierzchołków, przyjmijmy 𝑢, został
dotychczas wybrany, są różnie pokolorowane,
3. Oba wybrane ale różnie pokolorowane,
4. Oba wybrane ale jednolicie pokolorowane.
![Page 39: Struktury danych i złożoność obliczeniowa Wykład 5....i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott Algorytmy grafowe: •podstawowe pojęcia, •reprezentacja](https://reader036.vdocuments.pub/reader036/viewer/2022070214/61154af36958d76347796db4/html5/thumbnails/39.jpg)
Algorytmy grafowe: minimalne drzewa
rozpinające
Zał: Na początku wierzchołki o parami różnych kolorach.
1. Wierzchołki 𝑢, 𝑣 nie zostały dotąd wybrane (nie dołączono
krawędzi incydentnych z nimi)
Dołączenie nowej krawędzi nie powoduje cyklu, a ujednoli-
cenie kolorów wierzchołków 𝑢, 𝑣 daje nowe poddrzewo
𝑢
𝑣
𝑢
𝑣
![Page 40: Struktury danych i złożoność obliczeniowa Wykład 5....i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott Algorytmy grafowe: •podstawowe pojęcia, •reprezentacja](https://reader036.vdocuments.pub/reader036/viewer/2022070214/61154af36958d76347796db4/html5/thumbnails/40.jpg)
2. Dokładnie jeden z wierzchołków, przyjmijmy 𝑢, został
dotychczas wybrany
Dołączenie nowej krawędzi nie powoduje cyklu, a ujednoli-
cenie kolorów daje większe poddrzewo
Algorytmy grafowe: minimalne drzewa
rozpinające
𝑢
𝑣
𝑢
𝑣
![Page 41: Struktury danych i złożoność obliczeniowa Wykład 5....i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott Algorytmy grafowe: •podstawowe pojęcia, •reprezentacja](https://reader036.vdocuments.pub/reader036/viewer/2022070214/61154af36958d76347796db4/html5/thumbnails/41.jpg)
3. Oba wybrane ale różnie pokolorowane
Dołączenie nowej krawędzi nie powoduje cyklu, a ujednoli-
cenie kolorów daje większe poddrzewo
Algorytmy grafowe: minimalne drzewa
rozpinające
𝑢 𝑣 𝑢 𝑣
![Page 42: Struktury danych i złożoność obliczeniowa Wykład 5....i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott Algorytmy grafowe: •podstawowe pojęcia, •reprezentacja](https://reader036.vdocuments.pub/reader036/viewer/2022070214/61154af36958d76347796db4/html5/thumbnails/42.jpg)
Algorytmy grafowe: minimalne drzewa
rozpinające
4. Oba wybrane ale jednolicie pokolorowane
Dołączenie nowej krawędzi spowodowałoby cykl
𝑢
𝑣
𝑢
𝑣
![Page 43: Struktury danych i złożoność obliczeniowa Wykład 5....i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott Algorytmy grafowe: •podstawowe pojęcia, •reprezentacja](https://reader036.vdocuments.pub/reader036/viewer/2022070214/61154af36958d76347796db4/html5/thumbnails/43.jpg)
Algorytmy grafowe: minimalne drzewa
rozpinające
Algorytm Kruskala
𝐴 ← ∅
for każdy wierzchołek 𝑣𝑖𝜖𝑉
do 𝐶(𝑣𝑖) ← 𝑖
posortuj krawędzie z 𝐸 niemalejąco wg wag 𝑊(𝑒𝑗)
for każda krawędź (𝑣𝑙 , 𝑣𝑘) ∈ 𝐸 w kolejności niemalejących wag
do if 𝐶(𝑣𝑙) ≠ 𝐶(𝑣𝑘)
then 𝐴 ← 𝐴 ∪ {(𝑣𝑙 , 𝑣𝑘)}
Ujednolicenie kolorów wierzchołków
poddrzewa zawierającego 𝑣𝑙 , 𝑣𝑘 ← 𝑂(𝑉)
return A 𝑂( 𝐸 log 𝐸 + |𝑉| ∙ |𝐸|)
![Page 44: Struktury danych i złożoność obliczeniowa Wykład 5....i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott Algorytmy grafowe: •podstawowe pojęcia, •reprezentacja](https://reader036.vdocuments.pub/reader036/viewer/2022070214/61154af36958d76347796db4/html5/thumbnails/44.jpg)
Algorytmy grafowe: minimalne drzewa
rozpinające
Idea algorytmu Prima:
Po wybraniu dowolnego wierzchołka, kolejno dołączany jest
najbliższy sąsiad czyli wierzchołek połączony krawędzią o
najmniejszej wadze z wcześniej dołączonymi
wierzchołkami.
𝑣3
𝑣5
𝑣4 𝑣2
𝑣6
2 4
1 4 7
2
5
4 1
𝑣1
𝑣3
𝑣5
𝑣4 𝑣2
𝑣6
2 4
1 4 7
2
5
4 1
𝑣1
𝑣3
𝑣5
𝑣4 𝑣2
𝑣6
2 4
1 4 7
2
5
4 1
𝑣1
![Page 45: Struktury danych i złożoność obliczeniowa Wykład 5....i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott Algorytmy grafowe: •podstawowe pojęcia, •reprezentacja](https://reader036.vdocuments.pub/reader036/viewer/2022070214/61154af36958d76347796db4/html5/thumbnails/45.jpg)
Algorytmy grafowe: minimalne drzewa
rozpinające
Idea algorytmu Prima:
Po wybraniu dowolnego wierzchołka, kolejno dołączany jest
najbliższy sąsiad czyli wierzchołek połączony krawędzią o
najmniejszej wadze z wcześniej dołączonymi
wierzchołkami.
𝑣3
𝑣5
𝑣4 𝑣2
𝑣6
2 4
1 4 7
2
5
4 1
𝑣1
𝑣3
𝑣5
𝑣4 𝑣2
𝑣6
2 4
1 4 7
2
5
4 1
𝑣1
𝑣3
𝑣5
𝑣4 𝑣2
𝑣6
2 4
1 4 7
2
5
4 1
𝑣1
![Page 46: Struktury danych i złożoność obliczeniowa Wykład 5....i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott Algorytmy grafowe: •podstawowe pojęcia, •reprezentacja](https://reader036.vdocuments.pub/reader036/viewer/2022070214/61154af36958d76347796db4/html5/thumbnails/46.jpg)
Algorytmy grafowe: minimalne drzewa
rozpinające
Idea algorytmu Prima:
Po wybraniu dowolnego wierzchołka, kolejno dołączany jest
najbliższy sąsiad czyli wierzchołek połączony krawędzią o
najmniejszej wadze z wcześniej dołączonymi
wierzchołkami.
𝑣3
𝑣5
𝑣4 𝑣2
𝑣6
2 4
1 4 7
2
5
4 1
𝑣1
𝑣3
𝑣5
𝑣4 𝑣2
𝑣6
2 4
1 4 7
2
5
4 1
𝑣1
![Page 47: Struktury danych i złożoność obliczeniowa Wykład 5....i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott Algorytmy grafowe: •podstawowe pojęcia, •reprezentacja](https://reader036.vdocuments.pub/reader036/viewer/2022070214/61154af36958d76347796db4/html5/thumbnails/47.jpg)
Algorytmy grafowe: problemy ścieżkowe
Cykle o ujemnej wadze (długości)
𝑣𝑖
𝑠
Cykl o ujemnej
wadze
Długość najkrótszej
ścieżki z 𝑠 do 𝑣𝑖
dąży do −∞.
![Page 48: Struktury danych i złożoność obliczeniowa Wykład 5....i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott Algorytmy grafowe: •podstawowe pojęcia, •reprezentacja](https://reader036.vdocuments.pub/reader036/viewer/2022070214/61154af36958d76347796db4/html5/thumbnails/48.jpg)
Algorytmy grafowe: problemy ścieżkowe
Wyznaczanie najkrótszych ścieżek z jednego źródła do
wszystkich wierzchołków dla grafów skierowanych:
Wagi łuków mogą być ujemne
Algorytm Bellmana-Forda 𝑂(|𝑉| ∙ |𝐸|)
Wagi łuków są nieujemne
Algorytm Dijkstry 𝑂( 𝑉 log 𝑉 + |𝐸|)
Acykliczny graf skierowany, Wagi łuków mogą być ujemne
Algorytm oparty na sortowaniu topologicznym 𝑂( 𝑉 + |𝐸|)
![Page 49: Struktury danych i złożoność obliczeniowa Wykład 5....i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott Algorytmy grafowe: •podstawowe pojęcia, •reprezentacja](https://reader036.vdocuments.pub/reader036/viewer/2022070214/61154af36958d76347796db4/html5/thumbnails/49.jpg)
𝑑[𝑢] – zmienna przechowująca górne ograniczenie odległości od źródła 𝑠 do wierzchołka 𝑢, 𝑑 𝑠 = 0, 𝜋 𝑢 − zmienna wskazująca wierzchołek, z którego wierzchołek 𝑢 został odwiedzony przy wyznaczaniu tego ograniczenia, Q – kolejka priorytetowa z kryterium min 𝑑[𝑢]
𝑑[𝑣]
𝑠
𝑣
𝑤(𝑢, 𝑣)
𝑢
𝑑[𝑢]
Operacje na kolejce priorytetowej
![Page 50: Struktury danych i złożoność obliczeniowa Wykład 5....i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott Algorytmy grafowe: •podstawowe pojęcia, •reprezentacja](https://reader036.vdocuments.pub/reader036/viewer/2022070214/61154af36958d76347796db4/html5/thumbnails/50.jpg)
Implementacja kolejki priorytetowej
Postaci implementacji Złożoność algorytmu Dijkstry
Sekwencja |V|wierzchołków
𝑂(|𝑉|2)
Kopiec binarny typu min 𝑂( 𝑉 + 𝐸 lg 𝑉 )
Kopiec Fibonaccego 𝑂( 𝑉 lg 𝑉 + |𝐸|)
![Page 51: Struktury danych i złożoność obliczeniowa Wykład 5....i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott Algorytmy grafowe: •podstawowe pojęcia, •reprezentacja](https://reader036.vdocuments.pub/reader036/viewer/2022070214/61154af36958d76347796db4/html5/thumbnails/51.jpg)
4
2
1
5
5
3 1
000
2
2
Elementy zbioru 𝑆 z oszacowaniem odległości od wierzch. 𝑠 7
s
Łuki badane w aktualnym kroku
0
4
2
1
5
5
3 1
000
2
2
s
0 2
4
∞
∞
∞
![Page 52: Struktury danych i złożoność obliczeniowa Wykład 5....i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott Algorytmy grafowe: •podstawowe pojęcia, •reprezentacja](https://reader036.vdocuments.pub/reader036/viewer/2022070214/61154af36958d76347796db4/html5/thumbnails/52.jpg)
4
2
1
5
5
3 1
000
2
2
s
0 2
4
∞
∞
∞
4
2
1
5
5
3 1
000
2
2
s
0 2
3
7
∞
∞
![Page 53: Struktury danych i złożoność obliczeniowa Wykład 5....i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott Algorytmy grafowe: •podstawowe pojęcia, •reprezentacja](https://reader036.vdocuments.pub/reader036/viewer/2022070214/61154af36958d76347796db4/html5/thumbnails/53.jpg)
4
2
1
5
5
3 1
2
2
s
0 2
3
5
8
6
4
2
1
5
5
3 1
000
2
2
s
0 2
3
7
∞
∞
![Page 54: Struktury danych i złożoność obliczeniowa Wykład 5....i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott Algorytmy grafowe: •podstawowe pojęcia, •reprezentacja](https://reader036.vdocuments.pub/reader036/viewer/2022070214/61154af36958d76347796db4/html5/thumbnails/54.jpg)
4
2
1
5
5
3 1
2
2
s
0 2
3
5
8
6
4
2
1
5
5
3 1
2
2
s
0 2
3
5
7
6
![Page 55: Struktury danych i złożoność obliczeniowa Wykład 5....i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott Algorytmy grafowe: •podstawowe pojęcia, •reprezentacja](https://reader036.vdocuments.pub/reader036/viewer/2022070214/61154af36958d76347796db4/html5/thumbnails/55.jpg)
4
2
1
5
5
3 1
2
2
s
0 2
3
5
7
6
4
2
1
5
5
3 1
2
2
s
0 2
3
5
7
6