Technologie informacyjne Wykład VII-IX

Podobne dokumenty
Technologie Informatyczne Wykład VII

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

Analiza algorytmów zadania podstawowe

Złożoność obliczeniowa algorytmu ilość zasobów komputera jakiej potrzebuje dany algorytm. Pojęcie to

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

Analiza algorytmów zadania podstawowe

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

Informatyka A. Algorytmy

Zaawansowane algorytmy i struktury danych

Algorytmy w teorii liczb

Zaawansowane algorytmy i struktury danych

Szczegółowy program kursów szkoły programowania Halpress

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

Algorytmy i Struktury Danych

Podstawy Informatyki. Sprawność algorytmów

Sortowanie przez scalanie

3. Podaj elementy składowe jakie powinna uwzględniać definicja informatyki.

ROZWIĄZYWANIE RÓWNAŃ NIELINIOWYCH

RÓWNANIA NIELINIOWE Maciej Patan

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

Iteracyjne rozwiązywanie równań

Rozdział 4. Algorytmy sortowania 73 Rozdział 5. Typy i struktury danych 89 Rozdział 6. Derekursywacja i optymalizacja algorytmów 147

Matematyka stosowana i metody numeryczne

WYMAGANIA EDUKACYJNE NA POSZCZEGÓLNE OCENY MATEMATYKA STOSOWANA - KLASA II I. POWTÓRZENIE I UTRWALENIE WIADOMOŚCI Z ZAKRESU KLASY PIERWSZEJ

Programowanie w VB Proste algorytmy sortowania

Zasady analizy algorytmów

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

Algorytmika i pseudoprogramowanie

Propozycja szczegółowego rozkładu materiału dla 4-letniego technikum, zakres podstawowy i rozszerzony. Klasa I (90 h)

Algorytmy i Struktury Danych.

TEORETYCZNE PODSTAWY INFORMATYKI

Jeszcze o algorytmach

Wstęp do programowania

1 Równania nieliniowe

Złożoność algorytmów. Wstęp do Informatyki

Równania nieliniowe, nieliniowe układy równań, optymalizacja

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

Wybrane wymagania dla informatyki w gimnazjum i liceum z podstawy programowej

ZAKRES PODSTAWOWY. Proponowany rozkład materiału kl. I (100 h)

Informatyka wprowadzenie do algorytmów (I) dr hab. inż. Mikołaj Morzy

Metody algortmiczne (Algorytmy Część IV)

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

Wstęp do programowania

Propozycja szczegółowego rozkładu materiału dla 4-letniego technikum, zakres podstawowy. Klasa I (60 h)

Równania nieliniowe, nieliniowe układy równań, optymalizacja

Metody numeryczne I Równania nieliniowe

Informatyka wprowadzenie do algorytmów (II) dr hab. inż. Mikołaj Morzy

ANALIZA ALGORYTMÓW. Analiza algorytmów polega między innymi na odpowiedzi na pytania:

5. Podstawowe algorytmy i ich cechy.

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

Programowanie dynamiczne cz. 2

MATEMATYKA ZP Ramowy rozkład materiału na cały cykl kształcenia

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

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

Egzamin z Metod Numerycznych ZSI, Egzamin, Gr. A

Zagadnienia na egzamin poprawkowy z matematyki - klasa I 1. Liczby rzeczywiste

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

ELEMENTY ANALIZY NUMERYCZNEJ ELEMENTY ANALIZY NUMERYCZNEJ. Egzamin pisemny zestaw 1 26 czerwca 2017 roku

WPROWADZENIE DO ALGORYTMÓW Zadania

Algorytm i złożoność obliczeniowa algorytmu

ALGORYTMY I STRUKTURY DANYCH

Wprowadzenie Metoda bisekcji Metoda regula falsi Metoda siecznych Metoda stycznych RÓWNANIA NIELINIOWE

Metody numeryczne. dr Artur Woike. Ćwiczenia nr 2. Rozwiązywanie równań nieliniowych metody połowienia, regula falsi i siecznych.

Dział Rozdział Liczba h

Algorytmy komputerowe. dr inż. Jarosław Forenc

GNU Octave (w skrócie Octave) to rozbudowany program do analizy numerycznej.

Rekurencja (rekursja)

Teraz bajty. Informatyka dla szkół ponadpodstawowych. Zakres rozszerzony. Część 1.

Wstęp do informatyki

ANALIZA ALGORYTMÓW. Analiza algorytmów polega między innymi na odpowiedzi na pytania:

TEORETYCZNE PODSTAWY INFORMATYKI

83 Przekształcanie wykresów funkcji (cd.) 3

MATeMAtyka zakres podstawowy

ELEMENTY ANALIZY NUMERYCZNEJ ELEMENTY ANALIZY NUMERYCZNEJ. Egzamin pisemny zestaw 1 24 czerwca 2019 roku

Pakiet edukacyjny do nauki przedmiotów ścisłych i kształtowania postaw przedsiębiorczych

1 Wprowadzenie do algorytmiki

Algorytmy i Struktury Danych, 2. ćwiczenia

PRZEDMIOTOWY SYSTEM OCENIANIA INFORMATYKA.

Sortowanie danych. Jolanta Bachan. Podstawy programowania

Sylabus modułu: Matematyczne podstawy informatyki (kod modułu:03-mo2n-12-mpln)

koordynator modułu dr hab. Michał Baczyński rok akademicki 2012/2013

INFORMATYKA SORTOWANIE DANYCH.

ROZKŁAD MATERIAŁU DO II KLASY LICEUM (ZAKRES ROZSZERZONY) A WYMAGANIA PODSTAWY PROGRAMOWEJ.

Strategia "dziel i zwyciężaj"

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

Metody rozwiązywania równań nieliniowych

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy.

Algorytmy. Programowanie Proceduralne 1

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

Algorytmy i Struktury Danych, 2. ćwiczenia

MATEMATYKA KLASA II LICEUM OGÓLNOKSZTAŁCĄCEGO

Metody Numeryczne. Wojciech Szewczuk

Rekurencja. Przygotowała: Agnieszka Reiter

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

Algorytmy komputerowe. dr inŝ. Jarosław Forenc

MATeMAtyka zakres rozszerzony

Algorytmy i struktury danych. Wykład 4

5. Rozwiązywanie układów równań liniowych

PORADNIK METODYCZNY DLA NAUCZYCIELI GIMNAZJUM JAK WYKORZYSTAC PAKIET DYDAKTYCZNY DO NAUCZANIA

WYMAGANIA EDUKACYJNE NA POSZCZEGÓLNE OCENY

Transkrypt:

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