Wykład 7. Algorytmy grafowe

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

Download "Wykład 7. Algorytmy grafowe"

Transkrypt

1 Wykład Algorytmy grafowe

2 Algorytmy grafowe i podstawowe algorytmy przeszukiwania Problem Definicje i własności Reprezentacja Przeszukiwanie wszerz (Breadthirst Search) Przeszukiwanie w głąb (Depthirst Search) Sortowanie topologiczne Literatura Cormen, Leiserson, Rivest, Wprowadzenie do algorytmów, rozdział

3 Problem Wiele zjawisk może być opisanych poprzez binarne relacje pomiędzy obiektami: Wszelkiego typu mapy drogowe i plany Odsyłacze w stronach WWW Graf jest abstrakcyjną strukturą opisującą takie binarne relacje pomiędzy elementami. Bardzo dużo problemów można sprowadzić do rozwiązywania zadań grafowych: najkrótszej ścieżki, połączenia pomiędzy węzłami, minimalnego drzewa rozpinającego, etc.

4 Przykład zastosowania Siatka połączeń lotniczych każdy wierzchołek reprezentuje miasto. każda krawędź reprezentuje bezpośrednie połączenie lotnicze pomiędzy miastami. pytanie o bezpośrednie połączenie = pytanie czy istnieje krawędź. pytanie o połączenie = czy istnieje droga z A do B. z połączeniami możemy powiązać koszty (grafy ważone), wtedy sensowne staje się pytanie o najtańsze połączenie z A do B.

5 Przykład: odnajdowanie właściwego połączenia w metrze Stacje są wierzchołkami Połączenia pomiędzy stacjami są krawędziami Najkrótsza droga= najmniejsza odległość, najmniejszy czas. Stacje, do których można dojechać (osiągalne).

6 Graf: definicja Grafem nazywamy parę G = (V,E), gdzie V = {v,.. v n } jest zbiorem wierzchołków, E = {e,.. e m } jest zbiorem krawędzi. Krawędź e k = (v i,v j ) łączy dwa wierzchołki v i i v j ze zbioru V. Krawędzie mogą być skierowane lub nie (uporządkowane lub nieuporządkowane): e ij : v i v j lub e ij : v i > v j Graf G nazywamy skończonym jeśli V i E są skończone. Przez rozmiar grafu G rozumiemy G = V + E.

7 Przykłady Niech V = {,,,,,} Graf skierowany Graf nieskierowany

8 Grafy z wagami (ważone) Grafem ważonym nazywamy graf dla którego każda krawędź ma przypisaną wagę (koszt) c(v i, v j ) >. Każdy graf można uważać za graf ważony (dla każdej krawędzi przypisujemy wagę ). Jeśli dwa wierzchołki nie są połączone to można je traktować jako połączone z wagą. Koszt ścieżki: suma kosztów poszczególnych krawędzi c k ( p) = c( v, ) i v i i=

9 Grafy skierowane W grafie skierowanym krawędzie są skierowane tj. e = (u,v) zaczyna się w u i kończy w v (v jest połączone z u). Dopuszczalne jest połączenie wierzchołka z samym sobą e = (u,u) Stopień wchodzący (indegree) d in (v) dla wierzchołka v jest ilością krawędzi wchodzących do v. Odpowiednio stopień wychodzący (outdegree) d out (v) dla wierzchołka v jest ilością krawędzi wychodzących z v. Σd in (v i ) = Σd out (v i ) Ścieżka z u do v w grafie G = (V,E) o długości k jest sekwencją wierzchołków <u = v,v,, v k = v> takąże dla i =,,k para (v i,v i ) należy do E.

10 Grafy nieskierowane W grafie nieskierowanym krawędź e = (u,v) łączy wierzchołki u i v. Grafy nieskierowane nie mogą mieć połączeń wierzchołka z samym sobą Połączenie jest relacją symetryczną: jeśli e = (u,v) to u jest sąsiadem v oraz v jest sąsiadem u. Stopień wierzchołka d(v) jest ilością jego sąsiadów Σd(v i ) = E. Określenie ścieżki w grafie tak samo jak dla grafu skierowanego.

11 erminologia Cyklem nazywamy ścieżkę, która rozpoczyna się i kończy w tym samym wierzchołku. Grafem spójnym nazywamy nieskierowany graf dla którego istnieje ścieżka pomiędzy dwoma dowolnymi wierzchołkami (każdy wierzchołek jest osiągalny, z każdego innego wierzchołka). Grafem silnie spójnym nazywamy graf skierowany, dla którego dla każdych dwóch wierzchołków u i v istnieje droga z u do v oraz z v do u. Graf G = (V,E ) jest podgrafem G = (V,E), jeśli G G jeśli V V oraz E E.

12 Rozmiar grafu Istnieje co najwyżej E = O( V ) krawędzi w grafie. Dowód: każdy węzeł może występować w co najwyżej V krawędziach. Graf dla którego E = V nazywamy kliką (każde dwa wierzchołki są połączone krawędzią). W każdym spójnym grafie jest co najmniej E V krawędzi. Dowód: przez indukcje dla V. Graf planarny (graf płaski) graf, który da się narysować na płaszczyźnie tak, by łuki obrazujące krawędzie grafu nie przecinały się. Dla grafu planarnego mamy E = O( V ). Dwa minimalne grafy, które nie są planarne, to K i K,. wierdzenie Kuratowskiego () mówi, że graf skończony jest planarny wtedy i tylko wtedy, gdy nie zawiera podgrafu homeomorficznego z grafem K ani z grafem K,.

13 ypy ścieżek Ścieżkę nazywamy prostą jeżeli żaden wierzchołek nie występuje w niej więcej niż raz Składa się z różnych wierzchołków Ścieżkę nazywamy cyklem wtedy i tylko wtedy jeśli v = v k. Rozpoczyna się i kończy w tym samym wierzchołku! W ścieżkach zawierających cykl jako podścieżkę wierzchołki mogą pojawiać się kilkakrotnie.

14 ypy ścieżek przykłady. {a,c,f,e} ścieżka prosta, L =. {a,b,d,c,f,e} ścieżka prosta, L =. {a,c,d,b,d,c,f,e} ścieżka zawiera cykl {d,b,d}. {a,c,d,b,a} cykl, L =. {a,c,f,e,b,d,c,a} cykl, L =

15 Grafy a drzewa Drzewo jest to spójny graf, który nie zawiera cykli. Drzewo ma E = V krawędzi. Następujące własności są równoważne:. G jest drzewem.. G nie ma cykli; dodanie nowej krawędzi buduje cykl.. G jest spójny; po usunięciu dowolnego węzła przestaje taki być. Podobnie można podąć definicje drzewa skierowanego.

16 Reprezentacja grafu Mamy dwie standardowe reprezentacje grafów:. Lista sąsiedztwa: dla każdego węzła v tworzymy listę liniową L v jego sąsiadów w grafie. Rozmiar takiej reprezentacji to: Θ( V + E ).. Macierz sąsiedztwa: macierz V V, w której krawędź e = (u,v) jest reprezentowana przez niezerowe wejście (u,v). Rozmiar takiej reprezentacji to : Θ( V ). Lista sąsiedztwa jest wygodniejsza dla dla rzadkich grafów. Macierz sąsiedztwa jest wygodniejsza dla dla gęstych grafów.

17 Przykład: reprezentacja listą sąsiedztwa V = {,,,,,} E = {(,),(,),(,),(,)} V L i nul l

18 Przykład: reprezentacja macierzą sąsiedztwa V = {,,,,,} E = {(,),(,),(,),(,)} A Dla grafów nieskierowanych, A = A

19 Porównanie reprezentacji lista sąsiedztwa bardziej zwarta niż macierz sąsiedztwa (dobra dla rzadkich grafów) stwierdzenie czy istnieje krawędź zajmuje więcej czasu macierz sąsiedztwa zawsze wymaga Θ(n ) pamięci często marnujemy dużo pamięci szybko możemy odnaleźć informację o krawędzi

20 Porównanie reprezentacji macierz sąsiedztwa Lista sąsiedztwa

21 Porównanie reprezentacji Macierz sąsiedztwa Lista sąsiedztwa Lista krawędzi pamięć Θ(V ) Θ(V + E) Θ(E) Sprawdzenie istnienia połączenia (u, v) Θ() Ο(outdegree[u]) Ο(E) Odnajdowanie krawędzi rozpoczynających się w u Θ(V) Ο(outdegree[u]) Θ(E) Odnajdowanie krawędzi kończących się w v Θ(V) Θ(E) Θ(E) Odnalezienie wszystkich krawędzi Θ(V ) Θ(E) Θ(E)

22 rawersowanie grafu Odnajdowanie połączeń Mając dany graf i wierzchołek s w tym grafie. Odszukać drogi do wszystkich pozostałych wierzchołków tj. czy istnieje połączenie pomiędzy s i v Najbardziej popularne są dwa algorytmy: Breadthirst Search (BS) przeszukiwanie wszerz Odnajduje drogi (najkrótsze drogi) w grafach nieskierowanych. Odnajduje połączone wierzchołki. Depthirst Search (DS) przeszukiwanie w głąb Odnajduje drogi w grafach nieskierowanych.. Odnajduje połączone wierzchołki. Przeprowadza topologiczne sortowanie w grafach skierowanych (liniowe uporządkowanie wierzchołków, w którym jeśli istnieje krawędź skierowana prowadząca od wierzchołka x do y, to x znajdzie się przed wierzchołkiem y. Innymi słowy, każdy wierzchołek poprzedza wszystkie te wierzchołki, do których prowadzą wychodzące od niego krawędzie).

23 BS i problem najkrótszej ścieżki Mając dany dowolny wierzchołek s, BS odwiedza wierzchołki w porządku rosnącym (względem odległości od s). W każdym kroku, BS odwiedza wszystkie osiągalne wierzchołki o stałej odległości. W taki sposób, BS odkrywa wszystkie drogi od s do innych wierzchołków. Co oznacza termin odległość? Ilość krawędzi w ścieżce od s. Przykład s= s Wierzchołki odległe o?,,, Wierzchołki odległe o?,,, Wierzchołki odległe o?

24 Algorytm BS // flag[ ]: visited table

25 BS przykład Lista sąsiedztwa Visited able (/) source Inicjalizacja tablicy (wszystko false) Q = { } Inicjalizacja kolejki Q (pusta)

26 Lista sąsiedztwa Visited able (/) source Oznaczamy jako odwiedzone Q = { }

27 Visited able (/) Neighbors source Oznacz sąsiadów,, jako odwiedzonych Q = {} Q = {,, } Dequeue. Umieść wszystkich nieodwiedzonych sąsiadów w kolejce

28 Visited able (/) source Neighbors Q = {,, } Q = {,,, } Oznacz nowoodwiedzonych, Dequeue. umieść wszystkich nieodwiedzonych sąsiadów w kolejce nie umieszczana w kolejce (już odwiedzona)

29 Visited able (/) Neighbors source Oznacz nowoodwiedzonych, Q = {,,, } Q = {,,,, } Dequeue. dodaj do kolejki nieodwiedzonych sąsiadów. tylko i nie były jeszcze odwiedzone

30 source Visited able (/) Q = {,,,, } Q = {,,, } Dequeue. nie posiada nieodwiedzonych sąsiadów! Neighbors

31 source Visited able (/) Q = {,,, } Q = {,, } Dequeue. nie ma nieodwiedzonych sąsiadów! Neighbors

32 source Visited able (/) Q = {,, } Q = {, } Dequeue. nie ma nieodwiedzonych sąsiadów! Neighbors

33 Visited able (/) Neighbors source Oznaczamy Q = {, } Q = {, } Dequeue. dodajemy do kolejki.

34 Visited able (/) source Neighbors Oznaczamy Q = {, } Q = {, } Dequeue. dodajemy do kolejki

35 Visited able (/) source Neighbors Q = {, } Q = { } Dequeue. nie ma nieodwiedzonych sąsiadów

36 source Visited able (/) Q = { } Q = { } Dequeue. brak nieodwiedzonych sąsiadów Neighbors

37 Visited able (/) source Co osiągnęliśmy? Q = { } SOP!!! Q jest pusta!!! Wszystkie wierzchołki zostały odwiedzone. Istnieje droga od wierzchołka Do wszystkich pozostałych w grafie

38 Złożoność czasowa BS (z wykorzystaniem list sąsiedztwa) Przyjmijmy n = ilość wierzchołków, m = ilość krawędzi. O(n + m) Każdy wierzchołek trafia do Q (enqueued i dequeued) co najwyżej raz. Każda iteracja zajmuje czas proporcjonalny do deg(v) + ( + ze względu na dequeue).

39 Czas wykonania W grafie o m krawędziach suma stopni wierzchołków wynosi? Σ vertex v deg(v) = m Stąd całkowity czas działania (pętla while): O( Σ vertex v (deg(v) + ) ) = O(m+n) = O(n+m) Suma wszystkich iteracji w pętli while!

40 Złożoność czasowa BS (z wykorzystaniem macierzy sąsiedztwa) Przyjmijmy n = ilość wierzchołków, m = ilość krawędzi. O(n ) Odnalezienie sąsiadów v wymaga przejrzenia wszystkich elementów w wierszu. Zajmuje to czas O(n). Sumując to dla wszystkich iteracji dostajemy O(n ). Dostajemy stąd, że, BS w tej wersji ma złożoność O(n ) niezależnie od ilości krawędzi m. Dla listy sąsiedztwa mieliśmy O(n+m); Jeśli m=o(n ), (graf gęsty) to dostajemy O(n+m)=O(n ).

41 Odnajdowanie najlepszych dróg BS pokazuje jedynie czy istnieje połączenie ze źródła s do pozostałych wierzchołków v. Nie odnajduje ścieżki! Potrzebujemy modyfikacji algorytmu odnajdującej ścieżki Jak to zrobić? Nie wiemy które wierzchołki leżą na ścieżce dopóki nie dojdziemy do v! Ale, dla pary {w,v}, wiemy czy w był odwiedzony z v. Efektywne rozwiązanie: Wykorzystać dodatkową tablicę pred[..n] do zapamiętywania poprzedników dla każdego wierzchołka. Pred[w] = v oznacza, że w został odwiedzony z v.

42 BS + wyznaczanie ścieżek inicjujemy pred[v] Oznaczamy skąd przyszliśmy.

43 Przykład source Visited able (/) Q = { } Pred

44 source Visited able (/) Q = { } Pred

45 source Visited able (/) Q = {} Q = {,, } Oznaczamy że przyszliśmy z. Neighbors Pred Dequeue

46 source Visited able (/) Q = {,, } Q = {,,, } Oznaczamy, że przyszliśmy z. Dequeue. Neighbors Pred

47 source Visited able (/) Q = {,,, } Q = {,,,, } Przyszliśmy z Dequeue. Neighbors Pred

48 source Visited able (/) Q = {,,,, } Q = {,,, } Dequeue. nie ma nieodwiedzonych sąsiadów! Neighbors Pred

49 source Visited able (/) Q = {,,, } Q = {,, } Dequeue. nie ma nieodwiedzonych sąsiadów! Neighbors Pred

50 source Visited able (/) Q = {,, } Q = {, } Dequeue. nie ma nieodwiedzonych sąsiadów! Neighbors Pred

51 source Visited able (/) Q = {, } Q = {, } Dequeue. Neighbors Pred

52 source Visited able (/) Q = {, } Q = {, } Dequeue. Neighbors Pred

53 source Visited able (/) Q = {, } Q = { } Dequeue. Neighbors Pred

54 source Visited able (/) Q = { } Q = { } Dequeue. Neighbors Pred

55 source Visited able (/) Q = { } SOP!!! Q jest pusta!!! ablicę Pred można teraz wykorzystać do pokazania ścieżek! Pred

56 Odnajdowanie ścieżek nodes visited from Algorytm rekursywny Np: Path(),, Path(),,, Path(),

57 BS ree Ścieżki odnalezione przez BS można przedstawić w postaci drzewa z korzeniem (nazywa się je BS tree), gdzie początkowy wierzchołek jest korzeniem. BS tree dla wierzchołka s=.

58 Przeszukiwanie w głąb Depthirst Search (DS) DS jest drugim popularnym algorytmem trawersowania grafów. Idea jest podobna do przechodzenia preorder (najpierw rodzic potem rekursywnie dzieci). DS może pokazać informacje o grafie które trudno uzyskać przy BS. Np. czy w grafie istnieją cykle?

59 Algorytm DS Algorytm DS odwiedza sąsiadów korzystając z rekurencji. Kiedykolwiek odwiedzamy v z u, rekursywnie odwiedzamy wszystkich nieodwiedzonych do tej pory sąsiadów v. Potem powracamy do u... Zauważmy: możliwe jest, że w nie był odwiedzony kiedy rekursywnie odwiedzaliśmy w, ale zostanie odwiedzony w czasie kiedy powrócimy z wywołania rekursywnego. u w v w w

60 Algorytm DS oznaczamy wszystkie nieodwiedzone wierzchołki Można podobnie jak poprzednio oznaczać Ścieżki przy pomocy pred[ ]. Oznaczamy węzeł jako odwiedzony. Dla wszystkich nieodwiedzonych sąsiadów wywołaj rekursywnie RDS(w)

61 Przykład Visited able (/) source Pred

62 source Visited able (/) Oznaczamy Jako odwiedzone Pred RDS( ) teraz wywołujemy RDS()

63 Visited able (/) source RDS( ) RDS() już odwiedzone, wywołujemy RDS() Rekursywne wywołanie odwiedzone Pred Pred[] oznaczone

64 Visited able (/) source Pred Oznaczamy jako odwiedzone i Pred[] RDS( ) RDS() Rekursywne RDS() > brak nieodwiedzonych sąsiadów, powrót do RDS() wywołanie

65 source Visited able (/) Pred RDS( ) RDS() teraz odwiedzamy > RDS() powrót do Rekursywne wywołanie

66 Visited able (/) source Rekursywne wywołanie RDS( ) RDS() RDS() > odwiedzamy, RDS() Ozn. i Pred[] Pred

67 Visited able (/) source Rekursywne wywołanie RDS( ) RDS() RDS() RDS() odwiedzamy RDS() Pred Oznaczamy i Pred[]

68 Visited able (/) source Rekursywne wywołanie RDS( ) RDS() RDS() RDS() RDS() odwiedzamy RDS() Pred Oznaczamy i Pred[]

69 Visited able (/) source Rekursywne wywołanie RDS( ) RDS() RDS() Pred Oznaczamy i Pred[] RDS() RDS() RDS() SOP wszyscy sąsiedzi są już odwiedzeni wracamy do RDS()

70 Visited able (/) source Powrót do Rekursywne wywołanie RDS( ) RDS() RDS() RDS() RDS() odwiedzamy > RDS() Pred

71 Visited able (/) source Rekursywne wywołanie RDS( ) RDS() RDS() RDS() RDS() RDS() już odwiedzone, wracamy do > RDS() Pred Oznaczamy i Pred[]

72 Visited able (/) source Rekursywne wywołanie RDS( ) RDS() RDS() RDS() RDS() RDS() RDS() odwiedzamy > RDS() Pred Oznaczamy i Pred[]

73 Visited able (/) source Rekursywne wywołanie RDS( ) RDS() RDS() RDS() RDS() RDS() RDS() Pred Oznaczamy i Pred[] RDS() > Stop brak nieodwiedzonych sąsiadów

74 Visited able (/) source Rekursywne wywołanie RDS( ) RDS() RDS() RDS() RDS() RDS() RDS() > Stop Pred

75 Visited able (/) source Rekursywne wywołanie RDS( ) RDS() RDS() RDS() RDS() RDS() > Stop Pred

76 Visited able (/) source Rekursywne wywołanie RDS( ) RDS() RDS() RDS() RDS() > Stop Pred

77 Visited able (/) Pred RDS( ) RDS() RDS() RDS() > Stop source Rekursywne wywołanie

78 Visited able (/) Pred RDS( ) RDS() RDS() > Stop source Rekursywne wywołanie

79 Visited able (/) Pred RDS( ) RDS() > Stop source Rekursywne wywołanie

80 Visited able (/) Pred RDS( ) > Stop Rekurencyjne wywołania zakończone source

81 Odnajdowanie ścieżek przy pomocy DS Visited able (/) Pred Np. Path() > Path() > Path() > source

82 Drzewo DS Otrzymujemy w taki sposób drzewo ścieżek (DStree). Warto zauważyć, że jest ono znacznie głębsze niż dla BS. Odzwierciedla on strukturę wywołań rekurencyjnych. kiedy odwiedzamy sąsiada w wierzchołka v, dodajemy w jako dziecko v. kiedy DS powraca z wierzchołka v, powracamy do rodzica v.

83 Złożoność czasowa DS (z zastosowaniem list sąsiedztwa) Nigdy nie odwiedzamy wierzchołka więcej niż raz. Musimy zatem sprawdzić wszystkie wierzchołki grafu. Wiemy, że Σ vertex v degree(v) = m, gdzie m jest ilością krawędzi. Dla każdego z wierzchołków zabiera to czas proporcjonalny do deg(v) +. Stąd czas wykonania DS jest proporcjonalny do sumy ilości wierzchołków i krawędzi (tak jak dla BS). O(n + m) gdzie n ilość wierzchołków, m ilość krawędzi. Inny zapis: O( v + e ) v = ilość wierzchołków (n) e = ilość krawędzi (m)

84 Zastosowania grafów: połączenia G = L N P O Q R M A D C E s Jak stwierdzić czy dwa wierzchołki są połączone? G B K Czy A jest połączone z? Czy A jest połączone z L? H

85 Problem połączeń Graf nazywamy spójnym jeśli dla każdej pary wierzchołków istnieje droga łącząca je. niespójny spójny Jak można stwierdzić czy graf jest spójny? Wykorzystać BS lub DS (wybierając dowolnie jakiś wierzchołek jako początek). Jeśli odwiedziliśmy wszystkie wierzchołki to graf jest spójny. Czas takiej procedury? O(n + m)

86 Spójne składowe

87 Spójne składowe Spójną składową grafu jest maksymalny spójny podgraf tego grafu. Zbiór spójnych składowych jest jednoznaczny dla każdego grafu. Przykład: poniższy graf można jednoznacznie przedstawić w postaci sumy spójnych podgrafów: C, C i C.

88 Odnajdowanie spójnych składowych Odnajdujemy wszystkie wierzchołki połączone z v => tworzą jedną spójną składową Zwykły DS

89 Złożoność czasowa dla każdego z podgrafów (i=,, ): O ( n + m i i ) Stąd dla całego grafu: O( n + = + i mi ) O( ni mi ) = O( n + i i i m)

90 Grafy skierowane W grafie skierowanym krawędzie są skierowane tj. e = (u,v) zaczyna się w u i kończy w v (v jest połączone z u). Dopuszczalne jest połączenie wierzchołka z samym sobą e = (u,u) Stopień wchodzący (indegree) d in (v) dla wierzchołka v jest ilością krawędzi wchodzących do v. Odpowiednio stopień wychodzący (outdegree) d out (v) dla wierzchołka v jest ilością krawędzi wychodzących z v. Σd in (v i ) = Σd out (v i ) Ścieżka z u do v w grafie G = (V,E) o długości k jest sekwencją wierzchołków <u = v,v,, v k = v> takąże dla i =,,k para (v i,v i ) należy do E.

91 Reprezentacja grafów skierowanych Można korzystać zarówno z macierzy sąsiedztwa, jak i z list sąsiedztwa. do z

92 Skierowane grafy acykliczne Skierowana ścieżka jest sekwencją wierzchołków (v, v,..., v k ). Cykl skierowany jest skierowanąścieżką o tożsamym początku i końcu. Graf skierowany jest acykliczny jeśli nie zawiera cykli skierowanych.

93 Indegree i Outdegree W wypadku grafów skierowanych nie można po prostu mówić o stopniu wierzchołka deg(v) Zamiast tego będziemy mówić o ilości krawędzi wchodzących Indegree(v) oraz wychodzących z wierzchołka Outdegree(v) Każdej krawędź arc(u,v) będzie liczona razy: jako outdegree dla u oraz indegree dla v. vertex v indegree( v) = outdegree( v) = m vertex v

94 Obliczanie Indegree i Outdegree Outdegree łatwo obliczyć Przeglądamy listę adj[v] i liczymy sąsiadów. Obliczanie Indegree Rozpoczynamy od indegree[v]= dla każdego wierzchołka v. Przeglądamy listy adj[v] dla każdego v. Dla każdego odnalezionego wierzchołka: indegree[w]++; Czas wykonania: O(n+m).

95 Przykład Indeg()? Indeg()? Outdeg()? Ilość krawędzi? m = outdegree? indegree?

96 Zastosowanie grafów skierowanych Grafy skierowane często wykorzystuje się do reprezentacji zadań wzajemnie zależnych. j. takich że każde następne może rozpocząć się dopiero po zakończeniu innego. Zależności takie mogą być modelowane poprzez krawędzie skierowane (arc). arc (i,j) oznacza, że zadanie j nie może rozpocząć się przed zakończeniem zadania i. i j Oczywiście, żeby praca się zakończyła taki graf nie może być cykliczny.

97 Sortowanie topologiczne liniowe uporządkowanie wierzchołków, w którym jeśli istnieje krawędź skierowana prowadząca od wierzchołka x do y, to x znajdzie się przed wierzchołkiem y. Innymi słowy, każdy wierzchołek poprzedza wszystkie te wierzchołki, do których prowadzą wychodzące od niego krawędzie. Wierzchołki w każdym grafie acyklicznym skierowanym można posortować topologicznie na jeden lub więcej sposobów. np.

98 Algorytm sortowania topologicznego Zauważmy: Punkt startowy musi posiadać indegree równe. Jeśli takiego wierzchołka nie ma gram nie jest acykliczny Algorytm:. Jeśli indegree dla wierzchołka wynosi zero można od niego zacząć (wypisujemy).. Jeśli wierzchołek i został wypisany to krawędzie wychodzące z niego nie są już potrzebne możemy usunąć wszystkie krawędzie wychodzące z i oraz samo i.. Po usunięciu z grafu wierzchołka i pozostaje on acykliczny i można rozumowanie powtórzyć.

99 opological Sort Znajdujemy punkt startowy redukujemy indegree(w) Wkładamy nowy start do kolejki Q

100 Przykład Indegree start Q = { } OUPU:

101 Indegree Dequeue Q = { } > usuwamy krawędzie z uaktualniamy indegree sąsiadów (,, ) OUPU:

102 Indegree Q = {,, } Wkładamy do kolejki wszystkie nowe punkty startowe OUPU:

103 Indegree Dequeue Q = {, } usuwamy krawędzie.. uaktualniamy indegree sąsiadów (, ) OUPU:

104 Indegree Q = {,, } Enqueue OUPU:

105 Indegree Dequeue Q = {, } OUPU:

106 Indegree Dequeue Q = {,, } Enqueue OUPU:

107 Indegree Dequeue Q = {, } OUPU:

108 Indegree Dequeue Q = { } OUPU:

109 Indegree Dequeue Q = { } OUPU:

110 Indegree Dequeue Q = { } OUPU:

111 Indegree Dequeue Q = {, } Enqueue, OUPU:

112 Indegree Dequeue Q = { } OUPU:

113 Indegree Dequeue Q = {, } OUPU:

114 Indegree Dequeue Q = { } OUPU:

115 Indegree Dequeue Q = { } OUPU:

116 Indegree Dequeue Q = { } OUPU:

117 Indegree Dequeue Q = { } Enqueue. OUPU:

118 Indegree Dequeue Q = { } SOP brak sąsiadów OUPU:

119 OUPU:

120 Złożoność dla sortowania topologicznego Nigdy nie odwiedzamy wierzchołka więcej niż raz. Dla każdego wierzchołka, Sprawdzamy wszystkie wychodzące krawędzie, Co zabiera czas proporcjonalny do outdegree(v) +. Jeśli zsumujemy to dla wszystkich wierzchołków to dostaniemy czas O(n + m).

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

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

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

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

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

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. 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Grafy (3): drzewa. Wykłady z matematyki dyskretnej dla informatyków i teleinformatyków. UTP Bydgoszcz

Grafy (3): drzewa. Wykłady z matematyki dyskretnej dla informatyków i teleinformatyków. UTP Bydgoszcz Grafy (3): drzewa Wykłady z matematyki dyskretnej dla informatyków i teleinformatyków UTP Bydgoszcz 13 (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 1 / 107 Drzewo Definicja. Drzewo to graf acykliczny

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

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

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

. 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

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

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

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

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

Podstawy Programowania 2 Grafy i ich reprezentacje. Plan. Wstęp. Teoria grafów Graf skierowany. Notatki. Notatki. Notatki. Notatki.

Podstawy Programowania 2 Grafy i ich reprezentacje. Plan. Wstęp. Teoria grafów Graf skierowany. Notatki. Notatki. Notatki. Notatki. Podstawy Programowania Grafy i ich reprezentacje Arkadiusz Chrobot Zakład Informatyki 7 maja 09 / 4 Plan Wstęp Zastosowania grafów / 4 Wstęp Grafy są w informatyce strukturami danych stosowanymi w wielu

Bardziej szczegółowo

Matematyka dyskretna - 7.Drzewa

Matematyka dyskretna - 7.Drzewa Matematyka dyskretna - 7.Drzewa W tym rozdziale zajmiemy się drzewami: specjalnym przypadkiem grafów. Są one szczególnie przydatne do przechowywania informacji, umożliwiającego szybki dostęp do nich. Definicja

Bardziej szczegółowo

E: Rekonstrukcja ewolucji. Algorytmy filogenetyczne

E: Rekonstrukcja ewolucji. Algorytmy filogenetyczne E: Rekonstrukcja ewolucji. Algorytmy filogenetyczne Przypominajka: 152 drzewo filogenetyczne to drzewo, którego liśćmi są istniejące gatunki, a węzły wewnętrzne mają stopień większy niż jeden i reprezentują

Bardziej szczegółowo

TEORETYCZNE PODSTAWY INFORMATYKI

TEORETYCZNE PODSTAWY INFORMATYKI 1 TEORETYCZNE PODSTAWY INFORMATYKI WFAiS UJ, Informatyka Stosowana I rok studiów, I stopień Wykład 14c 2 Definicje indukcyjne Twierdzenia dowodzone przez indukcje Definicje indukcyjne Definicja drzewa

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

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

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

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

SPÓJNOŚĆ. ,...v k. }, E={v 1. v k. i v k. ,...,v k-1. }. Wierzchołki v 1. v 2. to końce ścieżki.

SPÓJNOŚĆ. ,...v k. }, E={v 1. v k. i v k. ,...,v k-1. }. Wierzchołki v 1. v 2. to końce ścieżki. SPÓJNOŚĆ Graf jest spójny, gdy dla każdego podziału V na dwa rozłączne podzbiory A i B istnieje krawędź z A do B. Definicja równoważna: Graf jest spójny, gdy każde dwa wierzchołki są połączone ścieżką

Bardziej szczegółowo

Kolorowanie wierzchołków Kolorowanie krawędzi Kolorowanie regionów i map. Wykład 8. Kolorowanie

Kolorowanie wierzchołków Kolorowanie krawędzi Kolorowanie regionów i map. Wykład 8. Kolorowanie Wykład 8. Kolorowanie 1 / 62 Kolorowanie wierzchołków - definicja Zbiory niezależne Niech G będzie grafem bez pętli. Definicja Mówimy, że G jest grafem k kolorowalnym, jeśli każdemu wierzchołkowi możemy

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

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

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

Struktury danych i złożoność obliczeniowa Wykład 7. Prof. dr hab. inż. Jan Magott Struktury danych i złożoność obliczeniowa Wykład 7 Prof. dr hab. inż. Jan Magott Problemy NP-zupełne Transformacją wielomianową problemu π 2 do problemu π 1 (π 2 π 1 ) jest funkcja f: D π2 D π1 spełniająca

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

Programowanie dynamiczne i algorytmy zachłanne

Programowanie dynamiczne i algorytmy zachłanne Programowanie dynamiczne i algorytmy zachłanne Tomasz Głowacki tglowacki@cs.put.poznan.pl Zajęcia finansowane z projektu "Rozwój i doskonalenie kształcenia na Politechnice Poznańskiej w zakresie technologii

Bardziej szczegółowo

Grafy i Zastosowania. 9: Digrafy (grafy skierowane) c Marcin Sydow

Grafy i Zastosowania. 9: Digrafy (grafy skierowane) c Marcin Sydow 9: Digrafy (grafy skierowane) Spis zagadnień Digrafy Porządki częściowe Turnieje Przykłady: głosowanie większościowe, ścieżka krytyczna Digraf (graf skierowany) Digraf to równoważny termin z terminem graf

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

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

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

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

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 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

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

Wykład 2. Drzewa zbalansowane AVL i 2-3-4

Wykład 2. Drzewa zbalansowane AVL i 2-3-4 Wykład Drzewa zbalansowane AVL i -3-4 Drzewa AVL Wprowadzenie Drzewa AVL Definicja drzewa AVL Operacje wstawiania i usuwania Złożoność obliczeniowa Drzewa -3-4 Definicja drzewa -3-4 Operacje wstawiania

Bardziej szczegółowo

Algorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek

Algorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek Algorytmy i str ruktury danych Metody algorytmiczne Bartman Jacek jbartman@univ.rzeszow.pl Metody algorytmiczne - wprowadzenia Znamy strukturę algorytmów Trudność tkwi natomiast w podaniu metod służących

Bardziej szczegółowo

Wstęp do sieci neuronowych, wykład 12 Łańcuchy Markowa

Wstęp do sieci neuronowych, wykład 12 Łańcuchy Markowa Wstęp do sieci neuronowych, wykład 12 Łańcuchy Markowa M. Czoków, J. Piersa 2012-01-10 1 Łańcucha Markowa 2 Istnienie Szukanie stanu stacjonarnego 3 1 Łańcucha Markowa 2 Istnienie Szukanie stanu stacjonarnego

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

Wstęp do sieci neuronowych, wykład 11 Łańcuchy Markova

Wstęp do sieci neuronowych, wykład 11 Łańcuchy Markova Wstęp do sieci neuronowych, wykład 11 Łańcuchy Markova M. Czoków, J. Piersa 2010-12-21 1 Definicja Własności Losowanie z rozkładu dyskretnego 2 3 Łańcuch Markova Definicja Własności Losowanie z rozkładu

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

Algebrą nazywamy strukturę A = (A, {F i : i I }), gdzie A jest zbiorem zwanym uniwersum algebry, zaś F i : A F i

Algebrą nazywamy strukturę A = (A, {F i : i I }), gdzie A jest zbiorem zwanym uniwersum algebry, zaś F i : A F i Algebrą nazywamy strukturę A = (A, {F i : i I }), gdzie A jest zbiorem zwanym uniwersum algebry, zaś F i : A F i A (symbol F i oznacza ilość argumentów funkcji F i ). W rozważanych przez nas algebrach

Bardziej szczegółowo

Ilustracja S1 S2. S3 ściana zewnętrzna

Ilustracja S1 S2. S3 ściana zewnętrzna Grafy płaskie G=(V,E) nazywamy grafem płaskim, gdy V jest skończonym podzbiorem punktów płaszczyzny euklidesowej, a E to zbiór krzywych Jordana (łamanych) o końcach w V i takich, że: 1) rożne krzywe mają

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

Działanie algorytmu oparte jest na minimalizacji funkcji celu jako suma funkcji kosztu ( ) oraz funkcji heurystycznej ( ).

Działanie algorytmu oparte jest na minimalizacji funkcji celu jako suma funkcji kosztu ( ) oraz funkcji heurystycznej ( ). Algorytm A* Opracowanie: Joanna Raczyńska 1.Wstęp Algorytm A* jest heurystycznym algorytmem służącym do znajdowania najkrótszej ścieżki w grafie. Jest to algorytm zupełny i optymalny, co oznacza, że zawsze

Bardziej szczegółowo

Zad. 1 Zad. 2 Zad. 3 Zad. 4 Zad. 5 SUMA

Zad. 1 Zad. 2 Zad. 3 Zad. 4 Zad. 5 SUMA Zad. 1 Zad. 2 Zad. 3 Zad. 4 Zad. 5 SUMA Zad. 1 (12p.)Niech n 3k > 0. Zbadać jaka jest najmniejsza możliwa liczba krawędzi w grafie, który ma dokładnie n wierzchołków oraz dokładnie k składowych, z których

Bardziej szczegółowo

(4) x (y z) = (x y) (x z), x (y z) = (x y) (x z), (3) x (x y) = x, x (x y) = x, (2) x 0 = x, x 1 = x

(4) x (y z) = (x y) (x z), x (y z) = (x y) (x z), (3) x (x y) = x, x (x y) = x, (2) x 0 = x, x 1 = x 2. Wykład 2: algebry Boole a, kraty i drzewa. 2.1. Algebra Boole a. 1 Ważnym dla nas przykładem algebr są algebry Boole a, czyli algebry B = (B,,,, 0, 1) typu (2, 2, 1, 0, 0) spełniające własności: (1)

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

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

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 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

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

Wykłady z Matematyki Dyskretnej

Wykłady z Matematyki Dyskretnej Wykłady z Matematyki Dyskretnej dla kierunku Informatyka dr Instytut Informatyki Politechnika Krakowska Wykłady na bazie materiałów: dra hab. Andrzeja Karafiata dr hab. Joanny Kołodziej, prof. PK Grafy

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

7. Teoria drzew - spinanie i przeszukiwanie

7. Teoria drzew - spinanie i przeszukiwanie 7. Teoria drzew - spinanie i przeszukiwanie Grzegorz Kosiorowski Uniwersytet Ekonomiczny w Krakowie zima 2016/2017 rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie

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

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

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

AiSD zadanie trzecie

AiSD zadanie trzecie AiSD zadanie trzecie Gliwiński Jarosław Marek Kruczyński Konrad Marek Grupa dziekańska I5 5 czerwca 2008 1 Wstęp Celem postawionym przez zadanie trzecie było tzw. sortowanie topologiczne. Jest to typ sortowania

Bardziej szczegółowo

Lista 4. Kamil Matuszewski 22 marca 2016

Lista 4. Kamil Matuszewski 22 marca 2016 Lista 4 Kamil Matuszewski 22 marca 2016 1 2 3 4 5 6 7 8 9 10 Zadanie 2 Ułóż algorytm który dla danego n-wierzchołkowego drzewa i liczby k pokoloruje jak najwięcej wierzchołków tak, by na każdej ścieżce

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

6. Wstępne pojęcia teorii grafów

6. Wstępne pojęcia teorii grafów 6. Wstępne pojęcia teorii grafów Grzegorz Kosiorowski Uniwersytet Ekonomiczny w Krakowie zima 2016/2017 rzegorz Kosiorowski (Uniwersytet Ekonomiczny w Krakowie) 6. Wstępne pojęcia teorii grafów zima 2016/2017

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

Algorytmy równoległe. Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka 2010

Algorytmy równoległe. Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka 2010 Algorytmy równoległe Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka Znajdowanie maksimum w zbiorze n liczb węzły - maksimum liczb głębokość = 3 praca = 4++ = 7 (operacji) n - liczność

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

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

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA DRZEWA i LASY Drzewem nazywamy graf spójny nie zawierający cykli elementarnych. Lasem nazywamy graf nie zawierający cykli elementarnych. Przykłady drzew i lasów takie krawędzie są wykluczone drzewo las

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

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

TEORETYCZNE PODSTAWY INFORMATYKI

TEORETYCZNE PODSTAWY INFORMATYKI 1 TEORETYCZNE PODSTAWY INFORMATYKI WFAiS UJ, Informatyka Stosowana I rok studiów, I stopień Wykład 8 2 Modele danych: grafy Podstawowe pojęcia Grafy wywołań Grafy skierowane i nieskierowane Grafy planarne,

Bardziej szczegółowo

operacje porównania, a jeśli jest to konieczne ze względu na złe uporządkowanie porównywanych liczb zmieniamy ich kolejność, czyli przestawiamy je.

operacje porównania, a jeśli jest to konieczne ze względu na złe uporządkowanie porównywanych liczb zmieniamy ich kolejność, czyli przestawiamy je. Problem porządkowania zwanego również sortowaniem jest jednym z najważniejszych i najpopularniejszych zagadnień informatycznych. Dane: Liczba naturalna n i ciąg n liczb x 1, x 2,, x n. Wynik: Uporządkowanie

Bardziej szczegółowo

DWA ZDANIA O TEORII GRAFÓW. przepływ informacji tylko w kierunku

DWA ZDANIA O TEORII GRAFÓW. przepływ informacji tylko w kierunku DWA ZDANIA O TEORII GRAFÓW Krawędź skierowana Grafy a routing Każdą sieć przedstawić składającego przedstawiają E, inaczej węzłami). komunikacyjną można w postaci grafu G się z węzłów V (które węzły sieci)

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

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

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

Matematyka Dyskretna. Andrzej Szepietowski. 25 czerwca 2002 roku

Matematyka Dyskretna. Andrzej Szepietowski. 25 czerwca 2002 roku Matematyka Dyskretna Andrzej Szepietowski 25 czerwca 2002 roku ( Rozdział 1 Grafy skierowane W tym rozdziale zajmiemy siȩ algorytmami wyszukiwania najkrótszej drogi w grafach skierowanych Każdej krawȩdzi

Bardziej szczegółowo

Minimalne drzewa rozpinające

Minimalne drzewa rozpinające KNM UŚ 26-28 listopada 2010 Ostrzeżenie Wprowadzenie Motywacja Definicje Niektóre pojęcia pojawiające się podczas tego referatu są naszymi autorskimi tłumaczeniami z języka angielskiego. Nie udało nam

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania Wstęp do programowania Algorytmy zachłanne, algoritme Dijkstry Paweł Daniluk Wydział Fizyki Jesień 2013 P. Daniluk(Wydział Fizyki) WP w. XI Jesień 2013 1 / 25 Algorytmy zachłanne Strategia polegająca na

Bardziej szczegółowo

E ' E G nazywamy krawędziowym zbiorem

E ' E G nazywamy krawędziowym zbiorem Niech G będzie grafem spójnym. Wierzchołek x nazywamy rozcinającym, jeśli G\{x} jest niespójny. Niech G będzie grafem spójnym. V ' V G nazywamy zbiorem rozcinającym jeśli G\V' jest niespójny Niech G będzie

Bardziej szczegółowo