Algorytmy i Struktury Danych. - Grafy · Grafy - Obszary Zastosowania Informatyka Technika 1 Fizyka...

45
Algorytmy i Struktury Danych. Grafy Bo˙ zena Wo´ zna-Szcze´ sniak [email protected] Jan Dlugosz University, Poland Wyklad 7 Bo˙ zena Wo´ zna-Szcze´ sniak (AJD) Algorytmy i Struktury Danych. Wyklad 7 1 / 43

Transcript of Algorytmy i Struktury Danych. - Grafy · Grafy - Obszary Zastosowania Informatyka Technika 1 Fizyka...

Page 1: Algorytmy i Struktury Danych. - Grafy · Grafy - Obszary Zastosowania Informatyka Technika 1 Fizyka Nauki społeczne Biologia Kartografia Lingwistyka i wiele innych ... 1Deo N. Teoria

Algorytmy i Struktury Danych.Grafy

Bozena [email protected]

Jan Długosz University, Poland

Wykład 7

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 7 1 / 43

Page 2: Algorytmy i Struktury Danych. - Grafy · Grafy - Obszary Zastosowania Informatyka Technika 1 Fizyka Nauki społeczne Biologia Kartografia Lingwistyka i wiele innych ... 1Deo N. Teoria

Grafy - Obszary Zastosowania

Informatyka

Technika 1

Fizyka

Nauki społeczne

Biologia

Kartografia

Lingwistyka

i wiele innych . . .

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

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 7 2 / 43

Page 3: Algorytmy i Struktury Danych. - Grafy · Grafy - Obszary Zastosowania Informatyka Technika 1 Fizyka Nauki społeczne Biologia Kartografia Lingwistyka i wiele innych ... 1Deo N. Teoria

Grafy - Zastosowania w Informatyce:

Reprezentacja struktury programów

Modelowanie systemów komputerowych

Automatyczna weryfikacja systemów współbieznych irozproszonych

Kryptografia - Szyfr Cezara, Problem Dalekopisu, Kod Graya,Kody Huffmana, kryptografia wizualna, itd.

Sieci komputerowe - znajdowanie najkrótszych sciezek

i wiele innych . . .

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 7 3 / 43

Page 4: Algorytmy i Struktury Danych. - Grafy · Grafy - Obszary Zastosowania Informatyka Technika 1 Fizyka Nauki społeczne Biologia Kartografia Lingwistyka i wiele innych ... 1Deo N. Teoria

Graf - idea

Graf to - intuicyjnie - zbiór wierzchołków , które moga bycpołaczone krawedziami , w taki sposób, ze kazda krawedzkonczy sie i zaczyna w pewnym wierzchołku.

Wierzchołki grafu zazwyczaj sa etykietowane (numerowane) ireprezentuja pewne obiekty (np. miasta).

Krawedzie obrazuja relacje pomiedzy obiektami (np. połaczeniakolejowe).

Krawedzie moga miec wyznaczony kierunek, a graf zawierajacytakie krawedzie nazywany jest grafem skierowanym .

Krawedz moze posiadac wage, tzn. przypisana wartosc liczbowa,która okresla na przykład odległosc w kilometrach pomiedzywierzchołkami (jesli graf jest reprezentacja połaczen miedzymiastami).

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 7 4 / 43

Page 5: Algorytmy i Struktury Danych. - Grafy · Grafy - Obszary Zastosowania Informatyka Technika 1 Fizyka Nauki społeczne Biologia Kartografia Lingwistyka i wiele innych ... 1Deo N. Teoria

Graf - Leonharda Eulera

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.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 7 5 / 43

Page 6: Algorytmy i Struktury Danych. - Grafy · Grafy - Obszary Zastosowania Informatyka Technika 1 Fizyka Nauki społeczne Biologia Kartografia Lingwistyka i wiele innych ... 1Deo N. Teoria

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:

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 7 6 / 43

Page 7: Algorytmy i Struktury Danych. - Grafy · Grafy - Obszary Zastosowania Informatyka Technika 1 Fizyka Nauki społeczne Biologia Kartografia Lingwistyka i wiele innych ... 1Deo N. Teoria

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.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 7 7 / 43

Page 8: Algorytmy i Struktury Danych. - Grafy · Grafy - Obszary Zastosowania Informatyka Technika 1 Fizyka Nauki społeczne Biologia Kartografia Lingwistyka i wiele innych ... 1Deo N. Teoria

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:

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 7 8 / 43

Page 9: Algorytmy i Struktury Danych. - Grafy · Grafy - Obszary Zastosowania Informatyka Technika 1 Fizyka Nauki społeczne Biologia Kartografia Lingwistyka i wiele innych ... 1Deo N. Teoria

Mosty królewieckie

Problem mostów królewieckich, to inaczej problem znalezienia wdanym grafie tzw. cyklu Eulera , czyli cyklu przechodzacego przezwszystkie wierzchołki i wszystkie krawedzie danego grafu, aleprzez kazda krawedz tylko raz.

W roku 1736 roku Euler udowdnił twierdzenie, które obecniemozna sformułowac w sposób nastepujacy:

W grafie mozna znalezc cykl Eulera wtedy i tylko wtedy,gdy graf jest spójny i kazdy jego wierzchołek ma parzystystopien.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 7 9 / 43

Page 10: Algorytmy i Struktury Danych. - Grafy · Grafy - Obszary Zastosowania Informatyka Technika 1 Fizyka Nauki społeczne Biologia Kartografia Lingwistyka i wiele innych ... 1Deo N. Teoria

Graf skierowany

DefinicjaGrafem skierowanym (digrafem) nazywamy strukture

G = (V ,E)

gdzie

V to zbiór wierzchołków,

E ⊆ {(u, v) : u, v ∈ V} to zbiór uporzadkowanych parwierzchołków ze zbioru V , zwanych krawedziami.

Przez n oznaczamy ilosc wierzchołków (rozmiar zbioru V )Przez m oznaczamy ilosc krawedzi (rozmiar zbioru E )

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 7 10 / 43

Page 11: Algorytmy i Struktury Danych. - Grafy · Grafy - Obszary Zastosowania Informatyka Technika 1 Fizyka Nauki społeczne Biologia Kartografia Lingwistyka i wiele innych ... 1Deo N. Teoria

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

V = {1,2,3,4,5,6}E = {(1,2), (1,3), (2,4), (2,5), (3,4), (3,6), (4,6)}n = 6, m = 7

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 7 11 / 43

Page 12: Algorytmy i Struktury Danych. - Grafy · Grafy - Obszary Zastosowania Informatyka Technika 1 Fizyka Nauki społeczne Biologia Kartografia Lingwistyka i wiele innych ... 1Deo N. Teoria

Podstawowe Pojecia

Droga ( sciezka) w grafie skierowanym to lista wierzchołków(n1,n2, . . . ,nk ) taka, ze wystepuje krawedz łaczaca kazdywierzchołek z nastepnym, to znaczy (ni ,ni+1) ∈ E dlai = 1,2, . . . , k .

Droga prosta , to droga w której zadna krawedz sie nie powtarza.

Długo sc drogi wynosi k − 1, co stanowi liczbe krawedzinalezacych do tej samej drogi.

Cykl w grafie skierowanym jest droga o długosci co najmniej 1,która zaczyna sie i konczy w tym samym wierzchołku. Długosccyklu jest długoscia drogi.

Cykl jest prosty , jezeli zaden wierzchołek (oprócz pierwszego)nie pojawia sie w nim wiecej niz raz.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 7 12 / 43

Page 13: Algorytmy i Struktury Danych. - Grafy · Grafy - Obszary Zastosowania Informatyka Technika 1 Fizyka Nauki społeczne Biologia Kartografia Lingwistyka i wiele innych ... 1Deo N. Teoria

Podstawowe Pojecia

Jezeli graf posiada jeden lub wiecej cykli to mówimy, ze jestgrafem cyklicznym .

Jezeli graf nie posiada cykli to, mówimy, ze jest grafemacyklicznym .

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 7 13 / 43

Page 14: Algorytmy i Struktury Danych. - Grafy · Grafy - Obszary Zastosowania Informatyka Technika 1 Fizyka Nauki społeczne Biologia Kartografia Lingwistyka i wiele innych ... 1Deo N. Teoria

Podstawowe Pojecia

Jezeli graf posiada jeden lub wiecej cykli to mówimy, ze jestgrafem cyklicznym .

Jezeli graf nie posiada cykli to, mówimy, ze jest grafemacyklicznym .

Przykład:

Cykle proste: (0,0), (0,2,0), (1,3,2,1), (1,3,2,4,1)Cykl nieprosty: (0,2,1,3,2,0)

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 7 13 / 43

Page 15: Algorytmy i Struktury Danych. - Grafy · Grafy - Obszary Zastosowania Informatyka Technika 1 Fizyka Nauki społeczne Biologia Kartografia Lingwistyka i wiele innych ... 1Deo N. Teoria

Graf nieskierowany

DefinicjaGrafem nieskierowanym (grafem) nazywamy strukture

G = (V ,E)

gdzie

V to zbiór wierzchołków,

E ⊆ {{u, v} : u, v ∈ V} to zbiór dwuelementowychpodzbiorów/multizbiorów zbioru V , zwanych krawedziami.

Przez n oznaczamy ilosc wierzchołków (rozmiar zbioru V )Przez m oznaczamy ilosc krawedzi (rozmiar zbioru E )

Droga w grafie nieskierowanym, to lista wierzchołków.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 7 14 / 43

Page 16: Algorytmy i Struktury Danych. - Grafy · Grafy - Obszary Zastosowania Informatyka Technika 1 Fizyka Nauki społeczne Biologia Kartografia Lingwistyka i wiele innych ... 1Deo N. Teoria

Graf nieskierowny - przykład

V = {1,2,3,4,5,6}

E = {(1,2), (1,3), (2,4), (2,5), (3,4), (3,6), (4,6)}

n = 6, m = 7

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 7 15 / 43

Page 17: Algorytmy i Struktury Danych. - Grafy · Grafy - Obszary Zastosowania Informatyka Technika 1 Fizyka Nauki społeczne Biologia Kartografia Lingwistyka i wiele innych ... 1Deo N. Teoria

Podstawowe pojecia

Graf posiadajacy krawedzie pomiedzy kazda para róznychwierzchołków nosi nazwe grafu pełnego .

O grafie nieskierowanym mówi sie ze jest planarny , jesli istniejemozliwosc rozmieszczenia jego wierzchołków na płaszczyznie, anastepnie narysowania jego krawedzi jako lini ciagłych które sienie przecinaja.

Grafy nieplanarne to takie, które nie posiadaja reprezentacjipłaskiej.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 7 16 / 43

Page 18: Algorytmy i Struktury Danych. - Grafy · Grafy - Obszary Zastosowania Informatyka Technika 1 Fizyka Nauki społeczne Biologia Kartografia Lingwistyka i wiele innych ... 1Deo N. Teoria

Podstawowe pojecia

Graf posiadajacy krawedzie pomiedzy kazda para róznychwierzchołków nosi nazwe grafu pełnego .

O grafie nieskierowanym mówi sie ze jest planarny , jesli istniejemozliwosc rozmieszczenia jego wierzchołków na płaszczyznie, anastepnie narysowania jego krawedzi jako lini ciagłych które sienie przecinaja.

Grafy nieplanarne to takie, które nie posiadaja reprezentacjipłaskiej.

Planarnosc ma duze zastosowanie w informatyce, m.in., wgraficznej reprezentacji róznego rodzaju układów (np. scalonych,bramek, etc.).

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 7 16 / 43

Page 19: Algorytmy i Struktury Danych. - Grafy · Grafy - Obszary Zastosowania Informatyka Technika 1 Fizyka Nauki społeczne Biologia Kartografia Lingwistyka i wiele innych ... 1Deo N. Teoria

Podstawowe pojecia

Stopie n wierzchołka :W grafie nieskierowanym to liczba incydentnych z nim krawedzi.W grafie skierowanym to suma stopni wejsciowego (ilosckonczacych sie krawedzi) i wyjsciowego (ilosc wychodzacychkrawedzi).

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

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

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 7 17 / 43

Page 20: Algorytmy i Struktury Danych. - Grafy · Grafy - Obszary Zastosowania Informatyka Technika 1 Fizyka Nauki społeczne Biologia Kartografia Lingwistyka i wiele innych ... 1Deo N. Teoria

Przykład

Stopien wierzchołka 1 jesy równy 2, a wierzchołka 2 jest równy 3.

Graf jest planarny.

3-graf.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 7 18 / 43

Page 21: Algorytmy i Struktury Danych. - Grafy · Grafy - Obszary Zastosowania Informatyka Technika 1 Fizyka Nauki społeczne Biologia Kartografia Lingwistyka i wiele innych ... 1Deo N. Teoria

Reprezentacja grafów w komputerze

Macierz sasiedztwa

Lista incydencji (sasiedztwa)

Lista krawedzi

Macierz incydencji

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 7 19 / 43

Page 22: Algorytmy i Struktury Danych. - Grafy · Grafy - Obszary Zastosowania Informatyka Technika 1 Fizyka Nauki społeczne Biologia Kartografia Lingwistyka i wiele innych ... 1Deo N. Teoria

Macierz sasiedztwa

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

Budujemy tablice (macierz) M o rozmiarach n · n.Wypełniamy tablice M w sposób nastepujacy:

Zerem - jesli dwa wierzchołki nie sa połaczone krawedzia.Jedynka - jesli dwa wierzchołki sa połaczone.

Uwagi: Dla grafów nieskierowanych macierz sasiedztwa jestsymetryczna, zatem implementujac ja za pomoca tablic dynamicznychmozna ja zmniejszyc do połowy - zapisujemy tylko macierzdolno-(górno)-trójkatna.

Złozonosc pamieciowa: O(n2)

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 7 20 / 43

Page 23: Algorytmy i Struktury Danych. - Grafy · Grafy - Obszary Zastosowania Informatyka Technika 1 Fizyka Nauki społeczne Biologia Kartografia Lingwistyka i wiele innych ... 1Deo N. Teoria

Macierz sasiedztwa - graf nieskierowany

1 2 3 4 5 61 1 12 1 1 13 1 1 14 1 1 15 16 1 1

Czas wstawienia: O(1)

Czas usuniecia: O(1)

Czas zapytania: O(1)

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 7 21 / 43

Page 24: Algorytmy i Struktury Danych. - Grafy · Grafy - Obszary Zastosowania Informatyka Technika 1 Fizyka Nauki społeczne Biologia Kartografia Lingwistyka i wiele innych ... 1Deo N. Teoria

Macierz sasiedztwa - graf skierowany

0 1 2 3 40 1 1 11 12 1 1 13 1 14 1

Czas wstawienia: O(1)

Czas usuniecia: O(1)

Czas zapytania: O(1)

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 7 22 / 43

Page 25: Algorytmy i Struktury Danych. - Grafy · Grafy - Obszary Zastosowania Informatyka Technika 1 Fizyka Nauki społeczne Biologia Kartografia Lingwistyka i wiele innych ... 1Deo N. Teoria

Lista incydencji

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

Budujemy liste dla kazdego wierzchołka v ∈ V , w którejprzechowujemy zbiór wierzchołków połaczonych krawedzia z v .

Złozonosc pamieciowa: O(n + m).

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 7 23 / 43

Page 26: Algorytmy i Struktury Danych. - Grafy · Grafy - Obszary Zastosowania Informatyka Technika 1 Fizyka Nauki społeczne Biologia Kartografia Lingwistyka i wiele innych ... 1Deo N. Teoria

Lista incydencji - graf nieskierowany

1: 2 32: 1 4 53: 1 4 64: 2 3 65: 26: 3 4

Czas wstawienia: O(1)

Czas usuniecia: czaswyszukiwania na liscieuporzadkowanej

Czas zapytania: czaswyszukiwania na liscieuporzadkowanej

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 7 24 / 43

Page 27: Algorytmy i Struktury Danych. - Grafy · Grafy - Obszary Zastosowania Informatyka Technika 1 Fizyka Nauki społeczne Biologia Kartografia Lingwistyka i wiele innych ... 1Deo N. Teoria

Lista incydencji - graf skierowany

0: 0 1 21: 32: 0 1 43: 2 44: 1

Czas wstawienia: O(1)

Czas usuniecia: czaswyszukiwania na liscieuporzadkowanej.

Czas zapytania: czaswyszukiwania na liscieuporzadkowanej.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 7 25 / 43

Page 28: Algorytmy i Struktury Danych. - Grafy · Grafy - Obszary Zastosowania Informatyka Technika 1 Fizyka Nauki społeczne Biologia Kartografia Lingwistyka i wiele innych ... 1Deo N. Teoria

Lista Krawedzi

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

Lista krawedzi to lista, na której przechowujemy wszystkiekrawedzie wystepujace w grafie.

Zapisujac przy pomocy tej reprezentacji graf, w którym wystepujakrawedzie skierowane i nieskierowane nalezy w przypadkukrawedzi nieskierowanej z u do v zapisac krawedz dwukrotnie:u − v oraz v − u.

Złozonosc pamieciowa: O(m).

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 7 26 / 43

Page 29: Algorytmy i Struktury Danych. - Grafy · Grafy - Obszary Zastosowania Informatyka Technika 1 Fizyka Nauki społeczne Biologia Kartografia Lingwistyka i wiele innych ... 1Deo N. Teoria

Lista krawedzi - graf nieskierowany

1 - 21 - 32 - 12 - 42 - 53 - 13 - 43 - 64 - 24 - 34 - 65 - 26 - 36 - 4

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 7 27 / 43

Page 30: Algorytmy i Struktury Danych. - Grafy · Grafy - Obszary Zastosowania Informatyka Technika 1 Fizyka Nauki społeczne Biologia Kartografia Lingwistyka i wiele innych ... 1Deo N. Teoria

Lista krawedzi - graf skierowany

0 - 00 - 10 - 21 - 32 - 02 - 12 - 43 - 23 - 44 - 1

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 7 28 / 43

Page 31: Algorytmy i Struktury Danych. - Grafy · Grafy - Obszary Zastosowania Informatyka Technika 1 Fizyka Nauki społeczne Biologia Kartografia Lingwistyka i wiele innych ... 1Deo N. Teoria

Macierz incydencji

Dany jest graf G = (V ,E), |V | = n, |E | = mMacierz incydencji to tablica o rozmiarach n · m.Składa sie ona z m kolumn i n wierszy:

jesli krawedz wychodzi z danego wierzchołka, to piszemy wodpowiedniej kolumnie (-1),jesli krawedz wchodzi do danego wierzchołka, to piszemy (+1),jesli wierzchołek nie nalezy do krawedzi, to piszemy 0,jesli jest petla własna, to piszemy 2.

Złozonosc pamieciowa O(n · m).

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 7 29 / 43

Page 32: Algorytmy i Struktury Danych. - Grafy · Grafy - Obszary Zastosowania Informatyka Technika 1 Fizyka Nauki społeczne Biologia Kartografia Lingwistyka i wiele innych ... 1Deo N. Teoria

Macierz incydencji - graf skierowany

0 1 2 3 40 - 0 20 - 1 -1 10 - 2 -1 11 - 3 -1 12 - 0 1 -12 - 1 1 -12 - 4 -1 13 - 2 1 -13 - 4 -1 14 - 1 1 -1

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 7 30 / 43

Page 33: Algorytmy i Struktury Danych. - Grafy · Grafy - Obszary Zastosowania Informatyka Technika 1 Fizyka Nauki społeczne Biologia Kartografia Lingwistyka i wiele innych ... 1Deo N. Teoria

Macierz sasiedztwa a lista sasiedztwa

Macierze sasiedztwa sa preferowanym sposobem reprezentacjigrafów wówczas, gdy grafy sa geste, tzn. kiedy liczba krawedzijest bliska maksymalnej mozliwej ich liczby.

Dla grafu skierowanego o n wierzchołkach maksymalna liczbakrawedzi wynosi n2.

Jesli graf jest rzadki, to reprezentacja oparta na listach sasiedztwamoze pozwolic zaoszczedzic pamiec.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 7 31 / 43

Page 34: Algorytmy i Struktury Danych. - Grafy · Grafy - Obszary Zastosowania Informatyka Technika 1 Fizyka Nauki społeczne Biologia Kartografia Lingwistyka i wiele innych ... 1Deo N. Teoria

Algorytm przeszukiwania grafu w głab - DFS

Algorytm DFS to podstawowa metoda badania grafówskierowanych.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.Algorytm:

Wybrany wierzchołek umiesc na stosie, zaznacz jako odwiedzony iprzejdz do jego nastepnika. Nastepnik równiez umiesc na stosie,zaznacz jako odwiedzony i przejdz do jego nastepnika.Jesli napotkany wierzchołek nie ma krawedzi incydentych znieodwiedzonymi wierzchołkami, usun go ze stosu i pobierz zestosu kolejny wierzchołek do przeszukania.

W praktyce stosuje sie zasade, ze jesli przeszukiwanywierzchołek jest połaczony krawedziami z wieloma wierzchołkami,wybiera sie do przeszukania wierzchołek o najmniejszej liczbieporzadkowej. Dlatego szukajac kolejny nieodwiedzony nastepniknalezy rozpoczynac od konca macierzy.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 7 32 / 43

Page 35: Algorytmy i Struktury Danych. - Grafy · Grafy - Obszary Zastosowania Informatyka Technika 1 Fizyka Nauki społeczne Biologia Kartografia Lingwistyka i wiele innych ... 1Deo N. Teoria

DFS - przykład

Jedno z mo zliwych drzewprzeszukiwania:

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 7 33 / 43

Page 36: Algorytmy i Struktury Danych. - Grafy · Grafy - Obszary Zastosowania Informatyka Technika 1 Fizyka Nauki społeczne Biologia Kartografia Lingwistyka i wiele innych ... 1Deo N. Teoria

Przeszukiwanie grafu wszerz (BFS)

Aby przeszukac graf wszerz (BFS) nalezy zamiast stosu wykorzystackolejke do przechowywania wierzchołków, a kolejnychnieodwiedzonych nastepników szukac od poczatku macierzy.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 7 34 / 43

Page 37: Algorytmy i Struktury Danych. - Grafy · Grafy - Obszary Zastosowania Informatyka Technika 1 Fizyka Nauki społeczne Biologia Kartografia Lingwistyka i wiele innych ... 1Deo N. Teoria

BFS i DFS- przykład

W wyniku wywołaniaprocedury DFS dla grafu obokotrzymamy wierzchołki wnastepujacej kolejnosci:1,2,4,5,3,6.

W wyniku wywołaniaprocedury BFS dla grafu obokotrzymamy wierzchołki wkolejnosci: 1,2,3,4,5,6.

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 7 35 / 43

Page 38: Algorytmy i Struktury Danych. - Grafy · Grafy - Obszary Zastosowania Informatyka Technika 1 Fizyka Nauki społeczne Biologia Kartografia Lingwistyka i wiele innych ... 1Deo N. Teoria

Graf - pewna implementacja

Definicja grafutypedef struct {

int n; // liczba wierzchołków grafubool ** adj; // macierz s ˛asiedztwa

} Graph;

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 7 36 / 43

Page 39: Algorytmy i Struktury Danych. - Grafy · Grafy - Obszary Zastosowania Informatyka Technika 1 Fizyka Nauki społeczne Biologia Kartografia Lingwistyka i wiele innych ... 1Deo N. Teoria

Graf - pewna implementacja

Deklaracja interfejsu// inicjalizacja struktury Graphvoid init(Graph * , int);// dodanie krawedzivoid addEdge(Graph * , int, int);void display(Graph const * ); // wy swietlenie grafuvoid dfs(Graph * , int); // wyszukiwanie "wgł ˛ab"void bfs(Graph * , int); // wyszukiwanie "wszerz"int getUnVisitedVertex(Graph * ,int, bool const visited []);void displayVertex(int);

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 7 37 / 43

Page 40: Algorytmy i Struktury Danych. - Grafy · Grafy - Obszary Zastosowania Informatyka Technika 1 Fizyka Nauki społeczne Biologia Kartografia Lingwistyka i wiele innych ... 1Deo N. Teoria

Graf - pewna implementacja

Inicjalizacja struktury Graphvoid init(Graph * g, int n) {

g->n = n;g->adj = calloc(n, sizeof(bool * ));for (int k = 0; k < n; ++k) {

g->adj[k] = calloc(n, sizeof(bool));}for(int b = 0; b < n; ++b) {

for(int a = 0; a < n; ++a) {g->adj[a][b] = false;

}}// zerowanie macierzy

}

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 7 38 / 43

Page 41: Algorytmy i Struktury Danych. - Grafy · Grafy - Obszary Zastosowania Informatyka Technika 1 Fizyka Nauki społeczne Biologia Kartografia Lingwistyka i wiele innych ... 1Deo N. Teoria

Graf - pewna implementacja

Dodanie krawedzivoid addEdge(Graph * g, int a, int b){

if (a >= 0 && a < g->n && b >= 0 && b < g->n) {g->adj[a][b] = true;g->adj[b][a] = true;

} else {printf("Niepoprawne dane\n\n");exit(EXIT_FAILURE);

}}

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 7 39 / 43

Page 42: Algorytmy i Struktury Danych. - Grafy · Grafy - Obszary Zastosowania Informatyka Technika 1 Fizyka Nauki społeczne Biologia Kartografia Lingwistyka i wiele innych ... 1Deo N. Teoria

Graf - pewna implementacja

Wyswietlenie grafuvoid displayVertex(int a) {

printf("%c ", ’A’ + a);}void display(Graph const * g) {

printf("\nKrawedzie grafu:\n");for (int row = 0; row < g->n; ++row)

for (int col = 0; col < g->n; ++col)if (g->adj[row][col]) {

printf("%c%c", (char)(’A’ + row), ’-’);printf("%c%s", (char)(’A’ + col), " ");

}printf("\n");

}

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 7 40 / 43

Page 43: Algorytmy i Struktury Danych. - Grafy · Grafy - Obszary Zastosowania Informatyka Technika 1 Fizyka Nauki społeczne Biologia Kartografia Lingwistyka i wiele innych ... 1Deo N. Teoria

Graf - pewna implementacja

nie odwiedzony wierzchołek// zwraca nie odwiedzony wierzchołek przyległy do a// zwraca -1, je zeli takiego wierzchołka nie maint getUnVisitedVertex(Graph * g, int a, bool const visited []){

for (int b = 0; b < g->n; ++b) {if (g->adj[a][b] && !visited[b]) {

return b;}

}return -1;

}

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 7 41 / 43

Page 44: Algorytmy i Struktury Danych. - Grafy · Grafy - Obszary Zastosowania Informatyka Technika 1 Fizyka Nauki społeczne Biologia Kartografia Lingwistyka i wiele innych ... 1Deo N. Teoria

Graf - pewna implementacja

Wyszukiwanie "wgłab"void dfs(Graph * g, int a) {

bool * visited = calloc(g->n, sizeof(bool));for (unsigned int k = 0; k < g->n; ++k)

visited[k] = false;Stack s; initStack(&s);visited[a] = true; // rozpocznij od wierzchołka adisplayVertex(a); // wy swietl wierzchołekpush(&s, a); // zapisz na stoswhile (!stackEmpty(&s)) {

// pobierz nie odwiedzony wierzchołek,// przyległy do szczytowego elementu stosuint b = getUnVisitedVertex(g, top(&s), visited);if (b == -1){ // je zeli nie ma takiego wierzchołka,

pop(&s);} else {

visited[b] = true;displayVertex(b);push(&s, b);

}} // whilefree(visited);

}

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 7 42 / 43

Page 45: Algorytmy i Struktury Danych. - Grafy · Grafy - Obszary Zastosowania Informatyka Technika 1 Fizyka Nauki społeczne Biologia Kartografia Lingwistyka i wiele innych ... 1Deo N. Teoria

Graf - pewna implementacja

wyszukiwanie wszerzvoid bfs(Graph * g, int a) {

bool * visited = calloc(g->n, sizeof(bool));for (unsigned k = 0; k < g->n; ++k)

visited[k] = false;Queue q; initQueue(&q);visited[a] = true;displayVertex(a);inject(&q, a); // wstaw na ko ncuwhile (!queueEmpty(q)) {

int b = front(&q); // pobierz piewszy wierzchołekeject(&q); // usu n go z kolejkiint c; // dopóki ma nie odwiedzonych s ˛asiadówwhile ((c = getUnVisitedVertex(g, b, visited)) != -1){

visited[c] = true;displayVertex(c);inject(&q, c);

}} // while(kolejka nie jest pusta)free(visited);

}

Bozena Wozna-Szczesniak (AJD) Algorytmy i Struktury Danych. Wykład 7 43 / 43