Technologie informacyjne -IX A. Matuszak 19 marca 2013 A. Matuszak Technologie informacyjne -IX Rekurencja A. Matuszak (2) Technologie informacyjne -IX
Gotowanie jajek na miękko weż czysty garnek włóż potrzebną ilość jajek nalej zimnej wody, tak aby przykryła jajka postaw na kuchence zaczekaj, aż woda zcznie wrzeć od momentu wrzenia gotuj jeszcze 2.5 minuty wyjmij jajka, ochłodź w zimnej wodzie jajka są gotowe do jedzenia Ciąg instrukcji, operacji A. Matuszak (3) Technologie informacyjne -IX 1: weź czysty garnek 2: włóż potrzebną ilość jajek 3: nalej zimnej wody, tak aby przykryła jajka 4:... 1: b 2 4ac 2: x 1 b 2a 3: x 2 b+ 2a 4:... 1:... 2: Znajdź najmniejszy pierwiastek równania kwadratowego 3:... A. Matuszak (4) Technologie informacyjne -IX
Schemat Hornera a n x n + a n 1 x n 1 + + a 2 x 2 + a 1 x + a 0 = (... ((a n x + a n 1 ) x + a n 2 ) x + + a 1 ) x + a 0 Wyszukiwanie binarne A. Matuszak (5) Technologie informacyjne -IX Zgadnij liczbę z przedziału 1...100 A. Matuszak (6) Technologie informacyjne -IX
Za dużo za mało (bisekcja) 3 =? 1 2 = 1 < 3 za mało, 2 2 = 4 > 3 za dużo 1 < 3 < 2 połowa: 1+2 2 = 1.5, 1.5 2 = 2.25 < 3 za mało 1.5 < 3 < 2 1.5+2 2 = 1.75, 1.75 2 = 3.0625 > 3 za dużo 1.5 < 3 < 1.75 1.5+1.75 2 = 1.625, 1.625 2 = 2.64.. < 3 za mało 1.625 < 3 < 1.75 1.625+1.75 2 = 1.6875, 1.6875 2 = 2.847.. < 3 za mało 1.6875 < 3 < 1.75 1.6875+1.75 2 = 1.71875,...... Sortowanie A. Matuszak (7) Technologie informacyjne -IX 51 5 77 35 12 15 Jedynie dwie wartości są widoczne możliwe są różne strategie (algorytmy) Sortowanie proste (min): 51 5 X X X X X 5 77 X X X X 5 X 35 X X X 5 X X 12 X X 5 X X X 15 5 51 77 35 12 15 A. Matuszak (8) Technologie informacyjne -IX
Sortowanie proste [ 151 5 77 35 12 15 ] [ 5 151 77 35 12 15 ] [ 5 12 77 35 151 15 ] przez scalanie A. Matuszak (9) Technologie informacyjne -IX A. Matuszak (10) Technologie informacyjne -IX
Sito Eratostenesa 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 A. Matuszak (11) Technologie informacyjne -IX Zapis algorytmu: pseudokod A. Matuszak (12) Technologie informacyjne -IX
Instrukcja warunkowa 1: b 2 4ac 2: if < 0 then 3: brak pierwiastków rzeczywistych 4: end if 5: if 0 then 6: x 1 b 2a 7: x 2 b+ 2a 8: end if Pętle A. Matuszak (13) Technologie informacyjne -IX 1: while lim x 0 f (x) ɛ do 2:... 3: end while 4:... 5: repeat 6:... 7: until warunek 8:... 9: for i = 1 do n co 5 do 10:... 11: end for A. Matuszak (14) Technologie informacyjne -IX
Wyszukiwanie binarne 1: Wyszukiwanie binarne(d,g,s) 2: while g d > 0 do 3: p (g+d)/2 4: if p > s then 5: g p 6: else 7: d p 8: end if 9: end while 27 [1 5 17 35 62 151] A. Matuszak (15) Technologie informacyjne -IX while warunek do... if przypadek A then... else... repeat... until kryterium... end if end while... for i = 1 do n co 5 do... end for A. Matuszak (16) Technologie informacyjne -IX
Euklidesa (NWD) 1: Euklides(a,b) 2: 3: r (a mod b) 4: while r > 0 do 5: a b 6: b r 7: r (a mod b) 8: end while 9: Wynik: b A. Matuszak (17) Technologie informacyjne -IX Rekurencja y rekurencyjne A. Matuszak (18) Technologie informacyjne -IX
Rekurencja Rekurencja (Rekursja) Rekurencja albo rekursja (ang. recursion, z łac. recurrere, przybiec z powrotem) to w programowaniu i w matematyce odwoływanie się funkcji (sformułowania) do samej siebie. Matematyka A. Matuszak (19) Technologie informacyjne -IX Rekurencja Ciąg geometryczny x n = k x n 1 Silnia n! = 1 2 n 1 n n! = n (n 1)! A. Matuszak (20) Technologie informacyjne -IX
Rekurencja Programowanie rekurencyjne function y=silnia(n) if (n==0) (n==1)) y=1; else y= n*silnia(n-1); endif endfunction x n A. Matuszak (21) Technologie informacyjne -IX Rekurencja x n = x 0 = 1 x p 1 = x p x 2p+1 = x x 2p x 2p = (x x) p wykładnik liczba potęgi mnożeń 1 2 10 6 100 10 1000 16 10000 19 A. Matuszak (22) Technologie informacyjne -IX
Rekurencja Stos 2 5 8 1 4 2 2 2 4 A. Matuszak (23) Technologie informacyjne -IX Rekurencja Ciąg Fibonacciego F (n) = F (0) = 1 F (1) = 1 F (n) = F (n 1) + F (n 2) A. Matuszak (24) Technologie informacyjne -IX
Rekurencja function y=ifibb(n) foo=1; fo=1; f=1; for i=2:n f=foo+fo; foo=fo; fo=f; endfor y=f; endfunction function y=rfibb(n) if (n<2) y=1; else y=rfibb(n-1)+rfibb(n-2); endif endfunction A. Matuszak (25) Technologie informacyjne -IX Rekurencja Drzewo wywołań A. Matuszak (26) Technologie informacyjne -IX
Rekurencja Każde zadanie sformułowne rekurencyjnie można zaprogramować iteracyjnie i na odwrót A. Matuszak (27) Technologie informacyjne -IX Dobry algorytm A. Matuszak (28) Technologie informacyjne -IX
A. Matuszak (29) Technologie informacyjne -IX A. Matuszak (30) Technologie informacyjne -IX
Cechy dobrego algorytmu niezawodny, zbieżny powinien zawsze dawać wyniki niezależnie od danych stabilny (numerycznie) zaburzenia w procesie rozwiązania (np. zaokrąglenia) nie powinny wpływać na wynik końcowy szybki wynik powinien być uzyskiwany jak najszybciej Zadanie z kulami A. Matuszak (31) Technologie informacyjne -IX Dane jest n kul identycznych co do wyglądu, z których dokładnie jedna lżejsza niż pozostałe. Mamy do dyspozycji wagę szalkową. Znaleźć lżejszą kulę używając najmniejszej możliwej liczby ważeń. A. Matuszak (32) Technologie informacyjne -IX
Iloczyn skalarny wektorów [a 1 a 2... a n ] [b 1 b 2... b n ] T n mnożeń i n 1 dodawań A. Matuszak (33) Technologie informacyjne -IX Iloczyn macierzy przez wektor a 11 a 12... a 1n a 21 a 22... a 2n............ a n1 a n2... a nn x 1 x 2... x n n 2 mnożeń i (n 1)n dodawań A. Matuszak (34) Technologie informacyjne -IX
Schemat Hornera (znowu) a n x }{{} n + a n 1 x n 1 }{{} n mnożeń n-1 mnożeń + + a 2 x 2 }{{} 2 mnożenia + a 1 x }{{} +a 0 1 mnożenie n + (n 1) + + 2 + 1 = 1 2 (n2 + n) mnożeń i n dodawań (n + 1)n 2 = 1 2 n2 + 1 2 n (... ((a n x + a n 1 ) x + a n 2 ) x + + a 1 ) x + a 0 n mnożeń i n dodawań A. Matuszak (35) Technologie informacyjne -IX Złożoność obliczeniowa (I) Rząd złożoności: f (n) = O(g(n)) istnieje stała c : f (n) cg(n) 1 2 n2 + 3 2 n O(n2 ) Asymptotyczność oszacowania!! (algorytm Strassena mnożenia macierzy O(n log n)) A. Matuszak (36) Technologie informacyjne -IX
(Czasowa) Złożoność obliczeniowa (II) Dominująca operacja pesymistyczna złożoność czasowa oczekiwana złożoność czasowa Wyszukiwanie binarne A. Matuszak (37) Technologie informacyjne -IX Niech n = 2 k (oszacowanie) { T (1) = 1 T (n) = T ( n 2 ) + c T (n) = T (2 k ) = T (2 k 1 )+c = T (2 k 2 )+c+c = = T (2 0 )+kc k = log 2 n T (n) = c log 2 n + 1 O(log 10 n) A. Matuszak (38) Technologie informacyjne -IX
Popularne rzędy log n zadanie rozmiaru n zostaje sprowadzone do zadania rozmiaru n/2 plus pewna stała liczba działań n złożoność liniowa (schemat Hornera, przeszukiwanie ciągu) n log n złożoność liniowo logarytmiczna (mergesort) n 3 n 4...n p n 2 złożoność kwadratowa (rozwiązywanie układu równań) złożoności wielomianowe (odwracanie macierzy) 2 n złożoność wykładnicza n! złożoność wykładnicza n! A. Matuszak (39) Technologie informacyjne -IX A. Matuszak (40) Technologie informacyjne -IX
Dwa ciągi w postaci rekurencyjnej: 1. x n+1 = x2 n +2 5 2. x n+1 = x n x2 n +5x n +2 2x n +5 = x2 n 2 2x n +5 Dla początkowego x 0 = 0 oba zmierzają do tej samej granicy: g = lim x n = 5 + 17 n 2 0.43847187 A. Matuszak (41) Technologie informacyjne -IX n x n+1 = x2 n +2 5 x n+1 = x2 n 2 2x n +5 0 0 0 1-0.4-0.4 2-0.4320000000000001-0.4380952380952381 3-0.4373248-0.4384471571538546 4-0.438250596139008-0.4384471871911695 5-0.4384127170032392 6-0.4384411420860325 7-0.4384461270147409.... 15-0.4384471871902209 16-0.4384471871910033 17-0.4384471871911406 18-0.4384471871911647 19-0.4384471871911688 20-0.4384471871911695 A. Matuszak (42) Technologie informacyjne -IX
n e n = g x n e n = g x n 0-4.384e-01-4.384e-01 1-3.845e-02-3.845e-02 2-6.447e-03-3.519e-04 3-1.122e-03-3.004e-08 4-1.966e-04-1.665e-16 5-3.447e-05 6-6.045e-06 7-1.060e-06.... 15-9.489e-13 16-1.664e-13 17-2.914e-14 18-5.052e-15 19-8.882e-16 20-1.665e-16 A. Matuszak (43) Technologie informacyjne -IX (II) Ciąg przybliżeń rozwiązania: x 0, x 1, x 2... r błąd rozwiązania: e n = x n r zbieżność kwadratowa: e n+1 C e 2 n zbieżność liniowa: e n+1 C e 1 n A. Matuszak (44) Technologie informacyjne -IX
Koszt flops: Floating Point OperationS (Floating Points Operations per Second) ciąg 1: ciąg 2: 20 3 = 60 flops 4 5 = 20 flops A. Matuszak (45) Technologie informacyjne -IX