Przeszukiwanie grafów
|
|
- Bernard Stefański
- 6 lat temu
- Przeglądów:
Transkrypt
1 TEORIA GRAFÓW I SIECI - ROZDZIAŁV Przeszukiwanie grafów Wiedza o istnieniu interesujacego nas obiektu (np. drzewa spinajacego) jest w praktycznych zastosowaniach mało przydatna. Na ogółpotrzebujemy informacji o sposobie znalezienia tego obiektu, czyli potrzebujemy odpowiedniego algorytmu. Jednak algorytm, którego czas działania wynosi 1000 lat, jest umiarkowanie przydatny. Potrzebne sa więc metody pozwalajace stwierdzić, który ze znanych algorytmów jest szybszy, a przynajmniej takie które pozwalaja ocenić, czy algorytm jest wystarczajaco szybki dla naszych potrzeb. Interesuje nas zatem czas działania algorytmu. Jest on oczywiście zależny od rozmiaru danych wejściowych. Jednak nawet przy tym samym rozmiarze danych, czas pracy algorytmu może być znaczaco różny. Nas będzie interesować pesymistyczny czas działania, czyli najdłuższy możliwy czas działania dla danych wejściowych określonego rozmiaru. Będziemy przy tym zakładać, że wprowadzamy dane jednego typu, czyli rozmiar danych wejściowych można określić jedna liczba n (w ogólnym przypadku rozważania sa podobne). W praktyce nie będziemy wyznaczać dokładnego czasu T (n), a jedynie będziemy szukać dobrego oszacowania górnego. Obliczenie czasu działania algorytmu polega na zsumowaniu czasu działania wszystkich prostych (elementarnych) instrukcji, takich jak przypisanie wartości (i := i + 1), porównanie (if a > 0 then... ), czy wywołanie procedury. Algorytm zawiera pewna liczbę instrukcji prostych, przy czym niektóre z nich sa wykonywane wielokrotnie w pętli. Czasy poszczególnych instrukcji prostych, zwane też ich kosztami, oznaczmy przez c 1,..., c k. Zastępujac koszty poszczególnych instrukcji największym z nich c = max {c 1,..., c k } dostajemy oszacowanie czasu T (n) pewna funkcja f(n), której współczynniki zależa od c. Rozważmy przykładowo algorytm znajdowania maksimum n liczb. Dane wejściowe stanowi tablica a = [a[1],,..., a[n]]. Maksimum(a) % koszt krotność x := a[1] % c 1 1 for i := 2 to n do % c 2 n 1 if a[i] > x then % c 3 n 1 x := a[i] % c 1 n 1 max := x % c 4 1 Z powyższej (uproszczonej) analizy algorytmu wynika, że pesymistyczny czas jego działania można oszacować następujaco: T (n) = c 1 + (n 1) c 2 + (n 1) c 3 + (n 1) c 1 + c 3 c + (n 1) c + (n 1) c + (n 1) c + c = 3cn c, czyli czas działania jest ograniczony z góry przez funkcję f (n) = 3cn c. 1
2 TEORIA GRAFÓW I SIECI - ROZDZIAŁV 2 Zauważmy, że problemy z czasem działania algorytmu moga się pojawić przy dużym rozmiarze danych wejściowych. Oznacza to, że interesujace sa dla nas nie tyle konkretne wartości ograniczajacej funkcji f (n), co zachowanie przy n, czyli jej własności asymptotyczne. Badanie własności asyptotycznych funkcji f będzie polegało na porównaniu jej z pewna funkcja g > 0, której własności sa nam znane. Pojawia się pytanie, jak porównać asymptotyczne własności funkcji f oraz g. Polega to, mówiac w uproszczeniu, na zbadaniu granicy A = lim n f (n) g (n). Jeżeli A jest liczba dodatnia, to uważamy, że funkcje te sa "asymptotycznie podobne", jeżeli A = 0, to f jest "asymptotycznie mniejsza", zaś jeśli A =, to f jest "asymptotycznie większa" niż g. Przyjmujac np. g (n) = n, w rozważanym przykładzie dostajemy f (n) lim n g (n) = 3c (0, ), czyli f i g sa "asymptotycznie podobne". Takie podejście pozwala na uproszczenie rozważań przez pominięcie w rozważaniach kosztu c, który nie wpływa na asymptotyczne własności funkcji. Dokładniej, przyjmujemy c = 1, co sprawia, że funkcja f (n) szacuje ilość instrukcji prostych w algorytmie, czyli złożoność obliczeniowa algorytmu. W ostatnim przykładzie mamy f (n) = 3cn c = 3n 1. Sprowadziliśmy rozważania dotyczace czasu działania algorytmu do badania jego (pesymistycznej, asymptotycznej) złożoności obliczeniowej. Zdefiniujemy teraz formalnie pojęcia pozwalajace opisać złożoność obliczeniowa algorytmu. Dla k N oznaczmy N k = {n N; n k} i załóżmy, że f, g : N k R +. Mówimy, że funkcja g (n) jest asymptotycznym ograniczeniem górnym funkcji f (n) lub że f (n) jest rzędu co najwyżej g (n) jeżeli lim sup n f (n) g (n) <. Zbiór takich funkcji f (n), dla których g (n) jest asymptotycznym ograniczeniem górnym oznaczamy O (g (n)). Zamiast pisać f (n) O (g (n)) będziemy, zgodnie z przyjętymi zwyczajami, pisać f (n) = O (g (n)). Przyjęte oznaczenia nazywamy notacja O (wielkie O). Ćwiczenie 1. Pokazać, że f (n) = O (g (n)) c>0 n0 N n n0 f (n) cg (n). Funkcja g (n) pełni w podanej definicji rolę wzorca, do którego porównujemy funkcję f (n). Dlatego jako g (n) będziemy przyjmować na ogółfunkcje: 1 (stała), ln n, n, 2 n oraz iloczyny tych funkcji. Przykładowo, funkcję f (n) nazywamy ograniczona wielomianowo jeśli f (n) = O ( n k) dla pewnej liczby naturalnej k. Ćwiczenie 2. Pokazać, że dla dowolnych funkcji f, g, h : N k R +
3 TEORIA GRAFÓW I SIECI - ROZDZIAŁV 3 (1) f (n) = O (f (n)). (2) Jeżeli f (n) = O (g (n)) i g (n) = O (h (n)), to f (n) = O (h (n)). Ćwiczenie 3. Znale zć funkcje takie, że (1) f (n) = O (g (n)) oraz g (n) O (f (n)) (czyli g (n) / O (f (n))). (2) f (n) O (g (n)) oraz g (n) O (f (n)). (3) f (n) = O (g (n)), g (n) = O (f (n)) oraz f g. Ćwiczenie 4. W zbiorze funkcji z N k w R + możemy wprowadzíc relację przyjmujac Jakie własno sci ma relacja? f g f (n) = O (g (n)). Ćwiczenie 5. Udowodníc, że dla dowolnej liczby a > 0 ln a n lim n n = lim n a n 2 = 0. n Ćwiczenie 6. Sprawdzíc prawdziwo sć warunków 1) n = O (n 3 ) ; 10) ln 5 n = O ( n) ; 19) 2 n + 3 n = O (3 n ) ; 2) n 2 = O (n 3 ) ; 11) ln n 5 = O (ln n) ; 20) n2 n = O (3 n ) ; 3) n 3 = O (n 2 ) ; 12) ln 5 n = O (ln n) ; 21) 5 n = O (n!) ; 4) n 3 = O (5n 3 + 4n 2 + 3n + 2) ; 13) ln n = O (log 2 n) ; 22) n! = O (5 n ) ; 5) 5n 3 + 4n 2 + 3n + 2 = O (n 3 ) ; 14) ln n = O (log 10 n) ; 23) ln 2 n = O (n) ; 6) n + n = O (n) ; 15) ln n = O (ln ln n) ; 24) ln n! = O (n) ; 7) n n = O (n) ; 16) n 5 = O (2 n ) ; 25) ln n! = O (n ln n) ; 8) n = O (ln n) ; 17) 2 n = O (n 5 ) ; 26) ln n! = O (n 2 ) ; 9) ln n = O ( n) ; 18) 4 n = O (2 n + 3 n ) ; 27) n n = O (n!). Oprócz notacji O stosowane sa również inne sposoby porównywania funkcji. Wspomnimy o jeszcze jednym zwanym notacja Θ (wielkie theta). Mówimy, że funkcja g (n) jest asymptotycznie dokładnym oszacowaniem funkcji f (n) lub że f (n) jest rzędu g (n) jeżeli 0 < lim inf n Piszemy wtedy f (n) = Θ (g (n)). f (n) g (n) lim sup n f (n) g (n) <. Ćwiczenie 7. Udowodníc, że dla dowolnych funkcji f, g, h : N k R + (1) f (n) = Θ (g (n)) f (n) = O (g (n)) g (n) = O (f (n)). (2) f (n) = Θ (f (n)). (3) f (n) = Θ (g (n)) g (n) = Θ (f (n)). (4) Jeżeli f (n) = Θ (g (n)) i g (n) = Θ (h (n)), to f (n) = Θ (h (n)). Ćwiczenie 8. Sprawdzíc prawdziwo sć warunków z ćwiczenia 6, po zastapieniu notacji O notacja Θ.
4 TEORIA GRAFÓW I SIECI - ROZDZIAŁV 4 Uwaga 1. Definicje dotyczace porównywania funkcji można bez żadnych zmian sformułować dla funkcji okre slonych na półprostej (a, ), a > 0 zamiast na zbiorze N k (jedynie dla większej czytelno sci warto zmienna n zastapíc przez x). Uwaga 2. Zapisujac złożono sć obliczeniowa algorytmu upraszcza się zapis przez opuszczenie symbolu mocy zbioru, tzn. pisze się np. O (V 2 ) i O (V ln V ) zamiast O ( V 2) i O ( V ln V ). Zanim przejdziemy do omawiania konkretnych algorytmów, zwróćmy jeszcze uwagę na istotny problem występujacy gdy próbujemy ocenić złożoność obliczeniow a algorytmu napisanego w pseudokodzie. Problem polega na tym, że czasem nie da się ustalić, czy dana instrukcję możemy potraktować jako elementarna, czy też do jej wykonania potrzeba większej ilości instrukcji elementarnych. Przykładowo instrukcja przypisania odwołuj aca się do elementu tablicy może być potraktowana jako elementarna, gdyż możemy się odwołać bezpośrednio do dowolnego elementu tablicy. Jeżeli jednak dane sa zorganizowane nie w postaci tablicy, ale listy, to odwołanie do elementu listy wymaga odwołania się do wszystkich go poprzedzajacych. Tak więc analogiczna instrukcja przypisania wymaga większej ilości instrukcji elementarnych. Przykład ten pokazuje, że na ogółzłożoność obliczeniowa możemy policzyć dla konkretnej implementacji algorytmu, a nie dla samego algorytmu. Z tego też względu w naszym wykładzie będziemy ograniczać się do podawania informacji o złożoności obliczeniowej jaka można uzyskać implementujac dany algorytm. Nie będziemy raczej badać tego samodzielnie. W twierdzeniu?? udowodniliśmy, że każdy graf spójny ma drzewo spinajace. Dowód nie podawałjednak sposobu znalezienia takiego drzewa. Omówimy teraz algorytm znajdujacy drzewo spinajace grafu spójnego. Warunki z twierdzenia?? sugeruja dwa sposoby rozwiazania tego problemu: Usuwamy kolejne krawędzie dbajac o zachowanie spójności, tak długo jak to możliwe. Startujemy od zbioru pustego i dodajemy kolejne krawędzie dbajac o zachowanie acykliczności, tak długo jak to możliwe. Okazuje się, że bardziej efektywny jest, na ogół, algorytm oparty na drugim pomyśle. Algorytm oparty na pierwszym może być szybszy dla grafu rzadkiego, tzn. takiego, w którym ilość krawędzi E G jest dużo mniejsza niż kwadrat liczby wierzchołków V G 2. Jednak dla grafów rzadkich algorytm oparty na drugim pomyśle jest wystarczajaco szybki i w konsekwencji można go stosować do dowolnych grafów spójnych. Załóżmy, że G = (E, V ) jest grafem spójnym oraz a dowolnie wybranym wierzchołkiem. Drzewo(G, a) V 0 := {a} E 0 := while V \ V 0 do Wybierz krawędź bc taka, że b V 0 i c V \ V 0 V 0 := V 0 {c} E 0 := E 0 {bc} T := (V 0, E 0 )
5 TEORIA GRAFÓW I SIECI - ROZDZIAŁV 5 Graf G Drzewo spinajace T Drzewo spinajace T Twierdzenie 1. Wynikiem działania procedury Drzewo jest drzewo spinajace T grafu spójnego G. Jeżeli nie zaznaczymy inaczej, sfor- Dowód. Udowodnimy kolejno kilka prostych faktów. mułowania będa dotyczyć dowolnej iteracji. (1) Końce krawędzi z E 0 należa do V 0 (czyli (V 0, E 0 ) jest grafem). Dla E 0 = jest to oczywiste. Własność (1) jest niezmiennikiem pętli, bo koniec krawędzi dodawanej do E 0 jest dodawany do V 0. (2) Jeżeli V \ V 0, to wybór krawędzi bc jest możliwy. Wystarczy wziać dowolny wierzchołek z V \ V 0 i poł aczyć go ścieżka z a (spójność). Na podstawie własności?? ścieżka ta zawiera szukana krawędź. (3) Procedura zatrzyma się. Wynika to ze skończoności V. (4) Własność "(V 0, E 0 ) jest drzewem" jest niezmiennikiem pętli. Spójność (V 0, E 0 ) jest niezmiennikiem pętli, bo dodawany wierzchołek jest poł aczony krawędzi a z wierzchołkiem należacym do V 0. Ponieważ w każdej iteracji dodajemy tyle samo wierzchołków co krawędzi, więc niezmiennikiem pętli jest także warunek Teza wynika zatem z twierdzenia??. E 0 = V 0 1. (5) Po wyjściu z pętli, (V 0, E 0 ) jest drzewem spinajacym G. Przed wejściem do pętli graf (V 0, E 0 ) = ({a}, ) jest drzewem. Z (4) wnioskujemy więc, że po wyjściu (V 0, E 0 ) jest również drzewem. Ponieważ mamy wtedy V 0 = V, więc jest to drzewo spinajace.
6 TEORIA GRAFÓW I SIECI - ROZDZIAŁV 6 Dla grafu niespójnego pocedura Drzewo nie działa, bo po wyczerpaniu wszystkich wierzchołków ze składowej G a nie jest możliwy wybór kolejnej krawędzi bc. Jeśli jednak w pętli while warunek zastapimy warunkiem V \ V 0 istnieje krawędź bc taka, że b V 0 i c V \ V 0, to dostaniemy algorytm znajdujacy drzewo spinajace składowej G a. Ćwiczenie 9. Napisać algorytm znajdujacy drzewo spinajace grafu spójnego metoda usuwania z grafu kolejnych krawędzi i udowodníc poprawno sć działania. Problem znajdowania drzewa spinajacego grafu jest jednym z wielu, gdzie mamy do czynienia z przeszukiwaniem grafu, czyli przechodzeniem przez wszystkie wierzchołki. Przyjrzyjmy się algorytmowi Drzewo. Wykonywany w pętli wybór krawędzi nie jest jednoznaczny. Można więc wyobrazić sobie różne sposoby wybierania kolejnej krawędzi. Szukanie krawędzi polega na sprawdzeniu, czy już wybrane wierzchołki można poł aczyć krawędzi a z jeszcze niewybranymi. Istotna jest zatem kolejno sć w jakiej przegladamy wierzchołki już wybrane. Zmieniajac kolejność dostaniemy różne algorytmy przeszukiwania grafu. Dwa najważniejsze to przeszukiwanie wszerz i przeszukiwanie w gł ab. Procedura przeszukiwania rozpoczyna się od wyróżnionego wierzchołka, który nazywamy korzeniem drzewa. Przeszukiwanie wszerz (BFS - breadth first search). Przeszukujac wszerz szukamy najpierw sasiadów korzenia. Wierzchołki te tworza pierwszy poziom. Następnie szukamy sasiadów wierzchołków pierwszego poziomu (wśród jeszcze niewybranych). Wierzchołki pierwszego poziomu przegł adamy w kolejności w jakiej były wybierane. Znalezione wierzchołki tworza drugi poziom. Operacje wyszukiwania powtarzamy na kolejnych poziomach, dopóki nie znajdziemy wszystkich wierzchołków. Poniższy przykład pokazuje drzewo przeszukiwania wszerz, czyli drzewo spinajace T B uzyskane z wykorzystaniem przeszukiwania wszerz. Korzeniem jest wierzchołek a, zaś sasi- adów wybieramy w kolejności alfabetycznej. Kolejność wybierania krawędzi jest oznaczona liczbami. Graf G Drzewo przeszukiwania wszerz T B
7 TEORIA GRAFÓW I SIECI - ROZDZIAŁV 7 Przeszukiwanie w gł ab (DFS - depth first search). Zaczynamy przeszukiwanie od korzenia i szukamy sasiada ostatnio odwiedzonego wierzchołka. Jeżeli nie znajdziemy, to cofamy się do poprzednio odwiedzonego i szukamy sasiada dla niego. Używajac przeszukiwania w gł ab, znajdziemy drzewo spinajace T D grafu z poprzedniego przykładu. Jest ono nazywane drzewem przeszukiwania w gł ab. Tak jak poprzednio, sasiadów wybieramy w kolejności alfabetycznej i numerujemy krawędzie w kolejności znajdowania. Graf G Drzewo przeszukiwania w gł ab T D Ćwiczenie 10. Załóżmy, że graf G jest reprezentowany w postaci macierzy sasiedztwa. (1) Zmodyfikować (uszczegółowíc) algorytm Drzewo tak by wynikiem było drzewo przeszukiwania wszerz. (2) Zmodyfikować algorytm tak by wynikiem było drzewo przeszukiwania w gł ab. (3) Oszacować złożono sć obliczeniowa utworzonych algorytmów. Przeszukujac graf wyróżniliśmy jeden wierzchołek (poczatek przeszukiwania). W wyniku tego dostaliśmy drzewo majace pewna strukturę. Drzewem z wyróżnionym korzeniem (drzewem ukorzenionym) nazywamy parę (T, r), gdzie T jest drzewem, zaś r wyróżnionym wierzchołkiem, nazywanym korzeniem drzewa. Dowolny wierzchołek drzewa można poł aczyć z korzeniem dokładnie jedna ścieżka prosta. Długość tej ścieżki nazywamy numerem poziomu wierzchołka. Zbiór wszystkich wierzchołków o numerze poziomu równym n nazywamy n- tym poziomem drzewa. Największy numer poziomu wierzchołka nazywamy wysokości a drzewa. Jeżeli wierzchołek b leży na ścieżce prostej z korzenia do wierzchołka c b to mówimy, że c jest potomkiem b. Jeżeli b jest przedostatnim wierzchołkiem na tej ścieżce, to wierzchołek c nazywamy synem (dzieckiem, następnikiem) b, zaś wierzchołek b ojcem (rodzicem, poprzednikiem) c. Podgraf T b złożony z b, wszystkich jego potomków oraz krawędzi ł aczacych te wierzchołki jest drzewem. Parę (T b, b) nazywamy poddrzewem o korzeniu b. Liśćmi w drzewie ukorzenionym nazywamy wszystkie wierzchołki stopnia 1,
8 TEORIA GRAFÓW I SIECI - ROZDZIAŁV 8 oprócz korzenia. Drzewo z wyróżnionym korzeniem przedstawiamy graficznie rysujac korzeń na górze, a dzieci niżej niż rodziców. Drzewo przeszukiwania w gł ab z ostatniego przykładu może być traktowane jako drzewo z wyróżnionym korzeniem a. Dla drzewa ukorzenionego (T D, a) mamy: ojciec g: c, synowie g: f, h, potomkowie g: f, e, i, j, h, l, k, 0. poziom drzewa: a, 3. poziom drzewa: d, g, wysokość drzewa: 6, liście: d, e, j, k, poddrzewo (T g, g):. Własność 1. Jeżeli (T, r) jest drzewem ukorzenionym, to (1) Korzeń r nie ma ojca. (2) Dowolny wierzchołek różny od korzenia ma dokładnie jednego ojca. Dowód. Jedyna ścieżka prosta z r do r jest ścieżka trywialna. Nie istnieje więc przedostatni wierzchołek na tej ścieżce, czyli r nie ma ojca. Niech b będzie wierzchołkiem różnym od korzenia. Istnieje dokładnie jedna ścieżka prosta z r do b. Ponieważ b r, więc jest ona nietrywialna. Ojciec b jest zatem wyznaczony jednoznacznie jako przedostatni wierzchołek na tej ścieżce. Własność 2. Jeżeli wierzchołki a, b drzewa ukorzenionego (T, r) sa poł aczone krawędzi a, to a jest ojcem b albo b jest ojcem a. Dowód. Ponieważ T jest grafem acyklicznym, więc a b. Zatem przynajmniej jeden z rozważanych wierzchołków jest różny od r. Możemy przyjać, że b r. Ze spójności T wynika, że istnieje ścieżka prosta d = r... b. Rozważmy przypadki. (1) a nie należy do d. Wtedy a nie jest ojcem b. Ponadto r... ba jest ścieżka prosta, czyli b jest ojcem a. (2) a jest przedostatnim wierzchołkiem w d, czyli d = r... ab. Wówczas a jest ojcem b. Ponieważ podścieżka r... a nie zawiera b, więc b nie jest ojcem a. (3) a należy do d, ale nie jest przedostatnim wierzchołkiem w d, czyli d = r... a... b. Dodajac do ścieżki prostej a... b (długości > 1) krawędź ba dostajemy cykl a... ba,
9 TEORIA GRAFÓW I SIECI - ROZDZIAŁV 9 wbrew acykliczności T. Wynika stad, że ten przypadek nie może zachodzić. Z (1)-(3) wnioskujemy tezę. Ćwiczenie 11. Pokazać, że w nietrywialnym drzewie ukorzenionym líscie sa jedynymi wierzchołkami, które nie maja synów. Ćwiczenie 12. (1) W drzewie (T B, a) z przedostatniego przykładu powtórzyć obliczenia, które zrobilísmy dla drzewa (T D, a). (2) Traktuj ac T B i T D jako drzewa wolne, utworzyć (narysować) drzewa ukorzenione (T B, f) i (T D, f). Powtórzyć obliczenia wykonane dla (T D, a) i (T B, a). (3) Dla grafu G utworzyć drzewo przeszukiwania wszerz (T 1, f) i drzewo przeszukiwania w gł ab (T 2, f). Powtórzyć obliczenia wykonane dla (T D, a) i (T B, a). Ćwiczenie 13. W poniższym grafie (1) Znale zć drzewo spinajace T B przeszukujac graf wszerz oraz drzewo spinajace T D przeszukujac graf w gł ab. Przeszukiwanie rozpocz ać od wierzchołka a, wierzchołki wybierać w kolejno sci alfabetycznej. (2) Narysować drzewa ukorzenione (T B, a) i (T D, a). Wyznaczyć: líscie, trzeci poziom, wysoko sć drzewa, synów wierzchołka e, potomków wierzchołka d (narysować poddrzewo o korzeniu d). (3) Powtórzyć (1) i (2) zastępujac wierzchołek a wierzchołkiem h. Zauważmy, że przeszukujac graf omówionymi metodami (wszerz, w gł ab), mamy dowolność w wybieraniu sasiada danego wierzchołka (w przykładach i ćwiczeniach robiliśmy to alfabetycznie). Dokonujac wyboru wprowadzamy, de facto, pewien porzadek w zbiorze dzieci
10 TEORIA GRAFÓW I SIECI - ROZDZIAŁV 10 poszczególnych wierzchołków, który graficznie oddajemy rysujac dziecko wybrane wcześniej na lewo od wybranego później. Oznacza to, że otrzymane w ten sposób drzewo ukorzenione ma dodatkowa strukturę. Zanim ja formalnie opiszemy zauważmy, że dla zbioru skończonego, ustawienie jego elementów w ciag skończony (ponumerowanie) jest równoznaczne ze zdefiniowanie w nim relacji liniowego porzadku. Drzewo z wyróżnionym korzeniem nazywamy uporzadkowanym, jeżeli dla dowolnego wierzchołka, zbiór jego dzieci jest liniowo uporzadkowany (o ile jest niepusty). Jak wcześniej wspomnieliśmy, drzewa spinajace otrzymane w wyniku działania algorytmu Drzewo można traktować jako uporzadkowane drzewa z wyróżnionym korzeniem. Porzadek w zbiorze dzieci danego wierzchołka jest określony przez kolejność wyboru. Przykładowo w rozpatrywanych wyżej drzewach przeszukiwania wszerz i przeszukiwania w gł ab byłto porzadek alfabetyczny. Zagadnienie przeszukiwania grafu jest zwiazne z problemem porzadkowania wierzchołków grafu, tj. ustawiania ich w ciag. Graf spójny i jego drzewo spinajace maja te same wierzchołki. Porzadkowanie wierzchołków grafu spójnego sprowadza się więc do porzadkowania wierzchołków jego drzewa spinajacego. Dwa podstawowe sposoby porzadkowania wierzchołków: prefiksowy (preorder) i postfiksowy (postorder) wykorzystuja drzewo przeszukiwania w gł ab. Opis procedury porzadkujacej wierzchołki drzewa można jednak sformułować dla dowolnego uporzadkowanego drzewa z wyróżnionym korzeniem. Załóżmy, że mamy uporzadkowane drzewo z wyróżnionym korzeniem (T, r). Ustawimy wierzchołki tego drzewa w ciag. W tym celu tworzymy zamknięta ścieżkę o poczatku r według następujacych reguł: Jeżeli bieżacy wierzchołek ma nieodwiedzone jeszcze dzieci, to idziemy (dodajemy krawędź) do pierwszego nieodwiedzonego dziecka (zgodnie z porzadkiem w zbiorze dzieci). Jeżeli bieżacy wierzchołek nie ma nieodwiedzonych dzieci, to cofamy się (dodajemy krawędź) do ostatnio odwiedzonego wierzchołka. Procedurę kończymy, jeśli po osiagnięciu korzenia okaże się, że wszystkie jego dzieci były już odwiedzone. Można sprawdzić, że w wyniku opisanej wyżej procedury powstaje ścieżka zamknięta zawierajaca wszystkie wierzchołki drzewa T. Niektóre wierzchołki występuja tam wielokrotnie. Naturalne sa dwa sposoby uporzadkowania wierzchołków (ustawienia w ciag). Porzadek prefiksowy (preorder) Wierzchołek wstawiamy do ciagu przy pierwszym pojawieniu się na ścieżce. Porzadek postfiksowy (postorder) Wierzchołek wstawiamy do ciagu przy ostatnim pojawieniu się na ścieżce.
11 TEORIA GRAFÓW I SIECI - ROZDZIAŁV 11 Dla rozpatrywanego wcześniej drzewa przeszukiwania w gł ab mamy Porzadek preorder: a, b, c, d, g, f, e, i, j, h, l, k. Porzadek postorder: d, e, j, i, f, k, l, h, g, c, b, a. W uporzadkowaniu prefiksowym rodzice sa umieszczeni w ciagu przed dziećmi, a w postfiksowym - po dzieciach. Ćwiczenie 14. Traktuj ac drzewa ukorzenione z ćwiczeń 12 i 13 jako drzewa uporzadkowane (kolejno sć dzieci alfabetyczna), uporzadkować ich wierzchołki w porzadku prefiksowym i postfiksowym. Aby uzyskać algorytm porzadkowania wierzchołków grafu spójnego musimy poł aczyć algorytm tworzenia drzewa przeszukiwania w gł ab (algorytm Drzewo w wersji z ćwiczenia 10) z metoda opisana powyżej. Ćwiczenie 15. Napisać algorytmy porzadkowania wierzchołków grafu spójnego w porzadku preorder i w porzadku postorder (użyć pseudokodu lub jakiegokolwiek języka programowania). Drzewo ukorzenione, w którym każdy wierzchołek ma co najwyżej dwóch synów nazywamy drzewem binarnym. Jeżeli dla pewnej liczby naturalnej m, każdy wierzchołek ma co najwyżej m synów, to drzewo nazywamy m-arnym. Drzewa binarne odgrywaja szczególnie duża rolę w zastosowaniach. Uporzadkowane drzewa binarne sa definiowane w specyficzny sposób. Dla ustalonego wierzchołka a, zbiór jego dzieci ma 1 lub 2 elementy (o ile jest niepusty). Zamiast wprowadzać liniowy porzadek w tym zbiorze, jego elementom przypisujemy wartości 0 lub 1 (w sposób różnowartościowy). Dziecko, któremu przypisano wartość 0 nazywamy dzieckiem lewym, zaś wartość 1 - dzieckiem prawym. Oznacza to, że poniższe rysunki reprezentuja różne uporzadkowania drzewa binarnego o korzeniu r.
12 TEORIA GRAFÓW I SIECI - ROZDZIAŁV 12 Dla drzew binarnych można wprowadzić jeszcze jedna metodę porzadkowania wierzchołków. Porzadek infiksowy (inorder). Wierzchołek wstawiamy do ciagu między lewym a prawym dzieckiem. Dla grafów z ostatniego rysunku mamy: lewy graf: c, a, d, r, e, b, prawy graf: c, a, d, r, b, e. Wróćmy do definicji drzewa z wyróżnionym korzeniem. Zauważmy, że traktujac ojca jako poczatek, a syna jako koniec krawędzi, przekształcamy drzewo ukorzenione (T, r) w graf skierowany T. Dokładniej definiujemy T przyjmujac V T = V T oraz E T = {(a, b) ; a, b V T a jest ojcem b}. Otrzymany w ten sposób graf skierowany nazywamy drzewem skierowanym z wyróżnionym korzeniem. (T, r) T Wierzchołek a grafu skierowanego nazywamy źródłem tego grafu jeśli indeg (a) = 0, natomiast ujściem jeśli outdeg (a) = 0. Z własności 1 wynika natychmiast, że w drzewie ukorzenionionym skierowanym T, korzeń jest jedynym źródłem. W dalszej części wykładu przyda się kryterium pozwalajace rozstrzygnać czy graf skierowany jest drzewem ukorzenionym. Twierdzenie 2. Graf skierowany G jest drzewem skierowanym z korzeniem r wtedy i tylko wtedy, gdy jego szkielet G N jest spójny oraz (1) indeg (r) = 0 i indeg (a) = 1 dla a r. Dowód. Załóżmy, że graf skierowany G jest drzewem skierowanym generowanym przez drzewo ukorzenione (T, r). Z definicji drzewa skierowanego oraz szkieletu wynika, że V T = V G = V GN. Z własności 2 wnioskujemy, że jeśli (a, b) E G, to (b, a) / E G i w konsekwencji szkielet G N nie ma krawędzi wielokrotnych. Korzystajac ponownie z własności 2, dla dowolnych wierzchołków a, b mamy {a, b} E GN (a, b) E G (b, a) E G b jest ojcem a w T a jest ojcem b w T {a, b} E T.
13 TEORIA GRAFÓW I SIECI - ROZDZIAŁV 13 Oznacza to, że G N = T, czyli graf G N jest spójny. Warunek (1) wynika z własności 1, bo { 0 ; a = r indeg (a) = {x; (x, a) E G } = {x; x jest ojcem a w T } = 1 ; a r. Załóżmy, że G jest grafem skierowanym o spójnym szkielecie spełniaj acym (1). Lematu o uściskach dłoni dla grafów skierowanych mamy E GN = E G = a V G indeg a = a r 1 = V G 1 = V GN 1. Wobec spójności G N, z twierdzenia?? wynika, że G N jest drzewem. Aby zakończyć dowód wystarczy pokazać, że drzewo ukorzenione (G N, r) generuje graf skierowany G, tzn. (2) (a, b) E G a jest ojcem b w (G N, r). Udowodnimy najpierw, że (3) jeżeli a jest ojcem b w (G N, r), to (a, b) E G. Przypuśćmy nie wprost, że tak nie jest, tzn. istnieja wierzchołki a, b takie, że a jest ojcem b oraz (a, b) / E G. Wśród wszystkich par wierzchołków o tej własności wybierzmy a 0, b 0, dla których a 0 leży na poziomie o najmniejszym możliwym numerze k. Z założenia dostajemy (a 0, b 0 ) / E G, {a 0, b 0 } E GN i w konsekwencji (b 0, a 0 ) E G. Z Rozpatrzmy przypadki k = 0, tzn. a 0 = r. Wtedy (b 0, r) E G, co jest sprzeczne z założeniem indeg (r) = 0. k > 0. Wtedy a 0 ma na poziomie k 1 ojca c. Z minimalności k wynika, że (c, a 0 ) E G.
14 TEORIA GRAFÓW I SIECI - ROZDZIAŁV 14 Ponieważ a 0 jest ojcem b 0, więc b 0 leży na poziomie k+1, czyli c b 0. Stad indeg a 0 2 > 1, co jest sprzeczne z założeniem. Otrzymane sprzeczności dowodza implikacji (3). Udowodnimy teraz implikację przeciwna: (4) jeżeli (a, b) E G, to a jest ojcem b w (G N, r). Załóżmy, że (a, b) E G i przypuśćmy nie wprost, że a nie jest ojcem b. Ponieważ {a, b} E GN, więc na podstawie własności 2, b jest ojcem a. Zatem z (3) wynika, że (b, a) E G i w konsekwencji wierzchołki a i b sa w grafie nieskierowanym G N poł aczone dwiema krawędziami. Jest to sprzeczne z acyklicznościa G N. Otrzymana sprzeczność dowodzi (4). Z (3) i (4) wynika (2), co kończy dowód twierdzenia. Niech (T, r) będzie drzewem z wyróżnionym korzeniem. Z własności 1 wynika, że r nie ma poprzednika (ojca), natomiast wszystkie wierzchołki a r maja dokładnie jednego poprzednika (ojca). Możemy więc na V T zdefiniować funkcję przyjmujac: { poprzednik a gdy a r, p (a) = gdy a = r. Funkcję p nazywamy wektorem poprzedników drzewa ukorzenionego (T, r) i często zapisujemy w postaci [p (a)] a VT. Jeśli wierzchołki drzewa T ustawimy w ciag V T = {x 1, x 2,..., x n }, to funkcja p jest wyznaczona przez wektor [p (x 1 ), p (x 2 ),..., p (x n )] i możemy ja z tym wektorem utożsamiać. Jeżeli (T, r) jest drzewem ukorzenionym, to w T możemy wprowadzić strukurę grafu skierowanego. Definicję wektora poprzedników stosuje się również w tym przypadku, tzn. dla skierowanych drzew z wyróżnionym korzeniem. Sytuacja taka jest nawet łatwiejsza do opisania bo mamy wtedy p (b) = a (a, b) E T. Zauważmy jeszcze, że przy ustalonym zbiorze wierzchołków V, wektor poprzedników p drzewa (skierowanego) T z korzeniem r jednoznacznie określa to drzewo. Korzeń r jest bowiem jedynym elementem zbioru {a V ; p (a) = } oraz E T = {(a, b) ; (a, b) E T } = {(a, b) ; p (b) = a V } = {(p (b), b) ; p (b) }, czyli zbiór krawędzi E T można wyznaczyć znajac funkcję p. Oczywiście, podobna zależność zachodzi też dla drzew ukorzenionych nieskierowanych. Wektor poprzedników stanowi zatem reprezentację analityczna drzewa ukorzenionego. Reprezentacja ta jest wygodniejsza niż rozważane wcześniej macierze sasiedztwa i incydencji, listy sasiedztw, czy kody Prüfera. Co więcej, również drzewo wolne można zapisać za pomoca wektora poprzedników. W tym celu wystarczy wyróżnić jakikolwiek wierzchołek jako korzeń.
15 TEORIA GRAFÓW I SIECI - ROZDZIAŁV 15 Ćwiczenie 16. Znale zć wektor poprzedników dla następujacych drzew ukorzenionych (kolejno sć wierzchołków alfabetyczna) 1) 2) 3) 4) 5) Ćwiczenie 17. Wyznaczczyć drzewo ukorzenione (T, r) o zbiorze wierzchołków V = {1,..., n} oraz wektorze poprzedników p. (1) p = [4, 4, 6, 6,, 5]. (2) p = [, 1, 1, 1, 2, 2, 4, 4, 7, 9]. (3) p = [, 1, 2, 3, 3, 3, 1, 7, 7, 9, 9, 1]. (4) p = [7, 9, 7, 11, 10, 10,, 1, 1, 7, 10, 9]. (5) p = [2, 3, 13, 6, 6, 12, 10, 10, 10, 11, 12, 13, 14, ]. Ćwiczenie 18. Znale zć wektory poprzedników drzew z ćwiczenia?? przyjmujac r = 2 oraz r = 5 (kolejno sć wierzchołków rosnaca). Niech a będzie ustalonym wierzchołkiem drzewa ukorzenionego (T, r) (nieskierowanego). W T istnieje dokładnie jedna ścieżka prosta z a do r. Znajac wektor poprzedników p, możemy łatwo tę ścieżkę wyznaczyć. Ma on postać: a p (a) p (p (a))... Można to zapisać przy pomocy następujacego algorytmu. Path(p, a) x := a d := a while p (x) do d := d {x, p (x)} p (x) x := p (x) % bieżacy wierzchołek % zbudowana ścieżka
16 TEORIA GRAFÓW I SIECI - ROZDZIAŁV 16 Wynikiem działania procedury Path jest ścieżka prosta d z wierzchołka a do korzenia r. Procedurę można też wykorzystać do szukania ścieżki prostej z korzenia do wierzchołka a (również dla drzew skierowanych). Należy jedynie zapisać wierzchołki ścieżki d w odwrotnej kolejności. Ćwiczenie 19. Znale zć scieżkę prosta z wierzchołka a do korzenia dla drzew, których wektor poprzedników jest równy p. Zakładamy, że V = {1,..., n}. (1) p = [, 1, 1, 1, 2, 2, 4, 4, 7, 9], a = 5. (2) p = [, 1, 1, 1, 2, 2, 4, 4, 7, 9], a = 10. (3) p = [, 1, 2, 3, 3, 3, 1, 7, 7, 9, 9, 1], a = 5. (4) p = [, 1, 2, 3, 3, 3, 1, 7, 7, 9, 9, 1], a = 10. (5) p = [2, 3, 13, 6, 6, 12, 10, 10, 10, 11, 12, 13, 14, ], a = 5. (6) p = [2, 3, 13, 6, 6, 12, 10, 10, 10, 11, 12, 13, 14, ], a = 10. Pojęcie wektora poprzedników można rozszerzyć na dowolne proste grafy skierowane. Załóżmy, że G = (V, E) jest prostym grafem skierowanym oraz r ustalonym wierzchołkiem. Funkcję p = [p (a)] a V taka, że p (r) = oraz dla a V \ {r} zachodzi (p (a), a) E lub p (a) = nazywamy wektorem poprzedników w G. Oznaczmy V p = {a; p (a) } {r} oraz E p = {(p (a), a) ; p (a) }. Para (V p, E p ) może, ale nie musi być podgrafem grafu G. Jeśli G p = (V p, E p ) jest podgrafem, to nazywamy go podgrafem poprzedników. Rozważmy graf skierowany G Dla r = 1 funkcje p 1 = [, 1, 2, 1, 4], p 2 = [, 1, 4, 2, ], p 3 = [, 4, 2, 2, ] sa wektorami poprzedników. Odpowiadaja im grafy poprzedników, z których dwa pierwsze sa drzewami skierowanymi o korzeniu 1, zaś trzeci jest grafem skierowanym, ale nie jest drzewem skierowanym.
17 TEORIA GRAFÓW I SIECI - ROZDZIAŁV 17 Podobnie dla r = 2 funkcja p = [,, 2, 2, ] jest wektorem poprzedników, dla którego graf poprzedników jest drzewem skierowanym o korzeniu 2. Przyjmuj ac natomiast r = 1 oraz p = [,, 2, 2, ] dostajemy wektor poprzedników taki, że V p = {1, 3, 4}, E p = {(2, 3), (2, 4)}. Para (V p, E p ) nie jest więc grafem, bo 2 / V p.
TEORIA GRAFÓW I SIECI - ROZDZIAŁIV. Drzewa. Drzewa
TEORIA GRAFÓW I SIECI - ROZDZIAŁIV Drzewa Drzewem lub drzewem wolnym nazywamy dowolny graf spójny i acykliczny. Drzewa Ćwiczenie 1. Narysować wszystkie, z dokłado sci a do izomorfizmu, drzewa o 1, 2, 3,
Ś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,
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
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)
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
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
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
Porządek symetryczny: right(x)
Porządek symetryczny: x lef t(x) right(x) Własność drzewa BST: W drzewach BST mamy porządek symetryczny. Dla każdego węzła x spełniony jest warunek: jeżeli węzeł y leży w lewym poddrzewie x, to key(y)
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
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)
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
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
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
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
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,
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
(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)
Indukcja. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak
Indukcja Materiały pomocnicze do wykładu wykładowca: dr Magdalena Kacprzak Charakteryzacja zbioru liczb naturalnych Arytmetyka liczb naturalnych Jedną z najważniejszych teorii matematycznych jest arytmetyka
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)),
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
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
7a. Teoria drzew - kodowanie i dekodowanie
7a. Teoria drzew - kodowanie i dekodowanie Grzegorz Kosiorowski Uniwersytet Ekonomiczny w Krakowie zima 2016/2017 rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i
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
domykanie relacji, relacja równoważności, rozkłady zbiorów
1 of 8 2012-03-28 17:45 Logika i teoria mnogości/wykład 5: Para uporządkowana iloczyn kartezjański relacje domykanie relacji relacja równoważności rozkłady zbiorów From Studia Informatyczne < Logika i
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
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,
Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Algorytmy i struktury danych Laboratorium 7. 2 Drzewa poszukiwań binarnych
Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych Algorytmy i struktury danych Laboratorium Drzewa poszukiwań binarnych 1 Cel ćwiczenia Ćwiczenie ma na celu zapoznanie studentów
Podstawy Informatyki. Sprawność algorytmów
Podstawy Informatyki Sprawność algorytmów Sprawność algorytmów Kryteria oceny oszczędności Miara złożoności rozmiaru pamięci (złożoność pamięciowa): Liczba zmiennych + liczba i rozmiar struktur danych
Poprawność semantyczna
Poprawność składniowa Poprawność semantyczna Poprawność algorytmu Wypisywanie zdań z języka poprawnych składniowo Poprawne wartościowanie zdań języka, np. w języku programowania skutki wystąpienia wyróżnionych
Za pierwszy niebanalny algorytm uważa się algorytm Euklidesa wyszukiwanie NWD dwóch liczb (400 a 300 rok przed narodzeniem Chrystusa).
Algorytmy definicja, cechy, złożoność. Algorytmy napotykamy wszędzie, gdziekolwiek się zwrócimy. Rządzą one wieloma codziennymi czynnościami, jak np. wymiana przedziurawionej dętki, montowanie szafy z
1 Działania na zbiorach
M. Beśka, Wstęp do teorii miary, rozdz. 1 1 1 Działania na zbiorach W rozdziale tym przypomnimy podstawowe działania na zbiorach koncentrując się na własnościach tych działań, które będą przydatne w dalszej
Układy równań i nierówności liniowych
Układy równań i nierówności liniowych Wiesław Krakowiak 1 grudnia 2010 1 Układy równań liniowych DEFINICJA 11 Układem równań m liniowych o n niewiadomych X 1,, X n, nazywamy układ postaci: a 11 X 1 + +
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
Przypomnij sobie krótki wstęp do teorii grafów przedstawiony na początku semestru.
Spis treści 1 Drzewa 1.1 Drzewa binarne 1.1.1 Zadanie 1.1.2 Drzewo BST (Binary Search Tree) 1.1.2.1 Zadanie 1 1.1.2.2 Zadanie 2 1.1.2.3 Zadanie 3 1.1.2.4 Usuwanie węzła w drzewie BST 1.1.2.5 Zadanie 4
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
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
Drzewa poszukiwań binarnych
1 Cel ćwiczenia Algorytmy i struktury danych Instytut Sterowania i Systemów Informatycznych Wydział Elektrotechniki, Informatyki i Telekomunikacji Uniwersytet ielonogórski Drzewa poszukiwań binarnych Ćwiczenie
Wykład 2. Poprawność algorytmów
Wykład 2 Poprawność algorytmów 1 Przegląd Ø Poprawność algorytmów Ø Podstawy matematyczne: Przyrost funkcji i notacje asymptotyczne Sumowanie szeregów Indukcja matematyczna 2 Poprawność algorytmów Ø Algorytm
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
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
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
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
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
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
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
Metody teorii gier. ALP520 - Wykład z Algorytmów Probabilistycznych p.2
Metody teorii gier ALP520 - Wykład z Algorytmów Probabilistycznych p.2 Metody teorii gier Cel: Wyprowadzenie oszacowania dolnego na oczekiwany czas działania dowolnego algorytmu losowego dla danego problemu.
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ń
System BCD z κ. Adam Slaski na podstawie wykładów, notatek i uwag Pawła Urzyczyna. Semestr letni 2009/10
System BCD z κ Adam Slaski na podstawie wykładów, notatek i uwag Pawła Urzyczyna Semestr letni 2009/10 Rozważamy system BCD ze stałą typową κ i aksjomatami ω κ κ i κ ω κ. W pierwszej części tej notatki
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ń
prowadzący dr ADRIAN HORZYK /~horzyk e-mail: horzyk@agh tel.: 012-617 Konsultacje paw. D-13/325
PODSTAWY INFORMATYKI WYKŁAD 8. prowadzący dr ADRIAN HORZYK http://home home.agh.edu.pl/~ /~horzyk e-mail: horzyk@agh agh.edu.pl tel.: 012-617 617-4319 Konsultacje paw. D-13/325 DRZEWA Drzewa to rodzaj
Wysokość drzewa Głębokość węzła
Drzewa Drzewa Drzewo (ang. tree) zbiór węzłów powiązanych wskaźnikami, spójny i bez cykli. Drzewo posiada wyróżniony węzeł początkowy nazywany korzeniem (ang. root). Drzewo ukorzenione jest strukturą hierarchiczną.
Wykład 4. Określimy teraz pewną ważną klasę pierścieni.
Wykład 4 Określimy teraz pewną ważną klasę pierścieni. Twierdzenie 1 Niech m, n Z. Jeśli n > 0 to istnieje dokładnie jedna para licz q, r, że: m = qn + r, 0 r < n. Liczbę r nazywamy resztą z dzielenia
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
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ć:
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
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
Instrukcje dla zawodników
Instrukcje dla zawodników Nie otwieraj arkusza z zadaniami dopóki nie zostaniesz o to poproszony. Instrukcje poniżej zostaną ci odczytane i wyjaśnione. 1. Arkusz składa się z 3 zadań. 2. Każde zadanie
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ą
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
Algorytmy w teorii liczb
Łukasz Kowalik, ASD 2004: Algorytmy w teorii liczb 1 Algorytmy w teorii liczb Teoria liczb jest działem matemtyki dotyczącym własności liczb naturalnych. Rozważa się zagadnienia związane z liczbami pierwszymi,
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
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
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).
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
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
Drzewo. Drzewo uporządkowane ma ponumerowanych (oznaczonych) następników. Drzewo uporządkowane składa się z węzłów, które zawierają następujące pola:
Drzewa Drzewa Drzewo (ang. tree) zbiór węzłów powiązanych wskaźnikami, spójny i bez cykli. Drzewo posiada wyróżniony węzeł początkowy nazywany korzeniem (ang. root). Drzewo ukorzenione jest strukturą hierarchiczną.
Wstęp do programowania. Drzewa podstawowe techniki. Piotr Chrząstowski-Wachtel
Wstęp do programowania Drzewa podstawowe techniki Piotr Chrząstowski-Wachtel Drzewa wyszukiwań Drzewa często służą do przechowywania informacji. Jeśli uda sie nam stworzyć drzewo o niewielkiej wysokości
Wstęp do Informatyki zadania ze złożoności obliczeniowej z rozwiązaniami
Wstęp do Informatyki zadania ze złożoności obliczeniowej z rozwiązaniami Przykład 1. Napisz program, który dla podanej liczby n wypisze jej rozkład na czynniki pierwsze. Oblicz asymptotyczną złożoność
Wykład 1. Na początku zajmować się będziemy zbiorem liczb całkowitych
Arytmetyka liczb całkowitych Wykład 1 Na początku zajmować się będziemy zbiorem liczb całkowitych Z = {0, ±1, ±2,...}. Zakładamy, że czytelnik zna relację
Przestrzenie wektorowe
Rozdział 4 Przestrzenie wektorowe Rozważania dotyczące przestrzeni wektorowych rozpoczniemy od kilku prostych przykładów. Przykład 4.1. W przestrzeni R 3 = {(x, y, z) : x, y, z R} wprowadzamy dwa działania:
Rozdział 4. Ciągi nieskończone. 4.1 Ciągi nieskończone
Rozdział 4 Ciągi nieskończone W rozdziale tym wprowadzimy pojęcie granicy ciągu. Dalej rozszerzymy to pojęcie na przypadek dowolnych funkcji. Jak zauważyliśmy we wstępie jest to najważniejsze pojęcie analizy
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
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
Drzewa BST i AVL. Drzewa poszukiwań binarnych (BST)
Drzewa ST i VL Drzewa poszukiwań binarnych (ST) Drzewo ST to dynamiczna struktura danych (w formie drzewa binarnego), która ma tą właściwość, że dla każdego elementu wszystkie elementy w jego prawym poddrzewie
Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy)
Rok akademicki 2012/2013, Wykład nr 2 2/25 Plan wykładu nr 2 Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia niestacjonarne I stopnia Rok akademicki 2012/2013
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
3. Macierze i Układy Równań Liniowych
3. Macierze i Układy Równań Liniowych Rozważamy równanie macierzowe z końcówki ostatniego wykładu ( ) 3 1 X = 4 1 ( ) 2 5 Podstawiając X = ( ) x y i wymnażając, otrzymujemy układ 2 równań liniowych 3x
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,
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ą
Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.
Sortowanie Dane wejściowe: ciąg n-liczb (kluczy) (a 1, a 2, a 3,..., a n 1, a n ) Dane wyjściowe: permutacja ciągu wejściowego (a 1, a 2, a 3,..., a n 1, a n) taka, że a 1 a 2 a 3... a n 1 a n. Będziemy
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;
Algorytmy i Struktury Danych, 9. ćwiczenia
Algorytmy i Struktury Danych, 9. ćwiczenia 206-2-09 Plan zajęć usuwanie z B-drzew join i split na 2-3-4 drzewach drzepce adresowanie otwarte w haszowaniu z analizą 2 B-drzewa definicja każdy węzeł ma następujące
Jeśli czas działania algorytmu zależy nie tylko od rozmiaru danych wejściowych i przyjmuje różne wartości dla różnych danych o tym samym rozmiarze,
Oznaczenia: Jeśli czas działania algorytmu zależy nie tylko od rozmiaru danych wejściowych i przyjmuje różne wartości dla różnych danych o tym samym rozmiarze, to interesuje nas złożoność obliczeniowa
Problemy Decyzyjne dla Systemów Nieskończonych
Problemy Decyzyjne dla Systemów Nieskończonych Ćwiczenia 1 17 lutego 2012 Na tych ćwiczeniach zajmiemy się pojęciem well quasi-ordering (WQO) bardzo przydatnym do analizy nieskończonych ciągów. Definicja
Metody Kompilacji Wykład 3
Metody Kompilacji Wykład 3 odbywa się poprzez dołączenie zasad(reguł) lub fragmentów kodu do produkcji w gramatyce. Włodzimierz Bielecki WI ZUT 2 Na przykład, dla produkcji expr -> expr 1 + term możemy
Podstawy programowania 2. Temat: Drzewa binarne. Przygotował: mgr inż. Tomasz Michno
Instrukcja laboratoryjna 5 Podstawy programowania 2 Temat: Drzewa binarne Przygotował: mgr inż. Tomasz Michno 1 Wstęp teoretyczny Drzewa są jedną z częściej wykorzystywanych struktur danych. Reprezentują
1 Układy równań liniowych
II Metoda Gaussa-Jordana Na wykładzie zajmujemy się układami równań liniowych, pojawi się też po raz pierwszy macierz Formalną (i porządną) teorią macierzy zajmiemy się na kolejnych wykładach Na razie
Rozdział 6. Ciągłość. 6.1 Granica funkcji
Rozdział 6 Ciągłość 6.1 Granica funkcji Podamy najpierw dwie definicje granicy funkcji w punkcie i pokażemy ich równoważność. Definicja Cauchy ego granicy funkcji w punkcie. Niech f : X R, gdzie X R oraz
Kompresja bezstratna. Entropia. Kod Huffmana
Kompresja bezstratna. Entropia. Kod Huffmana Kodowanie i bezpieczeństwo informacji - Wykład 10 29 kwietnia 2013 Teoria informacji Jeśli P(A) jest prawdopodobieństwem wystapienia informacji A to niech i(a)
ZALICZENIE WYKŁADU: 30.I.2019
MATEMATYCZNE PODSTAWY KOGNITYWISTYKI ZALICZENIE WYKŁADU: 30.I.2019 KOGNITYWISTYKA UAM, 2018 2019 Imię i nazwisko:.......... POGROMCY PTAKÓW STYMFALIJSKICH 1. [2 punkty] Podaj definicję warunku łączności
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
F t+ := s>t. F s = F t.
M. Beśka, Całka Stochastyczna, wykład 1 1 1 Wiadomości wstępne 1.1 Przestrzeń probabilistyczna z filtracją Niech (Ω, F, P ) będzie ustaloną przestrzenią probabilistyczną i niech F = {F t } t 0 będzie rodziną
Matematyka dyskretna. Andrzej Łachwa, UJ, /10
Matematyka dyskretna Andrzej Łachwa, UJ, 2018 andrzej.lachwa@uj.edu.pl 10/10 Podziały i liczby Stirlinga Liczba Stirlinga dla cykli (często nazywana liczbą Stirlinga pierwszego rodzaju) to liczba permutacji
dodatkowe operacje dla kopca binarnego: typu min oraz typu max:
ASD - ćwiczenia IX Kopce binarne własność porządku kopca gdzie dla każdej trójki wierzchołków kopca (X, Y, Z) porządek etykiet elem jest następujący X.elem Y.elem oraz Z.elem Y.elem w przypadku kopca typu
Drzewa podstawowe poj
Drzewa podstawowe poj ecia drzewo graf reprezentujacy regularna strukture wskaźnikowa, gdzie każdy element zawiera dwa lub wiecej wskaźników (ponumerowanych) do takich samych elementów; wez ly (albo wierzcho
Wstęp do programowania
Wstęp do programowania Złożoność obliczeniowa, poprawność programów Paweł Daniluk Wydział Fizyki Jesień 2013 P. Daniluk(Wydział Fizyki) WP w. XII Jesień 2013 1 / 20 Złożoność obliczeniowa Problem Ile czasu
znalezienia elementu w zbiorze, gdy w nim jest; dołączenia nowego elementu w odpowiednie miejsce, aby zbiór pozostał nadal uporządkowany.
Przedstawiamy algorytmy porządkowania dowolnej liczby elementów, którymi mogą być liczby, jak również elementy o bardziej złożonej postaci (takie jak słowa i daty). Porządkowanie, nazywane również często
Zaawansowane algorytmy i struktury danych
Zaawansowane algorytmy i struktury danych u dr Barbary Marszał-Paszek Opracowanie pytań teoretycznych z egzaminów. Strona 1 z 12 Pytania teoretyczne z egzaminu pisemnego z 25 czerwca 2014 (studia dzienne)
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).
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