Algorytmy i struktury danych
|
|
- Bogna Antczak
- 5 lat temu
- Przeglądów:
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 Autor projektu: dr Andrzej Mróz (UMK) Projekt pn. Wzmocnienie potencjaªu dydaktycznego UMK w Toruniu w dziedzinach matematyczno-przyrodniczych
Bardziej szczegółowoElementy 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ółowoZadania 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ółowoc 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ółowo10a: 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ółowoRelacj 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ółowoPodstawy 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ółowoAlgorytmy 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ółowoTeoria 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ółowoPodstawowepoję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ółowoTeoria 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ółowoZad. 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ółowoMinimalne 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ółowoEgzaminy 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ółowoPodstawowe 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ółowoListy 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ółowoWstę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ółowoPorzą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ółowoc 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ółowoGrafy 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ółowoPodstawowe 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ółowoDrzewa 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ółowoMinimalne 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ółowoc 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ółowoWykª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ółowoc 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ółowoDrzewa 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ółowoEgzaminy 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ółowoSkrypt 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ółowoUniwersytet 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ółowoMosty 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ółowoAlgorytmy 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ółowoGrafy 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ółowoAnaliza 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ółowoWysokość 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ółowoW 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ółowoDrzewa 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ółowoAlgorytmy 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ółowoSortowanie 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ółowoAlgorytmy 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ółowoAlgorytmy 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ółowoc 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ółowoNajkró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ółowoTeoria 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ółowoTwierdzenie 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ółowoMinimalne 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ółowoWykª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ółowoAlgorytmy 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ółowo12: 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ółowoNajkró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ółowoWstę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ółowoRekurencyjne 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ółowoWykł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ółowoc 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ółowoWykł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ółowoListy, 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ółowoLab. 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ółowoSortowanie. 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ółowoGrafy. 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ółowoELEMENTARNA 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ółowoZASADY 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ółowoMetodydowodzenia 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ółowoMetoda 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ółowoWykł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ółowoWykł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ółowoGeometria 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ółowoMatematyka 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ółowoWykł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ółowoSzukanie 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ółowo1) 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ółowoDrzewa 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ółowoWstę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ółowoSortowanie 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ółowoWektory 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ółowoprowadzą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ółowoProgramowanie 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ółowoZdzisª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ółowoDrzewa 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ółowo1 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ółowoPrzypomnij 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ółowoA = 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ółowoWykª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ółowoAlgorytmy 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ółowor = 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ółowoSTRUKTURY 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ółowoGrafy 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ółowoARYTMETYKA 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ółowoTemat: 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ółowoProgramowanie 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ółowoARYTMETYKA 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ółowoStrategia "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ółowoAlgorytmy 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ółowoAlgorytmy 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ółowoEgzaminy 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ółowo1 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ółowoDrzewa 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ółowoProgramowanie 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ółowoAnaliza 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ółowoWSTĘ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ółowoGrafy 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