Algorytmy i Struktury Danych.

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

Download "Algorytmy i Struktury Danych."

Transkrypt

1 Algorytmy i Struktury Danych. Rekurencja dr hab. Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 3 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 1 / 61

2 Rekurencja I Rekurencja polega na rozwiazywaniu problemu w oparciu o rozwiazania tego samego problemu dla danych o mniejszych rozmiarach. W informatyce rekurencja jest technika programistyczna, polegajac a na wywoływaniu funkcji wewnatrz niej samej. Rekurencja jest jedna z najbardziej interesujacych technik programistycznych i to w dodatku technika zaskakujaco efektywna. Rekurencyjny opis obliczeń jest na ogół bardziej zwarty niż opis tych samych obliczeń bez użycia rekurencji. Taki opis jest stosowany np. przy opisie fraktali. Niektóre rozwiazania rekurencyjne moga być nieefektywne. W takich przypadkach można je zastapić rozwiazaniami wykorzystujacymi zwyczajna petle lub stos. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 2 / 61

3 Rekurencja II Funkcja rekurencyjna cyklicznie wywołuje sama siebie, za każdym razem przekazujac w wywołaniu inne argumenty. Przekazanie argumentu o pewnej wartości powoduje, że funkcja kończy działanie bez kolejnego wywołania samej siebie. Sytuacja ta jest nazywana przypadkiem bazowym. Gdy najbardziej wewnętrzne wywołanie funkcji zostaje zakończone, rozpoczyna się proces zakańczania kolejnych wywołań, który w końcu doprowadza do zakonczenia poczatkowego wywołania. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 3 / 61

4 Indukcja matematyczna Programowanie rekurencyjne jest bezpośrednio zwiazana z indukcja matematyczna - technika dowodzenia własności funkcji dyskretnych. Udowodnienie, że pewne twierdzenie odwołujace się do liczby całkowitej N jest prawdziwe dla nieskończenie wielu wartości N przy pomocy indukcji matematycznej składa się z dwóch etapów: Przypadek bazowy - udowadniamy, że twierdzenie jest prawdziwa dla jakiejś określonej wartości (zwykle 0 lub 1). Krok indukcyjny - główna częścia dowodu. Zazwyczaj zakładamy, że twierdzenie jest prawdziwe dla wszystkich liczb całkowitych dodatnich mniejszych niż N, a następnie wykorzystujac ten fakt, udowodniamy, że jest prawdziwe dla N. Taki dowód jest wystarczajacy, aby wykazać, że twierdzenie jest prawdziwe dla wszystkich N. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 4 / 61

5 Rozważane problemy rekurencyjne Funkcja silnia - Hello word dla rekurencji :) Algorytm Euklidesa Liczba trójkatna Potęgi liczby naturalnej a Ciag Fibonacciego Wieże Hanoi Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 5 / 61

6 Funkcja silnia n! = n Algorytm iteracyjny: Require: Liczba n 1: i = 1; 2: silnia = 1; 3: while i <= n do 4: silnia = silnia * i; 5: i= i+1; 6: end while 7: return silnia; Złożoność czasowa: Θ(n). long long factorial(int n) { if (n==0) return 1; int i = 1; long long s = 1; while (i <= n) s *= i++; return s; } Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 6 / 61

7 Funkcja silnia - wersja rekurencyjna silnia(n) = { 1 dla n = 0 Przypadek bazowy n silnia(n 1) dla n > 0 Krok redukcji Kod C++: long long silnia(int n) { if (n==0) return 1; return n*silnia(n-1); } Ślad obliczeń: silnia(4) silnia(3) silnia(2) silnia(1) silnia(0) return 1 return 1*1 = 1 return 2*1 = 2 return 3*2 = 6 return 4*6 = 24 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 7 / 61

8 Czasowa złożoność obliczeniowa T (n) - czas potrzebny do wykonania funkcji silnia (n) dla dowolnego wejścia o rozmiarze n. Przypadek bazowy: T (0) = 1 (jednostkowy czas pracy, gdy algorytm działa na wejściu wielkości 1); Krok indukcyjny: Dla wejścia o rozmiarze n, algorytm wykonuje pracę jednostkowa realizujac operacje porównania, mnożenia (tj. n silnia(n 1)) oraz zwrotu wartości, a następnie wywołuje sam siebie dla wejścia o rozmiarze n 1. Zatem otrzymujemy następujace równanie: T (n) = T (n 1) + 1 dla n > 0. Jeśli rozwiniemy rekurencję otrzymujemy: T (0) = 1, T (1) = T (0) + 1 = = 2 T (2) = T (1) + 1 = = 3, T (3) = T (2) + 1 = = 4 T (4) = T (3) + 1 = = 5,..., T (n) = n + 1 Zatem T (n) = Θ(n). Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 8 / 61

9 Największy Wspólny Dzielnik - Algorytm Euklidesa Wejście: dwie liczby naturalne a, b. Wyjście: największy wspólny dzielnik liczb a i b. Rozwiazanie rekurencyjne: { NWD(a, b) = a dla b = 0 NWD(b, a mod b) dla b > 0 Euklides z Aleksandrii ok p.n.e. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 9 / 61

10 Największy Wspólny Dzielnik - kod C++ //wersja rekurencyjna long long NWD(int a, int b) { if (b==0) return a; else return NWD(b,a%b); } //wersja iteracyjna long long NWD2(int a, int b) { while (b!= 0) { int temp = b; b = a % b; a = temp; } return a; } Ślad obliczeń nwd(1440, 408) nwd(408, 216) nwd(216, 192) nwd(192, 24) nwd(24, 0) return 24 return 24 return 24 return 24 return 24 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 10 / 61

11 Złożoność czasowa NWD Twerdzenie: Gabriel Lamé, 1844 Dla n 1, niech u i v będa liczbami całkowitymi takimi, że u > v > 0 oraz algorytm euklidesa zastosowany do u i v wymaga dokładnie n dzieleń oraz u jest najmniejsza możliwa wartościa spełniajacych te warunki. Wówczas u = F(n + 2) oraz v = F(n + 1), gdzie F(k) jest liczba Fibonacciego a. Ponadto, liczba kroków algorytmu Euklidesa nie przekracza wartości 5 razy ilość cyfr w mniejszej liczbie. a (D. Knuth. The Art of Computer Programming, Tom. 2, Addison-Wesley, 1998., str. 343) Ograniczenie 5 może być dalej zmniejszone do ln(10)/lnφ, gdzie (φ = = ) jest złotym podziałem. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 11 / 61

12 Złożoność czasowa NWD Przykład: Niech a = 3 a b = 2. Algorytm NWD wykonał 2 obroty, aby obliczyć NWD z a i b: NWD(3, 2) = NWD(2, 1) = NWD(1, 0) = 1 Ograniczenie zgodne z Tw. Gabriel Lamé: 5 1 = 5 Ulepszone ograniczenie: 1 ln(10)/ln(1.62) = 4, 77 Przykład: Niech a = 8 a b = 5. Algorytm NWD wykonał 4 obroty, aby obliczyć NWD z a i b: NWD(8, 5) = NWD(5, 3) = NWD(3, 2) = NWD(2, 1) = NWD(1, 0) = 1 Ograniczenie zgodne z Tw. Gabriel Lamé: 5 1 = 5 Ulepszone ograniczenie: 1 ln(10)/ln(1.62) = 4, 77 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 12 / 61

13 Złożoność czasowa NWD Przykład: Niech a = 55 a b = 34. Algorytm NWD wykonał 8 obrotów, aby obliczyć NWD z a i b: NWD(55, 34) = NWD(34, 21) = NWD(21, 13) = NWD(13, 8) = NWD(8, 5) = NWD(5, 3) = NWD(3, 2) = NWD(2, 1) = NWD(1, 0) = 1 Ograniczenie zgodne z Tw. Gabriel Lamé: 5 2 = 10 Ulepszone ograniczenie: 2 ln(10)/ln(1.62) = 2 4, 77 = 9, 54 Niech a = 89 a b = 55. Algorytm NWD wykonał 9 obrotów, aby obliczyć NWD z a i b: NWD(89, 55) = NWD(55, 34) = NWD(34, 21) = NWD(21, 13) = NWD(13, 8) = NWD(8, 5) = NWD(5, 3) = NWD(3, 2) = NWD(2, 1) = NWD(1, 0) = 1. Ograniczenie zgodne z Tw. Gabriel Lamé: 5 2 = 10 Ulepszone ograniczenie: 2 ln(10)/ln(1.62) = 2 4, 77 = 9, 54 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 13 / 61

14 Złożoność czasowa NWD Przykład: Niech a = 144 a b = 55. Algorytm NWD wykonał 9 obrotów, aby obliczyć NWD z a i b: NWD(144, 55) = NWD(55, 34) = NWD(34, 21) = NWD(21, 13) = NWD(13, 8) = NWD(8, 5) = NWD(5, 3) = NWD(3, 2) = NWD(2, 1) = NWD(1, 0) = 1 Ograniczenie zgodne z Tw. Gabriel Lamé: 5 2 = 10 Ulepszone ograniczenie: 2 ln(10)/ln(1.62) = 2 4, 77 = 9, 54 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 14 / 61

15 Liczby trójkatne Liczby trójkatne: 1, 3, 6, 10, 15, 21, itd.. n-ty element ciagu otrzymujemy poprzez dodanie liczby n do poprzedniego elementu ciagu, tj.: drugi element ciagu to 2 plus wartość pierwszego elementu (czyli 1), co daje 3. trzeci element ciagu to 3 plus 3 (wartość drugiego elementu), co daje 6; itd. Liczby trójkatne można przedstawić za pomoca odpowiedniej ilości obiektów (kulek, pudełek, itp.) rozmieszczonych w formie trójkata: Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 15 / 61

16 Algorytm obliczajacy n-ta liczbę trójkatn a Algorytm: triangle (n) 1: if n< 1 then 2: return 0; 3: end if 4: if n==1 then 5: return 1; 6: else 7: return n+ triangle(n - 1); 8: end if //wersja rekurencyjna int triangle (int n) { if (n<1) return 0; if (n==1) return 1; else return n+triangle(n-1); } //wersja iteracyjna int triangle2 (int n) { int total = 0; while (n>0) { total += n--; } return total; } Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 16 / 61

17 Algorytm obliczajacy n-ta liczbę trójkatn a Algorytm: triangle (n) 1: if n< 1 then 2: return 0; 3: end if 4: if n==1 then 5: return 1; 6: else 7: return n+ triangle(n - 1); 8: end if Ślad obliczeń triangle(4) triangle(3) triangle(2) triangle(1) return 1 return 2+1=3 return 3+3=6 return 4+6=10 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 17 / 61

18 Czasowa złożoność obliczeniowa T (n) - czas potrzebny do wykonania funkcji triangle (n) dla dowolnego wejścia o rozmiarze n. Przypadek bazowy: T (1) = 1 (jednostkowy czas pracy, gdy algorytm działa na wejściu wielkości 1); Krok indukcyjny: Dla wejścia o rozmiarze n, algorytm wykonuje pracę jednostkowa realizujac operacje porównania, dodawania (tj. n + triangle(n 1)) oraz zwrotu wartości, a następnie wywołuje sam siebie dla wejścia o rozmiarze n 1. Zatem otrzymujemy następujace równanie: T (n) = T (n 1) + 1 dla n > 0. Jeśli rozwiniemy rekurencję otrzymujemy: T (0) = 1, T (1) = T (0) + 1 = = 2 T (2) = T (1) + 1 = = 3, T (3) = T (2) + 1 = = 4 T (4) = T (3) + 1 = = 5,..., T (n) = n + 1 Zatem T (n) = Θ(n). Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 18 / 61

19 Rekurencja - obliczanie a n a n = pow(a, n) = { 1 dla n = 0 a pow(a, n 1) dla n > 0 long long pow(int a, int n) { if (n==0) return 1; else return a*pow(a,n-1); } Ślad obliczeń pow(2,3) pow(2,2) pow(2,1) pow(2,0) return 1. return 2*1 = 2 return 2*2 = 4 return 2*4 =8 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 19 / 61

20 Czasowa złożoność obliczeniowa T (n) - czas potrzebny do wykonania funkcji pow(a,n) dla dowolnego wejścia o rozmiarze n. Przypadek bazowy: T (0) = 1 (jednostkowy czas pracy, gdy algorytm działa na wejściu wielkości 1); Krok indukcyjny: Dla wejścia o rozmiarze n, algorytm wykonuje pracę jednostkowa realizujac operacje porównania, mnożenia (tj. a pow(a, n 1)) oraz zwrotu wartości, a następnie wywołuje sam siebie dla wejścia o rozmiarze n 1. Zatem otrzymujemy następujace równanie: T (n) = T (n 1) + 1 dla n > 0. Jeśli rozwiniemy rekurencję otrzymujemy: T (0) = 1, T (1) = T (0) + 1 = = 2 T (2) = T (1) + 1 = = 3, T (3) = T (2) + 1 = = 4 T (4) = T (3) + 1 = = 5,..., T (n) = n + 1 Zatem T (n) = Θ(n). Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 20 / 61

21 Ciag Fibonacciego Liczby naturalne tworzace ciag o takiej własności, że kolejny wyraz (z wyjatkiem dwóch pierwszych) jest suma dwóch poprzednich nazywa się liczbami Fibonacciego. Poczatkowe wartości tego ciagu to: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,... Ciag Fibonacciego zawdzięcza swoja nazwę włoskiemu matematykowi z Pizy, Leonardowi, który pod nazwiskiem Fibonacci wydał w 1202 roku słynna księgę Liber Abaci zawierajac a opis tego ciagu jako rozwiazanie zadania o rozmnażaniu się królików. Ojciec Leonarda nosił przydomek Bonacci, stad syn został Fibonaccim (filius Bonacci - syn dobrotliwego). Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 21 / 61

22 Ciag Fibonacciego - rozmnażanie królików Zadanie Fibonacciego: Ile par królików może spłodzić jedna para w ciagu roku, jeśli: każda para rodzi nowa parę w ciagu miesiaca, para staje się płodna po miesiacu, króliki nie umieraja. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 22 / 61

23 Ciag Fibonacciego - rozmnażanie królików Na poczatku 1 para: Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 23 / 61

24 Ciag Fibonacciego - rozmnażanie królików Na poczatku 1 para: W pierwszym miesiacu ta sama 1 para (po 1 miesiacu króliki sa zdolne do rozrodu): Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 23 / 61

25 Ciag Fibonacciego - rozmnażanie królików Drugi miesiac - para wydała na świat nowa parę królików. Sa więc - 2 pary królików Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 24 / 61

26 Ciag Fibonacciego - rozmnażanie królików Trzeci miesiac - stara para (w pionie) wydała na świat kolejna parę królików. Para młoda (po prawej) nie jest jeszcze płodna. Sa teraz 3 pary królików Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 25 / 61

27 Ciag Fibonacciego - rozmnażanie królików Czwarty miesiac - para środkowa wydała na świat kolejna parę królików. Para po prawej wydała na świat 1 parę, a para po lewej jeszcze nie jest gotowa do rozrodu. Zatem mamy - 5 par królików. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 26 / 61

28 Ciag Fibonacciego - Złoty podział W wyniku podzielenia każdej z liczb ciagu przez jej poprzednik otrzymuje się iloraz oscylujacy wokół 1, liczby złotego podziału. W miarę zwiększania się liczb zmniejszaja się odchylenia od tej wartości. Dokładna wartość granicy jest złota liczba: Φ = = 1, Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 27 / 61

29 Ciag Fibonacciego - Złoty podział W wyniku podzielenia każdej z liczb ciagu przez jej poprzednik otrzymuje się iloraz oscylujacy wokół 1, liczby złotego podziału. W miarę zwiększania się liczb zmniejszaja się odchylenia od tej wartości. Dokładna wartość granicy jest złota liczba: Φ = = 1, /144 = /89 = /55 = /34 = /21 = /13 = Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 27 / 61

30 Ciag Fibonacciego - Złoty podział W wyniku podzielenia każdej z liczb ciagu przez jej następnik otrzymuje się iloraz oscylujacy wokół 0, liczby złotego podziału. W miarę zwiększania się liczb zmniejszaja się odchylenia od tej wartości. Dokładna wartość granicy jest złota liczba: 5 1 Φ = = 0, Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 28 / 61

31 Ciag Fibonacciego - Złoty podział W wyniku podzielenia każdej z liczb ciagu przez jej następnik otrzymuje się iloraz oscylujacy wokół 0, liczby złotego podziału. W miarę zwiększania się liczb zmniejszaja się odchylenia od tej wartości. Dokładna wartość granicy jest złota liczba: 5 1 Φ = = 0, /233 = /144 = /89 = /55 = /34 = /21 = Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 28 / 61

32 Ciag Fibonacciego - Złoty podział Złoty podział (łac. sectio aurea), podział harmoniczny, złota proporcja, boska proporcja (łac. divina proportio) - podział odcinka na dwie części tak, by stosunek długości dłuższej z nich do krótszej był taki sam, jak całego odcinka do części dłuższej. Φ = a + b a = a b Złotymi proporcjami wyznaczonymi na podstawie ciagu Fibonacciego posługiwał się w swoim malarstwie Leonardo da Vinci i Botticelli. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 29 / 61

33 Ciag Fibonacciego - gdzie go można znaleźć? Ciag Fibonacciego można odnaleźć w wielu aspektach przyrody, ciag taki opisuje np. liczbę pędów rośliny jednostajnie przyrastajacej w latach. W słoneczniku możemy zaobserwować dwa układy linii spiralnych, wychodzacych ze środka. Liczba linii rozwijajacych się zgodnie z ruchem wskazówek zegara wynosi 55 i tylko 34 skręconych w przeciwna stronę. Takie same spirale można zaobserwować na wielu innych roślinach (np. kalafior, ananas). Liczby spiral występujacych w tych roślinach sa kolejnymi liczbami Fibonacciego. Źródło: Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 30 / 61

34 Ciag Fibonacciego - spirala 0 if n = 0 F(n) = 1 if n = 1 f (n 1) + f (n 2) if n 2 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 31 / 61

35 Ciag Fibonacciego - algorytm rekurencyjny Definicja rekurencyjna: F(0) = 0, F(1) = 1 F(n) = F(n 1) + F(n 2), dla n 2 Algorytm: FIB (n) 1: if n == 0 or n == 1 then 2: return n; 3: end if 4: return FIB(n 2) + FIB(n 1); Złożoność obliczeniowa: Równanie opisujace zachowanie algorytmu: T (n) = T (n 1) + T (n 2) + Θ(1) dla n > 1 oraz T (0) = T (1) = 1. Rozwiazanie T (n) = Θ(φ n ), gdzie φ = , 6 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 32 / 61

36 Ciag Fibonacciego - drzewo wywołań F(5) F(4) F(3) F(2) F(3) F(2) F(1) F(1) F(0) F(2) F(1) F (1) F(0) F(1) F(0) Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 33 / 61

37 Efektywność rekurencyjnego wykonania funkcji Fibonacciego n Liczba dodawań Liczba wywołań Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 34 / 61

38 Ciag Fibonacciego - algorytm iteracyjny Require: Liczba n {F 0,..., F n 1, F n } Algorytm: FIB (n) 1: if n < 2 then 2: return n; 3: else 4: f 0 = 0; 5: f 1 = 1; 6: for i = 2 n do 7: m = f 0 + f 1; 8: f 0 = f 1; 9: f 1 = m; 10: end for 11: end if 12: return m; Złożoność obliczeniowa: Θ(n) Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 35 / 61

39 Efektywność iteracyjnego wykonania funkcji Fibonacciego Liczba przypisań Liczba wywołań n algorytm iteracyjny algorytm rekurencyjny Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 36 / 61

40 Wieże Hanoi Definicja problemu Dane: trzy pale A, B i C oraz N krażków o różnych średnicach. Warunki poczatkowe: Na jeden z pali, np. na A, nałożono krażki tak, że krażek mniejszy nie leży pod wiekszym. Pale B i C sa puste. Problem: Przenieść wszystkie krażki z pala A na C przy założeniu, że: można używać B jako pomocnicze miejsce przechowywania. nie można kłaść krażków wiekszych na mniejsze. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 37 / 61

41 Wieże Hanoi - rozwiazanie rekurencyjne /* Przenosi n dyskow na lewo ( gdy left = true) lub prawo (gdy left = false) Wywolanie: moves(n, true); */ void moves(int n, bool left){ if (n == 0) return; moves(n-1,!left); if (left) cout<<n<< " left" << endl; else cout<<n<< " right"<<endl; moves(n-1,!left); } Ślad wykonania moves(2, true) moves(1, false) moves(0, false) return; 1 right moves(0, true) return; 2 left moves(1, false) moves(0, true) return; 1 right moves (0,false) return; Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 38 / 61

42 Wieże Hanoi - wykonanie dla n = 2, 3, right 2. 2 left 3. 1 right 1. 1 left 2. 2 right 3. 1 left 4. 3 left 5. 1 left 6. 2 right 7. 1 left 1. 1 right 2. 2 left 3. 1 right 4. 3 right 5. 1 right 6. 2 left 7. 1 right 8. 4 left 9. 1 right left right right right left right Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 39 / 61

43 Złożoność obliczeniowa Wież Hanoi T(n) - czas potrzebny do wykonania funkcji Hanoi(n) dla dowolnego wejścia o rozmiarze n. Algorytm rekurencyjny realizujacy problem Wież Hanoi (czyli przeniesienie n krażków z jednego palika na drugi z zachowaniem pewnych zasad) implikuje, że T (n) musi spełniać następujace równanie: T (n) = 2 T (n 1) + 1 dla n > 1 oraz T (1) = 1 Przykładowo: T (1) = 1, T (2) = 3, T (3) = 7, T (4) = 15. W ogólności: T (n) = 2 n 1 = Θ(2 n ) Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 40 / 61

44 Wieże Hanoi - algorytm iteracyjny Niech A oznacza pal źródłowy, B pal pomocniczy, C pal docelowy oraz n będzie liczba dysków. 1 numofmoves= pow(2,n) if (n%2 == 0) then zamień miejscami pale $B$ i $C$. 3 for i = 1 to numofmoves do if (i%3 == 1) then przenieś górny dysk z A na C if i%3 == 2 then przenieś górny dysk z A na B if i%3 == 0 then przenieś górny dysk z B na C endfor Złóżoność obliczeniowa: Θ(2 n ) Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 41 / 61

45 Pułapki rekursji - brakujacy przypadek bazowy double H(int n) { return H(n-1) + 1.0/n; } Ślad wykonania H(4), H(3), H(2), H(1), H(0), (-1),... Funkcja raz wywołana będzie wywoływać siebie w nieskończoność. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 42 / 61

46 Pułapki rekursji - brak gwarancji konwergencji double H(int n) { if (n == 1) return 1.0; return H(n) + 1.0/n; } Ślad wykonania H(4), H(4), H(4), H(4),... H(1) return 1.0 Funkcja wywołana dla n = 1 zwróci wartość 1 i zakończy sie, w każdym innym przypadku będzie wywoływać siebie w nieskończoność. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 43 / 61

47 Pułapki rekursji - wadliwy warunek bazowy long H (int n){ if (n == 1) return 1; else if (n % 2 == 0) return H(n-2)*n; else return H(n-1)*n; } Ślad wykonania H(1) return 1 H(5), H(4), H(2), H(0),... H(6), H(4), H(2), H(0),... Funkcja wywołana dla n = 1 zwróci wartość 1 i zakończy sie, w każdym innym przypadku będzie wywoływać siebie w nieskończoność. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 44 / 61

48 Pułapki rekursji - nadmierne wymagania pamięciowe double H(int n) { if (n == 0) return 0.0; return H(n-1) + 1.0/n; } Funkcja rekurencyjna H poprawnie oblicza n-ta liczbę harmoniczna. Jednakże, nie można jej używać dla dużych n, gdyż głębokość rekurencji jest proporcjonalna do n, a to powoduje przepełnienie stosu programu już przy n = double H1(int n) { double suma = 0.0; while (n!=0){ suma+= 1.0/n; n--; } return suma; } Funkcja nierekurencyjna H1 również poprawnie oblicza n-ta liczbę harmoniczna imożna ja stosować dla dużych n. Przykładowo, dla n = Uzyskaliśmy wartość w czasie 1 sek. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 45 / 61

49 Fraktale Fraktale, czyli jak piękna może być matematyka i rekurencja! Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 46 / 61

50 Zbiory Julii - Gaston Julia F(0) = p; F(n + 1) = F(n) 2 + c; gdzie: p - punkt płaszczyzny c - liczba zespolona będaca parametrem zbioru. Dla różnych c otrzymujemy różne zbiory. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 47 / 61

51 Zbiory Mandelbrota (fraktalne żółwie) F(0) = (0, 0); F(n + 1) = F(n) 2 + c; gdzie: c - liczba zespolona będaca parametrem zbioru. Dla różnych c otrzymujemy różne zbiory. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 48 / 61

52 Fraktale Najstarsze fraktale wymyślili matematycy na poczatku XX-wieku, w wyniku zmagań z definicja wymiaru i krzywej. Najwybitniejszym twórca fraktali jest amerykański matematyk i informatyk polskiego pochodzenia - Benoit Mandelbrot. Na międzynarodowym kongresie matematyków w Warszawie w roku 1983 stwierdził, że jest jeszcze za wcześnie na formułowanie ścisłej definicji fraktala ponieważ nie znamy dostatecznie głęboko istoty tego pojęcia. Źródło: wikipedia.org/wiki/ Benoit_Mandelbrot Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 49 / 61

53 Czym jest fraktal? Fraktalem jest wszystko... Benoit Mandelbrot Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 50 / 61

54 Czym jest fraktal? Fraktalem jest wszystko... Benoit Mandelbrot Fraktal jest figura geometryczna o złożonej strukturze, nie będaca krzywa, powierzchnia ani bryła w rozumieniu klasycznej matematyki; charakteryzuje ja ułamkowy wymiar (stad nazwa fraktal -ang. fraction ułamek, łac. fractus złamany). Fraktale sa bardzo skomplikowane. Dopiero komputery umożliwiły ich głębsze poznanie. Wielu badaczy twierdzi, że geometria fraktali jest geometria przyrody. Fraktale dały poczatek nowej geometrii zwanej geometria fraktalna, która pozwala modelować wiele obiektów i zjawisk występujacych w przyrodzie i nie tylko... Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 50 / 61

55 Cechy fraktali Fraktale maja cechę samopodobieństwa. Nie sa określone wzorem matematycznym, tylko zależnościa rekurencyjna. Sa obiektami których wymiar nie jest liczba całkowita. Każdy fraktal można w nieskończoność przybliżać. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 51 / 61

56 Cechy fraktali Fraktale maja cechę samopodobieństwa. Nie sa określone wzorem matematycznym, tylko zależnościa rekurencyjna. Sa obiektami których wymiar nie jest liczba całkowita. Każdy fraktal można w nieskończoność przybliżać. Kalafior Brokuł Drzewo Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 51 / 61

57 Zbiór Georga Cantora ( ) Pierwsze fraktale powstały na przełomie XIX i XX wieku. Ich twórcami byli matematycy: Georg Cantor, David Hilbert, Helge von Koch oraz Wacław Sierpiński. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 52 / 61

58 Zbiór Georga Cantora ( ) Pierwsze fraktale powstały na przełomie XIX i XX wieku. Ich twórcami byli matematycy: Georg Cantor, David Hilbert, Helge von Koch oraz Wacław Sierpiński. W roku 1883 Georg Cantor zaproponował prosta konstrukcję, w wyniku której otrzymuje się zbiór nazwany jego imieniem. Konstrukacja: Odcinek [0, 1] dzielimy na trzy równe części i usuwamy środkowa. Z pozostałymi dwoma odcinkami postępujemy analogicznie. W konsekwencji takiego postępowania w granicy nieskończonej ilości kroków powstaje zbiór punktów Cantora. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 52 / 61

59 Krzywa Kocha - Helge von Koch ( ) W 1904 roku szwedzki matematyk Helge von Koch zaproponował konstrukcję nazywana potocznie płatkiem śniegu. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 53 / 61

60 Krzywa Kocha 1 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 54 / 61

61 Krzywa Kocha 1 2 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 54 / 61

62 Krzywa Kocha 3 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 55 / 61

63 Krzywa Kocha 3 4 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 55 / 61

64 Krzywa Kocha 0) 1) 2) 3) 4) Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 56 / 61

65 Dywan Sierpińskiego W 1916 roku Wacław Sierpiński ( ) rozszerzył zbiór Cantora na dwa wymiary. Kwadrat jednostkowy dzielimy na dziewięć i wyrzucamy środkowy. Postępujemy tak z każdym nowo powstałym kwadratem. Powstały fraktal nazywany dywanem Sierpińskiego. Analogicznie można postapić z trójkatem, którego boki dzielimy na dwie części i powstałe punkty łaczymy co doprowadzi do powstania kolejnego trójkata, który usuwamy. Z pozostałymi trzema postępujemy podobnie, itd. Źródło:http: // org/~history/ Biographies/ Sierpinski.html Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 57 / 61

66 Dywan Sierpińskiego Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 58 / 61

67 Trójkat Sierpińskiego Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 59 / 61

68 Trójkat Sierpińskiego Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 60 / 61

69 Krzywa Hilberta Krzywa Hilberta - to przykład krzywej, która wypełnia całkowicie płaszczyznę, tzn. przechodzi przez wszystkie punkty płaszczyzny. Konstrukcja tej krzywej została podana przez Davida Hilberta w 1891 jako wariant krzywej Peano. n = 1 n = 2 n = 3 n = 4 n = 5 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 3 61 / 61

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych. Algorytmy i Struktury Danych. Rekurencja dr hab. 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 i Struktury Danych. Wykład 2 1

Bardziej szczegółowo

Wstęp do Informatyki

Wstęp do Informatyki Wstęp do Informatyki dr hab. Bożena Woźna-Szcześniak, prof. AJD bwozna@gmail.com Jan Długosz University, Poland Wykład 8 Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 1 / 1 Rekurencja Rekurencja

Bardziej szczegółowo

Podstawy Informatyki

Podstawy Informatyki Podstawy Informatyki Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 14 Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 14 1 / 1 Rekurencja Rekurencja albo rekursja

Bardziej szczegółowo

Rekurencja. Przygotowała: Agnieszka Reiter

Rekurencja. Przygotowała: Agnieszka Reiter Rekurencja Przygotowała: Agnieszka Reiter Definicja Charakterystyczną cechą funkcji (procedury) rekurencyjnej jest to, że wywołuje ona samą siebie. Drugą cechą rekursji jest jej dziedzina, którą mogą być

Bardziej szczegółowo

FRAKTALE. nie tworzą się z przypadku. Są tworzone naturalnie przez otaczającą nas przyrodę, bądź za pomocą

FRAKTALE. nie tworzą się z przypadku. Są tworzone naturalnie przez otaczającą nas przyrodę, bądź za pomocą Małgorzata Mielniczuk FRAKTALE Poniższy referat będzie traktować o fraktalach, majestatycznych wzorach, których kręte linie nie tworzą się z przypadku. Są tworzone naturalnie przez otaczającą nas przyrodę,

Bardziej szczegółowo

Ciągi liczbowe. - oznacza, że a(1) = a 1, a(2) = a 2, a(n) = a n a 1, a 2, a 3, a 4,... a n a(n) a n

Ciągi liczbowe. - oznacza, że a(1) = a 1, a(2) = a 2, a(n) = a n a 1, a 2, a 3, a 4,... a n a(n) a n Ciągi liczbowe Spis treści Ciąg liczbowy Ciąg liczbowy skończony Ciąg liczbowy nieskończony Przykłady i sposoby określania ciągu, suma n początkowych wyrazów ciągu Suma n początkowych, kolejnych wyrazów

Bardziej szczegółowo

FRAKTALE I SAMOPODOBIEŃSTWO

FRAKTALE I SAMOPODOBIEŃSTWO FRAKTALE I SAMOPODOBIEŃSTWO Mariusz Gromada marzec 2003 mariusz.gromada@wp.pl http://multifraktal.net 1 Wstęp Fraktalem nazywamy każdy zbiór, dla którego wymiar Hausdorffa-Besicovitcha (tzw. wymiar fraktalny)

Bardziej szczegółowo

FUNKCJA REKURENCYJNA. function s(n:integer):integer; begin if (n>1) then s:=n*s(n-1); else s:=1; end;

FUNKCJA REKURENCYJNA. function s(n:integer):integer; begin if (n>1) then s:=n*s(n-1); else s:=1; end; Rekurencja Wykład: rekursja, funkcje rekurencyjne, wywołanie samej siebie, wyznaczanie poszczególnych liczb Fibonacciego, potęgowanie, algorytm Euklidesa REKURENCJA Rekurencja (z łac. recurrere), zwana

Bardziej szczegółowo

Podstawowe algorytmy i ich implementacje w C. Wykład 9

Podstawowe algorytmy i ich implementacje w C. Wykład 9 Wstęp do programowania 1 Podstawowe algorytmy i ich implementacje w C Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 9 Element minimalny i maksymalny zbioru Element minimalny

Bardziej szczegółowo

Fraktale. i Rachunek Prawdopodobieństwa

Fraktale. i Rachunek Prawdopodobieństwa Fraktale i Rachunek Prawdopodobieństwa Przyjrzyjmy się poniższemu rysunkowi, przedstawiającemu coś,, co kształtem tem przypomina drzewo o bardzo regularnej strukturze W jaki sposób b najłatwiej atwiej

Bardziej szczegółowo

Projekt współfinansowany przez Unię Europejską ze środków Europejskiego Funduszu Społecznego

Projekt współfinansowany przez Unię Europejską ze środków Europejskiego Funduszu Społecznego Wstęp Rekurencja jest to wywołanie podprogramu (procedury) samej przez siebie. W logo zapis rekurencji będzie wyglądał następująco: oto nazwa_funkcji czynności_wykonywane_przez_procedurę nazwa_funkcji

Bardziej szczegółowo

Modele i symulacje - Scratch i Excel

Modele i symulacje - Scratch i Excel Instytut Matematyki Uniwersytet Gdański Literatura P. Szlagowski, Programowanie wizualne scratch 2.0 SCRATCH jest językiem programowania, w którym możesz stworzyć własne interaktywne historyjki, animacje,

Bardziej szczegółowo

5. Rekurencja. Przykłady

5. Rekurencja. Przykłady 5. Rekurencja Uwaga! W tym rozdziale nie są omówione żadne nowe konstrukcje języka C++. Omówiona jest za to technika wykorzystująca funkcje, która pozwala na rozwiązanie pewnych nowych rodzajów zadań.

Bardziej szczegółowo

ALGORYTMY I STRUKTURY DANYCH

ALGORYTMY I STRUKTURY DANYCH KATEDRASYSTEMÓWOBLICZENIOWYCH ALGORYTMY I STRUKTURY DANYCH 1.Rekurencja Rekurencja inaczej rekursja (ang. recursion) to wywołanie z poziomu metody jej samej. Programowanie z wykorzytaniem rekurencji pozwala

Bardziej szczegółowo

12. Rekurencja. UWAGA Trzeba bardzo dokładnie ustalić <warunek>, żeby mieć pewność, że ciąg wywołań się zakończy.

12. Rekurencja. UWAGA Trzeba bardzo dokładnie ustalić <warunek>, żeby mieć pewność, że ciąg wywołań się zakończy. 12. Rekurencja. Funkcja rekurencyjna funkcja, która wywołuje samą siebie. Naturalne postępowanie: np. zbierając rozsypane pionki do gry podnosi się zwykle pierwszy, a potem zbiera się resztę w ten sam

Bardziej szczegółowo

Fraktale wokół nas. Leszek Rudak Uniwersytet Warszawski. informatyka +

Fraktale wokół nas. Leszek Rudak Uniwersytet Warszawski. informatyka + Fraktale wokół nas Leszek Rudak Uniwersytet Warszawski informatyka + 1 Podobieństwo figur informatyka + 2 Figury podobne Figury są podobne gdy proporcjonalnie zwiększając lub zmniejszając jedną z nich

Bardziej szczegółowo

Wstęp do Informatyki

Wstęp do Informatyki Wstęp do Informatyki dr hab. Bożena Woźna-Szcześniak, prof. AJD bwozna@gmail.com Jan Długosz University, Poland Wykład 8 Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 1 / 32 Instrukcje iteracyjne

Bardziej szczegółowo

Obrazy rekurencyjne. Zastosowanie rekurencji w algorytmice. AUTOR: Martin Śniegoń

Obrazy rekurencyjne. Zastosowanie rekurencji w algorytmice. AUTOR: Martin Śniegoń Obrazy rekurencyjne Zastosowanie rekurencji w algorytmice AUTOR: Martin Śniegoń Zdolność procedury/funkcji do wywoływania samej siebie Podstawowa i jedna z najważniejszych technik programistycznych Umożliwia

Bardziej szczegółowo

Wykład 8. Rekurencja. Iterować jest rzeczą ludzką, wykonywać rekursywnie boską. L. Peter Deutsch

Wykład 8. Rekurencja. Iterować jest rzeczą ludzką, wykonywać rekursywnie boską. L. Peter Deutsch Wykład 8 Iterować jest rzeczą ludzką, wykonywać rekursywnie boską. Smok podsuszony zmok (patrz: Zmok). Zmok zmoczony smok (patrz: Smok). L. Peter Deutsch Stanisław Lem Wizja lokalna J. Cichoń, P. Kobylański

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania Wstęp do programowania Rekurencja, metoda dziel i zwyciężaj Paweł Daniluk Wydział Fizyki Jesień 2014 P. Daniluk(Wydział Fizyki) WP w. VIII Jesień 2014 1 / 27 Rekurencja Recursion See Recursion. P. Daniluk(Wydział

Bardziej szczegółowo

Ciąg Fibonacciego jako szczególny przykład ciągu określonego rekurencyjnie. Przykłady rekurencji w informatyce

Ciąg Fibonacciego jako szczególny przykład ciągu określonego rekurencyjnie. Przykłady rekurencji w informatyce SCENARIUSZ LEKCJI OPRACOWANY W RAMACH PROJEKTU: INFORMATYKA MÓJ SPOSÓB NA POZNANIE I OPISANIE ŚWIATA. PROGRAM NAUCZANIA INFORMATYKI Z ELEMENTAMI PRZEDMIOTÓW MATEMATYCZNO-PRZYRODNICZYCH Autorzy scenariusza:

Bardziej szczegółowo

Ciągi i rekurencja, komputer dla matematyka. warsztaty towarzyszące konferencji Informatyka realnie prowadzą: Hanna Basaj Jan Aleksander Wierzbicki

Ciągi i rekurencja, komputer dla matematyka. warsztaty towarzyszące konferencji Informatyka realnie prowadzą: Hanna Basaj Jan Aleksander Wierzbicki Ciągi i rekurencja, komputer dla matematyka warsztaty towarzyszące konferencji Informatyka realnie prowadzą: Hanna Basaj Jan Aleksander Wierzbicki Ciągi określone rekurencyjnie w projekcie nowej podstawy

Bardziej szczegółowo

Rekurencja (rekursja)

Rekurencja (rekursja) Rekurencja (rekursja) Rekurencja wywołanie funkcji przez nią samą wewnątrz ciała funkcji. Rekurencja może być pośrednia funkcja jest wywoływana przez inną funkcję, wywołaną (pośrednio lub bezpośrednio)

Bardziej szczegółowo

O rekurencji i nie tylko

O rekurencji i nie tylko O rekurencji i nie tylko dr Krzysztof Bryś Wydział Matematyki i Nauk Informacyjnych Politechnika Warszawska 10 grudnia 2011 Intuicyjnie: rekurencja sprowadzenie rozwiązania danego problemu do rozwiązania

Bardziej szczegółowo

Podstawy programowania 2. Temat: Funkcje i procedury rekurencyjne. Przygotował: mgr inż. Tomasz Michno

Podstawy programowania 2. Temat: Funkcje i procedury rekurencyjne. Przygotował: mgr inż. Tomasz Michno Instrukcja laboratoryjna 6 Podstawy programowania 2 Temat: Funkcje i procedury rekurencyjne Przygotował: mgr inż. Tomasz Michno Wstęp teoretyczny Rekurencja (inaczej nazywana rekursją, ang. recursion)

Bardziej szczegółowo

1. Liczby wymierne. x dla x 0 (wartością bezwzględną liczby nieujemnej jest ta sama liczba)

1. Liczby wymierne. x dla x 0 (wartością bezwzględną liczby nieujemnej jest ta sama liczba) 1. Liczby wymierne. - wartość bezwzględna liczby. dla 0 (wartością bezwzględną liczby nieujemnej jest ta sama liczba) - dla < 0 ( wartością bezwzględną liczby ujemnej jest liczba do niej przeciwna) W interpretacji

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

Podstawy algorytmiki i programowania - wykład 3 Funkcje rekurencyjne Wyszukiwanie liniowe i binarne w tablicy

Podstawy algorytmiki i programowania - wykład 3 Funkcje rekurencyjne Wyszukiwanie liniowe i binarne w tablicy 1 Podstawy algorytmiki i programowania - wykład 3 Funkcje rekurencyjne Wyszukiwanie liniowe i binarne w tablicy Treści prezentowane w wykładzie zostały oparte o: S. Prata, Język C++. Szkoła programowania.

Bardziej szczegółowo

Fraktale deterministyczne i stochastyczne. Katarzyna Weron Katedra Fizyki Teoretycznej

Fraktale deterministyczne i stochastyczne. Katarzyna Weron Katedra Fizyki Teoretycznej Fraktale deterministyczne i stochastyczne Katarzyna Weron Katedra Fizyki Teoretycznej Szare i Zielone Scena z Fausta Goethego (1749-1832), Mefistofeles do doktora (2038-2039): Wszelka, mój bracie, teoria

Bardziej szczegółowo

Rekurencja. Przykład. Rozważmy ciąg

Rekurencja. Przykład. Rozważmy ciąg Rekurencja Definicje rekurencyjne Definicja: Mówimy, iż ciąg jest zdefiniowany rekurencyjnie, jeżeli: (P) Określony jest pewien skończony zbiór wyrazów tego ciągu, zwykle jest to pierwszy wyraz tego ciągu

Bardziej szczegółowo

Algorytmy i Struktury Danych

Algorytmy i Struktury Danych POLITECHNIKA KRAKOWSKA WYDZIAŁ INŻYNIERII ELEKTRYCZNEJ i KOMPUTEROWEJ Katedra Automatyki i Technik Informacyjnych Algorytmy i Struktury Danych www.pk.edu.pl/~zk/aisd_hp.html Wykładowca: dr inż. Zbigniew

Bardziej szczegółowo

Zaawansowane algorytmy i struktury danych

Zaawansowane algorytmy i struktury danych Zaawansowane algorytmy i struktury danych u dr Barbary Marszał-Paszek Opracowanie pytań praktycznych z egzaminów. Strona 1 z 12 Pytania praktyczne z kolokwium zaliczeniowego z 19 czerwca 2014 (studia dzienne)

Bardziej szczegółowo

Zbiór Cantora. Diabelskie schody.

Zbiór Cantora. Diabelskie schody. Zbiór Cantora. Diabelskie schody. Autor: Norbert Miękina Zespół Szkół nr 3 im. ks. prof. Józefa Tischnera ul. Krakowska 20 32-700 Bochnia tel. 14 612-27-79 Opiekun: mgr Barbara Góra 1 W matematyce sztuka

Bardziej szczegółowo

Wieczorowe Studia Licencjackie Wrocław, Wykład nr 6 (w oparciu o notatki K. Lorysia, z modyfikacjami) Sito Eratostenesa

Wieczorowe Studia Licencjackie Wrocław, Wykład nr 6 (w oparciu o notatki K. Lorysia, z modyfikacjami) Sito Eratostenesa Wieczorowe Studia Licencjackie Wrocław, 7.11.2006 Wstęp do programowania Wykład nr 6 (w oparciu o notatki K. Lorysia, z modyfikacjami) Sito Eratostenesa Zaprezentujemy teraz algorytm na wyznaczanie wszystkich

Bardziej szczegółowo

Programowanie Proceduralne

Programowanie Proceduralne Programowanie Proceduralne Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 1 Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 1 / 59 Cel wykładów z programowania

Bardziej szczegółowo

Poprawność semantyczna

Poprawność semantyczna Poprawność składniowa Poprawność semantyczna Poprawność algorytmu Wypisywanie zdań z języka poprawnych składniowo Poprawne wartościowanie zdań języka, np. w języku programowania skutki wystąpienia wyróżnionych

Bardziej szczegółowo

Rekurencja. Rekurencja zwana także rekursją jest jedną z najważniejszych metod konstruowania rozwiązań i algorytmów.

Rekurencja. Rekurencja zwana także rekursją jest jedną z najważniejszych metod konstruowania rozwiązań i algorytmów. Rekurencja Rekurencja zwana także rekursją jest jedną z najważniejszych metod konstruowania rozwiązań i algorytmów. Zgodnie ze znaczeniem informatycznym algorytm rekurencyjny to taki który korzysta z samego

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

Podstawy programowania. Wykład: 13. Rekurencja. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Podstawy programowania. Wykład: 13. Rekurencja. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD Podstawy programowania Wykład: 13 Rekurencja 1 dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD Podstawy programowania Rekurencja - pojęcie 2 Rekurencja - pojęcie Rekurencja (rekursja) wywołanie

Bardziej szczegółowo

Rekurencja. Rekurencja zwana także rekursją jest jedną z najważniejszych metod konstruowania rozwiązań i algorytmów.

Rekurencja. Rekurencja zwana także rekursją jest jedną z najważniejszych metod konstruowania rozwiązań i algorytmów. Rekurencja Rekurencja zwana także rekursją jest jedną z najważniejszych metod konstruowania rozwiązań i algorytmów. Zgodnie ze znaczeniem informatycznym algorytm rekurencyjny to taki który korzysta z samego

Bardziej szczegółowo

Algorytmika i programowanie. Wykład 2 inż. Barbara Fryc Wyższa Szkoła Informatyki i Zarządzania w Rzeszowie

Algorytmika i programowanie. Wykład 2 inż. Barbara Fryc Wyższa Szkoła Informatyki i Zarządzania w Rzeszowie Algorytmika i programowanie Wykład 2 inż. Barbara Fryc Wyższa Szkoła Informatyki i Zarządzania w Rzeszowie Tablice Tablica jest zbiorem elementów tego samego typu. Każdy element jest identyfikowany (numer

Bardziej szczegółowo

Jezyki i metody programowania

Jezyki i metody programowania Jezyki i metody programowania WYKŁAD 3 i 4 Logo Dr Bożena Woźna-Szcześniak bwozna@gmail.com Instytut Matematyki i Informatyki Akademia im. Jana Długosza LOGO KOMENIUSZ LOGO KOMENIUSZ jest rozprowadzany

Bardziej szczegółowo

Za pierwszy niebanalny algorytm uważa się algorytm Euklidesa wyszukiwanie NWD dwóch liczb (400 a 300 rok przed narodzeniem Chrystusa).

Za pierwszy niebanalny algorytm uważa się algorytm Euklidesa wyszukiwanie NWD dwóch liczb (400 a 300 rok przed narodzeniem Chrystusa). Algorytmy definicja, cechy, złożoność. Algorytmy napotykamy wszędzie, gdziekolwiek się zwrócimy. Rządzą one wieloma codziennymi czynnościami, jak np. wymiana przedziurawionej dętki, montowanie szafy z

Bardziej szczegółowo

TEORETYCZNE PODSTAWY INFORMATYKI

TEORETYCZNE PODSTAWY INFORMATYKI 1 TEORETYCZNE PODSTAWY INFORMATYKI 16/01/2017 WFAiS UJ, Informatyka Stosowana I rok studiów, I stopień Repetytorium złożoność obliczeniowa 2 Złożoność obliczeniowa Notacja wielkie 0 Notacja Ω i Θ Rozwiązywanie

Bardziej szczegółowo

Technologie informacyjne Wykład VII-IX

Technologie informacyjne Wykład VII-IX 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łóż

Bardziej szczegółowo

Złota liczba. Zajęcia matematyczno przyrodnicze w Szkole Podstawowej w Antolce

Złota liczba. Zajęcia matematyczno przyrodnicze w Szkole Podstawowej w Antolce Złota liczba Zajęcia matematyczno przyrodnicze w Szkole Podstawowej w Antolce Ciąg Fibonacciego 1,1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377, Ciąg Fibonacciego ma wiele ciekawych własności. Zbadajmy

Bardziej szczegółowo

Algorytmy w teorii liczb

Algorytmy w teorii liczb Łukasz Kowalik, ASD 2004: Algorytmy w teorii liczb 1 Algorytmy w teorii liczb Teoria liczb jest działem matemtyki dotyczącym własności liczb naturalnych. Rozważa się zagadnienia związane z liczbami pierwszymi,

Bardziej szczegółowo

Indukcja matematyczna. Zasada minimum. Zastosowania.

Indukcja matematyczna. Zasada minimum. Zastosowania. Indukcja matematyczna. Zasada minimum. Zastosowania. Arkadiusz Męcel Uwagi początkowe W trakcie zajęć przyjęte zostaną następujące oznaczenia: 1. Zbiory liczb: R - zbiór liczb rzeczywistych; Q - zbiór

Bardziej szczegółowo

Raport z projektu. Przedmiot: Algorytmy i struktury danych 1 Projekt: Wieża Hanoi Autor: Wojciech Topolski

Raport z projektu. Przedmiot: Algorytmy i struktury danych 1 Projekt: Wieża Hanoi Autor: Wojciech Topolski Raport z projektu Przedmiot: Algorytmy i struktury danych 1 Projekt: Wieża Hanoi Autor: Wojciech Topolski Problem wieży Hanoi W wielkiej świątyni Benares w Hanoi, pod kopułą, która zaznacza środek świata,

Bardziej szczegółowo

Zadania do samodzielnego rozwiązania

Zadania do samodzielnego rozwiązania Zadania do samodzielnego rozwiązania I. Podzielność liczb całkowitych 1. Pewna liczba sześciocyfrowa a kończy się cyfrą 5. Jeśli tę cyfrę przestawimy na miejsce pierwsze ze strony lewej, to otrzymamy nową

Bardziej szczegółowo

samopodobnym nieskończenie subtelny

samopodobnym nieskończenie subtelny Fraktale Co to jest fraktal? Według definicji potocznej fraktal jest obiektem samopodobnym tzn. takim, którego części są podobne do całości lub nieskończenie subtelny czyli taki, który ukazuje subtelne

Bardziej szczegółowo

WHILE (wyrażenie) instrukcja;

WHILE (wyrażenie) instrukcja; INSTRUKCJE ITERACYJNE WHILE, DO WHILE, FOR Instrukcje iteracyjne pozwalają powtarzać daną instrukcję programu określoną liczbę razy lub do momentu osiągnięcia określonego skutku. Pętla iteracyjna while

Bardziej szczegółowo

Matematyka dyskretna. Andrzej Łachwa, UJ, A/15

Matematyka dyskretna. Andrzej Łachwa, UJ, A/15 Matematyka dyskretna Andrzej Łachwa, UJ, 2016 andrzej.lachwa@uj.edu.pl 4A/15 Liczby Fibonacciego Spośród ciągów zdefiniowanych rekurencyjnie, jednym z najsłynniejszych jest ciąg Fibonacciego (z roku 1202)

Bardziej szczegółowo

Podstawy programowania. Wykład: 4. Instrukcje sterujące, operatory. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Podstawy programowania. Wykład: 4. Instrukcje sterujące, operatory. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD programowania Wykład: 4 Instrukcje sterujące, operatory 1 programowania w C++ Instrukcje sterujące 2 Pętla for for ( instrukcja_ini ; wyrazenie_warunkowe ; instrukcja_krok ) tresc_petli ; instrukcja_ini

Bardziej szczegółowo

Rekurencja. Matematyka dyskretna

Rekurencja. Matematyka dyskretna Rekurencja Matematyka dyskretna Rekurencja Definicja rekurencyjna (indukcyjna) nieformalnie: taka definicja, która odwołuje się do samej siebie, ale trzeba tu uważać, by odwołanie było do instancji o mniejszej

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

wykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis

wykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis i cz. 2 Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 i cz. 2 2 i cz. 2 3 Funkcje i cz. 2 typ nazwa ( lista-parametrów ) { deklaracje instrukcje } i cz. 2 typ nazwa ( lista-parametrów ) { deklaracje

Bardziej szczegółowo

Złożoność obliczeniowa zadania, zestaw 2

Złożoność obliczeniowa zadania, zestaw 2 Złożoność obliczeniowa zadania, zestaw 2 Określanie złożoności obliczeniowej algorytmów, obliczanie pesymistycznej i oczekiwanej złożoności obliczeniowej 1. Dana jest tablica jednowymiarowa A o rozmiarze

Bardziej szczegółowo

4. Funkcje. Przykłady

4. Funkcje. Przykłady 4. Funkcje Przykłady 4.1. Napisz funkcję kwadrat, która przyjmuje jeden argument: długość boku kwadratu i zwraca pole jego powierzchni. Używając tej funkcji napisz program, który obliczy pole powierzchni

Bardziej szczegółowo

Podstawy Informatyki dla Nauczyciela

Podstawy Informatyki dla Nauczyciela Podstawy Informatyki dla Nauczyciela Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 2 Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki dla Nauczyciela Wykład 2 1 / 1 Informacja

Bardziej szczegółowo

Matematyka dyskretna. Andrzej Łachwa, UJ, a/15

Matematyka dyskretna. Andrzej Łachwa, UJ, a/15 Matematyka dyskretna Andrzej Łachwa, UJ, 2017 andrzej.lachwa@uj.edu.pl 3a/15 Indukcja matematyczna Zasada Minimum Dowolny niepusty podzbiór S zbioru liczb naturalnych ma w sobie liczbę najmniejszą. Zasada

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

Indukcja. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak

Indukcja. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak Indukcja Materiały pomocnicze do wykładu wykładowca: dr Magdalena Kacprzak Charakteryzacja zbioru liczb naturalnych Arytmetyka liczb naturalnych Jedną z najważniejszych teorii matematycznych jest arytmetyka

Bardziej szczegółowo

Matematyka dyskretna

Matematyka dyskretna Matematyka dyskretna Wykład 4: Podzielność liczb całkowitych Gniewomir Sarbicki Dzielenie całkowitoliczbowe Twierdzenie: Dla każdej pary liczb całkowitych (a, b) istnieje dokładnie jedna para liczb całkowitych

Bardziej szczegółowo

Krzywa uniwersalna Sierpińskiego

Krzywa uniwersalna Sierpińskiego Krzywa uniwersalna Sierpińskiego Małgorzata Blaszke Karol Grzyb Streszczenie W niniejszej pracy omówimy krzywą uniwersalną Sierpińskiego, zwaną również dywanem Sierpińskiego. Pokażemy klasyczną metodę

Bardziej szczegółowo

Teoretyczne podstawy informatyki

Teoretyczne podstawy informatyki Teoretyczne podstawy informatyki Wykład 4a: Rozwiązywanie rekurencji http://kiwi.if.uj.edu.pl/~erichter/dydaktyka2010/tpi-2010 Prof. dr hab. Elżbieta Richter-Wąs 1 Czas działania programu Dla konkretnych

Bardziej szczegółowo

Matematyka dyskretna. Andrzej Łachwa, UJ, /14

Matematyka dyskretna. Andrzej Łachwa, UJ, /14 Matematyka dyskretna Andrzej Łachwa, UJ, 2012 andrzej.lachwa@uj.edu.pl 5/14 Rekurencja Weźmy dla przykładu wzór (przepis) na liczenie silni: n! to iloczyn kolejnych liczb naturalnych od 1 do n oraz 0!=1.

Bardziej szczegółowo

Podstawy Informatyki. Sprawność algorytmów

Podstawy Informatyki. Sprawność algorytmów Podstawy Informatyki Sprawność algorytmów Sprawność algorytmów Kryteria oceny oszczędności Miara złożoności rozmiaru pamięci (złożoność pamięciowa): Liczba zmiennych + liczba i rozmiar struktur danych

Bardziej szczegółowo

Matematyka dyskretna. Andrzej Łachwa, UJ, /10

Matematyka dyskretna. Andrzej Łachwa, UJ, /10 Matematyka dyskretna Andrzej Łachwa, UJ, 2018 andrzej.lachwa@uj.edu.pl 4/10 rekurencja Wzór (przepis) na liczenie silni: n! to iloczyn kolejnych liczb naturalnych od 1 do n oraz 0!=1. Oto wartości silni

Bardziej szczegółowo

WHILE (wyrażenie) instrukcja;

WHILE (wyrażenie) instrukcja; INSTRUKCJE ITERACYJNE WHILE, DO WHILE, FOR Instrukcje iteracyjne pozwalają powtarzać daną instrukcję programu określoną liczbę razy lub do momentu osiągnięcia określonego skutku. Pętla iteracyjna while

Bardziej szczegółowo

Zadanie 1. Test (6 pkt) Zaznacz znakiem X w odpowiedniej kolumnie P lub F, która odpowiedź jest prawdziwa, a która fałszywa.

Zadanie 1. Test (6 pkt) Zaznacz znakiem X w odpowiedniej kolumnie P lub F, która odpowiedź jest prawdziwa, a która fałszywa. 2 Egzamin maturalny z informatyki Zadanie 1. Test (6 pkt) Zaznacz znakiem X w odpowiedniej kolumnie lub, która odpowiedź jest prawdziwa, a która fałszywa. a) rzeanalizuj poniższy algorytm (:= oznacza instrukcję

Bardziej szczegółowo

Programowanie w Baltie klasa VII

Programowanie w Baltie klasa VII Programowanie w Baltie klasa VII Zadania z podręcznika strona 127 i 128 Zadanie 1/127 Zadanie 2/127 Zadanie 3/127 Zadanie 4/127 Zadanie 5/127 Zadanie 6/127 Ten sposób pisania programu nie ma sensu!!!.

Bardziej szczegółowo

Podstawy programowania. Podstawy C# Przykłady algorytmów

Podstawy programowania. Podstawy C# Przykłady algorytmów Podstawy programowania Podstawy C# Przykłady algorytmów Proces tworzenia programu Sformułowanie problemu funkcje programu zakres i postać danych postać i dokładność wyników Wybór / opracowanie metody rozwiązania

Bardziej szczegółowo

Algorytm. a programowanie -

Algorytm. a programowanie - Algorytm a programowanie - Program komputerowy: Program komputerowy można rozumieć jako: kod źródłowy - program komputerowy zapisany w pewnym języku programowania, zestaw poszczególnych instrukcji, plik

Bardziej szczegółowo

Wykład 3. Metoda dziel i zwyciężaj

Wykład 3. Metoda dziel i zwyciężaj Wykład 3 Metoda dziel i zwyciężaj 1 Wprowadzenie Technika konstrukcji algorytmów dziel i zwyciężaj. przykładowe problemy: Wypełnianie planszy Poszukiwanie (binarne) Sortowanie (sortowanie przez łączenie

Bardziej szczegółowo

Metody numeryczne w przykładach

Metody numeryczne w przykładach Metody numeryczne w przykładach Bartosz Ziemkiewicz Wydział Matematyki i Informatyki UMK, Toruń Regionalne Koło Matematyczne 8 kwietnia 2010 r. Bartosz Ziemkiewicz (WMiI UMK) Metody numeryczne w przykładach

Bardziej szczegółowo

Algorytmy. wer Wojciech Myszka 30 listopada 2008

Algorytmy. wer Wojciech Myszka 30 listopada 2008 Algorytmy Część IV wer. 1.2 Wojciech Myszka 30 listopada 2008 Spis treści I Spis treści Jak się tworzy algorytmy? Poszukiwania i wędrówki Dziel i zwyciężaj Rekurencja Definicje Przykład Schemat blokowy

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

Wykład 2. Poprawność algorytmów

Wykład 2. Poprawność algorytmów Wykład 2 Poprawność algorytmów 1 Przegląd Ø Poprawność algorytmów Ø Podstawy matematyczne: Przyrost funkcji i notacje asymptotyczne Sumowanie szeregów Indukcja matematyczna 2 Poprawność algorytmów Ø Algorytm

Bardziej szczegółowo

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

Struktury danych i złożoność obliczeniowa Wykład 2. Prof. dr hab. inż. Jan Magott Struktury danych i złożoność obliczeniowa Wykład 2. Prof. dr hab. inż. Jan Magott Metody konstrukcji algorytmów: Siłowa (ang. brute force), Dziel i zwyciężaj (ang. divide-and-conquer), Zachłanna (ang.

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

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych. Algorytmy i Struktury Danych. Grafy dr hab. Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 9 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 9 1 / 20

Bardziej szczegółowo

WYMAGANIA EDUKACYJNE Z MATEMATYKI KLASA I GIMNAZJUM Małgorzata Janik

WYMAGANIA EDUKACYJNE Z MATEMATYKI KLASA I GIMNAZJUM Małgorzata Janik WYMAGANIA EDUKACYJNE Z MATEMATYKI KLASA I GIMNAZJUM Małgorzata Janik DOPUSZCZAJĄCY DOSTATECZNY DOBRY BARDZO DOBRY LICZBY I DZIAŁANIA zna pojęcie liczby naturalnej, całkowitej, wymiernej. rozumie rozszerzenie

Bardziej szczegółowo

Programowanie Równoległe i Rozproszone. Algorytm Kung a. Algorytm Kung a. Programowanie Równoległe i Rozproszone Wykład 8. Przygotował: Lucjan Stapp

Programowanie Równoległe i Rozproszone. Algorytm Kung a. Algorytm Kung a. Programowanie Równoległe i Rozproszone Wykład 8. Przygotował: Lucjan Stapp Programowanie Równoległe i Rozproszone Lucjan Stapp Wydział Matematyki i Nauk Informacyjnych Politechnika Warszawska (l.stapp@mini.pw.edu.pl) 1/34 PRiR Algorytm Kunga Dany jest odcinek [a,b] i ciągła funkcja

Bardziej szczegółowo

Języki i metody programowania

Języki i metody programowania Języki i metody programowania Wykład 3 dr hab. Bożena Woźna-Szcześniak bwozna@gmail.com Instytut Matematyki i Informatyki Akademia Jana Długosza w Częstochowie hab. Andrzeja Zbrzezngo Wartości boolowskie

Bardziej szczegółowo

Jarosław Wróblewski Matematyka Elementarna, zima 2015/16

Jarosław Wróblewski Matematyka Elementarna, zima 2015/16 Na ćwiczeniach 6.0.205 omawiamy test kwalifikacyjny. Uwaga: Przyjmujemy, że 0 nie jest liczbą naturalną, tzn. liczby naturalne są to liczby całkowite dodatnie.. Sformułować uogólnione cechy podzielności

Bardziej szczegółowo

Zadania domowe. Ćwiczenie 2. Rysowanie obiektów 2-D przy pomocy tworów pierwotnych biblioteki graficznej OpenGL

Zadania domowe. Ćwiczenie 2. Rysowanie obiektów 2-D przy pomocy tworów pierwotnych biblioteki graficznej OpenGL Zadania domowe Ćwiczenie 2 Rysowanie obiektów 2-D przy pomocy tworów pierwotnych biblioteki graficznej OpenGL Zadanie 2.1 Fraktal plazmowy (Plasma fractal) Kwadrat należy pokryć prostokątną siatką 2 n

Bardziej szczegółowo

Wymagania edukacyjne z matematyki dla klasy I gimnazjum wg programu Matematyka z plusem

Wymagania edukacyjne z matematyki dla klasy I gimnazjum wg programu Matematyka z plusem Wymagania edukacyjne z matematyki dla klasy I gimnazjum wg programu Matematyka z plusem pojęcie liczby naturalnej, całkowitej, wymiernej rozszerzenie osi liczbowej na liczby ujemne sposób i potrzebę zaokrąglania

Bardziej szczegółowo

FILO MATH ZESPÓŁ SZKÓŁ OGÓLNOKSZTAŁCĄCYCH GAZETKA KOŁA MATEMATYCZNEGO CO W NUMERZE: PRZEGLĄD MATEMATYKÓW. W KAMIENNEJ GÓRZE

FILO MATH ZESPÓŁ SZKÓŁ OGÓLNOKSZTAŁCĄCYCH GAZETKA KOŁA MATEMATYCZNEGO CO W NUMERZE: PRZEGLĄD MATEMATYKÓW. W KAMIENNEJ GÓRZE ZESPÓŁ SZKÓŁ OGÓLNOKSZTAŁCĄCYCH W KAMIENNEJ GÓRZE FILO MATH GAZETKA KOŁA MATEMATYCZNEGO CZERWIEC 2014 NR 3 (5)/2014 CO W NUMERZE: PRZEGLĄD MATEMATYKÓW: Fibonacci.... Ogłoszenie Dzień otwartej szkoły..

Bardziej szczegółowo

Podstawy Informatyki

Podstawy Informatyki Podstawy Informatyki Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 5 Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 5 1 / 23 LICZBY RZECZYWISTE - Algorytm Hornera

Bardziej szczegółowo

Wstęp do Informatyki zadania ze złożoności obliczeniowej z rozwiązaniami

Wstęp do Informatyki zadania ze złożoności obliczeniowej z rozwiązaniami Wstęp do Informatyki zadania ze złożoności obliczeniowej z rozwiązaniami Przykład 1. Napisz program, który dla podanej liczby n wypisze jej rozkład na czynniki pierwsze. Oblicz asymptotyczną złożoność

Bardziej szczegółowo

Wstęp do Informatyki

Wstęp do Informatyki Wstęp do Informatyki Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 4 Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 4 1 / 1 DZIELENIE LICZB BINARNYCH Dzielenie

Bardziej szczegółowo

Rekurencje. Jeśli algorytm zawiera wywołanie samego siebie, jego czas działania moŝe być określony rekurencją. Przykład: sortowanie przez scalanie:

Rekurencje. Jeśli algorytm zawiera wywołanie samego siebie, jego czas działania moŝe być określony rekurencją. Przykład: sortowanie przez scalanie: Rekurencje Jeśli algorytm zawiera wywołanie samego siebie, jego czas działania moŝe być określony rekurencją. Przykład: sortowanie przez scalanie: T(n) = Θ(1) (dla n = 1) T(n) = 2 T(n/2) + Θ(n) (dla n

Bardziej szczegółowo

KRZYŻÓWKA 2. 11. Może być np. równoboczny lub rozwartokątny. Jego pole to a b HASŁO:

KRZYŻÓWKA 2. 11. Może być np. równoboczny lub rozwartokątny. Jego pole to a b HASŁO: KRZYŻÓWKA.Wyznaczają ją dwa punkty.. Jego pole to π r² 3. Jego pole to a a 4.Figura przestrzenna, której podstawą jest dowolny wielokąt, a ściany boczne są trójkątami o wspólnym wierzchołku. 5.Prosta mająca

Bardziej szczegółowo

Wymagania edukacyjne niezbędne do otrzymania poszczególnych śródrocznych i rocznych ocen klasyfikacyjnych z matematyki dla klasy VIII

Wymagania edukacyjne niezbędne do otrzymania poszczególnych śródrocznych i rocznych ocen klasyfikacyjnych z matematyki dla klasy VIII Wymagania edukacyjne niezbędne do otrzymania poszczególnych śródrocznych i rocznych ocen klasyfikacyjnych z matematyki dla klasy VIII Temat 1. System rzymski. 2. Własności liczb naturalnych. 3. Porównywanie

Bardziej szczegółowo

Rekurencja. Dla rozwiązania danego problemu, algorytm wywołuje sam siebie przy rozwiązywaniu podobnych podproblemów. Przykład: silnia: n! = n(n-1)!

Rekurencja. Dla rozwiązania danego problemu, algorytm wywołuje sam siebie przy rozwiązywaniu podobnych podproblemów. Przykład: silnia: n! = n(n-1)! Rekurencja Dla rozwiązania danego problemu, algorytm wywołuje sam siebie przy rozwiązywaniu podobnych podproblemów. Przykład: silnia: n! = n(n-1)! Pseudokod: silnia(n): jeżeli n == 0 silnia = 1 w przeciwnym

Bardziej szczegółowo

Podstawy Informatyki. Algorytmy i ich poprawność

Podstawy Informatyki. Algorytmy i ich poprawność Podstawy Informatyki Algorytmy i ich poprawność Błędy Błędy: językowe logiczne Błędy językowe Związane ze składnią języka Wykrywane automatycznie przez kompilator lub interpreter Prosty sposób usuwania

Bardziej szczegółowo

Metody algortmiczne (Algorytmy Część IV)

Metody algortmiczne (Algorytmy Część IV) Metody algortmiczne (Algorytmy Część IV) wer. 9 z drobnymi modyfikacjami! Wojciech Myszka 2018-10-02 17:27:45 +0200 Jak się tworzy algorytmy? Moja odpowiedź jest krótka: Jak się tworzy algorytmy? Moja

Bardziej szczegółowo

Rekurencja/rekursja. Iluzja istnienia wielu kopii tego samego algorytmu (aktywacji) Tylko jedna aktywacja jest aktywna w danej chwili

Rekurencja/rekursja. Iluzja istnienia wielu kopii tego samego algorytmu (aktywacji) Tylko jedna aktywacja jest aktywna w danej chwili rekurencja 1 Rekurencja/rekursja Alternatywny dla pętli sposób powtarzania pewnych czynności; kolejny etap podzadanie poprzedniego Rekursja może być zamieniona na iteracje Cechy rekurencji Rozłożenie problemu

Bardziej szczegółowo

Rekurencja, schemat rekursji i funkcje pierwotnie rekurencyjne

Rekurencja, schemat rekursji i funkcje pierwotnie rekurencyjne Rekurencja, schemat rekursji i funkcje pierwotnie rekurencyjne Elementy Logiki i Teorii Mnogości 2015/2016 Zadanie 1. Oblicz iteracyjnie i rekurencyjnie f(4), gdzie f jest funkcją określoną na zbiorze

Bardziej szczegółowo