Algorytmy i struktury danych

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

Download "Algorytmy i struktury danych"

Transkrypt

1 Algorytmy i struktury danych Cz ± druga Prowadz cy: dr Andrzej Mróz, Wydziaª Matematyki i Informatyki, Uniwersytet Mikoªaja Kopernika 1 / 82

2 Rekurencja Procedura (funkcja) rekurencyjna wywoªuje sam siebie. Jest to odpowiednik indukcji w matematyce. 2 / 82

3 Rekurencja Procedura (funkcja) rekurencyjna wywoªuje sam siebie. Jest to odpowiednik indukcji w matematyce. Najprostszy schemat procedury rekurencyjnej: procedure nazwa(...);... begin nazwa(...); end; 2 / 82

4 Rekurencja Procedura (funkcja) rekurencyjna wywoªuje sam siebie. Jest to odpowiednik indukcji w matematyce. Najprostszy schemat procedury rekurencyjnej: procedure nazwa(...);... begin nazwa(...); end; Najprostszy schemat funkcji rekurencyjnej: function nazwa(...) : typ-danych;... begin nazwa := nazwa(...); end; 2 / 82

5 Rekurencja Procedura (funkcja) rekurencyjna wywoªuje sam siebie. Jest to odpowiednik indukcji w matematyce. Najprostszy schemat procedury rekurencyjnej: procedure nazwa(...);... begin nazwa(...); end; Najprostszy schemat funkcji rekurencyjnej: function nazwa(...) : typ-danych;... begin nazwa := nazwa(...); end; Uwaga. Nale»y zadba, aby procedura (funkcja) rekurencyjna nie tworzyªa niesko«czonej p tli. 2 / 82

6 Rekurencja Przykªad: przypomnijmy,»e silni liczby n deniujemy wzorem: n! = { 1, n = 0, n i=1 i, n 1. 3 / 82

7 Rekurencja Przykªad: przypomnijmy,»e silni liczby n deniujemy wzorem: n! = { 1, n = 0, n i=1 i, n 1. Silni mo»emy równowa»nie zdeniowa w sposób indukcyjny (rekurencyjny): n! = { 1, n = 0, n (n 1)!, n 1. 3 / 82

8 Rekurencja Kod funkcji realizuj cej obliczanie silni w sposób rekurencyjny mo»e wygl da nast puj co: function silnia(n : Integer) : Integer; begin if n = 0 then silnia := 1 else silnia := silnia(n 1) n; end; 4 / 82

9 Rekurencja Innym typowym przykªadem rekurencji w matematyce jest ci g Fibonacciego {f n } n=0 zdeniowany: 0, n = 0, f n = 1, n = 1, f n 1 + f n 2, n 2. 5 / 82

10 Rekurencja Innym typowym przykªadem rekurencji w matematyce jest ci g Fibonacciego {f n } n=0 zdeniowany: 0, n = 0, f n = 1, n = 1, f n 1 + f n 2, n 2. function b(n : Integer) : Integer; begin if n = 0 then b := 0 else if n = 1 then b := 1 else b := b(n 1) + b(n 2); end; 5 / 82

11 Rekurencja - wady Procedury rekurencyjne mimo,»e s eleganckie i ªatwe w zaprogramowaniu, czasami s maªo wydajne. 6 / 82

12 Rekurencja - wady Procedury rekurencyjne mimo,»e s eleganckie i ªatwe w zaprogramowaniu, czasami s maªo wydajne. Prze±led¹my, jakie obliczenia s wykonywane przez funkcj b dla n = 4: b(4) = b(3) + b(2) = (b(2) + b(1)) + (b(1) + b(0)) = ((b(1) + b(0)) + b(1)) + (b(1) + b(0)) = ((1 + 0) + 1) + (1 + 0) = 3 6 / 82

13 Rekurencja - wady Procedury rekurencyjne mimo,»e s eleganckie i ªatwe w zaprogramowaniu, czasami s maªo wydajne. Prze±led¹my, jakie obliczenia s wykonywane przez funkcj b dla n = 4: b(4) = b(3) + b(2) = (b(2) + b(1)) + (b(1) + b(0)) = ((b(1) + b(0)) + b(1)) + (b(1) + b(0)) = ((1 + 0) + 1) + (1 + 0) = 3 Zauwa»my,»e warto± b(2) jest wyliczana dwa razy. Wraz ze wzrostem n liczba nadmiarowych oblicze«wzrasta drastycznie. 6 / 82

14 Rekurencja - wady Procedury rekurencyjne mimo,»e s eleganckie i ªatwe w zaprogramowaniu, czasami s maªo wydajne. Prze±led¹my, jakie obliczenia s wykonywane przez funkcj b dla n = 4: b(4) = b(3) + b(2) = (b(2) + b(1)) + (b(1) + b(0)) = ((b(1) + b(0)) + b(1)) + (b(1) + b(0)) = ((1 + 0) + 1) + (1 + 0) = 3 Zauwa»my,»e warto± b(2) jest wyliczana dwa razy. Wraz ze wzrostem n liczba nadmiarowych oblicze«wzrasta drastycznie. wiczenie: napisz procedur licz c n-ty wyraz ci gu Fibonacciego bez wykorzystania rekurencji. Wskazówka: wystarczy jedna p tla przebiegaj ca od 2 do n i wykorzystuj ca dwie pomocnicze zmienne które w ka»dym kroku przechowuj (i 1) i (i 2) wyraz ci gu. 6 / 82

15 Sortowanie przez wstawianie rekurencyjnie Wej±cie: tablica (ci g) n liczb A[1..n], Wyj±cie: tablica A[1..n] skªadaj ca si z elementów tablicy wej±ciowej, ale uporz dkowana tak,»e A[1] A[2]... A[n]. 7 / 82

16 Sortowanie przez wstawianie rekurencyjnie Wej±cie: tablica (ci g) n liczb A[1..n], Wyj±cie: tablica A[1..n] skªadaj ca si z elementów tablicy wej±ciowej, ale uporz dkowana tak,»e A[1] A[2]... A[n]. Sortrek(A, n) begin if n > 1 then Sortrek(A, n-1); wstaw A[n] w odpowiednie miejsce A[1..n 1]; end; Sortrek(A, n); 7 / 82

17 Sortowanie przez wstawianie rekurencyjnie Wej±cie: tablica (ci g) n liczb A[1..n], Wyj±cie: tablica A[1..n] skªadaj ca si z elementów tablicy wej±ciowej, ale uporz dkowana tak,»e A[1] A[2]... A[n]. Sortrek(A, n) begin if n > 1 then Sortrek(A, n-1); wstaw A[n] w odpowiednie miejsce A[1..n 1]; end; Koszt T (n) Sortrek(A, n); 7 / 82

18 Sortowanie przez wstawianie rekurencyjnie Wej±cie: tablica (ci g) n liczb A[1..n], Wyj±cie: tablica A[1..n] skªadaj ca si z elementów tablicy wej±ciowej, ale uporz dkowana tak,»e A[1] A[2]... A[n]. Koszt Sortrek(A, n) T (n) begin if n > 1 then Sortrek(A, n-1); 1 + T (n 1) wstaw A[n] w odpowiednie miejsce A[1..n 1]; end; Sortrek(A, n); 7 / 82

19 Sortowanie przez wstawianie rekurencyjnie Wej±cie: tablica (ci g) n liczb A[1..n], Wyj±cie: tablica A[1..n] skªadaj ca si z elementów tablicy wej±ciowej, ale uporz dkowana tak,»e A[1] A[2]... A[n]. Koszt Sortrek(A, n) T (n) begin if n > 1 then Sortrek(A, n-1); 1 + T (n 1) wstaw A[n] w odpowiednie miejsce A[1..n 1]; O(n) end; Sortrek(A, n); 7 / 82

20 Sortowanie przez wstawianie rekurencyjnie Wej±cie: tablica (ci g) n liczb A[1..n], Wyj±cie: tablica A[1..n] skªadaj ca si z elementów tablicy wej±ciowej, ale uporz dkowana tak,»e A[1] A[2]... A[n]. Koszt Sortrek(A, n) T (n) begin if n > 1 then Sortrek(A, n-1); 1 + T (n 1) wstaw A[n] w odpowiednie miejsce A[1..n 1]; O(n) end; Sortrek(A, n); Funkcja kosztu speªnia równanie: { O(1), n = 1, T (n) = 1 + T (n 1) + O(n), n > 1. 7 / 82

21 Sortowanie przez wstawianie rekurencyjnie Uproszczenie: T (n) = { 1, n = 1, T (n 1) + n, n > 1. 8 / 82

22 Sortowanie przez wstawianie rekurencyjnie Uproszczenie: T (n) = { 1, n = 1, T (n 1) + n, n > 1. Wówczas T (n) = 8 / 82

23 Sortowanie przez wstawianie rekurencyjnie Uproszczenie: T (n) = { 1, n = 1, T (n 1) + n, n > 1. Wówczas T (n) = T (n 1)+n = 8 / 82

24 Sortowanie przez wstawianie rekurencyjnie Uproszczenie: T (n) = { 1, n = 1, T (n 1) + n, n > 1. Wówczas T (n) = T (n 1)+n = T (n 2)+(n 1)+n = 8 / 82

25 Sortowanie przez wstawianie rekurencyjnie Uproszczenie: T (n) = { 1, n = 1, T (n 1) + n, n > 1. Wówczas T (n) = T (n 1)+n = T (n 2)+(n 1)+n = T (n 3)+(n 2)+(n 1)+n 8 / 82

26 Sortowanie przez wstawianie rekurencyjnie Uproszczenie: T (n) = { 1, n = 1, T (n 1) + n, n > 1. Wówczas T (n) = T (n 1)+n = T (n 2)+(n 1)+n = T (n 3)+(n 2)+(n 1)+n =... = (n 2) + (n 1) + n = 8 / 82

27 Sortowanie przez wstawianie rekurencyjnie Uproszczenie: T (n) = { 1, n = 1, T (n 1) + n, n > 1. Wówczas T (n) = T (n 1)+n = T (n 2)+(n 1)+n = T (n 3)+(n 2)+(n 1)+n =... = (n 2) + (n 1) + n = 1 + n 2 n 8 / 82

28 Sortowanie przez wstawianie rekurencyjnie Uproszczenie: T (n) = { 1, n = 1, T (n 1) + n, n > 1. Wówczas T (n) = T (n 1)+n = T (n 2)+(n 1)+n = T (n 3)+(n 2)+(n 1)+n =... = (n 2) + (n 1) + n = 1 + n 2 n = O(n2 ). 8 / 82

29 Dziel i zwyci»aj Projektowanie algorytmu metod dziel i zwyci»aj: 9 / 82

30 Dziel i zwyci»aj Projektowanie algorytmu metod dziel i zwyci»aj: Dziel: dzielimy problem na podproblemy. 9 / 82

31 Dziel i zwyci»aj Projektowanie algorytmu metod dziel i zwyci»aj: Dziel: dzielimy problem na podproblemy. Zwyci»aj: rozwi zujemy podproblemy rekurencyjnie lub, gdy s maªe i nie wymagaj u»ycia rekurencji stosujemy bezpo±rednie metody (dno rekursji). 9 / 82

32 Dziel i zwyci»aj Projektowanie algorytmu metod dziel i zwyci»aj: Dziel: dzielimy problem na podproblemy. Zwyci»aj: rozwi zujemy podproblemy rekurencyjnie lub, gdy s maªe i nie wymagaj u»ycia rekurencji stosujemy bezpo±rednie metody (dno rekursji). Poª cz: ª czymy rozwi zane podproblemy, aby otrzyma rozwi zanie caªego problemu. 9 / 82

33 Mergesort Mergesort = sortowanie przez scalanie tablicy A[1..n]. 10 / 82

34 Mergesort Mergesort = sortowanie przez scalanie tablicy A[1..n]. Dziel: dzielimy tablic na dwie podtablice A[1.. n ] 2 i A[ n + 1..n], np. 2 [5, 2, 4, 6, 1, 3, 2, 6] [5, 2, 4, 6], [1, 3, 2, 6]. 10 / 82

35 Mergesort Mergesort = sortowanie przez scalanie tablicy A[1..n]. Dziel: dzielimy tablic na dwie podtablice A[1.. n ] 2 i A[ n + 1..n], np. 2 [5, 2, 4, 6, 1, 3, 2, 6] [5, 2, 4, 6], [1, 3, 2, 6]. Zwyci»aj: sortujemy otrzymane podtablice u»ywaj c rekurencyjnie sortowania przez scalanie: [2, 4, 5, 6], [1, 2, 3, 6]. 10 / 82

36 Mergesort Mergesort = sortowanie przez scalanie tablicy A[1..n]. Dziel: dzielimy tablic na dwie podtablice A[1.. n ] 2 i A[ n + 1..n], np. 2 [5, 2, 4, 6, 1, 3, 2, 6] [5, 2, 4, 6], [1, 3, 2, 6]. Zwyci»aj: sortujemy otrzymane podtablice u»ywaj c rekurencyjnie sortowania przez scalanie: [2, 4, 5, 6], [1, 2, 3, 6]. Poª cz: ª czymy posortowane podtablice w jedn posortowan tablic (scalenie, merge): [1, 2, 2, 3, 4, 5, 6, 6]. 10 / 82

37 Mergesort Peªen przebieg rekurencji: [5, 2, 4, 6, 1, 3, 2, 6] 11 / 82

38 Mergesort Peªen przebieg rekurencji: [5, 2, 4, 6, 1, 3, 2, 6] [5, 2, 4, 6], [1, 3, 2, 6] 11 / 82

39 Mergesort Peªen przebieg rekurencji: [5, 2, 4, 6, 1, 3, 2, 6] [5, 2, 4, 6], [1, 3, 2, 6] [5, 2], [4, 6], [1, 3], [2, 6] 11 / 82

40 Mergesort Peªen przebieg rekurencji: [5, 2, 4, 6, 1, 3, 2, 6] [5, 2, 4, 6], [1, 3, 2, 6] [5, 2], [4, 6], [1, 3], [2, 6] [5], [2], [4], [6], [1], [3], [2], [6] dno 11 / 82

41 Mergesort Peªen przebieg rekurencji: [5, 2, 4, 6, 1, 3, 2, 6] [5, 2, 4, 6], [1, 3, 2, 6] [5, 2], [4, 6], [1, 3], [2, 6] [5], [2], [4], [6], [1], [3], [2], [6] dno [2, 5], [4, 6], [1, 3], [2, 6] scal 11 / 82

42 Mergesort Peªen przebieg rekurencji: [5, 2, 4, 6, 1, 3, 2, 6] [5, 2, 4, 6], [1, 3, 2, 6] [5, 2], [4, 6], [1, 3], [2, 6] [5], [2], [4], [6], [1], [3], [2], [6] dno [2, 5], [4, 6], [1, 3], [2, 6] scal [2, 4, 5, 6] [1, 2, 3, 6] scal 11 / 82

43 Mergesort Peªen przebieg rekurencji: [5, 2, 4, 6, 1, 3, 2, 6] [5, 2, 4, 6], [1, 3, 2, 6] [5, 2], [4, 6], [1, 3], [2, 6] [5], [2], [4], [6], [1], [3], [2], [6] dno [2, 5], [4, 6], [1, 3], [2, 6] scal [2, 4, 5, 6] [1, 2, 3, 6] scal [1, 2, 2, 3, 4, 5, 6, 6] scal 11 / 82

44 Mergesort Wej±cie: tablica (ci g) n liczb A[1..n], Wyj±cie: tablica A[1..n] skªadaj ca si z elementów tablicy wej±ciowej, ale uporz dkowana tak,»e A[1] A[2]... A[n]. 12 / 82

45 Mergesort Wej±cie: tablica (ci g) n liczb A[1..n], Wyj±cie: tablica A[1..n] skªadaj ca si z elementów tablicy wej±ciowej, ale uporz dkowana tak,»e A[1] A[2]... A[n]. Mergesort(A, p, r) begin if p < r then begin q := (p + r)/2 ; Mergesort(A, p, q); Mergesort(A, q+1, r); Merge(A, p, q, r); end end; MergeSort(A, 1, n); Merge(A,p,q,r) scala podtablice A[p..q] i A[q + 1..r] w jedn A[p..r]. Implementacja wiczenie. 12 / 82

46 Mergesort Wej±cie: tablica (ci g) n liczb A[1..n], Wyj±cie: tablica A[1..n] skªadaj ca si z elementów tablicy wej±ciowej, ale uporz dkowana tak,»e A[1] A[2]... A[n]. Mergesort(A, p, r) begin if p < r then begin q := (p + r)/2 ; Mergesort(A, p, q); Mergesort(A, q+1, r); Merge(A, p, q, r); end end; Koszt dla p=1, r=n T (n) MergeSort(A, 1, n); Merge(A,p,q,r) scala podtablice A[p..q] i A[q + 1..r] w jedn A[p..r]. Implementacja wiczenie. 12 / 82

47 Mergesort Wej±cie: tablica (ci g) n liczb A[1..n], Wyj±cie: tablica A[1..n] skªadaj ca si z elementów tablicy wej±ciowej, ale uporz dkowana tak,»e A[1] A[2]... A[n]. Mergesort(A, p, r) begin if p < r then begin q := (p + r)/2 ; Mergesort(A, p, q); Mergesort(A, q+1, r); Merge(A, p, q, r); end end; Koszt dla p=1, r=n T (n) T (n/2) MergeSort(A, 1, n); Merge(A,p,q,r) scala podtablice A[p..q] i A[q + 1..r] w jedn A[p..r]. Implementacja wiczenie. 12 / 82

48 Mergesort Wej±cie: tablica (ci g) n liczb A[1..n], Wyj±cie: tablica A[1..n] skªadaj ca si z elementów tablicy wej±ciowej, ale uporz dkowana tak,»e A[1] A[2]... A[n]. Mergesort(A, p, r) begin if p < r then begin q := (p + r)/2 ; Mergesort(A, p, q); Mergesort(A, q+1, r); Merge(A, p, q, r); end end; Koszt dla p=1, r=n T (n) T (n/2) T (n/2) MergeSort(A, 1, n); Merge(A,p,q,r) scala podtablice A[p..q] i A[q + 1..r] w jedn A[p..r]. Implementacja wiczenie. 12 / 82

49 Mergesort Wej±cie: tablica (ci g) n liczb A[1..n], Wyj±cie: tablica A[1..n] skªadaj ca si z elementów tablicy wej±ciowej, ale uporz dkowana tak,»e A[1] A[2]... A[n]. Mergesort(A, p, r) begin if p < r then begin q := (p + r)/2 ; Mergesort(A, p, q); Mergesort(A, q+1, r); Merge(A, p, q, r); end end; Koszt dla p=1, r=n T (n) T (n/2) T (n/2) O(n) MergeSort(A, 1, n); Merge(A,p,q,r) scala podtablice A[p..q] i A[q + 1..r] w jedn A[p..r]. Implementacja wiczenie. 12 / 82

50 Mergesort Funkcja kosztu speªnia równanie: { O(1), n = 1, T (n) = 2T (n/2) + O(n), n > / 82

51 Mergesort Funkcja kosztu speªnia równanie: { O(1), n = 1, T (n) = 2T (n/2) + O(n), n > 1. Uproszczenie: T (n) = { 2, n = 2, 2T (n/2) + n, n = 2 k, k > / 82

52 Mergesort Funkcja kosztu speªnia równanie: { O(1), n = 1, T (n) = 2T (n/2) + O(n), n > 1. Uproszczenie: T (n) = { 2, n = 2, 2T (n/2) + n, n = 2 k, k > 1. Lemat. Rozwi zaniem powy»szego równania rekurencyjnego jest funkcja T (n) = n logn. 13 / 82

53 Mergesort Funkcja kosztu speªnia równanie: { O(1), n = 1, T (n) = 2T (n/2) + O(n), n > 1. Uproszczenie: T (n) = { 2, n = 2, 2T (n/2) + n, n = 2 k, k > 1. Lemat. Rozwi zaniem powy»szego równania rekurencyjnego jest funkcja T (n) = n logn. Dowód. Indukcja wzgl dem k / 82

54 Mergesort Funkcja kosztu speªnia równanie: { O(1), n = 1, T (n) = 2T (n/2) + O(n), n > 1. Uproszczenie: T (n) = { 2, n = 2, 2T (n/2) + n, n = 2 k, k > 1. Lemat. Rozwi zaniem powy»szego równania rekurencyjnego jest funkcja T (n) = n logn. Dowód. Indukcja wzgl dem k 1. Wniosek. Zªo»ono± algorytmu Mergesort wynosi Θ(n logn). 13 / 82

55 Teoria grafów Def. Graf niezorientowany (nieskierowany) = para G = (V, E) zbiorów sko«czonych: V nazywamy zbiorem wierzchoªków (w zªów) G, E { {u, v} : u, v V, u v} nazywamy zbiorem kraw dzi G. 14 / 82

56 Teoria grafów Def. Graf niezorientowany (nieskierowany) = para G = (V, E) zbiorów sko«czonych: V nazywamy zbiorem wierzchoªków (w zªów) G, E { {u, v} : u, v V, u v} nazywamy zbiorem kraw dzi G. Def. Graf zorientowany (skierowany) = para G = (V, E) zbiorów sko«czonych: V nazywamy zbiorem wierzchoªków (w zªów) G, E { (u, v) : u, v V } = V V nazywamy zbiorem kraw dzi (strzaªek) G. 14 / 82

57 Teoria grafów Def. Graf niezorientowany (nieskierowany) = para G = (V, E) zbiorów sko«czonych: V nazywamy zbiorem wierzchoªków (w zªów) G, E { {u, v} : u, v V, u v} nazywamy zbiorem kraw dzi G. Def. Graf zorientowany (skierowany) = para G = (V, E) zbiorów sko«czonych: V nazywamy zbiorem wierzchoªków (w zªów) G, E { (u, v) : u, v V } = V V nazywamy zbiorem kraw dzi (strzaªek) G. W denicji grafu zorientowanego dopuszczamy strzaªki postaci (v, v). Nazywamy je p tlami (zaczepionymi w wierzchoªku v). 14 / 82

58 Teoria grafów Ustalmy graf niezorientowany G = (V, E) (dla grafu zorientowanego denicje analogiczne). 15 / 82

59 Teoria grafów Ustalmy graf niezorientowany G = (V, E) (dla grafu zorientowanego denicje analogiczne). Def. wierzchoªki u, v V s s siednie, gdy {u, v} E, 15 / 82

60 Teoria grafów Ustalmy graf niezorientowany G = (V, E) (dla grafu zorientowanego denicje analogiczne). Def. wierzchoªki u, v V s s siednie, gdy {u, v} E, kraw dzie e 1, e 2 E s s siednie, gdy e 1 e 2 (maj wspólny wierzchoªek), 15 / 82

61 Teoria grafów Ustalmy graf niezorientowany G = (V, E) (dla grafu zorientowanego denicje analogiczne). Def. wierzchoªki u, v V s s siednie, gdy {u, v} E, kraw dzie e 1, e 2 E s s siednie, gdy e 1 e 2 (maj wspólny wierzchoªek), wierzchoªek v V jest incydentny z kraw dzi e E, gdy v e, 15 / 82

62 Teoria grafów Ustalmy graf niezorientowany G = (V, E) (dla grafu zorientowanego denicje analogiczne). Def. wierzchoªki u, v V s s siednie, gdy {u, v} E, kraw dzie e 1, e 2 E s s siednie, gdy e 1 e 2 (maj wspólny wierzchoªek), wierzchoªek v V jest incydentny z kraw dzi e E, gdy v e, gdy G jest zorientowany, to dla strzaªki e = (u, v) E (oznaczanej czasem u v), u nazywamy pocz tkiem, a v ko«cem e. 15 / 82

63 Teoria grafów Def. Stopniem wierzchoªka v V nazywamy liczb deg G (v) := #{e E : v E} 16 / 82

64 Teoria grafów Def. Stopniem wierzchoªka v V nazywamy liczb deg G (v) := #{e E : v E} Gdy G jest grafem zorientowanym to rozró»nia si stopie«wyj±ciowy wierzchoªka v V : out.deg G (v) = deg + G (v) := #{w V : v w E} oraz stopie«wej±ciowy wierzchoªka v V : in.deg G (v) = deg G (v) := #{u V : u v E}. 16 / 82

65 Teoria grafów Def. Droga w grae niezorientowanym G = (V, E) ci g wierzchoªków i kraw dzi P = (v 0, e 1, v 1, e 2, v 2,..., e k, v k ), v i V, e j E, k 0, taki,»e e j = {v j 1, v j }. 17 / 82

66 Teoria grafów Def. Droga w grae niezorientowanym G = (V, E) ci g wierzchoªków i kraw dzi P = (v 0, e 1, v 1, e 2, v 2,..., e k, v k ), v i V, e j E, k 0, taki,»e e j = {v j 1, v j }. v 0, v k - ko«ce drogi P, 17 / 82

67 Teoria grafów Def. Droga w grae niezorientowanym G = (V, E) ci g wierzchoªków i kraw dzi P = (v 0, e 1, v 1, e 2, v 2,..., e k, v k ), v i V, e j E, k 0, taki,»e e j = {v j 1, v j }. v 0, v k - ko«ce drogi P, dopuszczamy drogi trywialne postaci P = (v 0 ), v 0 V, 17 / 82

68 Teoria grafów Def. Droga w grae niezorientowanym G = (V, E) ci g wierzchoªków i kraw dzi P = (v 0, e 1, v 1, e 2, v 2,..., e k, v k ), v i V, e j E, k 0, taki,»e e j = {v j 1, v j }. v 0, v k - ko«ce drogi P, dopuszczamy drogi trywialne postaci P = (v 0 ), v 0 V, czasem zakªada si,»e e j e l, dla j l, 17 / 82

69 Teoria grafów Def. Droga w grae niezorientowanym G = (V, E) ci g wierzchoªków i kraw dzi P = (v 0, e 1, v 1, e 2, v 2,..., e k, v k ), v i V, e j E, k 0, taki,»e e j = {v j 1, v j }. v 0, v k - ko«ce drogi P, dopuszczamy drogi trywialne postaci P = (v 0 ), v 0 V, czasem zakªada si,»e e j e l, dla j l, k = dªugo± drogi. 17 / 82

70 Teoria grafów Def. Droga w grae niezorientowanym G = (V, E) ci g wierzchoªków i kraw dzi P = (v 0, e 1, v 1, e 2, v 2,..., e k, v k ), v i V, e j E, k 0, taki,»e e j = {v j 1, v j }. v 0, v k - ko«ce drogi P, dopuszczamy drogi trywialne postaci P = (v 0 ), v 0 V, czasem zakªada si,»e e j e l, dla j l, k = dªugo± drogi. Def. Droga w grae zorientowanym G = (V, E) ci g wierzchoªków i kraw dzi P = (v 0, e 1, v 1, e 2, v 2,..., e k, v k ), v i V, e j E, k 0, taki,»e e j = (v j 1, v j ) (piszemy czasem P = (e 1,..., e k )). 17 / 82

71 Teoria grafów Def. Droga w grae niezorientowanym G = (V, E) ci g wierzchoªków i kraw dzi P = (v 0, e 1, v 1, e 2, v 2,..., e k, v k ), v i V, e j E, k 0, taki,»e e j = {v j 1, v j }. v 0, v k - ko«ce drogi P, dopuszczamy drogi trywialne postaci P = (v 0 ), v 0 V, czasem zakªada si,»e e j e l, dla j l, k = dªugo± drogi. Def. Droga w grae zorientowanym G = (V, E) ci g wierzchoªków i kraw dzi P = (v 0, e 1, v 1, e 2, v 2,..., e k, v k ), v i V, e j E, k 0, taki,»e e j = (v j 1, v j ) (piszemy czasem P = (e 1,..., e k )). v 0 pocz tek, v k koniec drogi P, 17 / 82

72 Teoria grafów Def. Droga w grae niezorientowanym G = (V, E) ci g wierzchoªków i kraw dzi P = (v 0, e 1, v 1, e 2, v 2,..., e k, v k ), v i V, e j E, k 0, taki,»e e j = {v j 1, v j }. v 0, v k - ko«ce drogi P, dopuszczamy drogi trywialne postaci P = (v 0 ), v 0 V, czasem zakªada si,»e e j e l, dla j l, k = dªugo± drogi. Def. Droga w grae zorientowanym G = (V, E) ci g wierzchoªków i kraw dzi P = (v 0, e 1, v 1, e 2, v 2,..., e k, v k ), v i V, e j E, k 0, taki,»e e j = (v j 1, v j ) (piszemy czasem P = (e 1,..., e k )). v 0 pocz tek, v k koniec drogi P, dopuszczamy drogi trywialne postaci P = (v 0 ), v 0 V, 17 / 82

73 Teoria grafów Def. Droga w grae niezorientowanym G = (V, E) ci g wierzchoªków i kraw dzi P = (v 0, e 1, v 1, e 2, v 2,..., e k, v k ), v i V, e j E, k 0, taki,»e e j = {v j 1, v j }. v 0, v k - ko«ce drogi P, dopuszczamy drogi trywialne postaci P = (v 0 ), v 0 V, czasem zakªada si,»e e j e l, dla j l, k = dªugo± drogi. Def. Droga w grae zorientowanym G = (V, E) ci g wierzchoªków i kraw dzi P = (v 0, e 1, v 1, e 2, v 2,..., e k, v k ), v i V, e j E, k 0, taki,»e e j = (v j 1, v j ) (piszemy czasem P = (e 1,..., e k )). v 0 pocz tek, v k koniec drogi P, dopuszczamy drogi trywialne postaci P = (v 0 ), v 0 V, czasem zakªada si,»e e j e l, dla j l, 17 / 82

74 Teoria grafów Def. Droga w grae niezorientowanym G = (V, E) ci g wierzchoªków i kraw dzi P = (v 0, e 1, v 1, e 2, v 2,..., e k, v k ), v i V, e j E, k 0, taki,»e e j = {v j 1, v j }. v 0, v k - ko«ce drogi P, dopuszczamy drogi trywialne postaci P = (v 0 ), v 0 V, czasem zakªada si,»e e j e l, dla j l, k = dªugo± drogi. Def. Droga w grae zorientowanym G = (V, E) ci g wierzchoªków i kraw dzi P = (v 0, e 1, v 1, e 2, v 2,..., e k, v k ), v i V, e j E, k 0, taki,»e e j = (v j 1, v j ) (piszemy czasem P = (e 1,..., e k )). v 0 pocz tek, v k koniec drogi P, dopuszczamy drogi trywialne postaci P = (v 0 ), v 0 V, czasem zakªada si,»e e j e l, dla j l, k = dªugo± drogi. 17 / 82

75 Teoria grafów Def. cie»ka (inaczej droga niezorientowana) w grae zorientowanym G = (V, E) ci g W = (v 0, e 1, v 1, e 2, v 2,..., e k, v k ), v i V, e j E, k 0, taki,»e e j = (v j 1, v j ) lub e j = (v j, v j 1 ) (piszemy czasem W = (e 1,..., e k )). 18 / 82

76 Teoria grafów Def. cie»ka (inaczej droga niezorientowana) w grae zorientowanym G = (V, E) ci g W = (v 0, e 1, v 1, e 2, v 2,..., e k, v k ), v i V, e j E, k 0, taki,»e e j = (v j 1, v j ) lub e j = (v j, v j 1 ) (piszemy czasem W = (e 1,..., e k )). Def. Niech P = (v 0, e 1, v 1, e 2, v 2,..., e k, v k ) b dzie drog w grae (zorientowanym lub nie). Wówczas 18 / 82

77 Teoria grafów Def. cie»ka (inaczej droga niezorientowana) w grae zorientowanym G = (V, E) ci g W = (v 0, e 1, v 1, e 2, v 2,..., e k, v k ), v i V, e j E, k 0, taki,»e e j = (v j 1, v j ) lub e j = (v j, v j 1 ) (piszemy czasem W = (e 1,..., e k )). Def. Niech P = (v 0, e 1, v 1, e 2, v 2,..., e k, v k ) b dzie drog w grae (zorientowanym lub nie). Wówczas je»eli v i v j dla ka»dych i j, to P nazywamy drog prost, 18 / 82

78 Teoria grafów Def. cie»ka (inaczej droga niezorientowana) w grae zorientowanym G = (V, E) ci g W = (v 0, e 1, v 1, e 2, v 2,..., e k, v k ), v i V, e j E, k 0, taki,»e e j = (v j 1, v j ) lub e j = (v j, v j 1 ) (piszemy czasem W = (e 1,..., e k )). Def. Niech P = (v 0, e 1, v 1, e 2, v 2,..., e k, v k ) b dzie drog w grae (zorientowanym lub nie). Wówczas je»eli v i v j dla ka»dych i j, to P nazywamy drog prost, je»eli v 0 = v k to P nazywamy drog zamkni t lub cyklem, 18 / 82

79 Teoria grafów Def. cie»ka (inaczej droga niezorientowana) w grae zorientowanym G = (V, E) ci g W = (v 0, e 1, v 1, e 2, v 2,..., e k, v k ), v i V, e j E, k 0, taki,»e e j = (v j 1, v j ) lub e j = (v j, v j 1 ) (piszemy czasem W = (e 1,..., e k )). Def. Niech P = (v 0, e 1, v 1, e 2, v 2,..., e k, v k ) b dzie drog w grae (zorientowanym lub nie). Wówczas je»eli v i v j dla ka»dych i j, to P nazywamy drog prost, je»eli v 0 = v k to P nazywamy drog zamkni t lub cyklem, cykl prosty = cykl + droga prosta. 18 / 82

80 Teoria grafów Def. cie»ka (inaczej droga niezorientowana) w grae zorientowanym G = (V, E) ci g W = (v 0, e 1, v 1, e 2, v 2,..., e k, v k ), v i V, e j E, k 0, taki,»e e j = (v j 1, v j ) lub e j = (v j, v j 1 ) (piszemy czasem W = (e 1,..., e k )). Def. Niech P = (v 0, e 1, v 1, e 2, v 2,..., e k, v k ) b dzie drog w grae (zorientowanym lub nie). Wówczas je»eli v i v j dla ka»dych i j, to P nazywamy drog prost, je»eli v 0 = v k to P nazywamy drog zamkni t lub cyklem, cykl prosty = cykl + droga prosta. Podobnie deniujemy ±cie»k prost i ±cie»k zamkni t (=cykl niezorientowany) oraz niezorientowany cykl prosty. 18 / 82

81 Teoria grafów Def. Graf niezorientowany G = (V, E) jest spójny, o ile dla ka»dych u, v V istnieje droga P o ko«cach u i v. 19 / 82

82 Teoria grafów Def. Graf niezorientowany G = (V, E) jest spójny, o ile dla ka»dych u, v V istnieje droga P o ko«cach u i v. Def. Graf zorientowany G = (V, E) jest sªabo spójny, o ile dla ka»dych u, v V istnieje ±cie»ka P o ko«cach u i v. 19 / 82

83 Teoria grafów Def. Graf niezorientowany G = (V, E) jest spójny, o ile dla ka»dych u, v V istnieje droga P o ko«cach u i v. Def. Graf zorientowany G = (V, E) jest sªabo spójny, o ile dla ka»dych u, v V istnieje ±cie»ka P o ko«cach u i v. Def. Graf zorientowany G = (V, E) jest silnie spójny, o ile dla ka»dych u, v V istnieje droga P o pocz tku u i ko«cu v. 19 / 82

84 Teoria grafów Def. Graf H = (V, E ) nazywamy podgrafem grafu G = (V, E), o ile V V oraz E E. 20 / 82

85 Teoria grafów Def. Graf H = (V, E ) nazywamy podgrafem grafu G = (V, E), o ile V V oraz E E. Def. Podgraf H = (V, E ) grafu G = (V, E) nazywamy peªnym, o ile u,v V {u, v} E {u, v} E lub w wersji zorientowanej u,v V (u, v) E (u, v) E. 20 / 82

86 Teoria grafów Def. Graf H = (V, E ) nazywamy podgrafem grafu G = (V, E), o ile V V oraz E E. Def. Podgraf H = (V, E ) grafu G = (V, E) nazywamy peªnym, o ile u,v V {u, v} E {u, v} E lub w wersji zorientowanej u,v V (u, v) E (u, v) E. Def. Dwa grafy G = (V, E) oraz H = (V, E ) s izomorczne, gdy istnieje bijekcja f : V V taka,»e dla ka»dych u, v V, mamy {u, v} E {f (u), f (v)} E (analogicznie dla wersji zorientowanej). 20 / 82

87 Teoria grafów Ustalmy graf nieskierowany G = (V, E). Def. Mówimy,»e v V jest osi galny z u V, gdy w G istnieje droga P o ko«cach u, v. 21 / 82

88 Teoria grafów Ustalmy graf nieskierowany G = (V, E). Def. Mówimy,»e v V jest osi galny z u V, gdy w G istnieje droga P o ko«cach u, v. Obserwacja: Jest osi galny jest relacj zwrotn, symetryczn i przechodni, czyli relacj równowa»no±ci w V. 21 / 82

89 Teoria grafów Ustalmy graf nieskierowany G = (V, E). Def. Mówimy,»e v V jest osi galny z u V, gdy w G istnieje droga P o ko«cach u, v. Obserwacja: Jest osi galny jest relacj zwrotn, symetryczn i przechodni, czyli relacj równowa»no±ci w V. Def. Spójn skªadow (inaczej skªadow spójno±ci w grae G) nazywamy peªny podgraf grafu G o wierzchoªkach z dowolnej klasy abstrakcji relacji jest osi galny. 21 / 82

90 Teoria grafów Ustalmy graf nieskierowany G = (V, E). Def. Mówimy,»e v V jest osi galny z u V, gdy w G istnieje droga P o ko«cach u, v. Obserwacja: Jest osi galny jest relacj zwrotn, symetryczn i przechodni, czyli relacj równowa»no±ci w V. Def. Spójn skªadow (inaczej skªadow spójno±ci w grae G) nazywamy peªny podgraf grafu G o wierzchoªkach z dowolnej klasy abstrakcji relacji jest osi galny. Uwaga. Spójna skªadowa jest maksymalnym spójnym podgrafem peªnym grafu G. 21 / 82

91 Teoria grafów Ustalmy graf nieskierowany G = (V, E). Def. Mówimy,»e v V jest osi galny z u V, gdy w G istnieje droga P o ko«cach u, v. Obserwacja: Jest osi galny jest relacj zwrotn, symetryczn i przechodni, czyli relacj równowa»no±ci w V. Def. Spójn skªadow (inaczej skªadow spójno±ci w grae G) nazywamy peªny podgraf grafu G o wierzchoªkach z dowolnej klasy abstrakcji relacji jest osi galny. Uwaga. Spójna skªadowa jest maksymalnym spójnym podgrafem peªnym grafu G. Wniosek. Graf G jest spójny posiada jedn spójn skªadow. 21 / 82

92 Teoria grafów Def. Graf peªny K n (dla n N) = graf taki,»e V (K n ) = n oraz dla ka»dych u, v V (K n ), {u, v} E(K n ). 22 / 82

93 Teoria grafów Def. Graf peªny K n (dla n N) = graf taki,»e V (K n ) = n oraz dla ka»dych u, v V (K n ), {u, v} E(K n ). Def. Graf G = (V, E) nazywamy dwudzielnym, je»eli istnieje podziaª V na dwa rozª czne niepuste podzbiory V 1, V 2 (tj. V 1 V 2 = V ) taki,»e {u,v} E [(u V 1 v V 2 ) (v V 1 u V 2 )]. 22 / 82

94 Teoria grafów Def. Graf peªny K n (dla n N) = graf taki,»e V (K n ) = n oraz dla ka»dych u, v V (K n ), {u, v} E(K n ). Def. Graf G = (V, E) nazywamy dwudzielnym, je»eli istnieje podziaª V na dwa rozª czne niepuste podzbiory V 1, V 2 (tj. V 1 V 2 = V ) taki,»e {u,v} E [(u V 1 v V 2 ) (v V 1 u V 2 )]. Def. Graf G = (V, E) nazywamy peªnym dwudzielnym, je»eli istnieje podziaª V na dwa rozª czne niepuste podzbiory V 1, V 2 (tj. V 1 V 2 = V ) taki,»e u V1 v V2 {u, v} E. 22 / 82

95 Reprezentacja grafu Ustalmy graf nieskierowany G = (V, E), V = {1,..., n}, E = {e 1,..., e m }. Sposoby reprezentowania grafu w komputerze: 23 / 82

96 Reprezentacja grafu Ustalmy graf nieskierowany G = (V, E), V = {1,..., n}, E = {e 1,..., e m }. Sposoby reprezentowania grafu w komputerze: Macierz s siedztwa: A = A(G) M n n (Z), { 0, {i, j} / E, A i,j = 1, {i, j} E. 23 / 82

97 Reprezentacja grafu Ustalmy graf nieskierowany G = (V, E), V = {1,..., n}, E = {e 1,..., e m }. Sposoby reprezentowania grafu w komputerze: Macierz s siedztwa: A = A(G) M n n (Z), { 0, {i, j} / E, A i,j = 1, {i, j} E. Listy s siedztwa: tablica L[1..n], gdzie L[i] = wska¹nik do listy s siadów wierzchoªka i. 23 / 82

98 Reprezentacja grafu Ustalmy graf nieskierowany G = (V, E), V = {1,..., n}, E = {e 1,..., e m }. Sposoby reprezentowania grafu w komputerze: Macierz s siedztwa: A = A(G) M n n (Z), { 0, {i, j} / E, A i,j = 1, {i, j} E. Listy s siedztwa: tablica L[1..n], gdzie L[i] = wska¹nik do listy s siadów wierzchoªka i. Lista kraw dzi: [[v1 1, v 2 1], [v 1 2, v 2 2],..., [v 1 m, v 2 m ]], gdzie e i = {v1 i, v 2 i }. 23 / 82

99 Reprezentacja grafu Ustalmy graf nieskierowany G = (V, E), V = {1,..., n}, E = {e 1,..., e m }. Sposoby reprezentowania grafu w komputerze: Macierz s siedztwa: A = A(G) M n n (Z), { 0, {i, j} / E, A i,j = 1, {i, j} E. Listy s siedztwa: tablica L[1..n], gdzie L[i] = wska¹nik do listy s siadów wierzchoªka i. Lista kraw dzi: [[v1 1, v 2 1], [v 1 2, v 2 2],..., [v 1 m, v 2 m ]], gdzie e i = {v1 i, v 2 i }. Macierz incydencji: B = B(G) M n m (Z), { 0, i / ej, B i,j = 1, i e j. 23 / 82

100 Drzewa Def. Graf acykliczny = graf nie zawieraj cy cykli. 24 / 82

101 Drzewa Def. Graf acykliczny = graf nie zawieraj cy cykli. Def. Drzewo (drzewo wolne) = graf spójny i acykliczny. 24 / 82

102 Drzewa Def. Graf acykliczny = graf nie zawieraj cy cykli. Def. Drzewo (drzewo wolne) = graf spójny i acykliczny. Twierdzenie. G = (V, E) graf niezorientowany. Nast puj ce warunki s równowa»ne: 24 / 82

103 Drzewa Def. Graf acykliczny = graf nie zawieraj cy cykli. Def. Drzewo (drzewo wolne) = graf spójny i acykliczny. Twierdzenie. G = (V, E) graf niezorientowany. Nast puj ce warunki s równowa»ne: G jest drzewem, 24 / 82

104 Drzewa Def. Graf acykliczny = graf nie zawieraj cy cykli. Def. Drzewo (drzewo wolne) = graf spójny i acykliczny. Twierdzenie. G = (V, E) graf niezorientowany. Nast puj ce warunki s równowa»ne: G jest drzewem, dla ka»dych u, v V istnieje dokªadnie jedna droga P o ko«cach u, v, 24 / 82

105 Drzewa Def. Graf acykliczny = graf nie zawieraj cy cykli. Def. Drzewo (drzewo wolne) = graf spójny i acykliczny. Twierdzenie. G = (V, E) graf niezorientowany. Nast puj ce warunki s równowa»ne: G jest drzewem, dla ka»dych u, v V istnieje dokªadnie jedna droga P o ko«cach u, v, G jest spójny, a po usuni ciu dowolnej kraw dzi nie jest spójny, 24 / 82

106 Drzewa Def. Graf acykliczny = graf nie zawieraj cy cykli. Def. Drzewo (drzewo wolne) = graf spójny i acykliczny. Twierdzenie. G = (V, E) graf niezorientowany. Nast puj ce warunki s równowa»ne: G jest drzewem, dla ka»dych u, v V istnieje dokªadnie jedna droga P o ko«cach u, v, G jest spójny, a po usuni ciu dowolnej kraw dzi nie jest spójny, G jest spójny i E = V 1, 24 / 82

107 Drzewa Def. Graf acykliczny = graf nie zawieraj cy cykli. Def. Drzewo (drzewo wolne) = graf spójny i acykliczny. Twierdzenie. G = (V, E) graf niezorientowany. Nast puj ce warunki s równowa»ne: G jest drzewem, dla ka»dych u, v V istnieje dokªadnie jedna droga P o ko«cach u, v, G jest spójny, a po usuni ciu dowolnej kraw dzi nie jest spójny, G jest spójny i E = V 1, G jest acykliczny i E = V 1, 24 / 82

108 Drzewa Def. Graf acykliczny = graf nie zawieraj cy cykli. Def. Drzewo (drzewo wolne) = graf spójny i acykliczny. Twierdzenie. G = (V, E) graf niezorientowany. Nast puj ce warunki s równowa»ne: G jest drzewem, dla ka»dych u, v V istnieje dokªadnie jedna droga P o ko«cach u, v, G jest spójny, a po usuni ciu dowolnej kraw dzi nie jest spójny, G jest spójny i E = V 1, G jest acykliczny i E = V 1, G jest acykliczny, lecz po dodaniu do E jakiejkolwiek kraw dzi powstaªy graf posiada cykl. 24 / 82

109 Drzewa Def. Drzewo z korzeniem = para (T, r), gdzie T = (V, E) jest drzewem, a r V wyró»nionym wierzchoªkiem, zwanym korzeniem. 25 / 82

110 Drzewa Def. Drzewo z korzeniem = para (T, r), gdzie T = (V, E) jest drzewem, a r V wyró»nionym wierzchoªkiem, zwanym korzeniem. Podstawowe poj cia: przodek (poprzednik) wierzchoªka, 25 / 82

111 Drzewa Def. Drzewo z korzeniem = para (T, r), gdzie T = (V, E) jest drzewem, a r V wyró»nionym wierzchoªkiem, zwanym korzeniem. Podstawowe poj cia: przodek (poprzednik) wierzchoªka, potomek (nast pnik) wierzchoªka, 25 / 82

112 Drzewa Def. Drzewo z korzeniem = para (T, r), gdzie T = (V, E) jest drzewem, a r V wyró»nionym wierzchoªkiem, zwanym korzeniem. Podstawowe poj cia: przodek (poprzednik) wierzchoªka, potomek (nast pnik) wierzchoªka, syn (bezpo±redni nast pnik) wierzchoªka, 25 / 82

113 Drzewa Def. Drzewo z korzeniem = para (T, r), gdzie T = (V, E) jest drzewem, a r V wyró»nionym wierzchoªkiem, zwanym korzeniem. Podstawowe poj cia: przodek (poprzednik) wierzchoªka, potomek (nast pnik) wierzchoªka, syn (bezpo±redni nast pnik) wierzchoªka, ojciec (bezpo±redni poprzednik) wierzchoªka, 25 / 82

114 Drzewa Def. Drzewo z korzeniem = para (T, r), gdzie T = (V, E) jest drzewem, a r V wyró»nionym wierzchoªkiem, zwanym korzeniem. Podstawowe poj cia: przodek (poprzednik) wierzchoªka, potomek (nast pnik) wierzchoªka, syn (bezpo±redni nast pnik) wierzchoªka, ojciec (bezpo±redni poprzednik) wierzchoªka, brat wierzchoªka, 25 / 82

115 Drzewa Def. Drzewo z korzeniem = para (T, r), gdzie T = (V, E) jest drzewem, a r V wyró»nionym wierzchoªkiem, zwanym korzeniem. Podstawowe poj cia: przodek (poprzednik) wierzchoªka, potomek (nast pnik) wierzchoªka, syn (bezpo±redni nast pnik) wierzchoªka, ojciec (bezpo±redni poprzednik) wierzchoªka, brat wierzchoªka, li±cie drzewa, 25 / 82

116 Drzewa Def. Drzewo z korzeniem = para (T, r), gdzie T = (V, E) jest drzewem, a r V wyró»nionym wierzchoªkiem, zwanym korzeniem. Podstawowe poj cia: przodek (poprzednik) wierzchoªka, potomek (nast pnik) wierzchoªka, syn (bezpo±redni nast pnik) wierzchoªka, ojciec (bezpo±redni poprzednik) wierzchoªka, brat wierzchoªka, li±cie drzewa, stopie«wierzchoªka = liczba synów, 25 / 82

117 Drzewa Def. Drzewo z korzeniem = para (T, r), gdzie T = (V, E) jest drzewem, a r V wyró»nionym wierzchoªkiem, zwanym korzeniem. Podstawowe poj cia: przodek (poprzednik) wierzchoªka, potomek (nast pnik) wierzchoªka, syn (bezpo±redni nast pnik) wierzchoªka, ojciec (bezpo±redni poprzednik) wierzchoªka, brat wierzchoªka, li±cie drzewa, stopie«wierzchoªka = liczba synów, gª boko± (poziom) wierzchoªka v = dªugo± drogi od r do v (ozn. h(v) = h T (v)), 25 / 82

118 Drzewa Def. Drzewo z korzeniem = para (T, r), gdzie T = (V, E) jest drzewem, a r V wyró»nionym wierzchoªkiem, zwanym korzeniem. Podstawowe poj cia: przodek (poprzednik) wierzchoªka, potomek (nast pnik) wierzchoªka, syn (bezpo±redni nast pnik) wierzchoªka, ojciec (bezpo±redni poprzednik) wierzchoªka, brat wierzchoªka, li±cie drzewa, stopie«wierzchoªka = liczba synów, gª boko± (poziom) wierzchoªka v = dªugo± drogi od r do v (ozn. h(v) = h T (v)), wysoko± drzewa = h(t ) := max{h(v) : v V }, 25 / 82

119 Drzewa Def. Drzewo uporz dkowane = drzewo z korzeniem, w którym synowie ka»dego wierzchoªka s uporz dkowani. 26 / 82

120 Drzewa Def. Drzewo uporz dkowane = drzewo z korzeniem, w którym synowie ka»dego wierzchoªka s uporz dkowani. Def. Drzewo binarne = drzewo uporz dkowane, w którym ka»dy wierzchoªek ma stopie«2 (wyró»niony lewy i prawy syn). 26 / 82

121 Drzewa Def. Drzewo uporz dkowane = drzewo z korzeniem, w którym synowie ka»dego wierzchoªka s uporz dkowani. Def. Drzewo binarne = drzewo uporz dkowane, w którym ka»dy wierzchoªek ma stopie«2 (wyró»niony lewy i prawy syn). Def. Peªne drzewo binarne = drzewo binarne takie,»e ka»dy wierzchoªek oprócz li±ci ma stopie«2. 26 / 82

122 Drzewa Def. Drzewo uporz dkowane = drzewo z korzeniem, w którym synowie ka»dego wierzchoªka s uporz dkowani. Def. Drzewo binarne = drzewo uporz dkowane, w którym ka»dy wierzchoªek ma stopie«2 (wyró»niony lewy i prawy syn). Def. Peªne drzewo binarne = drzewo binarne takie,»e ka»dy wierzchoªek oprócz li±ci ma stopie«2. Def. Poddrzewo o korzeniu x drzewa (T, r) = peªny podgraf grafu T rozpi ty na wierzchoªku x i wszystkich potomkach x. 26 / 82

123 Drzewa Def. Drzewo uporz dkowane = drzewo z korzeniem, w którym synowie ka»dego wierzchoªka s uporz dkowani. Def. Drzewo binarne = drzewo uporz dkowane, w którym ka»dy wierzchoªek ma stopie«2 (wyró»niony lewy i prawy syn). Def. Peªne drzewo binarne = drzewo binarne takie,»e ka»dy wierzchoªek oprócz li±ci ma stopie«2. Def. Poddrzewo o korzeniu x drzewa (T, r) = peªny podgraf grafu T rozpi ty na wierzchoªku x i wszystkich potomkach x. Def. Lewe (odp. prawe) poddrzewo drzewa binarnego (T, r) = poddrzewo drzewa T o korzeniu b d cym lewym (odp. prawym) synem korzenia x. 26 / 82

124 Drzewo jako struktura danych type wskdrzewa = ^eldrzewa; eldrzewa = record klucz : typ-danych; lewy, prawy : wskdrzewa end; 27 / 82

125 Drzewo jako struktura danych type wskdrzewa = ^eldrzewa; eldrzewa = record klucz : typ-danych; lewy, prawy : wskdrzewa end; lub type wskdrzewa = ^eldrzewa; eldrzewa = record ojciec : wskdrzewa; klucz : typ-danych; lewy, prawy : wskdrzewa end; 27 / 82

126 Drzewo jako struktura danych Przegl danie drzewa metod poprzeczn. procedure Przejrzyj(korzen : wskdrzewa); begin if korzen <> nil then begin Przejrzyj(korzen^.lewy); Wypisz(korzen^.klucz); Przejrzyj(korzen^.prawy)); end end; 28 / 82

127 Drzewo jako struktura danych Metody przegl dania drzewa: poprzeczna (inorder): lewe, korze«, prawe, wzdªu»na (preorder): korze«, lewe, prawe, wsteczna (postorder): lewe, prawe, korze«. 29 / 82

128 Drzewo jako struktura danych Metody przegl dania drzewa: poprzeczna (inorder): lewe, korze«, prawe, wzdªu»na (preorder): korze«, lewe, prawe, wsteczna (postorder): lewe, prawe, korze«. Przegl danie drzewa mo»e posªu»y tak»e do wyszukania wska¹nika do wierzchoªka (zawieraj cego dany klucz). 29 / 82

129 Drzewo jako struktura danych Metody przegl dania drzewa: poprzeczna (inorder): lewe, korze«, prawe, wzdªu»na (preorder): korze«, lewe, prawe, wsteczna (postorder): lewe, prawe, korze«. Przegl danie drzewa mo»e posªu»y tak»e do wyszukania wska¹nika do wierzchoªka (zawieraj cego dany klucz). Zªo»ono±. Je»eli nic nie zaªo»ymy dodatkowo o ksztaªcie drzewa ani o zwi zkach mi dzy kluczami, to zªo»ono± wyszukiwania wynosi O(n), gdzie n = liczba wierzchoªków. 29 / 82

130 Drzewa poszukiwa«binarnych Def. Drzewo poszukiwa«binarnych (BST binary search tree) = drzewo binarne T = (V, E, r) z kluczami, tj. ka»demu v V jest przyporz dkowany klucz k(v) (element zbioru liniowo uporz dkowanego, np. Z). 30 / 82

131 Drzewa poszukiwa«binarnych Def. Drzewo poszukiwa«binarnych (BST binary search tree) = drzewo binarne T = (V, E, r) z kluczami, tj. ka»demu v V jest przyporz dkowany klucz k(v) (element zbioru liniowo uporz dkowanego, np. Z). Ponadto klucze maj wªasno± BST: dla ka»dego v V klucze w wierzchoªkach lewego poddrzewa wierzchoªka v s k(v), 30 / 82

132 Drzewa poszukiwa«binarnych Def. Drzewo poszukiwa«binarnych (BST binary search tree) = drzewo binarne T = (V, E, r) z kluczami, tj. ka»demu v V jest przyporz dkowany klucz k(v) (element zbioru liniowo uporz dkowanego, np. Z). Ponadto klucze maj wªasno± BST: dla ka»dego v V klucze w wierzchoªkach lewego poddrzewa wierzchoªka v s k(v), klucze w wierzchoªkach prawego poddrzewa wierzchoªka v s k(v). 30 / 82

133 Drzewa poszukiwa«binarnych Wyszukiwanie w drzewie BST elementu o danym kluczu. function Search(korzen : wskdrzewa; klucz : Integer) : wskdrzewa; begin if (korzen = nil) or (korzen^.klucz = klucz) then Search := korzen else if klucz < korzen^.klucz then Search := Search(korzen^.lewy, klucz) else Search := Search(korzen^.prawy, klucz) end; 31 / 82

134 Drzewa poszukiwa«binarnych Wyszukiwanie w drzewie BST elementu o danym kluczu. function Search(korzen : wskdrzewa; klucz : Integer) : wskdrzewa; begin if (korzen = nil) or (korzen^.klucz = klucz) then Search := korzen else if klucz < korzen^.klucz then Search := Search(korzen^.lewy, klucz) else Search := Search(korzen^.prawy, klucz) end; Zªo»ono±. O(h), gdzie h = wysoko± drzewa. Gdy drzewo BST jest dokªadnie wywa»one (ma najmniejsz mo»liw wysoko± dla danej liczby wierzchoªków), to h logn, gdzie n = liczba wierzchoªków. 31 / 82

135 Drzewa poszukiwa«binarnych Wyszukiwanie w drzewie BST elementu o danym kluczu. function Search(korzen : wskdrzewa; klucz : Integer) : wskdrzewa; begin if (korzen = nil) or (korzen^.klucz = klucz) then Search := korzen else if klucz < korzen^.klucz then Search := Search(korzen^.lewy, klucz) else Search := Search(korzen^.prawy, klucz) end; Zªo»ono±. O(h), gdzie h = wysoko± drzewa. Gdy drzewo BST jest dokªadnie wywa»one (ma najmniejsz mo»liw wysoko± dla danej liczby wierzchoªków), to h logn, gdzie n = liczba wierzchoªków. Zadanie. Napisz iteracyjn wersj funkcji Search. 31 / 82

136 Drzewa poszukiwa«binarnych Wyszukiwanie minimum. function Minimum(korzen : wskdrzewa) : wskdrzewa; begin while korzen^.lewy <> nil do korzen := korzen^.lewy; Minimum := korzen; end; 32 / 82

137 Drzewa poszukiwa«binarnych Wyszukiwanie minimum. function Minimum(korzen : wskdrzewa) : wskdrzewa; begin while korzen^.lewy <> nil do korzen := korzen^.lewy; Minimum := korzen; end; Wyszukiwanie maksimum. function Maximum(korzen : wskdrzewa) : wskdrzewa; begin while korzen^.prawy <> nil do korzen := korzen^.prawy; Maximum := korzen; end; 32 / 82

138 Drzewa poszukiwa«binarnych Wyszukiwanie minimum. function Minimum(korzen : wskdrzewa) : wskdrzewa; begin while korzen^.lewy <> nil do korzen := korzen^.lewy; Minimum := korzen; end; Wyszukiwanie maksimum. function Maximum(korzen : wskdrzewa) : wskdrzewa; begin while korzen^.prawy <> nil do korzen := korzen^.prawy; Maximum := korzen; end; Zªo»ono±. O(h), gdzie h = wysoko± drzewa. 32 / 82

139 Drzewa poszukiwa«binarnych Dodawanie elementu do drzewa BST w taki sposób, by zachowa wªasno± BST. 33 / 82

140 Drzewa poszukiwa«binarnych Dodawanie elementu do drzewa BST w taki sposób, by zachowa wªasno± BST. procedure Insert(var korzen : wskdrzewa; klucz : Integer); begin if korzen = nil then begin New(korzen); korzen^.klucz := klucz; korzen^.lewy := nil; korzen^.prawy := nil end else begin if klucz >= korzen^.klucz then Insert(korzen^.prawy, klucz); if klucz < korzen^.klucz then Insert(korzen^.lewy, klucz); end end; 33 / 82

141 Drzewa poszukiwa«binarnych Dodawanie elementu do drzewa BST w taki sposób, by zachowa wªasno± BST. procedure Insert(var korzen : wskdrzewa; klucz : Integer); begin if korzen = nil then begin New(korzen); korzen^.klucz := klucz; korzen^.lewy := nil; korzen^.prawy := nil end else begin if klucz >= korzen^.klucz then Insert(korzen^.prawy, klucz); if klucz < korzen^.klucz then Insert(korzen^.lewy, klucz); end end; Zªo»ono±. O(h), gdzie h = wysoko± drzewa. 33 / 82

142 Drzewa poszukiwa«binarnych Usuwanie elementu v drzewa tak, by zachowa wªasno± BST. Rozpatrujemy trzy przypadki: 34 / 82

143 Drzewa poszukiwa«binarnych Usuwanie elementu v drzewa tak, by zachowa wªasno± BST. Rozpatrujemy trzy przypadki: 1 v nie ma synów w jego ojcu zast pujemy wska¹nik na v warto±ci nil, 34 / 82

144 Drzewa poszukiwa«binarnych Usuwanie elementu v drzewa tak, by zachowa wªasno± BST. Rozpatrujemy trzy przypadki: 1 v nie ma synów w jego ojcu zast pujemy wska¹nik na v warto±ci nil, 2 v ma tylko jednego syna ustalamy wska¹nik mi dzy jego ojcem a jedynym synem, 34 / 82

145 Drzewa poszukiwa«binarnych Usuwanie elementu v drzewa tak, by zachowa wªasno± BST. Rozpatrujemy trzy przypadki: 1 v nie ma synów w jego ojcu zast pujemy wska¹nik na v warto±ci nil, 2 v ma tylko jednego syna ustalamy wska¹nik mi dzy jego ojcem a jedynym synem, 3 v ma dwóch synów szukamy jego nast pnika y (mo»na pokaza,»e y ma co najwy»ej jednego syna!) i wycinamy y jak w 1 lub 2, zast pujemy zawarto± v zawarto±ci y. Nast pnik v = nast pny wierzchoªek po v odwiedzany w czasie przechodzenia drzewa w porz dku inorder. 34 / 82

146 Drzewa poszukiwa«binarnych Usuwanie elementu v drzewa tak, by zachowa wªasno± BST. Rozpatrujemy trzy przypadki: 1 v nie ma synów w jego ojcu zast pujemy wska¹nik na v warto±ci nil, 2 v ma tylko jednego syna ustalamy wska¹nik mi dzy jego ojcem a jedynym synem, 3 v ma dwóch synów szukamy jego nast pnika y (mo»na pokaza,»e y ma co najwy»ej jednego syna!) i wycinamy y jak w 1 lub 2, zast pujemy zawarto± v zawarto±ci y. Nast pnik v = nast pny wierzchoªek po v odwiedzany w czasie przechodzenia drzewa w porz dku inorder. Zªo»ono±. O(h), gdzie h = wysoko± drzewa. 34 / 82

147 Drzewa poszukiwa«binarnych Wszystkie podstawowe operacje na drzewach BST maj zªo»ono± O(h). 35 / 82

148 Drzewa poszukiwa«binarnych Wszystkie podstawowe operacje na drzewach BST maj zªo»ono± O(h). Wysoko± h drzewa ulega ci gªym zmianom podczas wstawiania i usuwania elementów. 35 / 82

149 Drzewa poszukiwa«binarnych Wszystkie podstawowe operacje na drzewach BST maj zªo»ono± O(h). Wysoko± h drzewa ulega ci gªym zmianom podczas wstawiania i usuwania elementów. W pesymistycznych przypadkach wysoko± mo»e by liczbie wierzchoªków n zªo»ono± O(n), jak dla zwykªych list. 35 / 82

150 Drzewa poszukiwa«binarnych Wszystkie podstawowe operacje na drzewach BST maj zªo»ono± O(h). Wysoko± h drzewa ulega ci gªym zmianom podczas wstawiania i usuwania elementów. W pesymistycznych przypadkach wysoko± mo»e by liczbie wierzchoªków n zªo»ono± O(n), jak dla zwykªych list. Im mniejsza wysoko± drzewa, tym lepsza zªo»ono±. Najlepiej, jak drzewo jest dokªadnie wywa»one. Wówczas h logn. 35 / 82

151 Drzewa poszukiwa«binarnych Wszystkie podstawowe operacje na drzewach BST maj zªo»ono± O(h). Wysoko± h drzewa ulega ci gªym zmianom podczas wstawiania i usuwania elementów. W pesymistycznych przypadkach wysoko± mo»e by liczbie wierzchoªków n zªo»ono± O(n), jak dla zwykªych list. Im mniejsza wysoko± drzewa, tym lepsza zªo»ono±. Najlepiej, jak drzewo jest dokªadnie wywa»one. Wówczas h logn. Metoda utrzymanie drzewa w postaci bliskiej dokªadnie wywa»onej drzewa czerwono-czarne. 35 / 82

152 Kopce Def. Kopiec (heap) = drzewo binarne T = (V, E, r) z kluczami, tj. ka»demu v V jest przyporz dkowany klucz k(v) (element zbioru liniowo uporz dkowanego, np. Z). 36 / 82

153 Kopce Def. Kopiec (heap) = drzewo binarne T = (V, E, r) z kluczami, tj. ka»demu v V jest przyporz dkowany klucz k(v) (element zbioru liniowo uporz dkowanego, np. Z). Ponadto: klucze maj wªasno± kopca: dla ka»dego v V, k(v) k(o(v)), gdzie o(v) := ojciec v, 36 / 82

154 Kopce Def. Kopiec (heap) = drzewo binarne T = (V, E, r) z kluczami, tj. ka»demu v V jest przyporz dkowany klucz k(v) (element zbioru liniowo uporz dkowanego, np. Z). Ponadto: klucze maj wªasno± kopca: dla ka»dego v V, k(v) k(o(v)), gdzie o(v) := ojciec v, drzewo T jest dokªadnie wywa»one (zakªadamy,»e jest wypeªnione od lewej). 36 / 82

155 Kopce Kopiec mo»na zaimplementowa w tablicy, np.: A = [16, 14, 10, 8, 7, 9, 3, 2, 4, 1]. 37 / 82

156 Kopce Kopiec mo»na zaimplementowa w tablicy, np.: A = [16, 14, 10, 8, 7, 9, 3, 2, 4, 1]. Wówczas dla i-tego elementu tablicy: 37 / 82

157 Kopce Kopiec mo»na zaimplementowa w tablicy, np.: A = [16, 14, 10, 8, 7, 9, 3, 2, 4, 1]. Wówczas dla i-tego elementu tablicy: klucz ojca = A[ i 2 ], 37 / 82

158 Kopce Kopiec mo»na zaimplementowa w tablicy, np.: A = [16, 14, 10, 8, 7, 9, 3, 2, 4, 1]. Wówczas dla i-tego elementu tablicy: klucz ojca = A[ i 2 ], klucz lewego syna = A[2i], 37 / 82

159 Kopce Kopiec mo»na zaimplementowa w tablicy, np.: A = [16, 14, 10, 8, 7, 9, 3, 2, 4, 1]. Wówczas dla i-tego elementu tablicy: klucz ojca = A[ i 2 ], klucz lewego syna = A[2i], klucz prawego syna = A[2i + 1]. 37 / 82

160 Kopce Kopiec mo»na zaimplementowa w tablicy, np.: A = [16, 14, 10, 8, 7, 9, 3, 2, 4, 1]. Wówczas dla i-tego elementu tablicy: klucz ojca = A[ i 2 ], klucz lewego syna = A[2i], klucz prawego syna = A[2i + 1]. Oznaczenia: ojciec(i) = i 2, 37 / 82

161 Kopce Kopiec mo»na zaimplementowa w tablicy, np.: A = [16, 14, 10, 8, 7, 9, 3, 2, 4, 1]. Wówczas dla i-tego elementu tablicy: klucz ojca = A[ i 2 ], klucz lewego syna = A[2i], klucz prawego syna = A[2i + 1]. Oznaczenia: ojciec(i) = i 2, lewy(i) = 2i, 37 / 82

162 Kopce Kopiec mo»na zaimplementowa w tablicy, np.: A = [16, 14, 10, 8, 7, 9, 3, 2, 4, 1]. Wówczas dla i-tego elementu tablicy: klucz ojca = A[ i 2 ], klucz lewego syna = A[2i], klucz prawego syna = A[2i + 1]. Oznaczenia: ojciec(i) = i 2, lewy(i) = 2i, prawy(i) = 2i + 1, 37 / 82

163 Kopce Kopiec mo»na zaimplementowa w tablicy, np.: A = [16, 14, 10, 8, 7, 9, 3, 2, 4, 1]. Wówczas dla i-tego elementu tablicy: klucz ojca = A[ i 2 ], klucz lewego syna = A[2i], klucz prawego syna = A[2i + 1]. Oznaczenia: ojciec(i) = i 2, lewy(i) = 2i, prawy(i) = 2i + 1, length(a) = rozmiar tablicy A, 37 / 82

164 Kopce Kopiec mo»na zaimplementowa w tablicy, np.: A = [16, 14, 10, 8, 7, 9, 3, 2, 4, 1]. Wówczas dla i-tego elementu tablicy: Oznaczenia: klucz ojca = A[ i 2 ], klucz lewego syna = A[2i], klucz prawego syna = A[2i + 1]. ojciec(i) = i 2, lewy(i) = 2i, prawy(i) = 2i + 1, length(a) = rozmiar tablicy A, heapsize(a) = (aktualny) rozmiar kopca implementowanego na tablicy A. 37 / 82

165 Kopce Przywracanie wªasno±ci kopca poddrzewu o korzeniu A[i]. 38 / 82

166 Kopce Przywracanie wªasno±ci kopca poddrzewu o korzeniu A[i]. Zaªo»enie: drzewa zaczepione w lewy(i) i prawy(i) s kopcami! 38 / 82

167 Kopce Przywracanie wªasno±ci kopca poddrzewu o korzeniu A[i]. Zaªo»enie: drzewa zaczepione w lewy(i) i prawy(i) s kopcami! Heapify(A, i) begin l := lewy(i); r := prawy(i); if ( l <= heapsize(a) ) and ( A[l] > A[i] ) then max := l else max := i; if ( r <= heapsize(a) ) and ( A[r] > A[max] ) then max := r; if max <> i then begin zamie«a[i] z A[max]; Heapify(A, max) end end; 38 / 82

168 Kopce Przywracanie wªasno±ci kopca poddrzewu o korzeniu A[i]. Zaªo»enie: drzewa zaczepione w lewy(i) i prawy(i) s kopcami! Heapify(A, i) begin l := lewy(i); r := prawy(i); if ( l <= heapsize(a) ) and ( A[l] > A[i] ) then max := l else max := i; if ( r <= heapsize(a) ) and ( A[r] > A[max] ) then max := r; if max <> i then begin zamie«a[i] z A[max]; Heapify(A, max) end end; Zªo»ono±. O(logn). 38 / 82

169 Kopce Przeksztaªcenie tablicy A[1..n], n = length(a) w kopiec. 39 / 82

170 Kopce Przeksztaªcenie tablicy A[1..n], n = length(a) w kopiec. Elementy A[ n + 1],..., A[n] s li± mi 1-elementowymi 2 kopcami. 39 / 82

171 Kopce Przeksztaªcenie tablicy A[1..n], n = length(a) w kopiec. Elementy A[ n + 1],..., A[n] s li± mi 1-elementowymi 2 kopcami. Wystarczy przywróci wªasno± kopca drzewom o korzeniach A[ n ],..., A[1] / 82

172 Kopce Przeksztaªcenie tablicy A[1..n], n = length(a) w kopiec. Elementy A[ n + 1],..., A[n] s li± mi 1-elementowymi 2 kopcami. Wystarczy przywróci wªasno± kopca drzewom o korzeniach A[ n ],..., A[1]. 2 BuildHeap(A) begin heapsize(a) := length(a); for i := length(a)/2 downto 1 do Heapify(A, i); end; 39 / 82

Elementy teorii grafów, sposoby reprezentacji grafów w komputerze

Elementy teorii grafów, sposoby reprezentacji grafów w komputerze Elementy teorii grafów, sposoby reprezentacji grafów w komputerze Autor projektu: dr Andrzej Mróz (UMK) Projekt pn. Wzmocnienie potencjaªu dydaktycznego UMK w Toruniu w dziedzinach matematyczno-przyrodniczych

Bardziej szczegółowo

Elementy teorii grafów, sposoby reprezentacji grafów w komputerze

Elementy teorii grafów, sposoby reprezentacji grafów w komputerze Elementy teorii grafów, sposoby reprezentacji grafów w komputerze dr Andrzej Mróz (UMK w Toruniu) 2013 Projekt wspóªnansowany ze ±rodków Unii Europejskiej w ramach Europejskiego Funduszu Spoªecznego Projekt

Bardziej szczegółowo

Zadania z kolokwiów ze Wst pu do Informatyki. Semestr II.

Zadania z kolokwiów ze Wst pu do Informatyki. Semestr II. Zadania z kolokwiów ze Wst pu do Informatyki. Semestr II. Poni»sze zadania s wyborem zada«z kolokwiów ze Wst pu do Informatyki jakie przeprowadziªem w ci gu ostatnich lat. Marek Zawadowski Zadanie 1 Napisz

Bardziej szczegółowo

c Marcin Sydow Spójno± Grafy i Zastosowania Grafy Eulerowskie 2: Drogi i Cykle Grafy Hamiltonowskie Podsumowanie

c Marcin Sydow Spójno± Grafy i Zastosowania Grafy Eulerowskie 2: Drogi i Cykle Grafy Hamiltonowskie Podsumowanie 2: Drogi i Cykle Spis Zagadnie«drogi i cykle spójno± w tym sªaba i silna k-spójno± (wierzchoªkowa i kraw dziowa) dekompozycja grafu na bloki odlegªo±ci w grae i poj cia pochodne grafy Eulera i Hamiltona

Bardziej szczegółowo

10a: Wprowadzenie do grafów

10a: Wprowadzenie do grafów 10a: Wprowadzenie do grafów Spis zagadnie«zastosowania grafów denicja grafu (i skierowanego), prostego, multigrafu drogi i cykle, spójno± w tym sªaba i silna drzewo i las: denicja, charakteryzacje, wªasno±ci

Bardziej szczegółowo

Relacj binarn okre±lon w zbiorze X nazywamy podzbiór ϱ X X.

Relacj binarn okre±lon w zbiorze X nazywamy podzbiór ϱ X X. Relacje 1 Relacj n-argumentow nazywamy podzbiór ϱ X 1 X 2... X n. Je±li ϱ X Y jest relacj dwuargumentow (binarn ), to zamiast (x, y) ϱ piszemy xϱy. Relacj binarn okre±lon w zbiorze X nazywamy podzbiór

Bardziej szczegółowo

Podstawy programowania 2. Temat: Drzewa binarne. Przygotował: mgr inż. Tomasz Michno

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ą

Bardziej szczegółowo

Algorytmy grafowe 2. Andrzej Jastrz bski. Akademia ETI. Politechnika Gda«ska Algorytmy grafowe 2

Algorytmy grafowe 2. Andrzej Jastrz bski. Akademia ETI. Politechnika Gda«ska Algorytmy grafowe 2 Algorytmy grafowe 2 Andrzej Jastrz bski Akademia ETI Minimalne drzewo spinaj ce Drzewem nazywamy spójny graf nie posiadaj cy cyklu. Liczba wierzchoªków drzewa jest o jeden wi ksza od liczby jego kraw dzi.

Bardziej szczegółowo

Teoria grafów i jej zastosowania. 1 / 126

Teoria grafów i jej zastosowania. 1 / 126 Teoria grafów i jej zastosowania. 1 / 126 Mosty królewieckie W Królewcu, na rzece Pregole znajduj si dwie wyspy poª czone ze sob, a tak»e z brzegami za pomoc siedmiu mostów, tak jak pokazuje rysunek 2

Bardziej szczegółowo

Podstawowepojęciateorii grafów

Podstawowepojęciateorii grafów 7 Podstawowepojęciateorii grafów Wiele sytuacji z»ycia codziennego mo»e by w wygodny sposób opisanych gracznie za pomoc rysunków skªadaj cych si ze zbioru punktów i linii ª cz cych pewne pary tych punktów.

Bardziej szczegółowo

Teoria grafów i sieci 1 / 58

Teoria grafów i sieci 1 / 58 Teoria grafów i sieci 1 / 58 Literatura 1 B.Korte, J.Vygen, Combinatorial optimization 2 D.Jungnickel, Graphs, Networks and Algorithms 3 M.Sysªo, N.Deo Metody optymalizacji dyskretnej z przykªadami w Turbo

Bardziej szczegółowo

Zad. 1 Zad. 2 Zad. 3 Zad. 4 Zad. 5 SUMA. W obu podpunktach zakªadamy,»e kolejno± ta«ców jest wa»na.

Zad. 1 Zad. 2 Zad. 3 Zad. 4 Zad. 5 SUMA. W obu podpunktach zakªadamy,»e kolejno± ta«ców jest wa»na. Zad. 1 Zad. 2 Zad. 3 Zad. 4 Zad. 5 SUMA Zadanko 1 (12p.) Na imprezie w Noc Kupaªy s 44 dziewczyny. Nosz one 11 ró»nych imion, a dla ka»dego imienia s dokªadnie 4 dziewczyny o tym imieniu przy czym ka»da

Bardziej szczegółowo

Minimalne drzewa rozpinaj ce

Minimalne drzewa rozpinaj ce y i y i drzewa Spis zagadnie«y i drzewa i lasy cykle fundamentalne i rozci cia fundamentalne wªasno±ci cykli i rozci minimalne drzewa algorytm algorytm Drzewo y i spójnego, nieskierowanego grafu prostego

Bardziej szczegółowo

Egzaminy i inne zadania. Semestr II.

Egzaminy i inne zadania. Semestr II. Egzaminy i inne zadania. Semestr II. Poni»sze zadania s wyborem zada«ze Wst pu do Informatyki z egzaminów jakie przeprowadziªem w ci gu ostatnich lat. Ponadto doª czyªem szereg zada«, które pojawiaªy si

Bardziej szczegółowo

Podstawowe algorytmy grafowe i ich zastosowania

Podstawowe algorytmy grafowe i ich zastosowania Podstawowe algorytmy grafowe i ich zastosowania Autor projektu: dr Andrzej Mróz (UMK) Projekt pn. Wzmocnienie potencjaªu dydaktycznego UMK w Toruniu w dziedzinach matematyczno-przyrodniczych realizowany

Bardziej szczegółowo

Listy i operacje pytania

Listy i operacje pytania Listy i operacje pytania Iwona Polak iwona.polak@us.edu.pl Uniwersytet l ski Instytut Informatyki pa¹dziernika 07 Który atrybut NIE wyst puje jako atrybut elementów listy? klucz elementu (key) wska¹nik

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Porządek symetryczny: right(x)

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)

Bardziej szczegółowo

c Marcin Sydow Podstawy Grafy i Zastosowania Kod Prüfera 3: Drzewa Drzewa ukorzenione * Drzewa binarne Zastosowania Podsumowanie

c Marcin Sydow Podstawy Grafy i Zastosowania Kod Prüfera 3: Drzewa Drzewa ukorzenione * Drzewa binarne Zastosowania Podsumowanie Grafy i Grafy i 3: Spis zagadnie«grafy i drzewo i las: denicja, charakteryzacje, wªasno±ci kodowanie Prüfera i zliczanie drzew etykietowanych (tw. Cayleya) drzewa drzewa zliczanie drzew binarnych (tw.

Bardziej szczegółowo

Grafy i Zastosowania. 1: Wprowadzenie i poj cia podstawowe. c Marcin Sydow. Wprowadzenie. Podstawowe poj cia. Operacje na grafach.

Grafy i Zastosowania. 1: Wprowadzenie i poj cia podstawowe. c Marcin Sydow. Wprowadzenie. Podstawowe poj cia. Operacje na grafach. 1: i podstawowe Spis Zagadnie«zastosowania grafów denicja grafu (i skierowanego), prostego, multigrafu s siedztwo i incydencja izomorzm grafów stopnie wierzchoªków (w tym wej±ciowy i wyj±ciowy), lemat

Bardziej szczegółowo

Podstawowe algorytmy grafowe i ich zastosowania

Podstawowe algorytmy grafowe i ich zastosowania Podstawowe algorytmy grafowe i ich zastosowania dr Andrzej Mróz (UMK w Toruniu) 2013 Projekt wspóªnansowany ze ±rodków Unii Europejskiej w ramach Europejskiego Funduszu Spoªecznego Projekt pn. Wzmocnienie

Bardziej szczegółowo

Drzewa Gomory-Hu Wprowadzenie. Drzewa Gomory-Hu. Jakub Š cki. 14 pa¹dziernika 2009

Drzewa Gomory-Hu Wprowadzenie. Drzewa Gomory-Hu. Jakub Š cki. 14 pa¹dziernika 2009 Wprowadzenie Drzewa Gomory-Hu Jakub Š cki 14 pa¹dziernika 2009 Wprowadzenie 1 Wprowadzenie Podstawowe poj cia i fakty 2 Istnienie drzew Gomory-Hu 3 Algorytm budowy drzew 4 Problemy otwarte Wprowadzenie

Bardziej szczegółowo

Minimalne drzewo rozpinaj ce

Minimalne drzewo rozpinaj ce Minimalne drzewo rozpinaj ce Autor projektu: dr Andrzej Mróz (UMK) Projekt pn. Wzmocnienie potencjaªu dydaktycznego UMK w Toruniu w dziedzinach matematyczno-przyrodniczych realizowany w ramach Poddziaªania

Bardziej szczegółowo

c Marcin Sydow Wst p Grafy i Zastosowania Wierzchoªki 8: Kolorowanie Grafów Mapy Kraw dzie Zliczanie Podsumowanie

c Marcin Sydow Wst p Grafy i Zastosowania Wierzchoªki 8: Kolorowanie Grafów Mapy Kraw dzie Zliczanie Podsumowanie 8: Kolorowanie Grafów Spis zagadnie«kolorowanie wierzchoªków Kolorowanie map Kolorowanie kraw dzi Wielomian chromatyczny Zastosowania Problem kolorowania grafów ma wiele odmian (np. kolorowanie wierzchoªków,

Bardziej szczegółowo

Wykªad 1. Wprowadzenie do teorii grafów

Wykªad 1. Wprowadzenie do teorii grafów Wykªad 1. Wprowadzenie do teorii grafów 1 / 112 Literatura 1 W. Lipski; Kombinatoryka dla programistów. 2 T. Cormen, Ch. E. Leiserson, R. L. Rivest; Wprowadzenie do algorytmów. 3 K. A. Ross, Ch. R. B.

Bardziej szczegółowo

c Marcin Sydow Przepªywy Grafy i Zastosowania Podsumowanie 12: Przepªywy w sieciach

c Marcin Sydow Przepªywy Grafy i Zastosowania Podsumowanie 12: Przepªywy w sieciach 12: w sieciach Spis zagadnie«sieci przepªywowe przepªywy w sieciach ±cie»ka powi kszaj ca tw. Forda-Fulkersona Znajdowanie maksymalnego przepªywu Zastosowania przepªywów Sieci przepªywowe Sie przepªywowa

Bardziej szczegółowo

Drzewa binarne. Drzewo binarne to dowolny obiekt powstały zgodnie z regułami: jest drzewem binarnym Jeśli T 0. jest drzewem binarnym Np.

Drzewa binarne. Drzewo binarne to dowolny obiekt powstały zgodnie z regułami: jest drzewem binarnym Jeśli T 0. jest drzewem binarnym Np. Drzewa binarne Drzewo binarne to dowolny obiekt powstały zgodnie z regułami: jest drzewem binarnym Jeśli T 0 i T 1 są drzewami binarnymi to T 0 T 1 jest drzewem binarnym Np. ( ) ( ( )) Wielkość drzewa

Bardziej szczegółowo

Egzaminy i inne zadania. Semestr II.

Egzaminy i inne zadania. Semestr II. Egzaminy i inne zadania. Semestr II. Poni»sze zadania s wyborem zada«ze Wst pu do Informatyki z egzaminów jakie przeprowadziªem w ci gu ostatnich lat. Ponadto doª czyªem szereg zada«, które pojawiaªy si

Bardziej szczegółowo

Skrypt do Algorytmów i Struktur Danych

Skrypt do Algorytmów i Struktur Danych Skrypt do Algorytmów i Struktur Danych K. Kleczkowski M. Pietrek 14 marca 2018 2 Spis tre±ci I Algorytmy 5 1. Algorytmy sortowania 7 1.1. Wprowadzenie...................................... 7 1.2. Sortowanie

Bardziej szczegółowo

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

Bardziej szczegółowo

Mosty królewieckie, chi«ski listonosz i... kojarzenie maª»e«stw

Mosty królewieckie, chi«ski listonosz i... kojarzenie maª»e«stw Mosty królewieckie, chi«ski listonosz i... kojarzenie maª»e«stw 3 kwietnia 2014 roku 1 / 106 Mosty królewieckie W Królewcu, na rzece Pregole znajduj si dwie wyspy poª czone ze sob, a tak»e z brzegami za

Bardziej szczegółowo

Algorytmy i struktury danych

Algorytmy i struktury danych Algorytmy i struktury danych Cz ± pierwsza Prowadz cy: dr Andrzej Mróz, Wydziaª Matematyki i Informatyki, Uniwersytet Mikoªaja Kopernika 1 / 65 Opis przedmiotu Zagadnienia, którymi si zajmiemy: metody

Bardziej szczegółowo

Grafy i Zastosowania. 9: Digrafy (grafy skierowane) c Marcin Sydow. Digrafy. Porz dki cz ±ciowe * Euler i Hamilton. Turnieje

Grafy i Zastosowania. 9: Digrafy (grafy skierowane) c Marcin Sydow. Digrafy. Porz dki cz ±ciowe * Euler i Hamilton. Turnieje 9: (grafy skierowane) Spis zagadnie«cz ±ciowe Przykªady: gªosowanie wi kszo±ciowe, Digraf (graf skierowany) Digraf to równowa»ny termin z terminem graf skierowany (od ang. directed graph). W grafach skierowanych

Bardziej szczegółowo

Analiza algorytmów zadania podstawowe

Analiza algorytmów zadania podstawowe Analiza algorytmów zadania podstawowe Zadanie 1 Zliczanie Zliczaj(n) 1 r 0 2 for i 1 to n 1 3 do for j i + 1 to n 4 do for k 1 to j 5 do r r + 1 6 return r 0 Jaka wartość zostanie zwrócona przez powyższą

Bardziej szczegółowo

Wysokość drzewa Głębokość węzła

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

Bardziej szczegółowo

W poprzednim odcinku... Podstawy matematyki dla informatyków. Relacje równowa»no±ci. Zbiór (typ) ilorazowy. Klasy abstrakcji

W poprzednim odcinku... Podstawy matematyki dla informatyków. Relacje równowa»no±ci. Zbiór (typ) ilorazowy. Klasy abstrakcji W poprzednim odcinku... Podstawy matematyki dla informatyków Rodzina indeksowana {A t } t T podzbiorów D to taka funkcja A : T P(D),»e A(t) = A t, dla dowolnego t T. Wykªad 3 20 pa¹dziernika 2011 Produkt

Bardziej szczegółowo

Drzewa poszukiwań binarnych

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Sortowanie przez scalanie

Sortowanie przez scalanie Sortowanie przez scalanie Wykład 2 12 marca 2019 (Wykład 2) Sortowanie przez scalanie 12 marca 2019 1 / 17 Outline 1 Metoda dziel i zwyciężaj 2 Scalanie Niezmiennik pętli - poprawność algorytmu 3 Sortowanie

Bardziej szczegółowo

Algorytmy zwiazane z gramatykami bezkontekstowymi

Algorytmy zwiazane z gramatykami bezkontekstowymi Algorytmy zwiazane z gramatykami bezkontekstowymi Rozpoznawanie j zyków bezkontekstowych Problem rozpoznawania j zyka L polega na sprawdzaniu przynale»no±ci sªowa wej±ciowego x do L. Zakªadamy,»e j zyk

Bardziej szczegółowo

Algorytmy i struktury danych. wykład 5

Algorytmy i struktury danych. wykład 5 Plan wykładu: Wskaźniki. : listy, drzewa, kopce. Wskaźniki - wskaźniki Wskaźnik jest to liczba lub symbol który w ogólności wskazuje adres komórki pamięci. W językach wysokiego poziomu wskaźniki mogą również

Bardziej szczegółowo

c Marcin Sydow Grafy i Zastosowania BFS DFS 4: Przeszukiwanie Grafów (BFS, DFS i zastosowania) DFS nieskierowane DFS skierowane Podsumowanie

c Marcin Sydow Grafy i Zastosowania BFS DFS 4: Przeszukiwanie Grafów (BFS, DFS i zastosowania) DFS nieskierowane DFS skierowane Podsumowanie 4: Przeszukiwanie Grafów (, i zastosowania) Spis zagadnie«przeszukiwanie grafów (rola, schemat ogólny, zastosowania) realizacje (kolejka, stos, rekurencja) przeszukiwanie wszerz zastosowania przeszukiwanie

Bardziej szczegółowo

Najkrótsze drogi w grafach z wagami

Najkrótsze drogi w grafach z wagami Najkrótsze drogi w grafach z wagami Autor projektu: dr Andrzej Mróz (UMK) Projekt pn. Wzmocnienie potencjaªu dydaktycznego UMK w Toruniu w dziedzinach matematyczno-przyrodniczych realizowany w ramach Poddziaªania

Bardziej szczegółowo

Teoria grafów i sieci 1 / 188

Teoria grafów i sieci 1 / 188 Teoria grafów i sieci / Drzewa z wagami Drzewem z wagami nazywamy drzewo z korzeniem, w którym do ka»dego li±cia przyporz dkowana jest liczba nieujemna, nazywana wag tego li±cia. / Drzewa z wagami Drzewem

Bardziej szczegółowo

Twierdzenie Wainera. Marek Czarnecki. Warszawa, 3 lipca Wydziaª Filozoi i Socjologii Uniwersytet Warszawski

Twierdzenie Wainera. Marek Czarnecki. Warszawa, 3 lipca Wydziaª Filozoi i Socjologii Uniwersytet Warszawski Twierdzenie Wainera Marek Czarnecki Wydziaª Filozoi i Socjologii Uniwersytet Warszawski Wydziaª Matematyki, Informatyki i Mechaniki Uniwersytet Warszawski Warszawa, 3 lipca 2009 Motywacje Dla dowolnej

Bardziej szczegółowo

Minimalne drzewo rozpinaj ce

Minimalne drzewo rozpinaj ce Minimalne drzewo rozpinaj ce dr Andrzej Mróz (UMK w Toruniu) 013 Projekt wspóªnansowany ze ±rodków Unii Europejskiej w ramach Europejskiego Funduszu Spoªecznego Projekt pn. Wzmocnienie potencjaªu dydaktycznego

Bardziej szczegółowo

Wykªad 7. Ekstrema lokalne funkcji dwóch zmiennych.

Wykªad 7. Ekstrema lokalne funkcji dwóch zmiennych. Wykªad jest prowadzony w oparciu o podr cznik Analiza matematyczna 2. Denicje, twierdzenia, wzory M. Gewerta i Z. Skoczylasa. Wykªad 7. Ekstrema lokalne funkcji dwóch zmiennych. Denicja Mówimy,»e funkcja

Bardziej szczegółowo

Algorytmy i Struktury Danych.

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

Bardziej szczegółowo

12: Znajdowanie najkrótszych ±cie»ek w grafach

12: Znajdowanie najkrótszych ±cie»ek w grafach 12: Znajdowanie najkrótszych ±cie»ek w grafach Spis zagadnie«problem najkrótszych ±cie»ek z jednym ¹ródªem Rozwi zanie sznurkowe kraw dzi Wariant 1: Wariant 2: nieujemne kraw dzie (Dijkstra) Wariant 3:

Bardziej szczegółowo

Najkrótsze drogi w grafach z wagami

Najkrótsze drogi w grafach z wagami Najkrótsze drogi w grafach z wagami dr Andrzej Mróz (UMK w Toruniu) 013 Projekt wspóªnansowany ze ±rodków Unii Europejskiej w ramach Europejskiego Funduszu Spoªecznego Projekt pn. Wzmocnienie potencjaªu

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

Rekurencyjne struktury danych

Rekurencyjne struktury danych Andrzej Jastrz bski Akademia ETI Dynamiczny przydziaª pami ci Pami, która jest przydzielana na pocz tku dziaªania procesu to: pami programu czyli instrukcje programu pami statyczna zwi zana ze zmiennymi

Bardziej szczegółowo

Wykład 6. Drzewa poszukiwań binarnych (BST)

Wykład 6. Drzewa poszukiwań binarnych (BST) Wykład 6 Drzewa poszukiwań binarnych (BST) 1 O czym będziemy mówić Definicja Operacje na drzewach BST: Search Minimum, Maximum Predecessor, Successor Insert, Delete Struktura losowo budowanych drzew BST

Bardziej szczegółowo

c Marcin Sydow Planarno± Grafy i Zastosowania Tw. Eulera 7: Planarno± Inne powierzchnie Dualno± Podsumowanie

c Marcin Sydow Planarno± Grafy i Zastosowania Tw. Eulera 7: Planarno± Inne powierzchnie Dualno± Podsumowanie 7: Spis zagadnie«twierdzenie Kuratowskiego Wªasno±ci planarno±ci Twierdzenie Eulera Grafy na innych powierzchniach Poj cie dualno±ci geometrycznej i abstrakcyjnej Graf Planarny Graf planarny to taki graf,

Bardziej szczegółowo

Wykład 2. Drzewa poszukiwań binarnych (BST)

Wykład 2. Drzewa poszukiwań binarnych (BST) Wykład 2 Drzewa poszukiwań binarnych (BST) 1 O czym będziemy mówić Definicja Operacje na drzewach BST: Search Minimum, Maximum Predecessor, Successor Insert, Delete Struktura losowo budowanych drzew BST

Bardziej szczegółowo

Listy, kolejki, stosy

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

Bardziej szczegółowo

Lab. 02: Algorytm Schrage

Lab. 02: Algorytm Schrage Lab. 02: Algorytm Schrage Andrzej Gnatowski 5 kwietnia 2015 1 Opis zadania Celem zadania laboratoryjnego jest zapoznanie si z jednym z przybli»onych algorytmów sªu» cych do szukania rozwi za«znanego z

Bardziej szczegółowo

Sortowanie. Kolejki priorytetowe i algorytm Heapsort Dynamiczny problem sortowania:

Sortowanie. Kolejki priorytetowe i algorytm Heapsort Dynamiczny problem sortowania: Sortowanie Kolejki priorytetowe i algorytm Heapsort Dynamiczny problem sortowania: podać strukturę danych dla elementów dynamicznego skończonego multi-zbioru S, względem którego są wykonywane następujące

Bardziej szczegółowo

Grafy. Andrzej Jastrz bski. Akademia ET I. Politechnika Gda«ska

Grafy. Andrzej Jastrz bski. Akademia ET I. Politechnika Gda«ska Andrzej Jastrz bski Akademia ET I Graf Grafem nazywamy par G = (V, E), gdzie V to zbiór wierzchoªków, E zbiór kraw dzi taki,»e E {{u, v} : u, v V u v}. Wierzchoªki v, u V s s siaduj ce je±li s poª czone

Bardziej szczegółowo

ELEMENTARNA TEORIA LICZB. 1. Podzielno±

ELEMENTARNA TEORIA LICZB. 1. Podzielno± ELEMENTARNA TEORIA LICZB IZABELA AGATA MALINOWSKA N = {1, 2,...} 1. Podzielno± Denicja 1.1. Niepusty podzbiór A zbioru liczb naturalnych jest ograniczony, je»eli istnieje taka liczba naturalna n 0,»e m

Bardziej szczegółowo

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2014/2015. Drzewa BST c.d., równoważenie drzew, kopce.

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2014/2015. Drzewa BST c.d., równoważenie drzew, kopce. POLITECHNIKA WARSZAWSKA Instytut Automatyki i Robotyki ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 204/205 Język programowania: Środowisko programistyczne: C/C++ Qt Wykład 2 : Drzewa BST c.d., równoważenie

Bardziej szczegółowo

Metodydowodzenia twierdzeń

Metodydowodzenia twierdzeń 1 Metodydowodzenia twierdzeń Przez zdanie rozumiemy dowolne stwierdzenie, które jest albo prawdziwe, albo faªszywe (nie mo»e by ono jednocze±nie prawdziwe i faªszywe). Tradycyjnie b dziemy u»ywali maªych

Bardziej szczegółowo

Metoda tablic semantycznych. 1 Metoda tablic semantycznych

Metoda tablic semantycznych. 1 Metoda tablic semantycznych 1 Zarówno metoda tablic semantycznych, jak i rezolucji, to dosy sprawny algorytm do badania speªnialni±ci formuª, a wi c i tautologii. Chodzi w niej o wskazanie, je±li istnieje, modelu dla formuªy. Opiera

Bardziej szczegółowo

Wykład 5. Sortowanie w czasie liniowologarytmicznym

Wykład 5. Sortowanie w czasie liniowologarytmicznym Wykład 5 Sortowanie w czasie liniowologarytmicznym 1 Sortowanie - zadanie Definicja (dla liczb): wejście: ciąg n liczb A = (a 1, a 2,, a n ) wyjście: permutacja (a 1,, a n ) taka, że a 1 a n 2 Zestawienie

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

Geometria Algebraiczna

Geometria Algebraiczna Geometria Algebraiczna Zadania domowe: seria 1 Zadania 1-11 to powtórzenie podstawowych poj z teorii kategorii. Zapewne rozwi zywali Pa«stwo te zadania wcze±niej, dlatego nie b d one omawiane na wiczeniach.

Bardziej szczegółowo

Matematyka dyskretna dla informatyków

Matematyka dyskretna dla informatyków UNIWERSYTET IM. ADAMA MICKIEWICZA W POZNANIU Jerzy Jaworski, Zbigniew Palka, Jerzy Szyma«ski Matematyka dyskretna dla informatyków uzupeænienia Pozna«007 A Notacja asymptotyczna Badaj c du»e obiekty kombinatoryczne

Bardziej szczegółowo

Wykład X. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2016 Janusz Słupik

Wykład X. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2016 Janusz Słupik Wykład X Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2016 c Copyright 2016 Janusz Słupik Drzewa binarne Drzewa binarne Drzewo binarne - to drzewo (graf spójny bez cykli) z korzeniem (wyróżnionym

Bardziej szczegółowo

Szukanie najkrótszych dróg z jednym ródłem

Szukanie najkrótszych dróg z jednym ródłem Szukanie najkrótszych dróg z jednym ródłem Algorytm Dijkstry Załoenia: dany jest spójny graf prosty G z wagami na krawdziach waga w(e) dla kadej krawdzi e jest nieujemna dany jest wyróniony wierzchołek

Bardziej szczegółowo

1) Grafy eulerowskie własnoci algorytmy. 2) Problem chiskiego listonosza

1) Grafy eulerowskie własnoci algorytmy. 2) Problem chiskiego listonosza 165 1) Grafy eulerowskie własnoci algorytmy 2) Problem chiskiego listonosza 166 Grafy eulerowskie Def. Graf (multigraf, niekoniecznie spójny) jest grafem eulerowskim, jeli zawiera cykl zawierajcy wszystkie

Bardziej szczegółowo

Drzewa wyszukiwań binarnych (BST)

Drzewa wyszukiwań binarnych (BST) Drzewa wyszukiwań binarnych (BST) Krzysztof Grządziel 12 czerwca 2007 roku 1 Drzewa Binarne Drzewa wyszukiwań binarnych, w skrócie BST (od ang. binary search trees), to szczególny przypadek drzew binarnych.

Bardziej szczegółowo

Wstęp do programowania. Dziel i rządź. Piotr Chrząstowski-Wachtel

Wstęp do programowania. Dziel i rządź. Piotr Chrząstowski-Wachtel Wstęp do programowania Dziel i rządź Piotr Chrząstowski-Wachtel Divide et impera Starożytni Rzymianie znali tę zasadę Łatwiej się rządzi, jeśli poddani są podzieleni Nie chodziło im jednak bynajmniej o

Bardziej szczegółowo

Sortowanie bąbelkowe

Sortowanie bąbelkowe 1/98 Sortowanie bąbelkowe (Bubble sort) prosty i nieefektywny algorytm sortowania wielokrotnie przeglądamy listę elementów, porównując dwa sąsiadujące i zamieniając je miejscami, jeśli znajdują się w złym

Bardziej szczegółowo

Wektory w przestrzeni

Wektory w przestrzeni Wektory w przestrzeni Informacje pomocnicze Denicja 1. Wektorem nazywamy uporz dkowan par punktów. Pierwszy z tych punktów nazywamy pocz tkiem wektora albo punktem zaczepienia wektora, a drugi - ko«cem

Bardziej szczegółowo

prowadzący dr ADRIAN HORZYK /~horzyk e-mail: horzyk@agh tel.: 012-617 Konsultacje paw. D-13/325

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

Bardziej szczegółowo

Programowanie funkcyjne. Wykªad 13

Programowanie funkcyjne. Wykªad 13 Programowanie funkcyjne. Wykªad 13 Siªa wyrazu rachunku lambda Zdzisªaw Spªawski Zdzisªaw Spªawski: Programowanie funkcyjne. Wykªad 13, Siªa wyrazu rachunku lambda 1 Wst p Warto±ci logiczne Liczby naturalne

Bardziej szczegółowo

Zdzisªaw Dzedzej, Katedra Analizy Nieliniowej pok. 611 Kontakt:

Zdzisªaw Dzedzej, Katedra Analizy Nieliniowej pok. 611 Kontakt: Zdzisªaw Dzedzej, Katedra Analizy Nieliniowej pok. 611 Kontakt: zdzedzej@mif.pg.gda.pl www.mif.pg.gda.pl/homepages/zdzedzej () 5 pa¹dziernika 2016 1 / 1 Literatura podstawowa R. Rudnicki, Wykªady z analizy

Bardziej szczegółowo

Drzewa czerwono-czarne.

Drzewa czerwono-czarne. Binboy at Sphere http://binboy.sphere.p l Drzewa czerwono-czarne. Autor: Jacek Zacharek Wstęp. Pojęcie drzewa czerwono-czarnego (red-black tree) zapoczątkował Rudolf Bayer w książce z 1972 r. pt. Symmetric

Bardziej szczegółowo

1 Granice funkcji wielu zmiennych.

1 Granice funkcji wielu zmiennych. AM WNE 008/009. Odpowiedzi do zada«przygotowawczych do czwartego kolokwium. Granice funkcji wielu zmiennych. Zadanie. Zadanie. Pochodne. (a) 0, Granica nie istnieje, (c) Granica nie istnieje, (d) Granica

Bardziej szczegółowo

Przypomnij sobie krótki wstęp do teorii grafów przedstawiony na początku semestru.

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

Bardziej szczegółowo

A = n. 2. Ka»dy podzbiór zbioru sko«czonego jest zbiorem sko«czonym. Dowody tych twierdze«(elementarne, lecz nieco nu» ce) pominiemy.

A = n. 2. Ka»dy podzbiór zbioru sko«czonego jest zbiorem sko«czonym. Dowody tych twierdze«(elementarne, lecz nieco nu» ce) pominiemy. Logika i teoria mnogo±ci, konspekt wykªad 12 Teoria mocy, cz ± II Def. 12.1 Ka»demu zbiorowi X przyporz dkowujemy oznaczany symbolem X obiekt zwany liczb kardynaln (lub moc zbioru X) w taki sposób,»e ta

Bardziej szczegółowo

Wykªad 4. Funkcje wielu zmiennych.

Wykªad 4. Funkcje wielu zmiennych. Wykªad jest prowadzony w oparciu o podr cznik Analiza matematyczna 2. Denicje, twierdzenia, wzory M. Gewerta i Z. Skoczylasa. Wykªad 4. Funkcje wielu zmiennych. Zbiory na pªaszczy¹nie i w przestrzeni.

Bardziej szczegółowo

Algorytmy i Struktury Danych, 9. ćwiczenia

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

Bardziej szczegółowo

r = x x2 2 + x2 3.

r = x x2 2 + x2 3. Przestrze«aniczna Def. 1. Przestrzeni aniczn zwi zan z przestrzeni liniow V nazywamy dowolny niepusty zbiór P z dziaªaniem ω : P P V (które dowolnej parze elementów zbioru P przyporz dkowuje wektor z przestrzeni

Bardziej szczegółowo

STRUKTURY DANYCH. dane wej±ciowe problemu, ewentualne dane po±rednie, dane wynikowe (czyli rozwi zanie problemu).

STRUKTURY DANYCH. dane wej±ciowe problemu, ewentualne dane po±rednie, dane wynikowe (czyli rozwi zanie problemu). STRUKTURY DANYCH Jak ju» zostaªo wspomniane, do rozwi zania ró»nego rodzaju problemów sªu» odpowiednie algorytmy (które implementujemy przy pomocy ró»nego rodzaju j zyków programowania wy»szego rz du).

Bardziej szczegółowo

Grafy i Zastosowania. 5: Drzewa Rozpinaj ce. c Marcin Sydow. Drzewa rozpinaj ce. Cykle i rozci cia fundamentalne. Zastosowania

Grafy i Zastosowania. 5: Drzewa Rozpinaj ce. c Marcin Sydow. Drzewa rozpinaj ce. Cykle i rozci cia fundamentalne. Zastosowania Grafy i Grafy i 5: Rozpinaj ce Spis zagadnie«grafy i i lasy cykle fundamentalne i wªasno±ci cykli i rozci przestrzenie cykli i rozci * : zastosowanie w sieciach elektrycznych minimalne * algorytm Kruskala*

Bardziej szczegółowo

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15 ARYTMETYKA MODULARNA Grzegorz Szkibiel Wiosna 2014/15 Spis tre±ci 1 Denicja kongruencji i jej podstawowe wªasno±ci 3 2 Systemy pozycyjne 8 3 Elementy odwrotne 12 4 Pewne zastosowania elementów odwrotnych

Bardziej szczegółowo

Temat: Problem najkrótszych cieek w grafach waonych, cz. I: Algorytmy typu label - setting.

Temat: Problem najkrótszych cieek w grafach waonych, cz. I: Algorytmy typu label - setting. Temat: Problem najkrótszych cieek w grafach waonych, cz. I: Algorytmy typu label - setting.. Oznaczenia i załoenia Oznaczenia G = - graf skierowany z funkcj wagi s wierzchołek ródłowy t wierzchołek

Bardziej szczegółowo

Programowanie i struktury danych 1 / 44

Programowanie i struktury danych 1 / 44 Programowanie i struktury danych 1 / 44 Lista dwukierunkowa Lista dwukierunkowa to liniowa struktura danych skªadaj ca si z ci gu elementów, z których ka»dy pami ta swojego nast pnika i poprzednika. Operacje

Bardziej szczegółowo

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15 ARYTMETYKA MODULARNA Grzegorz Szkibiel Wiosna 2014/15 Spis tre±ci 1 Denicja kongruencji i jej podstawowe wªasno±ci 3 2 Systemy pozycyjne 8 3 Elementy odwrotne 12 4 Pewne zastosowania elementów odwrotnych

Bardziej szczegółowo

Strategia "dziel i zwyciężaj"

Strategia dziel i zwyciężaj Strategia "dziel i zwyciężaj" W tej metodzie problem dzielony jest na kilka mniejszych podproblemów podobnych do początkowego problemu. Problemy te rozwiązywane są rekurencyjnie, a następnie rozwiązania

Bardziej szczegółowo

Algorytmy i Struktury Danych

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

Bardziej szczegółowo

Algorytmy i Struktury Danych

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

Bardziej szczegółowo

Egzaminy i inne zadania. Semestr II.

Egzaminy i inne zadania. Semestr II. Egzaminy i inne zadania. Semestr II. Poniższe zadania są wyborem zadań ze Wstępu do Informatyki z egzaminów jakie przeprowadziłem w ciągu ostatnich lat. Ponadto dołączyłem szereg zadań, które pojawiały

Bardziej szczegółowo

1 Bª dy i arytmetyka zmiennopozycyjna

1 Bª dy i arytmetyka zmiennopozycyjna 1 Bª dy i arytmetyka zmiennopozycyjna Liczby w pami ci komputera przedstawiamy w ukªadzie dwójkowym w postaci zmiennopozycyjnej Oznacza to,»e s one postaci ±m c, 01 m < 1, c min c c max, (1) gdzie m nazywamy

Bardziej szczegółowo

Drzewa poszukiwań binarnych

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

Bardziej szczegółowo

Programowanie wspóªbie»ne

Programowanie wspóªbie»ne 1 Zadanie 1: Bar Programowanie wspóªbie»ne wiczenia 6 monitory cz. 2 Napisz monitor Bar synchronizuj cy prac barmana obsªuguj cego klientów przy kolistym barze z N stoªkami. Ka»dy klient realizuje nast

Bardziej szczegółowo

Analiza algorytmów zadania podstawowe

Analiza algorytmów zadania podstawowe Analiza algorytmów zadania podstawowe 15 stycznia 2019 Zadanie 1 Zliczanie Zliczaj(n) 1 r 0 2 for i 1 to n 1 3 do for j i + 1 to n 4 do for k 1 to j 5 do r r + 1 6 return r P Jaka wartość zostanie zwrócona

Bardziej szczegółowo

WSTĘP DO INFORMATYKI. Drzewa i struktury drzewiaste

WSTĘP DO INFORMATYKI. Drzewa i struktury drzewiaste Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej WSTĘP DO INFORMATYKI Adrian Horzyk Drzewa i struktury drzewiaste www.agh.edu.pl DEFINICJA DRZEWA Drzewo

Bardziej szczegółowo

Grafy i Zastosowania. 11: Twierdzenia Minimaksowe. c Marcin Sydow. Wst p: Tw. Halla. Dualno± Zbiory niezale»ne. Skojarzenia c.d.

Grafy i Zastosowania. 11: Twierdzenia Minimaksowe. c Marcin Sydow. Wst p: Tw. Halla. Dualno± Zbiory niezale»ne. Skojarzenia c.d. 11: Twierdzenia Minimaksowe Spis zagadnie«wst p: Kojarzenie Maª»e«stw i i twierdzenia minimaksowe i pokrycia (Tw. Gallai) w grafach (tw. Berge'a) w grafach dwudzielnych (tw. Königa, ) Pokrycia macierzy

Bardziej szczegółowo