Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest...

71
Algorytmy Grafowe dr hab. Bo˙ zena Wo´ zna-Szcze´ sniak, prof. UJD Uniwersytet Humanistyczno-Przyrodniczy im. Jana Dlugosza w Cz˛ estochowie [email protected] Wyklad 1,2,3 B. Wo´ zna-Szcze´ sniak (UJD) Algorytmy Grafowe 1 / 68

Transcript of Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest...

Page 1: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Algorytmy Grafowe

dr hab. Bozena Wozna-Szczesniak, prof. UJD

Uniwersytet Humanistyczno-Przyrodniczy im. Jana Długosza w Czestochowie

[email protected]

Wykład 1,2,3

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 1 / 68

Page 2: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Cel przedmiotu

Celem wykładów jest zapoznanie studentów z podstawowymialgorytmami grafowymi. Przedstawiona zostanie równiez ichpoprawnosc i złozonosc.Celem laboratorium jest implementacja algorytmówwprowadzonych na wykładzie.

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 2 / 68

Page 3: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Program przedmiotu

Reprezentacje grafu.Wyszukiwanie wszerz i wyszukiwanie w głab.(Silnie) spójne komponenty.Sortowanie topologiczne.Minimalne drzewo rozpinajace - Algorytmy Kruskala i Prima.Znajdowanie cyklu lub sciezki Eulera. Algorytm Fleury’ego.Znajdowanie cyklu lub sciezki HamiltonaProblem najkrótszej sciezki: Algorytm Floyda-WarshallaProblem najkrótszej sciezki: Algorytm DijkstryProblem najkrótszej sciezki: Algorytm Bellmana-FordaTest koncowy.

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 3 / 68

Page 4: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Literatura I

Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie doalgorytmów. WNT, 1997 i pózniejsze.

Łukasz Malinowski. Implementacja wybranych algorytmów dlagrafów bez wag w jezyku Python. http://users.uj.edu.pl/~ufkapano/download/Lukasz_Malinowski_2014.pdf

Undirected Graphs:https://algs4.cs.princeton.edu/41graph/

Directed Graphs:https://algs4.cs.princeton.edu/42digraph/

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 4 / 68

Page 5: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Wprowadzenie

Grafy - Obszary Zastosowania

InformatykaTechnika 1

FizykaNauki społeczneBiologiaKartografiaLingwistykai wiele innych . . .

1Deo N. Teoria grafów i jej zastosowania w technice i informatyce, PWN,Warszawa 1980.

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 5 / 68

Page 6: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Wprowadzenie

Grafy - Zastosowania w Informatyce:

Reprezentacja struktury programówModelowanie systemów komputerowychAutomatyczna weryfikacja systemów współbieznych irozproszonychKryptografia - Szyfr Cezara, Problem Dalekopisu, Kod Graya,Kody Huffmana, kryptografia wizualna, itd.Sieci komputerowe - znajdowanie najkrótszych sciezeki wiele innych . . .

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 6 / 68

Page 7: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Wprowadzenie

Leonhard Euler

Za pierwszego teoretyka i badacza grafów uwaza sie LeonhardaEulera2, który rozstrzygnał tzw. zagadnienie mostówkrólewieckich.

2Leonhard Euler (ur. 15 kwietnia 1707 r. w Bazylei - Szwajcaria, zm. 18 wrzesnia1783 r. w Petersburgu - Rosja) - szwajcarski matematyk, fizyk i astronom, jeden ztwórców nowoczesnej matematyki.

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 7 / 68

Page 8: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Wprowadzenie

Mosty królewieckie

Przez Królewiec przepływała rzeka Pregole, w której rozwidleniachznajdowały sie dwie wyspy. Ponad rzeka przerzucono siedem mostów,z których jeden łaczył obie wyspy, a pozostałe mosty łaczyły wyspy zbrzegami rzeki. Plan mostów pokazuje rysunek:

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 8 / 68

Page 9: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Wprowadzenie

Mosty królewieckie

Zwykłe spacerowanie szybko sie znudziło mieszkancom Królewcai zaczeli zastanawiac sie, czy istnieje taka trasa spacerowa, któraprzechodzi przez kazdy most dokładnie raz, zadnego nie omija, ipozwala wrócic do punktu wyjscia.Mieszkancy nie potrafili rozwiazac postawionego problemusamodzielnie, wiec postanowili napisac do matematykaLeonharda Eulera.

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 9 / 68

Page 10: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Wprowadzenie

Mosty królewieckie

Euler wykazał, ze rozwiazanie problemu mieszkanców nie jestmozliwe, a decyduje o tym nieparzysta liczba wylotów mostówzarówno na kazda z wysp, jak i na oba brzegi rzeki. (Jesli wejdziesie po raz trzeci na wyspe, nie ma jak z niej wyjsc).Sytuacje te mozna przedstawic za pomoca nastepujacego grafu:

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 10 / 68

Page 11: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Wprowadzenie

Rodzaje grafów

Rodzaje grafów rozwazane na wykładach

grafy nieskierowane (niezorientowane)grafy skierowane (zorientowane)grafy z wagami

Inne rodzaje grafów

multigrafyhipergrafy

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 11 / 68

Page 12: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Wprowadzenie

Rodzaje grafów

Rodzaje grafów rozwazane na wykładach

grafy nieskierowane (niezorientowane)grafy skierowane (zorientowane)grafy z wagami

Inne rodzaje grafów

multigrafyhipergrafy

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 11 / 68

Page 13: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Wprowadzenie

Graf skierowany

DefinicjaGrafem skierowanym (lub digrafem) nazywamy pare

G = (V ,E):

V to skonczony zbiór, którego elementy nazywamywierzchołkami,E ⊆ {(u, v) : u, v ∈ V} to zbiór uporzadkowanych parwierzchołków ze zbioru V , zwanych krawedziami. Mozliwe jestistnienie petli od danego wierzchołka do niego samego.

Na wykładzie przyjmujemy nastepujace oznaczenia:n – oznacza liczbe wierzchołków (rozmiar zbioru V )m – oznacza liczbe krawedzi (rozmiar zbioru E)

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 12 / 68

Page 14: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Wprowadzenie

Graf skierowny G = (V ,E) - przykład

V = {A,B,C,D}E = {(A,B), (B,B), (B,C),(B,D), (C,A), (C,D),(D,C)}n = 4, m = 7

A B

C D

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 13 / 68

Page 15: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Wprowadzenie

Graf nieskierowany

DefinicjaGrafem nieskierowanym (grafem) nazywamy pare

G = (V ,E):

V to zbiór wierzchołków.E ⊆ {{u, v} : u, v ∈ V ,u 6= v} to zbiór nieuporzadkowanych parwierzchołków, zwanych krawedziami. W grafie nieskierowanymnie moga wystepowac petle.

Na wykładzie przyjmujemy nastepujace oznaczenia:n – oznacza liczbe wierzchołków (rozmiar zbioru V )m – oznacza liczbe krawedzi (rozmiar zbioru E)

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 14 / 68

Page 16: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Wprowadzenie

Graf nieskierowny G = (V ,E) - przykład

V = {A,B,C,D,E ,F}E = {{A,B}, {A,C},{B,C}, {B,D}, {C,D},{E ,F}}n = 6, m = 6

A B

C D

E F

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 15 / 68

Page 17: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Wprowadzenie

Podstawowe pojecia

Jesli (u, v) jest krawedzia grafu skierowanego G = (V ,E), tomówimy, ze krawedz (u, v) jest wychodzaca z wierzchołka u iwchodzaca do wierzchołka v .Jesli (u, v) jest krawedzia grafu nieskierowanego G = (V ,E), tomówimy, ze krawedz (u, v) jest incydentna z wierzchołkami u i v .Stopien wierzchołka:

W grafie skierowanym to suma stopni wejsciowego (ilosckrawedzi wchodzacych) i wyjsciowego (ilosc wychodzacychkrawedzi).W grafie nieskierowanym to liczba incydentnych z nim krawedzi.

Wierzchołki nazywamy sasiednimi, jesli istnieje krawedz(skierowana lub nieskierowana) pomiedzy nimi.Wierzchołek nazywamy izolowanym, jesli nie jest połaczonyzadna krawedzia z innym wierzchołkiem.

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 16 / 68

Page 18: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Wprowadzenie

Podstawowe Pojecia

Sciezka(Droga) o długosci k z wierzchołka u do wierzchołka u′ wgrafie G = (V ,E) jest ciagiem wierzchołków (v0, v1, v2, . . . , vk )takich, ze u = v0, u′ = vk i (vi−1, vi) ∈ E dla i = 1,2, . . . , kDługosc sciezki jest liczba krawedzi sciezki, tj. długosc sciezki(v0, v1, . . . , vk ) wynosi k − 1.Sciezka jest nazywana sciezka prosta, jezeli wszystkie jejwierzchołki sa rózne.W grafie skierowanym sciezka (v0, v1, . . . , vk ) tworzy cykl jesliv0 = vk oraz zawiera co najmniej jedna krawedz.Cykl jest prosty, jezeli zaden wierzchołek (oprócz pierwszego)nie pojawia sie w nim wiecej niz raz. Petla jest cyklem odługosci 1.Graf nie zawierajacy cykli nazywamy acyklicznym.

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 17 / 68

Page 19: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Wprowadzenie

Podstawowe Pojecia

Kazda spójna składowa grafu G = (V ,E) jest maksymalnympodzbiorem wierzchołków U zbioru V takim, ze dla dowolnychdwóch wierzchołków z U istnieje łaczaca je sciezka w G.Jezeli graf składa sie z jednej spójnej składowej to mówimy, zejest spójny (ang. connected).Kazdy graf nieskierowany mozna podzielic na jedna lub wiekszaliczbe spójnych składowych (ang. connected components).Graf skierowany jest silnie spójny, jesli kazde dwa wierzchołki saosiagalne jeden z drugiego.

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 18 / 68

Page 20: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Wprowadzenie

Spójne składowe

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 19 / 68

Page 21: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Wprowadzenie

Spójne podgrafy

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 20 / 68

Page 22: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Wprowadzenie

Specjalne rodzaje grafów I

Graf pełny - graf nieskierowany, w którym kazda parawierzchołków jest połaczona krawedzia.Graf pełny o n wierzchołkach oznacza sie przez Kn (ponizej K5)

A D

B C

E

Graf pełny o n wierzchołkach posiada n·(n−1)2 krawedzi –

przykładowo graf K5 posiada 10 krawedzi.

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 21 / 68

Page 23: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Wprowadzenie

Specjalne rodzaje grafów II

Graf regularny to graf, w którym kazdy wierzchołek ma taki samstopien.

Graf pełny stopnia n jest grafem regularnym stopnia n − 1.

f -graf to graf z ograniczonym stopniem wierzchołka, tzn. jegostopien nie moze byc wiekszy niz f .

Graf planarny - graf nieskierowany, który mozna narysowac napłaszczyznie tak, by krawedzie grafu nie przecinały sie ze soba.Planarnosc ma duze zastosowanie w informatyce, m.in., wgraficznej reprezentacji róznego rodzaju układów (np. scalonych,bramek, etc.).

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 22 / 68

Page 24: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Wprowadzenie

Specjalne rodzaje grafów III

v1

v2 v3

v4v1

v2 v3

v4

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 23 / 68

Page 25: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Reprezentacje grafów

Reprezentacja grafów w komputerze

Macierz sasiedztwaListy sasiedztwaLista krawedzi

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 24 / 68

Page 26: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Reprezentacje grafów

Macierz sasiedztwa

Definicja

Dany jest graf G = (V ,E), gdzie V = {v1, . . . , vn} (tj. zakłada sie, zewierzchołki sa ponumerowane w pewien dowolny sposób) oraz|V | = n. Macierz sasiedztwa grafu G to macierz M(G) = (aij) owymiarze n × n taka, ze

aij =

{1 jesli (vi , vj) ∈ E0 w przeciwnym razie

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 25 / 68

Page 27: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Reprezentacje grafów

Macierz sasiedztwa - przykład

V = {A,B,C,D,E ,F}E = {{A,B}, {A,C},{B,C}, {B,D}, {C,D},{E ,F}}M(G) =

A B C D E FA 0 1 1 0 0 0B 1 0 1 1 0 0C 1 1 0 1 0 0D 0 1 1 0 0 0E 0 0 0 0 0 1F 0 0 0 0 1 0

A B

C D

E F

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 26 / 68

Page 28: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Reprezentacje grafów

Graf skierowny G = (V ,E) - przykład

V = {A,B,C,D}E = {(A,B), (B,B), (B,C),(B,D), (C,A), (C,D),(D,C)}M(G) =

A B C DA 0 1 0 0B 0 1 1 1C 1 0 0 1D 0 0 1 0

A B

C D

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 27 / 68

Page 29: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Reprezentacje grafów

Macierz sasiedztwa - własnosci

Macierz sasiedztwa dla grafów bez wag jest macierza binarna.Macierz sasiedztwa wymaga Θ(|V |2) pamieci, niezaleznie odliczby krawedzi w tym grafie. W przypadku grafów prostych dopamietania jednego elementu macierzy mozna uzyc tylko jednegobitu zamiast jednego słowa maszynowego.Dla grafów nieskierowanych macierz sasiedztwa jest symetryczna,dlatego w pewnych zastosowaniach opłaca sie pamietac tylkoelementy na i powyzej głównej przekatnej macierzy sasiedztwa.

M(G) =

A B C D E FA 0 1 1 0 0 0B 1 0 1 1 0 0C 1 1 0 1 0 0D 0 1 1 0 0 0E 0 0 0 0 0 1F 0 0 0 0 1 0

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 28 / 68

Page 30: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Reprezentacje grafów

Listy sasiedztwa

Definicja

W reprezentacji grafu G = (V ,E) za pomoca list sasiedztwadana jest tablica A zawierajaca |V | list, po jednej dla kazdegowierzchołka z V .Dla kazdego u ∈ V elementami listy sasiedztwa A[u] sa wszystkiewierzchołki v takie, ze krawedz (u, v) ∈ E , tzn. w A[u]przechowujemy zbiór wierzchołków połaczonych krawedzia z u.

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 29 / 68

Page 31: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Reprezentacje grafów

Listy sasiedztwa - przykład

21

45

3

2 5 /

1 5 3 4 /

2 4 /

2 5 3 /

4 1 2 /

1

2

3

4

5

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 30 / 68

Page 32: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Reprezentacje grafów

Listy sasiedztwa - przykład

21

45

3

2 /

3 5 /

4 /

2 /

1 4 /

1

2

3

4

5

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 31 / 68

Page 33: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Reprezentacje grafów

Listy sasiedztwa

Jezeli G jest grafem skierowanym, to suma długosci wszystkichlist sasiedztwa wynosi |E |, poniewaz krawedz postaci (u, v) jestreprezentowana przez wystapienie v na liscie A[u].Jezeli G jest grafem nieskierowanym, to suma długosci wszystkichlist sasiedztwa wynosi 2 · |E |, poniewaz dla nieskierowanejkrawedzi {u, v} wierzchołek u wystepuje na liscie sasiedztwa v iodwrotnie, v wystepuje na liscie u.Niezaleznie od tego, czy graf jest skierowany czy nie, rozmiarwymaganej pamieci przez reprezentacje listowa jest Θ(|V |+ |E |)Reprezentacja listowa jest preferowana dla grafów rzadkich – tj.takich, dla których |E| jest duzo mniejsze niz |V |2.Reprezentacja macierzy sasiedztwa jest preferowana dla grafówgestych – tj. takich, dla których |E| jest bliskie |V |2 lub gdypotrzebne jest szybkie stwierdzenie, czy istnieje dana krawedz.

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 32 / 68

Page 34: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Reprezentacje grafów

Lista Krawedzi

Dany jest graf G = (V ,E), |V | = n, |E | = m

Lista krawedzi to lista, na której przechowujemy wszystkiekrawedzie wystepujace w grafie.Dla grafu skierowanego, moze to byc lista (tablica) zawierajacauporzadkowane pary wierzchołków.Dla grafu nieskierowanego, moze to byc lista (tablica) zawierajacanieuporzadkowane pary wierzchołków.Poniewaz kazda krawedz zawiera tylko dwie liczby (tj. zakładamy,ze wierzchołki sa ponumerowane), całkowita zajetosc pamieci dlalisty krawedzi jest rzedu Θ(|E |).

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 33 / 68

Page 35: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Reprezentacje grafów

Lista krawedzi - graf skierowany

21

45

3L = [(1,2), (2,3), (3,4), (4,2),(2,5), (5,4), (5,1)].

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 34 / 68

Page 36: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Reprezentacje grafów

Lista krawedzi - graf nieskierowany

21

45

3L = [(1,2), (1,5), (2,3), (2,4),(2,5), (3,4), (4,5)].

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 35 / 68

Page 37: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Przeszukiwanie grafów

Przeszukiwania grafu w głab

Algorytm przeszukiwania grafu w głab (ang. Depth-first search,DFS) to podstawowa metoda badania grafów.Algorytm DFS wykorzystuje sie do badania spójnosci grafu - jesliprocedura wywołana dla pierwszego wierzchołka “dotrze” dowszystkich wierzchołków grafu to graf jest spójny.

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 36 / 68

Page 38: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Przeszukiwanie grafów

Przeszukiwania grafu w głab - idea

Dane wejsciowe: Dowolny graf G = (V ,E), opcjonalnie wierzchołekpoczatkowy v ∈ V .Idea algorytmu DFS(v):

1 Zaznacz wszystkie wierzchołki grafu jako nieodwiedzone.2 Przejdz do poczatkowego wierzchołka, np. wskazanego v ,

zaznacz v jako odwiedzony. i sprawdz, czy posiadanieodwiedzonych sasiadów.

3 Jezeli v posiada nieodwiedzonych sasiadów, to przechodzimy topierwszego nieodwiedzonego i powtarzamy cała procedure.

4 Jezeli wszyscy sasiedzi pewnego wierzchołka u sa zaznaczenijako odwiedzeni, lub nie ma on sasiadów, to algorytm wraca dowierzchołka, z którego u został osiagniety.

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 37 / 68

Page 39: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Przeszukiwanie grafów

Przeszukiwania grafu w głab - idea

21

45

3

DFS (1): 1,2,3,4,5DFS (2): 2,3,4,5,1DFS (3): 3,4,2,5,1DFS (4): 4,2,5,1,3DFS (5): 5,1,2,3,4

Jezeli podano wierzchołek poczatkowy, to algorytm zbada spójnaskładowa zawierajaca ten wierzchołek (przypadek powyzej).W przeciwnym razie algorytm przeszukuje kolejne spójneskładowe, wybierajac losowy wierzchołek z nowej spójnejskładowej.

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 38 / 68

Page 40: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Przeszukiwanie grafów

Algorytm DFS - graf G=(V,E) reprezentowany przezlisty sasiedztwa

DFS(G):1: for each vertex u ∈ V do2: color [u] = WHITE3: pre[u] = NIL4: end for5: time = 06: for each vertex u ∈ V do7: if color [u] == WHITE then8: VISIT (G,u)9: end if

10: end for

VISIT (G,u)1: time = time + 12: d [u] = time3: color [u] = GRAY4: for each v ∈ Adj[u] do5: if color [v ] == WHITE then6: pre[v ] = u7: VISIT (G, v)8: end if9: end for

10: color [u] = RED11: time = time + 112: f [u] = time

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 39 / 68

Page 41: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Przeszukiwanie grafów

Działanie algorytmu - Przykład

DFS: 1,2,5,4,3,6

1 2 3

4 5 6

Krok: 1

1/

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 40 / 68

Page 42: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Przeszukiwanie grafów

Działanie algorytmu - Przykład

Krok: 2

1/ 2/

Krok: 3

1/ 2/

3/

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 41 / 68

Page 43: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Przeszukiwanie grafów

Działanie algorytmu - Przykład

Krok: 4

1/ 2/

3/4/

Krok: 5

1/ 2/

3/4/

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 42 / 68

Page 44: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Przeszukiwanie grafów

Działanie algorytmu - Przykład

Krok: 6

1/ 2/

3/4/5

Krok: 7

1/ 2/

4/5 3/6

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 43 / 68

Page 45: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Przeszukiwanie grafów

Działanie algorytmu - Przykład

Krok: 8

1/

4/5 3/6

2/7

Krok: 9

1/

4/5 3/6

2/7

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 44 / 68

Page 46: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Przeszukiwanie grafów

Działanie algorytmu - Przykład

Krok: 10

4/5 3/6

2/71/8

Krok: 11

9/

4/5 3/6

2/71/8

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 45 / 68

Page 47: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Przeszukiwanie grafów

Działanie algorytmu - Przykład

Krok: 12

9/

4/5 3/6

2/71/8

Krok: 13

9/

10/4/5 3/6

2/71/8

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 46 / 68

Page 48: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Przeszukiwanie grafów

Działanie algorytmu - Przykład

Krok: 14

9/

10/4/5 3/6

2/71/8

Krok: 15

9/

4/5 3/6

2/71/8

10/11

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 47 / 68

Page 49: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Przeszukiwanie grafów

Działanie algorytmu - Przykład

Krok: 16

4/5 3/6

2/71/8

10/11

9/12

KONIEC

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 48 / 68

Page 50: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Przeszukiwanie grafów

Algorytm DFS -przykład

1 2 3

4 5

6 7 8

DFS(1): 1, 4, 6, 7, 8, 5, 2, 3

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 49 / 68

Page 51: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Przeszukiwanie grafów

Algorytm DFS -przykład

1 2 3

4 5

6 7 8

DFS(1): 1, 4, 6, 7, 8, 5, 2, 3

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 49 / 68

Page 52: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Przeszukiwanie grafów Stos

Stos

Stos jest struktura liniowo uporzadkowanych danych, z którychjedynie ostatni element, zwany wierzchołkiem, jest w danymmomencie dostepny.W wierzchołku odbywa sie dołaczanie nowych elementów,równiez jedynie wierzchołek mozna usunac.Cecha charakterystyczna stosu jest to, ze dane sa zapisywane ipobierane metoda Last-In-First-Out (LIFO) (pierwszy wchodzi,ostatni wychodzi).Działanie stosu jest czesto porównywane do stosu talerzy:

nie mozna usunac talerza znajdujacego sie na dnie stosu nieusuwajac wczesniej wszystkich innych.nie mozna takze dodac nowego talerza gdzies indziej, niz na samagóre.

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 50 / 68

Page 53: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Przeszukiwanie grafów Stos

Stos - operacje

Niech S = (d1,d2, . . . ,dn) oznacza stos,wtedy:

Odkładanie elementu na stos:push(S,d) = (d ,d1,d2, . . . ,dn)

Pobieranie elementu ze stosu:pop(S) = (d2, . . . ,dn), o ile n > 1Pobieranie elementu ze szczytu stosubez jego usuwania: top(S) = d1

Sprawdzanie niepustosci stosu:empty(S) wtw., gdy n = 0

Pop i Push↙

d1 ← Szczyt stosud2d3d4d5 → NULL

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 51 / 68

Page 54: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Przeszukiwanie grafów Stos

DFS - reprezentacja macierzowa grafu

Badanie nieodwiedzonego wierzchołka

// zwraca nieodwiedzony wierzchołek przyległy do a// zwraca -1, jezeli takiego wierzchołka nie maint getUnVisitedVertex(Vertex a, BoolVector visited){for (b = 0; b < n; b=b+1) {if (edge[a][b] == true // jest krawedz

and visited[b]==false // b nie były odwiedzony) then return b;

}return -1;}

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 52 / 68

Page 55: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Przeszukiwanie grafów Stos

DFS - reprezentacja macierzowa grafu

DFS(Graph G,vertex a) { //G jest macierza sasiedztwabool visited [n];for (k = 0; k < n; k=k+1) visited[k] = false;STACK s; // stos do przechowywania wierzchołkówvisited[a] = true; // rozpocznij od wierzchołka adisplayVertex(a); // wyswietl wierzchołeks.push(a); // zapisz na stoswhile (not s.empty()) {// pobierz nieodwiedzony wierzchołek,// przyległy do szczytowego elementu stosub = getUnVisitedVertex(s.top(), visited);if (b == -1) { // jezeli nie ma takiego wierzcholka,

s.pop();} else {

visited[b] = true; // oznacz wierzcholek jako odwiedzonydisplayVertex(b); // wyswietl wierzcholeks.push(b); // zapisz na stos

}}

}

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 53 / 68

Page 56: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Przeszukiwanie grafów Stos

Przeszukiwania grafu w głab - złozonosc

Złozonosc czasowa algorytmu DFS:

graf reprezentowany jako listy sasiedztwa: Θ(|V |+ |E |), na coskłada sie poczatkowa inicjalizacja (zabiera Θ(|V |)) iprzechodzenie po wszystkich sasiadach kazdego wierzchołka(zabiera Θ(|E |) poniewaz suma długosci wszystkich listsasiedztwa wynosi 0(|E |)).graf reprezentowany jako macierz sasiedztwa: Θ(|V |2).

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 54 / 68

Page 57: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Przeszukiwanie grafów Stos

Zastosowania DFS

Podstawowe zastosowania:Sprawdzanie spójnosci grafu.Wyznaczanie spójnych składowych grafu.Wyznaczanie silnie spójnych składowych (w wersji dla grafuskierowanego).Znajdowanie drogi w labiryncie.

Zauwazmy, ze w procedurze DFS wywołujemy procedure Visitdokładnie tyle razy, ile jest spójnych składowych w grafieW szczególnosci, gdy graf jest spójny, Visit zostanie wywołanadokładnie raz przez procedure DFS.

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 55 / 68

Page 58: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Przeszukiwanie grafów Stos

Spójne składowe

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 56 / 68

Page 59: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Przeszukiwanie grafów Kolejka

Kolejka

Kolejka FIFO (First In First Out) jest struktura liniowouporzadkowanych danych, w której dołaczac nowe dane moznajedynie na koniec, a usuwac z poczatku.Procedura usuniecia danych z konca kolejki jest taka sama, jak wprzypadku stosu, z ta róznica, ze usuwamy dane od poczatku anie od konca.Działanie na kolejce jest intuicyjnie jasne, gdy skojarzymy ja zkolejka ludzi np. w sklepie. Kazdy nowy klient staje na jej koncu,obsługa odbywa sie jedynie na poczatku.

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 57 / 68

Page 60: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Przeszukiwanie grafów Kolejka

Kolejka - operacje

Niech K = (d1,d2, . . . ,dn) oznacza kolejke, wtedy:Wstawianie elementu do kolejki:enqueuq(K ,d) = (d1,d2, . . . ,dn,d)

Pobieranie elementu z kolejki: dequeuq(K ) = (d2, . . . ,dn), o ilen > 1Obsługiwanie pierwszego elementu z kolejki bez jego usuwania :first(K ) = d1

Sprawdzanie niepustosci kolejki: empty(K ) wtw., gdy n = 0

Poczatek kolejki→ d1 d2 d3 d4 d5 ← Koniec kolejki

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 58 / 68

Page 61: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Przeszukiwanie grafów Kolejka

Przeszukiwanie grafu wszerz

Z ustalonego wierzchołka zródłowego s przegladamy kolejnewierzchołki z niego osiagalne.Wierzchołki w odległosci k od zródłowego s odwiedzane sa przedwierzchoakami w odległosci k + 1.Jezeli po powyzszym procesie pozostanie jakikolwieknieodwiedzony wierzchołek u, kontynuujemy przeszukiwanietraktujac go jako nowy wierzchołek zródłowy. Cały procespowtarzamy, az wszystkie wierzchołki w grafie zostanaodwiedzone.Odwiedzane wierzchołki przechowywane sa w kolejce FIFO.

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 59 / 68

Page 62: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Przeszukiwanie grafów Kolejka

Algorytm BFS - graf G=(V,E) reprezentowany przezlisty sasiedztwa

BFS(G, s):1: for each vertex u ∈ V −{s} do2: color [u] = WHITE3: d [u] =∞4: pre[u] = NIL5: end for6: color [s] = GRAY7: d [s] = 08: pre[s] = NIL9: EnQueue(Q, s)

1: while Q 6= ∅ do2: u = DeQueue(Q)3: for each v ∈ Adj[u] do4: if color [v ] == WHITE

then5: color [v ] = GRAY6: d [v ] = d [u] + 17: pre[v ] = u8: EnQueue(Q, v)9: end if

10: end for11: DeQueue(Q)12: color [u] = BLACK13: end while

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 60 / 68

Page 63: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Przeszukiwanie grafów Kolejka

Algorytm BFS -przykład

Rysunek: Zródło:Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest,Clifford Stein. Introduction to Algorithms. The MIT Press, 2009.

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 61 / 68

Page 64: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Przeszukiwanie grafów Kolejka

Algorytm BFS -przykład

Rysunek: Zródło:Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest,Clifford Stein. Introduction to Algorithms. The MIT Press, 2009.

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 62 / 68

Page 65: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Przeszukiwanie grafów Kolejka

Algorytm BFS -przykład

Rysunek: Zródło:Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest,Clifford Stein. Introduction to Algorithms. The MIT Press, 2009.

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 63 / 68

Page 66: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Przeszukiwanie grafów Kolejka

Algorytm BFS -przykład

Rysunek: Zródło:Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest,Clifford Stein. Introduction to Algorithms. The MIT Press, 2009.

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 64 / 68

Page 67: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Przeszukiwanie grafów Kolejka

Algorytm BFS -przykład

Rysunek: Zródło:Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest,Clifford Stein. Introduction to Algorithms. The MIT Press, 2009.

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 65 / 68

Page 68: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Przeszukiwanie grafów Kolejka

BFS - reprezentacja macierzowa grafu

BFS(Graph G,vertex a) { //G jest macierza sasiedztwabool visited [n];for (k = 0; k < n; ++k) visited[k] = false;Queue q; // kolejka do przechowywania wierzchołkówvisited[a] = true; // rozpocznij od wierzcholka adisplayVertex(a); // wyswietl wierzcholekq.EnQueue(a); // wstaw na koncuwhile (not q.empty()) { // do opróznienia kolejki,

b = q.Front(); // pobierz piewszy wierzcholekq.DeQueue(); // usun go z kolejki// dopóki ma nie odwiedzonych sasiadówc = getUnVisitedVertex(b, visited); // pobierz sasiadawhile (c != -1){

visited[c] = true; // oznaczdisplayVertex(c); // wyswietlq.EnQueue(c); // wstaw do kolejkic = getUnVisitedVertex(b, visited); // pobierz sasiada

} // while} // while(kolejka nie jest pusta)

}

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 66 / 68

Page 69: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Przeszukiwanie grafów Kolejka

Algorytm BFS -przykład

1 2 3

4 5

6 7 8

BFS(1): 1, 4, 5, 6, 7, 8BFS(2): 2, 4, 6, 7, 8

BFS(3): 3, 5, 8, 7BFS: 1, 4, 5, 6, 7, 8, 2, 3

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 67 / 68

Page 70: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Przeszukiwanie grafów Kolejka

Algorytm BFS -przykład

1 2 3

4 5

6 7 8

BFS(1): 1, 4, 5, 6, 7, 8BFS(2): 2, 4, 6, 7, 8

BFS(3): 3, 5, 8, 7BFS: 1, 4, 5, 6, 7, 8, 2, 3

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 67 / 68

Page 71: Algorytmy Grafowewozna.org/students/2018-2019/ag/AG01.pdf · Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i pózniejsz´ e. Łukasz Malinowski.

Przeszukiwanie grafów Kolejka

Przeszukiwania grafu wszerz - złozonosc

Złozonosc czasowa algorytmu BFS:

graf reprezentowany jako listy sasiedztwa: Θ(|V |+ |E |), na coskłada sie poczatkowa inicjalizacja (zabiera Θ(|V |)) iprzechodzenie po wszystkich sasiadach kazdego wierzchołka(zabiera Θ(|E |) poniewaz suma długosci wszystkich listsasiedztwa wynosi 0(|E |)).graf reprezentowany jako macierz sasiedztwa: Θ(|V |2).

B. Wozna-Szczesniak (UJD) Algorytmy Grafowe 68 / 68