Algorytmy Grafowe. dr hab. Bożena Woźna-Szcześniak, prof. UJD. Wykład 1,2,3. Uniwersytet Humanistyczno-Przyrodniczy im. Jana Długosza w Częstochowie

Save this PDF as:

Wielkość: px
Rozpocząć pokaz od strony:

Download "Algorytmy Grafowe. dr hab. Bożena Woźna-Szcześniak, prof. UJD. Wykład 1,2,3. Uniwersytet Humanistyczno-Przyrodniczy im. Jana Długosza w Częstochowie"

Transkrypt

1 Algorytmy Grafowe dr hab. Bożena Woźna-Szcześniak, prof. UJD Uniwersytet Humanistyczno-Przyrodniczy im. Jana Długosza w Częstochowie Wykład 1,2,3 B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 1 / 68

2 Cel przedmiotu Celem wykładów jest zapoznanie studentów z podstawowymi algorytmami grafowymi. Przedstawiona zostanie również ich poprawność i złożoność. Celem laboratorium jest implementacja algorytmów wprowadzonych na wykładzie. B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 2 / 68

3 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 ścieżki Eulera. Algorytm Fleury ego. Znajdowanie cyklu lub ścieżki Hamiltona Problem najkrótszej ścieżki: Algorytm Floyda-Warshalla Problem najkrótszej ścieżki: Algorytm Dijkstry Problem najkrótszej ściezki: Algorytm Bellmana-Forda Test końcowy. B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 3 / 68

4 Literatura I Cormen T.H., Leiserson Ch.E., Rivest R.L. Wprowadzenie do algorytmów. WNT, 1997 i późniejsze. Łukasz Malinowski. Implementacja wybranych algorytmów dla grafów bez wag w języku Python. ~ufkapano/download/lukasz_malinowski_2014.pdf Undirected Graphs: Directed Graphs: B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 4 / 68

5 Wprowadzenie Grafy - Obszary Zastosowania Informatyka Technika 1 Fizyka Nauki społeczne Biologia Kartografia Lingwistyka i wiele innych... 1 Deo N. Teoria grafów i jej zastosowania w technice i informatyce, PWN, Warszawa B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 5 / 68

6 Wprowadzenie Grafy - Zastosowania w Informatyce: Reprezentacja struktury programów Modelowanie systemów komputerowych Automatyczna weryfikacja systemów współbieżnych i rozproszonych Kryptografia - Szyfr Cezara, Problem Dalekopisu, Kod Graya, Kody Huffmana, kryptografia wizualna, itd. Sieci komputerowe - znajdowanie najkrótszych ścieżek i wiele innych... B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 6 / 68

7 Wprowadzenie Leonhard Euler Za pierwszego teoretyka i badacza grafów uważa się Leonharda Eulera 2, który rozstrzygnał tzw. zagadnienie mostów królewieckich. 2 Leonhard Euler (ur. 15 kwietnia 1707 r. w Bazylei - Szwajcaria, zm. 18 września 1783 r. w Petersburgu - Rosja) - szwajcarski matematyk, fizyk i astronom, jeden z twórców nowoczesnej matematyki. B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 7 / 68

8 Wprowadzenie Mosty królewieckie Przez Królewiec przepływała rzeka Pregole, w której rozwidleniach znajdowały się dwie wyspy. Ponad rzeka przerzucono siedem mostów, z których jeden łaczył obie wyspy, a pozostałe mosty łaczyły wyspy z brzegami rzeki. Plan mostów pokazuje rysunek: B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 8 / 68

9 Wprowadzenie Mosty królewieckie Zwykłe spacerowanie szybko się znudziło mieszkańcom Królewca i zaczęli zastanawiać się, czy istnieje taka trasa spacerowa, która przechodzi przez każdy most dokładnie raz, żadnego nie omija, i pozwala wrócić do punktu wyjścia. Mieszkańcy nie potrafili rozwiazać postawionego problemu samodzielnie, więc postanowili napisać do matematyka Leonharda Eulera. B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 9 / 68

10 Wprowadzenie Mosty królewieckie Euler wykazał, że rozwiazanie problemu mieszkańców nie jest możliwe, a decyduje o tym nieparzysta liczba wylotów mostów zarówno na każda z wysp, jak i na oba brzegi rzeki. (Jeśli wejdzie się po raz trzeci na wyspę, nie ma jak z niej wyjść). Sytuację tę można przedstawić za pomoca następujacego grafu: B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 10 / 68

11 Wprowadzenie Rodzaje grafów Rodzaje grafów rozważane na wykładach grafy nieskierowane (niezorientowane) grafy skierowane (zorientowane) grafy z wagami B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 11 / 68

12 Wprowadzenie Rodzaje grafów Rodzaje grafów rozważane na wykładach grafy nieskierowane (niezorientowane) grafy skierowane (zorientowane) grafy z wagami Inne rodzaje grafów multigrafy hipergrafy B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 11 / 68

13 Wprowadzenie Graf skierowany Definicja Grafem skierowanym (lub digrafem) nazywamy parę G = (V, E): V to skończony zbiór, którego elementy nazywamy wierzchołkami, E {(u, v) : u, v V } to zbiór uporzadkowanych par wierzchołków ze zbioru V, zwanych krawędziami. Możliwe jest istnienie pętli od danego wierzchołka do niego samego. Na wykładzie przyjmujemy następujace oznaczenia: n oznacza liczbę wierzchołków (rozmiar zbioru V ) m oznacza liczbę krawędzi (rozmiar zbioru E) B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 12 / 68

14 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 C B D B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 13 / 68

15 Wprowadzenie Graf nieskierowany Definicja Grafem nieskierowanym (grafem) nazywamy parę V to zbiór wierzchołków. G = (V, E): E {{u, v} : u, v V, u v} to zbiór nieuporzadkowanych par wierzchołków, zwanych krawędziami. W grafie nieskierowanym nie moga występować pętle. Na wykładzie przyjmujemy następujace oznaczenia: n oznacza liczbę wierzchołków (rozmiar zbioru V ) m oznacza liczbę krawędzi (rozmiar zbioru E) B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 14 / 68

16 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 C E B D F B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 15 / 68

17 Podstawowe pojęcia Wprowadzenie Jeśli (u, v) jest krawędzia grafu skierowanego G = (V, E), to mówimy, że krawędź (u, v) jest wychodzaca z wierzchołka u i wchodzaca do wierzchołka v. Jeśli (u, v) jest krawędzia grafu nieskierowanego G = (V, E), to mówimy, że krawędź (u, v) jest incydentna z wierzchołkami u i v. Stopień wierzchołka: W grafie skierowanym to suma stopni wejściowego (ilość krawędzi wchodzacych) i wyjściowego (ilość wychodzacych krawędzi). W grafie nieskierowanym to liczba incydentnych z nim krawędzi. Wierzchołki nazywamy sasiednimi, jeśli istnieje krawędź (skierowana lub nieskierowana) pomiędzy nimi. Wierzchołek nazywamy izolowanym, jeśli nie jest połaczony żadna krawędzia z innym wierzchołkiem. B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 16 / 68

18 Podstawowe Pojęcia Wprowadzenie Ścieżka(Droga) o długości k z wierzchołka u do wierzchołka u w grafie G = (V, E) jest ciagiem wierzchołków (v 0, v 1, v 2,..., v k ) takich, że u = v 0, u = v k i (v i 1, v i ) E dla i = 1, 2,..., k Długość ścieżki jest liczba krawędzi ścieżki, tj. długość ścieżki (v 0, v 1,..., v k ) wynosi k 1. Ścieżka jest nazywana ścieżka prosta, jeżeli wszystkie jej wierzchołki sa różne. W grafie skierowanym ścieżka (v 0, v 1,..., v k ) tworzy cykl jeśli v 0 = v k oraz zawiera co najmniej jedna krawędź. Cykl jest prosty, jeżeli żaden wierzchołek (oprócz pierwszego) nie pojawia się w nim więcej niż raz. Pętla jest cyklem o długości 1. Graf nie zawierajacy cykli nazywamy acyklicznym. B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 17 / 68

19 Podstawowe Pojęcia Wprowadzenie Każda spójna składowa grafu G = (V, E) jest maksymalnym podzbiorem wierzchołków U zbioru V takim, że dla dowolnych dwóch wierzchołków z U istnieje łacz aca je ścieżka w G. Jeżeli graf składa się z jednej spójnej składowej to mówimy, że jest spójny (ang. connected). Każdy graf nieskierowany można podzielić na jedna lub większa liczbę spójnych składowych (ang. connected components). Graf skierowany jest silnie spójny, jeśli każde dwa wierzchołki sa osiagalne jeden z drugiego. B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 18 / 68

20 Wprowadzenie Spójne składowe B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 19 / 68

21 Wprowadzenie Spójne podgrafy B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 20 / 68

22 Wprowadzenie Specjalne rodzaje grafów I Graf pełny - graf nieskierowany, w którym każda para wierzchołków jest połaczona krawędzia. Graf pełny o n wierzchołkach oznacza się przez K n (poniżej K 5 ) E A D B C Graf pełny o n wierzchołkach posiada n (n 1) 2 krawędzi przykładowo graf K 5 posiada 10 krawędzi. B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 21 / 68

23 Wprowadzenie Specjalne rodzaje grafów II Graf regularny to graf, w którym każdy wierzchołek ma taki sam stopień. Graf pełny stopnia n jest grafem regularnym stopnia n 1. f -graf to graf z ograniczonym stopniem wierzchołka, tzn. jego stopień nie może być większy niż f. Graf planarny - graf nieskierowany, który można narysować na płaszczyźnie tak, by krawędzie grafu nie przecinały się ze soba. Planarność ma duże zastosowanie w informatyce, m.in., w graficznej reprezentacji różnego rodzaju układów (np. scalonych, bramek, etc.). B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 22 / 68

24 Wprowadzenie Specjalne rodzaje grafów III v 1 v 4 v 1 v 4 v 2 v 3 v 2 v 3 B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 23 / 68

25 Reprezentacje grafów Reprezentacja grafów w komputerze Macierz sasiedztwa Listy sasiedztwa Lista krawędzi B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 24 / 68

26 Macierz sasiedztwa Reprezentacje grafów Definicja Dany jest graf G = (V, E), gdzie V = {v 1,..., v n } (tj. zakłada się, że wierzchołki sa ponumerowane w pewien dowolny sposób) oraz V = n. Macierz sasiedztwa grafu G to macierz M(G) = (a ij ) o wymiarze n n taka, że { 1 jeśli (v i, v j ) E a ij = 0 w przeciwnym razie B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 25 / 68

27 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 F A B C D E F A C E B D F B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 26 / 68

28 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 D A B C D A C B D B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 27 / 68

29 Reprezentacje grafów Macierz sasiedztwa - własności Macierz sasiedztwa dla grafów bez wag jest macierza binarna. Macierz sasiedztwa wymaga Θ( V 2 ) pamięci, niezależnie od liczby krawędzi w tym grafie. W przypadku grafów prostych do pamiętania jednego elementu macierzy można użyć tylko jednego bitu zamiast jednego słowa maszynowego. Dla grafów nieskierowanych macierz sasiedztwa jest symetryczna, dlatego w pewnych zastosowaniach opłaca się pamiętać tylko elementy na i powyżej głównej przekatnej macierzy sasiedztwa. M(G) = A B C D E F A B C D E F B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 28 / 68

30 Reprezentacje grafów Listy sasiedztwa Definicja W reprezentacji grafu G = (V, E) za pomoca list sasiedztwa dana jest tablica A zawierajaca V list, po jednej dla każdego wierzchołka z V. Dla każdego u V elementami listy sasiedztwa A[u] sa wszystkie wierzchołki v takie, że krawędź (u, v) E, tzn. w A[u] przechowujemy zbiór wierzchołków połaczonych krawędzia z u. B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 29 / 68

31 Reprezentacje grafów Listy sasiedztwa - przykład / / / / / B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 30 / 68

32 Reprezentacje grafów Listy sasiedztwa - przykład 1 2 / / / 2 / 1 4 / B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 31 / 68

33 Reprezentacje grafów Listy sasiedztwa Jeżeli G jest grafem skierowanym, to suma długości wszystkich list sasiedztwa wynosi E, ponieważ krawędź postaci (u, v) jest reprezentowana przez wystapienie v na liście A[u]. Jeżeli G jest grafem nieskierowanym, to suma długości wszystkich list sasiedztwa wynosi 2 E, ponieważ dla nieskierowanej krawędzi {u, v} wierzchołek u występuje na liście sasiedztwa v i odwrotnie, v występuje na liście u. Niezależnie od tego, czy graf jest skierowany czy nie, rozmiar wymaganej pamięci przez reprezentację listowa jest Θ( V + E ) Reprezentacja listowa jest preferowana dla grafów rzadkich tj. takich, dla których E jest dużo mniejsze niż V 2. Reprezentacja macierzy sasiedztwa jest preferowana dla grafów gęstych tj. takich, dla których E jest bliskie V 2 lub gdy potrzebne jest szybkie stwierdzenie, czy istnieje dana krawędź. B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 32 / 68

34 Reprezentacje grafów Lista Krawędzi Dany jest graf G = (V, E), V = n, E = m Lista krawędzi to lista, na której przechowujemy wszystkie krawędzie występujace w grafie. Dla grafu skierowanego, może to być lista (tablica) zawierajaca uporzadkowane pary wierzchołków. Dla grafu nieskierowanego, może to być lista (tablica) zawierajaca nieuporzadkowane pary wierzchołków. Ponieważ każda krawędź zawiera tylko dwie liczby (tj. zakładamy, że wierzchołki sa ponumerowane), całkowita zajętość pamięci dla listy krawędzi jest rzędu Θ( E ). B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 33 / 68

35 Reprezentacje grafów Lista krawędzi - graf skierowany L = [(1, 2), (2, 3), (3, 4), (4, 2), (2, 5), (5, 4), (5, 1)]. 5 4 B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 34 / 68

36 Reprezentacje grafów Lista krawędzi - graf nieskierowany L = [(1, 2), (1, 5), (2, 3), (2, 4), (2, 5), (3, 4), (4, 5)]. 5 4 B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 35 / 68

37 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 się do badania spójności grafu - jeśli procedura wywołana dla pierwszego wierzchołka dotrze do wszystkich wierzchołków grafu to graf jest spójny. B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 36 / 68

38 Przeszukiwanie grafów Przeszukiwania grafu w głab - idea Dane wejściowe: Dowolny graf G = (V, E), opcjonalnie wierzchołek poczatkowy v V. Idea algorytmu DFS(v): 1 Zaznacz wszystkie wierzchołki grafu jako nieodwiedzone. 2 Przejdź do poczatkowego wierzchołka, np. wskazanego v, zaznacz v jako odwiedzony. i sprawdź, czy posiada nieodwiedzonych sasiadów. 3 Jeżeli v posiada nieodwiedzonych sasiadów, to przechodzimy to pierwszego nieodwiedzonego i powtarzamy cała procedurę. 4 Jeżeli wszyscy sasiedzi pewnego wierzchołka u sa zaznaczeni jako odwiedzeni, lub nie ma on sasiadów, to algorytm wraca do wierzchołka, z którego u został osiagnięty. B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 37 / 68

39 Przeszukiwanie grafów Przeszukiwania grafu w głab - idea 1 2 DFS (1): 1,2,3,4,5 DFS (2): 2,3,4,5,1 3 DFS (3): 3,4,2,5,1 5 4 DFS (4): 4,2,5,1,3 DFS (5): 5,1,2,3,4 Jeżeli podano wierzchołek poczatkowy, to algorytm zbada spójna składowa zawierajac a ten wierzchołek (przypadek powyżej). W przeciwnym razie algorytm przeszukuje kolejne spójne składowe, wybierajac losowy wierzchołek z nowej spójnej składowej. B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 38 / 68

40 Przeszukiwanie grafów Algorytm DFS - graf G=(V,E) reprezentowany przez listy sasiedztwa DFS(G): 1: for each vertex u V do 2: color[u] = WHITE 3: pre[u] = NIL 4: end for 5: time = 0 6: for each vertex u V do 7: if color[u] == WHITE then 8: VISIT (G, u) 9: end if 10: end for VISIT (G, u) 1: time = time + 1 2: d[u] = time 3: color[u] = GRAY 4: for each v Adj[u] do 5: if color[v] == WHITE then 6: pre[v] = u 7: VISIT (G, v) 8: end if 9: end for 10: color[u] = RED 11: time = time : f [u] = time B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 39 / 68

41 Przeszukiwanie grafów Działanie algorytmu - Przykład DFS: 1,2,5,4,3, Krok: 1 1/ B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 40 / 68

42 Przeszukiwanie grafów Działanie algorytmu - Przykład Krok: 2 1/ 2/ Krok: 3 1/ 2/ 3/ B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 41 / 68

43 Przeszukiwanie grafów Działanie algorytmu - Przykład Krok: 4 1/ 2/ Krok: 5 1/ 2/ 4/ 3/ 4/ 3/ B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 42 / 68

44 Przeszukiwanie grafów Działanie algorytmu - Przykład Krok: 6 1/ 2/ Krok: 7 1/ 2/ 4/5 3/ 4/5 3/6 B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 43 / 68

45 Przeszukiwanie grafów Działanie algorytmu - Przykład Krok: 8 Krok: 9 1/ 2/7 1/ 2/7 4/5 3/6 4/5 3/6 B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 44 / 68

46 Przeszukiwanie grafów Działanie algorytmu - Przykład Krok: 10 Krok: 11 1/8 2/7 1/8 2/7 9/ 4/5 3/6 4/5 3/6 B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 45 / 68

47 Przeszukiwanie grafów Działanie algorytmu - Przykład Krok: 12 Krok: 13 1/8 2/7 9/ 1/8 2/7 9/ 4/5 3/6 4/5 3/6 10/ B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 46 / 68

48 Przeszukiwanie grafów Działanie algorytmu - Przykład Krok: 14 Krok: 15 1/8 2/7 9/ 1/8 2/7 9/ 4/5 3/6 10/ 4/5 3/6 10/11 B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 47 / 68

49 Przeszukiwanie grafów Działanie algorytmu - Przykład Krok: 16 1/8 2/7 9/12 KONIEC 4/5 3/6 10/11 B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 48 / 68

50 Przeszukiwanie grafów Algorytm DFS -przykład B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 49 / 68

51 Przeszukiwanie grafów Algorytm DFS -przykład DFS(1): 1, 4, 6, 7, 8, 5, 2, 3 B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 49 / 68

52 Stos Przeszukiwanie grafów Stos Stos jest struktura liniowo uporzadkowanych danych, z których jedynie ostatni element, zwany wierzchołkiem, jest w danym momencie dostępny. W wierzchołku odbywa się dołaczanie nowych elementów, również jedynie wierzchołek można usunać. Cecha charakterystyczna stosu jest to, że dane sa zapisywane i pobierane metoda Last-In-First-Out (LIFO) (pierwszy wchodzi, ostatni wychodzi). Działanie stosu jest często porównywane do stosu talerzy: nie można usunać talerza znajdujacego się na dnie stosu nie usuwajac wcześniej wszystkich innych. nie można także dodać nowego talerza gdzieś indziej, niż na sama górę. B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 50 / 68

53 Stos - operacje Przeszukiwanie grafów Stos Niech S = (d 1, d 2,..., d n ) oznacza stos, wtedy: Odkładanie elementu na stos: push(s, d) = (d, d 1, d 2,..., d n ) Pobieranie elementu ze stosu: pop(s) = (d 2,..., d n ), o ile n > 1 Pobieranie elementu ze szczytu stosu bez jego usuwania: top(s) = d 1 Sprawdzanie niepustości stosu: empty(s) wtw., gdy n = 0 Pop i Push d 1 Szczyt stosu d 2 d 3 d 4 d 5 NULL B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 51 / 68

54 Przeszukiwanie grafów DFS - reprezentacja macierzowa grafu Stos Badanie nieodwiedzonego wierzchołka // zwraca nieodwiedzony wierzchołek przyległy do a // zwraca -1, jeżeli takiego wierzchołka nie ma int getunvisitedvertex(vertex a, BoolVector visited) { for (b = 0; b < n; b=b+1) { if (edge[a][b] == true // jest krawędź and visited[b]==false // b nie były odwiedzony ) then return b; } return -1; } B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 52 / 68

55 Przeszukiwanie grafów DFS - reprezentacja macierzowa grafu Stos DFS(Graph G,vertex a) { //G jest macierzą sąsiedztwa bool visited [n]; for (k = 0; k < n; k=k+1) visited[k] = false; STACK s; // stos do przechowywania wierzchołków visited[a] = true; // rozpocznij od wierzchołka a displayvertex(a); // wyswietl wierzchołek s.push(a); // zapisz na stos while (not s.empty()) { // pobierz nieodwiedzony wierzchołek, // przyległy do szczytowego elementu stosu b = getunvisitedvertex(s.top(), visited); if (b == -1) { // jezeli nie ma takiego wierzcholka, s.pop(); } else { visited[b] = true; // oznacz wierzcholek jako odwiedzony displayvertex(b); // wyswietl wierzcholek } } } s.push(b); // zapisz na stos B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 53 / 68

56 Przeszukiwanie grafów Przeszukiwania grafu w głab - złożoność Stos Złożoność czasowa algorytmu DFS: graf reprezentowany jako listy sasiedztwa: Θ( V + E ), na co składa się poczatkowa inicjalizacja (zabiera Θ( V )) i przechodzenie po wszystkich sasiadach każdego wierzchołka (zabiera Θ( E ) ponieważ suma długości wszystkich list sasiedztwa wynosi 0( E )). graf reprezentowany jako macierz sasiedztwa: Θ( V 2 ). B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 54 / 68

57 Przeszukiwanie grafów Stos Zastosowania DFS Podstawowe zastosowania: Sprawdzanie spójności grafu. Wyznaczanie spójnych składowych grafu. Wyznaczanie silnie spójnych składowych (w wersji dla grafu skierowanego). Znajdowanie drogi w labiryncie. Zauważmy, że w procedurze DFS wywołujemy procedurę Visit dokładnie tyle razy, ile jest spójnych składowych w grafie W szczególności, gdy graf jest spójny, Visit zostanie wywołana dokładnie raz przez procedurę DFS. B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 55 / 68

58 Spójne składowe Przeszukiwanie grafów Stos B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 56 / 68

59 Kolejka Przeszukiwanie grafów Kolejka Kolejka FIFO (First In First Out) jest struktura liniowo uporzadkowanych danych, w której dołaczać nowe dane można jedynie na koniec, a usuwać z poczatku. Procedura usunięcia danych z końca kolejki jest taka sama, jak w przypadku stosu, z ta różnica, że usuwamy dane od poczatku a nie od końca. Działanie na kolejce jest intuicyjnie jasne, gdy skojarzymy ja z kolejka ludzi np. w sklepie. Każdy nowy klient staje na jej końcu, obsługa odbywa się jedynie na poczatku. B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 57 / 68

60 Przeszukiwanie grafów Kolejka Kolejka - operacje Niech K = (d 1, d 2,..., d n ) oznacza kolejkę, wtedy: Wstawianie elementu do kolejki: enqueuq(k, d) = (d 1, d 2,..., d n, d) Pobieranie elementu z kolejki: dequeuq(k ) = (d 2,..., d n ), o ile n > 1 Obsługiwanie pierwszego elementu z kolejki bez jego usuwania : first(k ) = d 1 Sprawdzanie niepustości kolejki: empty(k ) wtw., gdy n = 0 Poczatek kolejki d 1 d 2 d 3 d 4 d 5 Koniec kolejki B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 58 / 68

61 Przeszukiwanie grafów Przeszukiwanie grafu wszerz Kolejka Z ustalonego wierzchołka źródłowego s przegladamy kolejne wierzchołki z niego osiagalne. Wierzchołki w odległości k od źródłowego s odwiedzane sa przed wierzchoakami w odległości k + 1. Jeżeli po powyższym procesie pozostanie jakikolwiek nieodwiedzony wierzchołek u, kontynuujemy przeszukiwanie traktujac go jako nowy wierzchołek źródłowy. Cały proces powtarzamy, aż wszystkie wierzchołki w grafie zostana odwiedzone. Odwiedzane wierzchołki przechowywane sa w kolejce FIFO. B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 59 / 68

62 Przeszukiwanie grafów Kolejka Algorytm BFS - graf G=(V,E) reprezentowany przez listy sasiedztwa BFS(G, s): 1: for each vertex u V {s} do 2: color[u] = WHITE 3: d[u] = 4: pre[u] = NIL 5: end for 6: color[s] = GRAY 7: d[s] = 0 8: pre[s] = NIL 9: EnQueue(Q, s) 1: while Q do 2: u = DeQueue(Q) 3: for each v Adj[u] do 4: if color[v] == WHITE then 5: color[v] = GRAY 6: d[v] = d[u] + 1 7: pre[v] = u 8: EnQueue(Q, v) 9: end if 10: end for 11: DeQueue(Q) 12: color[u] = BLACK 13: end while B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 60 / 68

63 Przeszukiwanie grafów Algorytm BFS -przykład Kolejka Rysunek: Źródło:Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein. Introduction to Algorithms. The MIT Press, B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 61 / 68

64 Przeszukiwanie grafów Algorytm BFS -przykład Kolejka Rysunek: Źródło:Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein. Introduction to Algorithms. The MIT Press, B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 62 / 68

65 Przeszukiwanie grafów Algorytm BFS -przykład Kolejka Rysunek: Źródło:Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein. Introduction to Algorithms. The MIT Press, B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 63 / 68

66 Przeszukiwanie grafów Algorytm BFS -przykład Kolejka Rysunek: Źródło:Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein. Introduction to Algorithms. The MIT Press, B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 64 / 68

67 Przeszukiwanie grafów Algorytm BFS -przykład Kolejka Rysunek: Źródło:Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein. Introduction to Algorithms. The MIT Press, B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 65 / 68

68 Przeszukiwanie grafów Kolejka BFS - reprezentacja macierzowa grafu BFS(Graph G,vertex a) { //G jest macierzą sąsiedztwa bool visited [n]; for (k = 0; k < n; ++k) visited[k] = false; Queue q; // kolejka do przechowywania wierzchołków visited[a] = true; // rozpocznij od wierzcholka a displayvertex(a); // wyswietl wierzcholek q.enqueue(a); // wstaw na koncu while (not q.empty()) { // do opróżnienia kolejki, b = q.front(); // pobierz piewszy wierzcholek q.dequeue(); // usun go z kolejki // dopóki ma nie odwiedzonych sasiadów c = getunvisitedvertex(b, visited); // pobierz sasiada while (c!= -1) { visited[c] = true; // oznacz displayvertex(c); // wyswietl q.enqueue(c); // wstaw do kolejki c = getunvisitedvertex(b, visited); // pobierz sasiada } // while } // while(kolejka nie jest pusta) } B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 66 / 68

69 Przeszukiwanie grafów Algorytm BFS -przykład Kolejka B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 67 / 68

70 Przeszukiwanie grafów Algorytm BFS -przykład Kolejka BFS(1): 1, 4, 5, 6, 7, 8 BFS(2): 2, 4, 6, 7, 8 BFS(3): 3, 5, 8, 7 BFS: 1, 4, 5, 6, 7, 8, 2, 3 B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 67 / 68

71 Przeszukiwanie grafów Kolejka Przeszukiwania grafu wszerz - złożoność Złożoność czasowa algorytmu BFS: graf reprezentowany jako listy sasiedztwa: Θ( V + E ), na co składa się poczatkowa inicjalizacja (zabiera Θ( V )) i przechodzenie po wszystkich sasiadach każdego wierzchołka (zabiera Θ( E ) ponieważ suma długości wszystkich list sasiedztwa wynosi 0( E )). graf reprezentowany jako macierz sasiedztwa: Θ( V 2 ). B. Woźna-Szcześniak (UJD) Algorytmy Grafowe 68 / 68

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych. Algorytmy i Struktury Danych. Grafy dr hab. Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 8 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 8 1 / 42

Bardziej szczegółowo

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych. Algorytmy i Struktury Danych. Grafy Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 7 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 1 / 43 Grafy -

Bardziej szczegółowo

Struktury danych i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott

Struktury danych i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott Struktury danych i złożoność obliczeniowa Wykład. Prof. dr hab. inż. Jan Magott Algorytmy grafowe: podstawowe pojęcia, reprezentacja grafów, metody przeszukiwania, minimalne drzewa rozpinające, problemy

Bardziej szczegółowo

MATEMATYKA DYSKRETNA - MATERIAŁY DO WYKŁADU GRAFY

MATEMATYKA DYSKRETNA - MATERIAŁY DO WYKŁADU GRAFY ERIAŁY DO WYKŁADU GRAFY Graf nieskierowany Grafem nieskierowanym nazywamy parę G = (V, E), gdzie V jest pewnym zbiorem skończonym (zwanym zbiorem wierzchołków grafu G), natomiast E jest zbiorem nieuporządkowanych

Bardziej szczegółowo

Przykłady grafów. Graf prosty, to graf bez pętli i bez krawędzi wielokrotnych.

Przykłady grafów. Graf prosty, to graf bez pętli i bez krawędzi wielokrotnych. Grafy Graf Graf (ang. graph) to zbiór wierzchołków (ang. vertices), które mogą być połączone krawędziami (ang. edges) w taki sposób, że każda krawędź kończy się i zaczyna w którymś z wierzchołków. Graf

Bardziej szczegółowo

Grafem nazywamy strukturę G = (V, E): V zbiór węzłów lub wierzchołków, Grafy dzielimy na grafy skierowane i nieskierowane:

Grafem nazywamy strukturę G = (V, E): V zbiór węzłów lub wierzchołków, Grafy dzielimy na grafy skierowane i nieskierowane: Wykład 4 grafy Grafem nazywamy strukturę G = (V, E): V zbiór węzłów lub wierzchołków, E zbiór krawędzi, Grafy dzielimy na grafy skierowane i nieskierowane: Formalnie, w grafach skierowanych E jest podzbiorem

Bardziej szczegółowo

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych. Algorytmy i Struktury Danych. Grafy dr hab. Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 9 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 9 1 / 20

Bardziej szczegółowo

Algorytmy grafowe. Wykład 1 Podstawy teorii grafów Reprezentacje grafów. Tomasz Tyksiński CDV

Algorytmy grafowe. Wykład 1 Podstawy teorii grafów Reprezentacje grafów. Tomasz Tyksiński CDV Algorytmy grafowe Wykład 1 Podstawy teorii grafów Reprezentacje grafów Tomasz Tyksiński CDV Rozkład materiału 1. Podstawowe pojęcia teorii grafów, reprezentacje komputerowe grafów 2. Przeszukiwanie grafów

Bardziej szczegółowo

Matematyczne Podstawy Informatyki

Matematyczne Podstawy Informatyki Matematyczne Podstawy Informatyki dr inż. Andrzej Grosser Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Rok akademicki 03/0 Przeszukiwanie w głąb i wszerz I Przeszukiwanie metodą

Bardziej szczegółowo

Ogólne wiadomości o grafach

Ogólne wiadomości o grafach Ogólne wiadomości o grafach Algorytmy i struktury danych Wykład 5. Rok akademicki: / Pojęcie grafu Graf zbiór wierzchołków połączonych za pomocą krawędzi. Podstawowe rodzaje grafów: grafy nieskierowane,

Bardziej szczegółowo

Porównanie algorytmów wyszukiwania najkrótszych ścieżek międz. grafu. Daniel Golubiewski. 22 listopada Instytut Informatyki

Porównanie algorytmów wyszukiwania najkrótszych ścieżek międz. grafu. Daniel Golubiewski. 22 listopada Instytut Informatyki Porównanie algorytmów wyszukiwania najkrótszych ścieżek między wierzchołkami grafu. Instytut Informatyki 22 listopada 2015 Algorytm DFS w głąb Algorytm przejścia/przeszukiwania w głąb (ang. Depth First

Bardziej szczegółowo

Algorytmiczna teoria grafów

Algorytmiczna teoria grafów Przedmiot fakultatywny 20h wykładu + 20h ćwiczeń 21 lutego 2014 Zasady zaliczenia 1 ćwiczenia (ocena): kolokwium, zadania programistyczne (implementacje algorytmów), praca na ćwiczeniach. 2 Wykład (egzamin)

Bardziej szczegółowo

Algorytmy Grafowe. dr hab. Bożena Woźna-Szcześniak, prof. UJD. Wykład 5 i 6. Uniwersytet Humanistyczno-Przyrodniczy im. Jana Długosza w Częstochowie

Algorytmy Grafowe. dr hab. Bożena Woźna-Szcześniak, prof. UJD. Wykład 5 i 6. Uniwersytet Humanistyczno-Przyrodniczy im. Jana Długosza w Częstochowie Algorytmy Grafowe dr hab. Bożena Woźna-Szcześniak, prof. UJD Uniwersytet Humanistyczno-Przyrodniczy im. Jana Długosza w Częstochowie b.wozna@ujd.edu.pl Wykład 5 i 6 B. Woźna-Szcześniak (UJD) Algorytmy

Bardziej szczegółowo

Digraf. 13 maja 2017

Digraf. 13 maja 2017 Digraf 13 maja 2017 Graf skierowany, digraf, digraf prosty Definicja 1 Digraf prosty G to (V, E), gdzie V jest zbiorem wierzchołków, E jest rodziną zorientowanych krawędzi, między różnymi wierzchołkami,

Bardziej szczegółowo

G. Wybrane elementy teorii grafów

G. Wybrane elementy teorii grafów Dorota Miszczyńska, Marek Miszczyński KBO UŁ Wybrane elementy teorii grafów 1 G. Wybrane elementy teorii grafów Grafy są stosowane współcześnie w różnych działach nauki i techniki. Za pomocą grafów znakomicie

Bardziej szczegółowo

Algorytmy grafowe. Wykład 2 Przeszukiwanie grafów. Tomasz Tyksiński CDV

Algorytmy grafowe. Wykład 2 Przeszukiwanie grafów. Tomasz Tyksiński CDV Algorytmy grafowe Wykład 2 Przeszukiwanie grafów Tomasz Tyksiński CDV Rozkład materiału 1. Podstawowe pojęcia teorii grafów, reprezentacje komputerowe grafów 2. Przeszukiwanie grafów 3. Spójność grafu,

Bardziej szczegółowo

a) 7 b) 19 c) 21 d) 34

a) 7 b) 19 c) 21 d) 34 Zadanie 1. Pytania testowe dotyczące podstawowych własności grafów. Zadanie 2. Przy każdym z zadań może się pojawić polecenie krótkiej charakterystyki algorytmu. Zadanie 3. W zadanym grafie sprawdzenie

Bardziej szczegółowo

Teoria grafów podstawy. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak

Teoria grafów podstawy. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak Teoria grafów podstawy Materiały pomocnicze do wykładu wykładowca: dr Magdalena Kacprzak Grafy zorientowane i niezorientowane Przykład 1 Dwa pociągi i jeden most problem wzajemnego wykluczania się Dwa

Bardziej szczegółowo

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych. Algorytmy i Struktury Danych. Grafy dr hab. Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 9 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 9 1 / 53

Bardziej szczegółowo

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA DROGI i CYKLE w grafach Dla grafu (nieskierowanego) G = ( V, E ) drogą z wierzchołka v 0 V do v t V nazywamy ciąg (naprzemienny) wierzchołków i krawędzi grafu: ( v 0, e, v, e,..., v t, e t, v t ), spełniający

Bardziej szczegółowo

Wstęp do Programowania potok funkcyjny

Wstęp do Programowania potok funkcyjny Wstęp do Programowania potok funkcyjny Marcin Kubica 2010/2011 Outline 1 Podstawowe pojęcia Definition Graf = wierzchołki + krawędzie. Krawędzie muszą mieć różne końce. Między dwoma wierzchołkami może

Bardziej szczegółowo

Matematyka dyskretna

Matematyka dyskretna Matematyka dyskretna Wykład 13: Teoria Grafów Gniewomir Sarbicki Literatura R.J. Wilson Wprowadzenie do teorii grafów Definicja: Grafem (skończonym, nieskierowanym) G nazywamy parę zbiorów (V (G), E(G)),

Bardziej szczegółowo

Algorytmy z powracaniem

Algorytmy z powracaniem Algorytmy z powracaniem Materiały Grafem nazywamy zbiór G = (V, E), gdzie: V jest zbiorem wierzchołków (ang. vertex) E jest zbiorem krawędzi (E można też określić jako podzbiór zbioru nieuporządkowanych

Bardziej szczegółowo

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych. Algorytmy i Struktury Danych. Grafy Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 8 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 8 1 / 39 Plan wykładu

Bardziej szczegółowo

Grafy i sieci w informatyce - opis przedmiotu

Grafy i sieci w informatyce - opis przedmiotu Grafy i sieci w informatyce - opis przedmiotu Informacje ogólne Nazwa przedmiotu Grafy i sieci w informatyce Kod przedmiotu 11.9-WI-INFD-GiSwI Wydział Kierunek Wydział Informatyki, Elektrotechniki i Automatyki

Bardziej szczegółowo

Złożoność obliczeniowa klasycznych problemów grafowych

Złożoność obliczeniowa klasycznych problemów grafowych Złożoność obliczeniowa klasycznych problemów grafowych Oznaczenia: G graf, V liczba wierzchołków, E liczba krawędzi 1. Spójność grafu Graf jest spójny jeżeli istnieje ścieżka łącząca każdą parę jego wierzchołków.

Bardziej szczegółowo

Sortowanie topologiczne skierowanych grafów acyklicznych

Sortowanie topologiczne skierowanych grafów acyklicznych Sortowanie topologiczne skierowanych grafów acyklicznych Metody boolowskie w informatyce Robert Sulkowski http://robert.brainusers.net 23 stycznia 2010 1 Definicja 1 (Cykl skierowany). Niech C = (V, A)

Bardziej szczegółowo

Wykład 7. Algorytmy grafowe

Wykład 7. Algorytmy grafowe Wykład Algorytmy grafowe Algorytmy grafowe i podstawowe algorytmy przeszukiwania Problem Definicje i własności Reprezentacja Przeszukiwanie wszerz (Breadthirst Search) Przeszukiwanie w głąb (Depthirst

Bardziej szczegółowo

Zofia Kruczkiewicz, Algorytmu i struktury danych, Wykład 14, 1

Zofia Kruczkiewicz, Algorytmu i struktury danych, Wykład 14, 1 Wykład Algorytmy grafowe metoda zachłanna. Właściwości algorytmu zachłannego:. W przeciwieństwie do metody programowania dynamicznego nie występuje etap dzielenia na mniejsze realizacje z wykorzystaniem

Bardziej szczegółowo

Wykład 8. Drzewo rozpinające (minimum spanning tree)

Wykład 8. Drzewo rozpinające (minimum spanning tree) Wykład 8 Drzewo rozpinające (minimum spanning tree) 1 Minimalne drzewo rozpinające - przegląd Definicja problemu Własności minimalnych drzew rozpinających Algorytm Kruskala Algorytm Prima Literatura Cormen,

Bardziej szczegółowo

Temat: Struktury danych do reprezentacji grafów. Wybrane algorytmy grafowe.

Temat: Struktury danych do reprezentacji grafów. Wybrane algorytmy grafowe. Temat: Struktury danych do reprezentacji grafów. Wybrane algorytmy grafowe. Oznaczenia G = V, E - graf bez wag, gdzie V - zbiór wierzchołków, E- zbiór krawdzi V = n - liczba wierzchołków grafu G E = m

Bardziej szczegółowo

Matematyczne Podstawy Informatyki

Matematyczne Podstawy Informatyki Matematyczne Podstawy Informatyki dr inż. Andrzej Grosser Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Rok akademicki 2013/2014 Informacje podstawowe 1. Konsultacje: pokój

Bardziej szczegółowo

Reprezentacje grafów nieskierowanych Reprezentacje grafów skierowanych. Wykład 2. Reprezentacja komputerowa grafów

Reprezentacje grafów nieskierowanych Reprezentacje grafów skierowanych. Wykład 2. Reprezentacja komputerowa grafów Wykład 2. Reprezentacja komputerowa grafów 1 / 69 Macierz incydencji Niech graf G będzie grafem nieskierowanym bez pętli o n wierzchołkach (x 1, x 2,..., x n) i m krawędziach (e 1, e 2,..., e m). 2 / 69

Bardziej szczegółowo

Sprawozdanie do zadania numer 2

Sprawozdanie do zadania numer 2 Sprawozdanie do zadania numer 2 Michał Pawlik 29836 Temat: Badanie efektywności algorytmów grafowych w zależności od rozmiaru instancji oraz sposobu reprezentacji grafu w pamięci komputera 1 WSTĘP W ramach

Bardziej szczegółowo

Wykład 3. Złożoność i realizowalność algorytmów Elementarne struktury danych: stosy, kolejki, listy

Wykład 3. Złożoność i realizowalność algorytmów Elementarne struktury danych: stosy, kolejki, listy Wykład 3 Złożoność i realizowalność algorytmów Elementarne struktury danych: stosy, kolejki, listy Dynamiczne struktury danych Lista jest to liniowo uporządkowany zbiór elementów, z których dowolny element

Bardziej szczegółowo

Marek Miszczyński KBO UŁ. Wybrane elementy teorii grafów 1

Marek Miszczyński KBO UŁ. Wybrane elementy teorii grafów 1 Marek Miszczyński KBO UŁ. Wybrane elementy teorii grafów 1 G. Wybrane elementy teorii grafów W matematyce teorię grafów klasyfikuje się jako gałąź topologii. Jest ona jednak ściśle związana z algebrą i

Bardziej szczegółowo

Literatura. 1) Pojęcia: złożoność czasowa, rząd funkcji. Aby wyznaczyć pesymistyczną złożoność czasową algorytmu należy:

Literatura. 1) Pojęcia: złożoność czasowa, rząd funkcji. Aby wyznaczyć pesymistyczną złożoność czasową algorytmu należy: Temat: Powtórzenie wiadomości z PODSTAW INFORMATYKI I: Pojęcia: złożoność czasowa algorytmu, rząd funkcji kosztu. Algorytmy. Metody programistyczne. Struktury danych. Literatura. A. V. Aho, J.E. Hopcroft,

Bardziej szczegółowo

. Podstawy Programowania 2. Grafy i ich reprezentacje. Arkadiusz Chrobot. 9 czerwca 2016

. Podstawy Programowania 2. Grafy i ich reprezentacje. Arkadiusz Chrobot. 9 czerwca 2016 Podstawy Programowania 2 Grafy i ich reprezentacje Arkadiusz Chrobot Zakład Informatyki 9 czerwca 2016 1 42 Plan 1 Wstęp 2 Teoria grafów 3 Grafy jako struktury danych 4 Zastosowania grafów 2 42 Wstęp Wstęp

Bardziej szczegółowo

Wstęp do Programowania potok funkcyjny

Wstęp do Programowania potok funkcyjny Wstęp do Programowania potok funkcyjny Marcin Kubica 2010/2011 Outline 1 BFS DFS Algorytm Dijkstry Algorytm Floyda-Warshalla Podstawowe pojęcia Definition Graf = wierzchołki + krawędzie. Krawędzie muszą

Bardziej szczegółowo

Algorytmy Grafowe. dr hab. Bożena Woźna-Szcześniak, prof. UJD. Wykład 7,8,9. Uniwersytet Humanistyczno-Przyrodniczy im. Jana Długosza w Częstochowie

Algorytmy Grafowe. dr hab. Bożena Woźna-Szcześniak, prof. UJD. Wykład 7,8,9. Uniwersytet Humanistyczno-Przyrodniczy im. Jana Długosza w Częstochowie Algorytmy Grafowe dr hab. Bożena Woźna-Szcześniak, prof. UJD Uniwersytet Humanistyczno-Przyrodniczy im. Jana Długosza w Częstochowie b.wozna@ujd.edu.pl Wykład 7,8,9 B. Woźna-Szcześniak (UJD) Algorytmy

Bardziej szczegółowo

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych. Algorytmy i Struktury Danych. Podstawowe struktury danych dr hab. Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 6 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych.

Bardziej szczegółowo

1. Algorytmy przeszukiwania. Przeszukiwanie wszerz i w głąb.

1. Algorytmy przeszukiwania. Przeszukiwanie wszerz i w głąb. 1. Algorytmy przeszukiwania. Przeszukiwanie wszerz i w głąb. Algorytmy przeszukiwania w głąb i wszerz są najczęściej stosowanymi algorytmami przeszukiwania. Wykorzystuje się je do zbadania istnienia połączenie

Bardziej szczegółowo

Algorytm Dijkstry znajdowania najkrótszej ścieżki w grafie

Algorytm Dijkstry znajdowania najkrótszej ścieżki w grafie Algorytm Dijkstry znajdowania najkrótszej ścieżki w grafie Używane struktury danych: V - zbiór wierzchołków grafu, V = {1,2,3...,n} E - zbiór krawędzi grafu, E = {(i,j),...}, gdzie i, j Î V i istnieje

Bardziej szczegółowo

Elementy teorii grafów Elementy teorii grafów

Elementy teorii grafów Elementy teorii grafów Spis tresci 1 Spis tresci 1 Często w zagadnieniach praktycznych rozważa się pewien zbiór obiektów wraz z zależnościami jakie łączą te obiekty. Dla przykładu można badać pewną grupę ludzi oraz strukturę

Bardziej szczegółowo

Czy istnieje zamknięta droga spaceru przechodząca przez wszystkie mosty w Królewcu dokładnie jeden raz?

Czy istnieje zamknięta droga spaceru przechodząca przez wszystkie mosty w Królewcu dokładnie jeden raz? DROGI i CYKLE EULERA w grafach Czy istnieje zamknięta droga spaceru przechodząca przez wszystkie mosty w Królewcu dokładnie jeden raz? Czy można narysować podaną figurę nie odrywając ołówka od papieru

Bardziej szczegółowo

TEORIA GRAFÓW I SIECI

TEORIA GRAFÓW I SIECI TEORIA GRAFÓW I SIECI Temat nr 1: Definicja grafu. Rodzaje i części grafów dr hab. inż. Zbigniew TARAPATA, prof. WAT e-mail: zbigniew.tarapata@wat.edu.pl http://tarapata.edu.pl tel.: 261-83-95-04, p.225/100

Bardziej szczegółowo

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych. Algorytmy i Struktury Danych. Abstrakcyjne struktury danych dr hab. Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 5 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury

Bardziej szczegółowo

Podstawowe własności grafów. Wykład 3. Własności grafów

Podstawowe własności grafów. Wykład 3. Własności grafów Wykład 3. Własności grafów 1 / 87 Suma grafów Niech będą dane grafy proste G 1 = (V 1, E 1) oraz G 2 = (V 2, E 2). 2 / 87 Suma grafów Niech będą dane grafy proste G 1 = (V 1, E 1) oraz G 2 = (V 2, E 2).

Bardziej szczegółowo

Suma dwóch grafów. Zespolenie dwóch grafów

Suma dwóch grafów. Zespolenie dwóch grafów Suma dwóch grafów G 1 = ((G 1 ), E(G 1 )) G 2 = ((G 2 ), E(G 2 )) (G 1 ) i (G 2 ) rozłączne Suma G 1 G 2 graf ze zbiorem wierzchołków (G 1 ) (G 2 ) i rodziną krawędzi E(G 1 ) E(G 2 ) G 1 G 2 G 1 G 2 Zespolenie

Bardziej szczegółowo

Wykład 10 Grafy, algorytmy grafowe

Wykład 10 Grafy, algorytmy grafowe . Typy złożoności obliczeniowej Wykład Grafy, algorytmy grafowe Typ złożoności oznaczenie n Jedna operacja trwa µs 5 logarytmiczna lgn. s. s.7 s liniowa n. s.5 s. s Logarytmicznoliniowa nlgn. s.8 s.4 s

Bardziej szczegółowo

Graf. Definicja marca / 1

Graf. Definicja marca / 1 Graf 25 marca 2018 Graf Definicja 1 Graf ogólny to para G = (V, E), gdzie V jest zbiorem wierzchołków (węzłów, punktów grafu), E jest rodziną krawędzi, które mogą być wielokrotne, dokładniej jednoelementowych

Bardziej szczegółowo

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych. Algorytmy i Struktury Danych. Liniowe struktury danych. Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 4 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład

Bardziej szczegółowo

Matematyczne Podstawy Informatyki

Matematyczne Podstawy Informatyki Matematyczne Podstawy Informatyki dr inż. Andrzej Grosser Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Rok akademicki 2013/2014 Twierdzenie 2.1 Niech G będzie grafem prostym

Bardziej szczegółowo

Teoria grafów dla małolatów. Andrzej Przemysław Urbański Instytut Informatyki Politechnika Poznańska

Teoria grafów dla małolatów. Andrzej Przemysław Urbański Instytut Informatyki Politechnika Poznańska Teoria grafów dla małolatów Andrzej Przemysław Urbański Instytut Informatyki Politechnika Poznańska Wstęp Matematyka to wiele różnych dyscyplin Bowiem świat jest bardzo skomplikowany wymaga rozważenia

Bardziej szczegółowo

Matematyka dyskretna. Andrzej Łachwa, UJ, /14

Matematyka dyskretna. Andrzej Łachwa, UJ, /14 Matematyka dyskretna Andrzej Łachwa, UJ, 2016 andrzej.lachwa@uj.edu.pl 13/14 Grafy podstawowe definicje Graf to para G=(V, E), gdzie V to niepusty i skończony zbiór, którego elementy nazywamy wierzchołkami

Bardziej szczegółowo

E S - uniwersum struktury stosu

E S - uniwersum struktury stosu Temat: Struktura stosu i kolejki Struktura danych to system relacyjny r I r i i I U,, gdzie U to uniwersum systemu, a i i - zbiór relacji (operacji na strukturze danych). Uniwersum systemu to zbiór typów

Bardziej szczegółowo

EGZAMIN - Wersja A. ALGORYTMY I STRUKTURY DANYCH Lisek89 opracowanie kartki od Pani dr E. Koszelew

EGZAMIN - Wersja A. ALGORYTMY I STRUKTURY DANYCH Lisek89 opracowanie kartki od Pani dr E. Koszelew 1. ( pkt) Dany jest algorytm, który dla dowolnej liczby naturalnej n, powinien wyznaczyd sumę kolejnych liczb naturalnych mniejszych od n. Wynik algorytmu jest zapisany w zmiennej suma. Algorytm i=1; suma=0;

Bardziej szczegółowo

. Podstawy Programowania 2. Algorytmy dfs i bfs. Arkadiusz Chrobot. 2 czerwca 2019

. Podstawy Programowania 2. Algorytmy dfs i bfs. Arkadiusz Chrobot. 2 czerwca 2019 Podstawy Programowania Algorytmy dfs i bfs Arkadiusz Chrobot Zakład Informatyki czerwca 09 / 70 Plan Wstęp Algorytm BFS Podsumowanie / 70 Wstęp Wstęp Istnieje wiele algorytmów związanych z grafami, które

Bardziej szczegółowo

Spis treści. Przykład. Przykład 1 Przykład 2. Twórcy Informacje wstępne Pseudokod Przykład. 1 Grafy skierowane z wagami - przypomnienie

Spis treści. Przykład. Przykład 1 Przykład 2. Twórcy Informacje wstępne Pseudokod Przykład. 1 Grafy skierowane z wagami - przypomnienie Algorytmy Grafowe dr hab. Bożena Woźna-Szcześniak, prof. UJD Uniwersytet Humanistyczno-Przyrodniczy im. Jana Długosza w Częstochowie b.wozna@ujd.edu.pl Wykład 1,11,1 B. Woźna-Szcześniak (UJD) Algorytmy

Bardziej szczegółowo

Algorytm DFS Wprowadzenie teoretyczne. Algorytm DFS Wprowadzenie teoretyczne. Algorytm DFS Animacja. Algorytm DFS Animacja. Notatki. Notatki.

Algorytm DFS Wprowadzenie teoretyczne. Algorytm DFS Wprowadzenie teoretyczne. Algorytm DFS Animacja. Algorytm DFS Animacja. Notatki. Notatki. Podstawy Programowania Algorytmy dfs i bfs Arkadiusz Chrobot Zakład Informatyki czerwca 09 / 70 Plan Wstęp Podsumowanie / 70 Wstęp Istnieje wiele algorytmów związanych z grafami, które w skrócie nazywane

Bardziej szczegółowo

TEORIA GRAFÓW I SIECI

TEORIA GRAFÓW I SIECI TEORIA GRAFÓW I SIECI Temat nr : Grafy Berge a dr hab. inż. Zbigniew TARAPATA, prof. WAT e-mail: zbigniew.tarapata@wat.edu.pl http://tarapata.edu.pl tel.: 6-83-95-0, p.5/00 Zakład Badań Operacyjnych i

Bardziej szczegółowo

Digraf o V wierzchołkach posiada V 2 krawędzi, zatem liczba różnych digrafów o V wierzchołkach wynosi 2 VxV

Digraf o V wierzchołkach posiada V 2 krawędzi, zatem liczba różnych digrafów o V wierzchołkach wynosi 2 VxV Graf skierowany (digraf) zbiór wierzchołków i zbiór krawędzi skierowanych łączących (co najwyżej jeden raz) uporządkowane pary wierzchołków. Mówimy wtedy, że krawędź łączy pierwszy wierzchołek z drugim

Bardziej szczegółowo

KARTA KURSU. Algorytmy, struktury danych i techniki programowania. Algorithms, Data Structures and Programming Techniques

KARTA KURSU. Algorytmy, struktury danych i techniki programowania. Algorithms, Data Structures and Programming Techniques KARTA KURSU Nazwa Nazwa w j. ang. Algorytmy, struktury danych i techniki programowania Algorithms, Data Structures and Programming Techniques Kod Punktacja ECTS* 3 Koordynator dr Paweł Pasteczka Zespół

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Sieci powiązań Paweł Daniluk Wydział Fizyki Jesień 2014 P. Daniluk (Wydział Fizyki) PO w. IX Jesień 2014 1 / 24 Sieci powiązań Można (bardzo zgrubnie) wyróżnić dwa rodzaje powiązań

Bardziej szczegółowo

WSTĘP DO INFORMATYKI. Grafy i struktury grafowe

WSTĘP DO INFORMATYKI. Grafy i struktury grafowe Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej WTĘP DO INFORMATYKI Adrian Horzyk Grafy i struktury grafowe www.agh.edu.pl DEFINICJA GRAFU Graf to

Bardziej szczegółowo

TEORIA GRAFÓW I SIECI

TEORIA GRAFÓW I SIECI TEORIA GRAFÓW I SIECI Temat nr 3: Marszruty, łańcuchy, drogi w grafach dr hab. inż. Zbigniew TARAPATA, prof. WAT e-mail: zbigniew.tarapata@wat.edu.pl http://tarapata.edu.pl tel.: 261-83-95-04, p.225/100

Bardziej szczegółowo

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych. Algorytmy i Struktury Danych. Metoda Dziel i zwyciężaj. Problem Sortowania, cd. Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 2 Bożena Woźna-Szcześniak (AJD) Algorytmy

Bardziej szczegółowo

Algorytmy i Struktury Danych

Algorytmy i Struktury Danych Algorytmy i Struktury Danych Drzewa poszukiwań binarnych dr hab. Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 12 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych

Bardziej szczegółowo

Lista 0. Kamil Matuszewski 1 marca 2016

Lista 0. Kamil Matuszewski 1 marca 2016 Lista 0 Kamil Matuszewski marca 206 2 3 4 5 6 7 8 0 0 Zadanie 4 Udowodnić poprawność mnożenia po rosyjsku Zastanówmy się co robi nasz algorytm Mamy podane liczby n i m W każdym kroku liczbę n dzielimy

Bardziej szczegółowo

Matematyka dyskretna. Andrzej Łachwa, UJ, /15

Matematyka dyskretna. Andrzej Łachwa, UJ, /15 Matematyka dyskretna Andrzej Łachwa, UJ, 2013 andrzej.lachwa@uj.edu.pl 14/15 Grafy podstawowe definicje Graf to para G=(V, E), gdzie V to niepusty i skończony zbiór, którego elementy nazywamy wierzchołkami

Bardziej szczegółowo

Algorytmy Równoległe i Rozproszone Część V - Model PRAM II

Algorytmy Równoległe i Rozproszone Część V - Model PRAM II Algorytmy Równoległe i Rozproszone Część V - Model PRAM II Łukasz Kuszner pokój 209, WETI http://www.sphere.pl/ kuszner/ kuszner@sphere.pl Oficjalna strona wykładu http://www.sphere.pl/ kuszner/arir/ 2005/06

Bardziej szczegółowo

Drzewa poszukiwań binarnych

Drzewa poszukiwań binarnych 1 Drzewa poszukiwań binarnych Kacper Pawłowski Streszczenie W tej pracy przedstawię zagadnienia związane z drzewami poszukiwań binarnych. Przytoczę poszczególne operacje na tej strukturze danych oraz ich

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Sieci powiązań Paweł Daniluk Wydział Fizyki Jesień 2015 P. Daniluk (Wydział Fizyki) PO w. IX Jesień 2015 1 / 21 Sieci powiązań Można (bardzo zgrubnie) wyróżnić dwa rodzaje powiązań

Bardziej szczegółowo

Egzamin, AISDI, I termin, 18 czerwca 2015 r.

Egzamin, AISDI, I termin, 18 czerwca 2015 r. Egzamin, AISDI, I termin, 18 czerwca 2015 r. 1 W czasie niezależnym do danych wejściowych działają algorytmy A. sortowanie bąbelkowego i Shella B. sortowanie szybkiego i przez prosty wybór C. przez podział

Bardziej szczegółowo

Algorytmy i Struktury Danych

Algorytmy i Struktury Danych Algorytmy i Struktury Danych Kopce Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 11 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych Wykład 11 1 / 69 Plan wykładu

Bardziej szczegółowo

Grafy dla każdego. dr Krzysztof Bryś. Wydział Matematyki i Nauk Informacyjnych Politechnika Warszawska.

Grafy dla każdego. dr Krzysztof Bryś. Wydział Matematyki i Nauk Informacyjnych Politechnika Warszawska. Grafy dla każdego dr Krzysztof Bryś brys@mini.pw.edu.pl Wydział Matematyki i Nauk Informacyjnych Politechnika Warszawska www.mini.pw.edu.pl Warszawa, 28 marca 2015 Graf składa się z elementów pewnego zbioru

Bardziej szczegółowo

Siedem cudów informatyki czyli o algorytmach zdumiewajacych

Siedem cudów informatyki czyli o algorytmach zdumiewajacych Siedem cudów informatyki czyli o algorytmach zdumiewajacych Łukasz Kowalik kowalik@mimuw.edu.pl Instytut Informatyki Uniwersytet Warszawski Łukasz Kowalik, Siedem cudów informatyki p. 1/25 Problem 1: mnożenie

Bardziej szczegółowo

Algorytmy wyznaczania centralności w sieci Szymon Szylko

Algorytmy wyznaczania centralności w sieci Szymon Szylko Algorytmy wyznaczania centralności w sieci Szymon Szylko Zakład systemów Informacyjnych Wrocław 10.01.2008 Agenda prezentacji Cechy sieci Algorytmy grafowe Badanie centralności Algorytmy wyznaczania centralności

Bardziej szczegółowo

Sieć (graf skierowany)

Sieć (graf skierowany) Sieci Sieć (graf skierowany) Siecia (grafem skierowanym) G = (V, A) nazywamy zbiór wierzchołków V oraz zbiór łuków A V V. V = {A, B, C, D, E, F}, A = {(A, B), (A, D), (A, C), (B, C),..., } Ścieżki i cykle

Bardziej szczegółowo

Grafy co o ich rysowaniu wiedzą przedszkolaki i co z tego wynika dla matematyków

Grafy co o ich rysowaniu wiedzą przedszkolaki i co z tego wynika dla matematyków Wykłady popularne z matematyki Grafy co o ich rysowaniu wiedzą przedszkolaki i co z tego wynika dla matematyków Joanna Jaszuńska Politechnika Warszawska, 6 maja 2010 Grafy Wykłady popularne z matematyki,

Bardziej szczegółowo

Temat: Liniowe uporzdkowane struktury danych: stos, kolejka. Specyfikacja, przykładowe implementacje i zastosowania. Struktura słownika.

Temat: Liniowe uporzdkowane struktury danych: stos, kolejka. Specyfikacja, przykładowe implementacje i zastosowania. Struktura słownika. Temat: Liniowe uporzdkowane struktury danych: stos, kolejka. Specyfikacja, przykładowe implementacje i zastosowania. Struktura słownika. 1. Pojcie struktury danych Nieformalnie Struktura danych (ang. data

Bardziej szczegółowo

Podstawowe pojęcia dotyczące drzew Podstawowe pojęcia dotyczące grafów Przykłady drzew i grafów

Podstawowe pojęcia dotyczące drzew Podstawowe pojęcia dotyczące grafów Przykłady drzew i grafów Podstawowe pojęcia dotyczące drzew Podstawowe pojęcia dotyczące grafów Przykłady drzew i grafów Drzewa: Drzewo (ang. tree) jest strukturą danych zbudowaną z elementów, które nazywamy węzłami (ang. node).

Bardziej szczegółowo

Wykład 4. Droga i cykl Eulera i Hamiltona

Wykład 4. Droga i cykl Eulera i Hamiltona Wykład 4. i Hamiltona Wykład 4. i Hamiltona 1 / 35 Grafy Eulera Niech G będzie grafem spójnym. Definicja Jeżeli w grafie G istnieje zamknięta droga prosta zawierająca wszystkie krawędzie grafu, to taką

Bardziej szczegółowo

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA Pod auspicjami Polskiej Akademii Nauk Warszawa, ul. Newelska 6, tel.

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA Pod auspicjami Polskiej Akademii Nauk Warszawa, ul. Newelska 6, tel. WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA Pod auspicjami Polskiej Akademii Nauk 01-447 Warszawa, ul. Newelska 6, tel. 22 3486544 Wydział Informatyki Kierunek studiów Profil Stopień studiów Forma

Bardziej szczegółowo

Matematyka dyskretna. Andrzej Łachwa, UJ, /14

Matematyka dyskretna. Andrzej Łachwa, UJ, /14 Matematyka dyskretna Andrzej Łachwa, UJ, 2012 andrzej.lachwa@uj.edu.pl 13/14 Grafy podstawowe definicje Graf to para G=(V, E), gdzie V to niepusty i skończony zbiór, którego elementy nazywamy wierzchołkami

Bardziej szczegółowo

Algorytmiczna teoria grafów

Algorytmiczna teoria grafów Podstawowe pojęcia i klasy grafów Wykład 1 Grafy nieskierowane Definicja Graf nieskierowany (graf) G = (V,E) jest to uporządkowana para składająca się z niepustego skończonego zbioru wierzchołków V oraz

Bardziej szczegółowo

Drzewa spinające MST dla grafów ważonych Maksymalne drzewo spinające Drzewo Steinera. Wykład 6. Drzewa cz. II

Drzewa spinające MST dla grafów ważonych Maksymalne drzewo spinające Drzewo Steinera. Wykład 6. Drzewa cz. II Wykład 6. Drzewa cz. II 1 / 65 drzewa spinające Drzewa spinające Zliczanie drzew spinających Drzewo T nazywamy drzewem rozpinającym (spinającym) (lub dendrytem) spójnego grafu G, jeżeli jest podgrafem

Bardziej szczegółowo

Ścieżki w grafach. Grafy acykliczne i spójne

Ścieżki w grafach. Grafy acykliczne i spójne TEORIA GRAFÓW I SIECI - ROZDZIAL II Ścieżki w grafach. Grafy acykliczne i spójne Ścieżka lub droga w grafie [digrafie] G nazywamy dowolny ciag d = (a 0, k 1, a 1,..., k n, a n ), gdzie n N {0}, a i V G,

Bardziej szczegółowo

Graf to nie tylko tytuł szlachecki

Graf to nie tylko tytuł szlachecki Kàcik olimpijski Grafy Graf to nie tylko tytuł szlachecki karta pracy Graf to nie tylko tytuł szlachecki Graf co to takiego? Pojęcie grafu wprowadził szwajcarski matematyk Leonhard Euler (707 783). Grafem

Bardziej szczegółowo

Droga i cykl Eulera Przykłady zastosowania drogi i cyku Eulera Droga i cykl Hamiltona. Wykład 4. Droga i cykl Eulera i Hamiltona

Droga i cykl Eulera Przykłady zastosowania drogi i cyku Eulera Droga i cykl Hamiltona. Wykład 4. Droga i cykl Eulera i Hamiltona Wykład 4. Droga i cykl Eulera i Hamiltona 1 / 92 Grafy Eulera Droga i cykl Eulera Niech G będzie grafem spójnym. Definicja Jeżeli w grafie G istnieje zamknięta droga prosta zawierająca wszystkie krawędzie

Bardziej szczegółowo

Matematyka dyskretna. Andrzej Łachwa, UJ, B/14

Matematyka dyskretna. Andrzej Łachwa, UJ, B/14 Matematyka dyskretna Andrzej Łachwa, UJ, 2019 andrzej.lachwa@uj.edu.pl 1B/14 Drogi w grafach Marszruta (trasa) w grafie G z wierzchołka w do wierzchołka u to skończony ciąg krawędzi w postaci. W skrócie

Bardziej szczegółowo

Algorytmy i struktury danych. Drzewa: BST, kopce. Letnie Warsztaty Matematyczno-Informatyczne

Algorytmy i struktury danych. Drzewa: BST, kopce. Letnie Warsztaty Matematyczno-Informatyczne Algorytmy i struktury danych Drzewa: BST, kopce Letnie Warsztaty Matematyczno-Informatyczne Drzewa: BST, kopce Definicja drzewa Drzewo (ang. tree) to nieskierowany, acykliczny, spójny graf. Drzewo może

Bardziej szczegółowo

Wstęp do programowania. Drzewa. Piotr Chrząstowski-Wachtel

Wstęp do programowania. Drzewa. Piotr Chrząstowski-Wachtel Wstęp do programowania Drzewa Piotr Chrząstowski-Wachtel Drzewa Drzewa definiują matematycy, jako spójne nieskierowane grafy bez cykli. Równoważne określenia: Spójne grafy o n wierzchołkach i n-1 krawędziach

Bardziej szczegółowo

Znajdowanie wyjścia z labiryntu

Znajdowanie wyjścia z labiryntu Znajdowanie wyjścia z labiryntu Zadanie to wraz z problemem pakowania najcenniejszego plecaka należy do problemów optymalizacji, które dotyczą znajdowania najlepszego rozwiązania wśród wielu możliwych

Bardziej szczegółowo

Listy, kolejki, stosy

Listy, kolejki, stosy Listy, kolejki, stosy abc Lista O Struktura danych składa się z węzłów, gdzie mamy informacje (dane) i wskaźniki do następnych węzłów. Zajmuje tyle miejsca w pamięci ile mamy węzłów O Gdzie można wykorzystać:

Bardziej szczegółowo

Podstawowe algorytmy i ich implementacje w C. Wykład 9

Podstawowe algorytmy i ich implementacje w C. Wykład 9 Wstęp do programowania 1 Podstawowe algorytmy i ich implementacje w C Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 9 Element minimalny i maksymalny zbioru Element minimalny

Bardziej szczegółowo

Drzewa. Jeżeli graf G jest lasem, który ma n wierzchołków i k składowych, to G ma n k krawędzi. Własności drzew

Drzewa. Jeżeli graf G jest lasem, który ma n wierzchołków i k składowych, to G ma n k krawędzi. Własności drzew Drzewa Las - graf, który nie zawiera cykli Drzewo - las spójny Jeżeli graf G jest lasem, który ma n wierzchołków i k składowych, to G ma n k krawędzi. Własności drzew Niech T graf o n wierzchołkach będący

Bardziej szczegółowo

Teoria obliczeń i złożoność obliczeniowa

Teoria obliczeń i złożoność obliczeniowa Teoria obliczeń i złożoność obliczeniowa Kontakt: dr hab. inż. Adam Kasperski, prof. PWr. pokój 509 B4 adam.kasperski@pwr.wroc.pl materiały + informacje na stronie www. Zaliczenie: Egzamin Literatura Problemy

Bardziej szczegółowo

Wstęp do programowania. Zastosowania stosów i kolejek. Piotr Chrząstowski-Wachtel

Wstęp do programowania. Zastosowania stosów i kolejek. Piotr Chrząstowski-Wachtel Wstęp do programowania Zastosowania stosów i kolejek Piotr Chrząstowski-Wachtel FIFO - LIFO Kolejki i stosy służą do przechowywania wartości zbiorów dynamicznych, czyli takich, które powstają przez dodawanie

Bardziej szczegółowo