Informatyka 1. Wykład nr 7 ( ) Plan wykładu nr 7. Politechnika Białostocka. - Wydział Elektryczny. Algorytm - definicje.

Podobne dokumenty
Informatyka 1. Wykład nr 8 ( ) Plan wykładu nr 8. Politechnika Białostocka. - Wydział Elektryczny. Algorytm - definicje.

Algorytmy komputerowe. dr inŝ. Jarosław Forenc

Informatyka 1. Wykład nr 7 ( ) Politechnika Białostocka. - Wydział Elektryczny. dr inŝ. Jarosław Forenc

Algorytmy komputerowe. dr inż. Jarosław Forenc

Informatyka 1. Wykład nr 7 ( ) Politechnika Białostocka. - Wydział Elektryczny. dr inŝ. Jarosław Forenc

Analiza algorytmów to dział informatyki zajmujcy si szukaniem najefektywniejszych, poprawnych algorytmów dla danych problemów komputerowych

Algorytm. a programowanie -

EGZAMIN MATURALNY Z INFORMATYKI MAJ 2011 POZIOM ROZSZERZONY WYBRANE: CZĘŚĆ I. Czas pracy: 90 minut. Liczba punktów do uzyskania: 20 WPISUJE ZDAJĄCY

EGZAMIN MATURALNY Z INFORMATYKI MAJ 2012 POZIOM PODSTAWOWY CZĘŚĆ I WYBRANE: Czas pracy: 75 minut. Liczba punktów do uzyskania: 20 WPISUJE ZDAJĄCY

Analiza algorytmów to dział informatyki zajmujcy si szukaniem najefektywniejszych, poprawnych algorytmów dla danych problemów komputerowych.

Elementy modelowania matematycznego

Instrukcja do ćwiczeń laboratoryjnych z przedmiotu: Badania operacyjne. Temat ćwiczenia: Problemy transportowe cd, Problem komiwojażera

3 Arytmetyka. 3.1 Zbiory liczbowe.

Parametryzacja rozwiązań układu równań

Egzamin maturalny z informatyki Poziom rozszerzony część I

Ciągi liczbowe wykład 3

MATEMATYKA (poziom podstawowy) przykładowy arkusz maturalny wraz ze schematem oceniania dla klasy II Liceum

Prawdopodobieństwo i statystyka

Podstawy informatyki 2. Podstawy informatyki 2. Wykład nr 9 ( ) Plan wykładu nr 9. Politechnika Białostocka. - Wydział Elektryczny

Algorytmy I Struktury Danych Prowadząca: dr Hab. inż. Małgorzata Sterna. Sprawozdanie do Ćwiczenia 1 Algorytmy sortowania (27.02.

Jarosław Wróblewski Analiza Matematyczna 1, zima 2016/17

Wstęp do informatyki. System komputerowy. Magistrala systemowa. Magistrala systemowa (System Bus) Architektura komputera

METODY OPISU ALGORYTMÓW KOMPUTEROWYCH

Teoria obliczeń: ciągi, notacja 0. Wykład 7

Analiza numeryczna. Stanisław Lewanowicz. Aproksymacja funkcji

I. Podzielność liczb całkowitych

Algorytmy I Struktury Danych Prowadząca: dr Hab. inż. Małgorzata Sterna. Sprawozdanie do Ćwiczenia 3 Algorytmy grafowe ( )

Matematyka. Zakres podstawowy. Nawi zanie do gimnazjum. n/m Rozwi zywanie zada Zadanie domowe Dodatkowe Komunikaty Bie ce materiały

Scenariusz lekcji: Kombinatoryka utrwalenie wiadomości

Szereg geometryczny. 5. b) b n = 4n 2 (b 1 = 2, r = 4) lub b n = 10 (b 1 = 10, r = 0). 2. jest równa 1 x dla x = 1+ Zad. 3:

KADD Metoda najmniejszych kwadratów

MINIMALIZACJA PUSTYCH PRZEBIEGÓW PRZEZ ŚRODKI TRANSPORTU

Metody Obliczeniowe w Nauce i Technice laboratorium

Struktura i funkcjonowanie komputera struktura połączeń, magistrala, DMA systemy pamięci komputerowych hierarchia pamięci, pamięć podręczna

X i. X = 1 n. i=1. wartość tej statystyki nazywana jest wartością średnią empiryczną i oznaczamy ją symbolem x, przy czym x = 1. (X i X) 2.

INWESTYCJE MATERIALNE

Rozsądny i nierozsądny czas działania

Modele tendencji rozwojowej STATYSTYKA OPISOWA. Dr Alina Gleska. Instytut Matematyki WE PP. 18 listopada 2017

Chemia Teoretyczna I (6).

O liczbach naturalnych, których suma równa się iloczynowi

PODSTAWY OPRACOWANIA WYNIKÓW POMIARÓW Z ELEMENTAMI ANALIZY NIEPEWNOŚCI POMIAROWYCH

3. Tworzenie próby, błąd przypadkowy (próbkowania) 5. Błąd standardowy średniej arytmetycznej

Metrologia: miary dokładności. dr inż. Paweł Zalewski Akademia Morska w Szczecinie

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

ma rozkład złożony Poissona z oczekiwaną liczbą szkód równą λ i rozkładem wartości pojedynczej szkody takim, że Pr( Y

TESTY LOSOWOŚCI. Badanie losowości próby - test serii.

POMIARY WARSZTATOWE. D o u ż y t k u w e w n ę t r z n e g o. Katedra Inżynierii i Aparatury Przemysłu Spożywczego. Ćwiczenia laboratoryjne

D. Miszczyńska, M.Miszczyński KBO UŁ, Badania operacyjne (wykład 6 _ZP) [1] ZAGADNIENIE PRZYDZIAŁU (ZP) (Assignment Problem)

Estymacja przedziałowa

Definicja interpolacji

Materiał ćwiczeniowy z matematyki Marzec 2012

Charakterystyki liczbowe zmiennych losowych: wartość oczekiwana i wariancja

Informatyka 1. Wykład nr 6 ( ) Plan wykładu nr 6. Politechnika Białostocka. - Wydział Elektryczny. Architektura von Neumanna

Efektywna metoda sortowania sortowanie przez scalanie

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 1. Karol Tarnowski A-1 p.

Relacje rekurencyjne. będzie następująco zdefiniowanym ciągiem:

2. Schemat ideowy układu pomiarowego

MATURA 2014 z WSiP. Zasady oceniania zadań

2.8. Algorytmy, schematy, programy

1.3. Największa liczba naturalna (bez znaku) zapisana w dwóch bajtach to a) b) 210 c) d) 32767

Algorytmy i złożoność obliczeniowa. Wojciech Horzelski

Statystyka matematyczna. Wykład II. Estymacja punktowa

Zapisywanie algorytmów w języku programowania

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 7 Algorytmy

Matematyka I. Bezpieczeństwo jądrowe i ochrona radiologiczna Semestr zimowy 2018/2019 Wykład 11

Wykład 11. a, b G a b = b a,

Technologie informacyjne - wykład 12 -

3. Regresja liniowa Założenia dotyczące modelu regresji liniowej

RÓWNANIA RÓŻNICZKOWE WYKŁAD 11

UKŁADY RÓWNAŃ LINOWYCH

2 n < 2n + 2 n. 2 n = 2. 2 n 2 +3n+2 > 2 0 = 1 = 2. n+2 n 1 n+1 = 2. n+1

Podprzestrzenie macierzowe

TRANSFORMACJA DO UKŁADU 2000 A PROBLEM ZGODNOŚCI Z PRG

Jarosław Wróblewski Analiza Matematyczna 2B, lato 2015/16

Miary rozproszenia. Miary położenia. Wariancja. Średnia. Dla danych indywidualnych: Dla danych indywidualnych: s 2 = 1 n. (x i x) 2. x i.

3. Wzory skróconego mnożenia, działania na wielomianach. Procenty. Elementy kombinatoryki: dwumian Newtona i trójkąt Pascala. (c.d.

Definicje. Algorytm to:

ALGORYTMY Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny

Wektory Funkcje rzeczywiste wielu. Matematyka Studium doktoranckie KAE SGH Semestr letni 2008/2009 R. Łochowski

Podprzestrzenie macierzowe

Miary położenia. Miary rozproszenia. Średnia. Wariancja. Dla danych indywidualnych: Dla danych indywidualnych: s 2 = 1 n. (x i x) 2. x i.

STATYSTYKA I ANALIZA DANYCH

Ćwiczenia rachunkowe TEST ZGODNOŚCI χ 2 PEARSONA ROZKŁAD GAUSSA

Zdarzenia losowe, definicja prawdopodobieństwa, zmienne losowe

Pierwiastki z liczby zespolonej. Autorzy: Agnieszka Kowalik

Znajdowanie pozostałych pierwiastków liczby zespolonej, gdy znany jest jeden pierwiastek

Podstawy i języki programowania

Elementy statystyki opisowej Izolda Gorgol wyciąg z prezentacji (wykład I)

Matematyka finansowa r. Komisja Egzaminacyjna dla Aktuariuszy. XLVII Egzamin dla Aktuariuszy z 6 października 2008 r.

Programowanie proceduralne INP001210WL rok akademicki 2017/18 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

1. Wnioskowanie statystyczne. Ponadto mianem statystyki określa się także funkcje zmiennych losowych o

LABORATORIUM MODELOWANIA I SYMULACJI. Ćwiczenie 3 MODELOWANIE SYSTEMÓW DYNAMICZNYCH METODY OPISU MODELI UKŁADÓW

STATYSTYKA OPISOWA WYKŁAD 1 i 2

1 Wprowadzenie do algorytmiki

Arkusz ćwiczeniowy z matematyki Poziom podstawowy ZADANIA ZAMKNIĘTE. W zadaniach od 1. do 21. wybierz i zaznacz poprawną odpowiedź. 1 C. 3 D.

METODY NUMERYCZNE dr inż. Mirosław Dziewoński

SYSTEM KOMPUTEROWY UŁATWIAJĄCY WYKORZYSTANIE INFORMACJI O ZJAWISKACH SOCJALNO-EKONOMICZNYCH PRZY WYBORZE FIRM INWESTUJĄCYCH NA DANYM TERENIE

Rachunek prawdopodobieństwa i statystyka W12: Statystyczna analiza danych jakościowych. Dr Anna ADRIAN Paw B5, pok 407 adan@agh.edu.

INFORMATYKA W CHEMII Dr Piotr Szczepański

Transkrypt:

Rok akademicki 007/008, Wykład r 7 /44 Pla wykładu r 7 Iformatyka Politechika Białostocka - Wydział Elektryczy Elektrotechika, semestr II, studia stacjoare I stopia Rok akademicki 007/008 Wykład r 7 (09.06.008) Defiicje algorytmu komputerowego Sposoby opisu algorytmów opis słowy schemat blokowy pseudokod język programowaia Klasyfikacje algorytmów Rekurecja ZłoŜoość obliczeiowa Języki programowaia Geeracje języków programowaia Rok akademicki 007/008, Wykład r 7 3/44 Rok akademicki 007/008, Wykład r 7 4/44 Algorytm - defiicje Defiicja Algorytm to skończoy, uporządkoway ciąg jaso zdefiiowaych czyości, koieczych do wykoaia pewego zadaia Defiicja Metoda rozwiązaia zadaia Defiicja 3 Ściśle określoa procedura obliczeiowa, która dla właściwych daych wejściowych zwraca Ŝądae dae wyjściowe zwae wyikiem działaia algorytmu Defiicja 4 Skończoy zbiór reguł, wskazujący kolejość operacji przy rozwiązywaiu problemu pewego typu Algorytmy Słowo algorytm pochodzi od azwiska Mohammed ib Musa al-khowarizmiego (po łaciie pisae jako Algorismus), matematyka perskiego z IX wieku i początkowo ozaczało w Europie sposób obliczeń oparty a dziesiętym systemie liczbowym Badaiem algorytmów zajmuje się algorytmika Algorytm moŝe zostać zaimplemetoway w postaci programu komputerowego lub dla iego urządzeia Te sam algorytm moŝe być zaimplemetoway w róŝy sposób przy uŝyciu róŝych języków programowaia Jeśli day algorytm da się wykoać a maszyie o dostępej mocy obliczeiowej i pamięci oraz akceptowalym czasie, to mówi się Ŝe jest to algorytm obliczaly

Rok akademicki 007/008, Wykład r 7 5/44 Rok akademicki 007/008, Wykład r 7 6/44 Algorytmy Podstawowe cechy algorytmu Algorytm powiie posiadać dae wejściowe (w ilości większej lub rówej zeru) pochodzące z dobrze zdefiiowaego zbioru Algorytm powiie zwracać pewie wyik Algorytm powiie być precyzyjie zdefiioway (kaŝdy krok algorytmu musi być jedozaczie określoy) Sposoby opisu algorytmów. Opis w puktach, w języku aturalym (opis słowy, lista kroków). Za pomocą schematu blokowego 3. Z zastosowaiem pseudokodu (język publikacyjy), czyli iezbyt formalej odmiaie języka programowaia (p. odformalizoway Pascal, C, C++) 4. W kokretym języku programowaia, p. Pascalu, C, C++, Matlabie Algorytm powiie być zawsze poprawy (dla kaŝdego z załoŝoego dopuszczalego zestawu daych wejściowych) Algorytm powiie zawsze kończyć się po skończoej liczbie kroków (powia istieć poprawie działająca reguła stopu algorytmu) Algorytm powiie być efektywy (jak ajkrótszy czas wykoaia i jak ajmiejsze zapotrzebowaie a pamięć) Rok akademicki 007/008, Wykład r 7 7/44 Rok akademicki 007/008, Wykład r 7 8/44 Opis słowy s algorytmu Opis słowy przypomia przepis kuliary z ksiąŝki kucharskiej Schematy blokowe Elemety występujące a schematach blokowych: Przykład: Algorytm: Tortilla (a podstawie PodróŜy kuliarych R. Makłowicza) Dae wejściowe: Dae wyjściowe: Koleje kroki: 0,5 kg ziemiaków, 00 g kiełbasy Chorizo, 8 jajek gotowa Tortilla początek algorytmu moŝe występować tylko jede raz koiec algorytmu musi występować przyajmiej jede raz. Ziemiaki obrać i pokroić w plasterki. Kiełbasę pokroić w plasterki 3. Ziemiaki wrzucić a gorącą oliwę a pateli i przyrumieić z obu stro 4. Kiełbasę wrzucić a gorącą oliwę a pateli i przyrumieić z obu stro 5. Ubić jajka i dodać do połączoych ziemiaków i kiełbasy 6. Dodać sól i pieprz 7. UsmaŜyć z obu stro wielki omlet adzieway chipsami ziemiaczaymi z kiełbaską Opis operacji elemetara istrukcja blok fukcyjy operacje obliczeiowe lub orgaizacyje blok decyzyjy operacje warukowe testy

Rok akademicki 007/008, Wykład r 7 9/44 Rok akademicki 007/008, Wykład r 7 0/44 algorytm Euklidesa zajdowaia ajwiększego wspólego dzielika dwóch liczb - NWD(a,b) algorytm Euklidesa zajdowaia ajwiększego wspólego dzielika dwóch liczb - NWD(a,b) Opis w puktach: Dae wejściowe: iezerowe liczby aturale a i b NWD(675,375) =? Dae wyjściowe: Koleje kroki: NWD(a,b). Czytaj liczby a i b. Dopóki a i b są większe od zera, powtarzaj krok 3, a astępie przejdź do kroku 4 3. Jeśli a jest większe od b, to weź za a resztę z dzieleia a przez b, w przeciwym razie weź za b resztę z dzieleia b przez a 4. Przyjmij jako ajwiększy wspóly dzielik tę z liczb a i b, która pozostała większa od zera 5. Drukuj NWD(a,b) a b 675 375 675 40 67 40 67 0 NWD(675,375) = 67 Dzieleie większej liczby przez miejszą b/a = 375/675 = reszta 40 a/b = 675/40 = 4 reszta 67 b/a = 40/67 = 6 reszta 0 KONIEC Zamiaa b = 40 a = 67 b = 0 Rok akademicki 007/008, Wykład r 7 /44 Rok akademicki 007/008, Wykład r 7 /44 algorytm Euklidesa zajdowaia ajwiększego wspólego dzielika dwóch liczb - NWD(a,b) algorytm Euklidesa zajdowaia ajwiększego wspólego dzielika dwóch liczb - NWD(a,b) Schemat blokowy: Pseudokod: NWD(a,b) while a>0 i b>0 do if a>b the a a mod b else b b mod a if a>0 the retur a else retur b

Rok akademicki 007/008, Wykład r 7 3/44 Rok akademicki 007/008, Wykład r 7 4/44 algorytm Euklidesa zajdowaia ajwiększego wspólego dzielika dwóch liczb - NWD(a,b) zamiaa zapisu liczby aturalej l daej w systemie dziesiętym, a zapis w systemie pozycyjym o podstawie p Język C: it NWD(it a, it b) { while (a>0 && b>0) if (a>b) a = a % b; else b = b % a; if (a>0) retur a; else retur b; } Opis w puktach: Dae wejściowe: Dae wyjściowe: Koleje kroki:. Czytaj liczby l i p liczba l w systemie dziesiętym, podstawa systemu p zapis liczby l w systemie o podstawie p. Dopóki l > 0 powtarzaj krok 3 3. Wykoaj dzieleie całkowite liczby l przez p, resztę z dzieleia zapamiętaj jako koleją cyfrę przedstawieia liczby l w owym systemie pozycyjym 4. Drukuj cyfry przedstawieia liczby l w owym systemie pozycyjym w odwrotej kolejości iŝ były zapamiętywae Rok akademicki 007/008, Wykład r 7 5/44 Rok akademicki 007/008, Wykład r 7 6/44 zamiaa zapisu liczby aturalej l daej w systemie dziesiętym, a zapis w systemie pozycyjym o podstawie p 75 (0) =?(6) 75(0) = 035(6) 75/ 6 9/ 6 48 / 6 8 / 6 / 6 = = = = = 9 48 8 0 reszta reszta reszta reszta reszta 5 3 0 kolejość odczytywaia cyfr liczby w systemie szóstkowym Klasyfikacje algorytmów Podstawowe paradygmaty tworzeia programów komputerowych: strategia dziel i zwycięŝaj programowaie dyamicze algorytmy zachłae programowaie liiowe algorytmy siłowe (brute force) algorytmy probabilistycze heurystyka NajwaŜiejsze techiki implemetacji algorytmów komputerowych: proceduralość obiektowość praca sekwecyja praca wielowątkowa praca rówoległa rekurecja

Rok akademicki 007/008, Wykład r 7 7/44 Rok akademicki 007/008, Wykład r 7 8/44 Strategia dziel i zwycięŝ ęŝaj Strategia dziel i zwycięŝaj (ag. divide ad coquer) jest strategią kostruowaia algorytmów, jedą z ajefektywiejszych metod w iformatyce W strategii tej zazwyczaj rekurecyjie dzielimy problem a dwa lub więcej miejszych problemów tego samego (lub podobego) typu tak długo, aŝ staie się o wystarczająco prosty do bezpośrediego rozwiązaia Rozwiązaia otrzymae dla miejszych podproblemów są scalae w celu uzyskaia rozwiązaia całego zadaia Przykłady zastosowań: sortowaie szybkie (quicksort) wyszukiwaie biare - polega a sprawdzeiu czy szukay elemet zajduje się w uporządkowaej tablicy, jeśli tak, to zwraca jego ideks Programowaie dyamicze Kostrukcja programu wykorzystującego zasadę programowaia dyamiczego moŝe być sformułowaa w trzech etapach: Kocepcja: Iicjacja: Progresja: dla daego problemu stwórz rekurecyjy model jego rozwiązaia (wraz z jedozaczym określeiem przypadków elemetarych) stwórz tablicę, w której będzie moŝa zapamiętywać rozwiązaia przypadków elemetarych i podproblemów, które zostaą obliczoe a ich podstawie wpisz do tablicy wartości umerycze odpowiadające przypadkom elemetarym a podstawie wartości wpisaych do tablicy, uŝywając formuły rekurecyjej, oblicz rozwiązaie problemu wyŝszego rzędu i wpisz je do tablicy postępuj w te sposób do osiągięcia poŝądaej wartości Rok akademicki 007/008, Wykład r 7 9/44 Rok akademicki 007/008, Wykład r 7 0/44 Programowaie dyamicze - przykład Kocepcja: (F 0 w ciągu Fiboaciego) Iicjacja: Progresja: model rekurecyjy rozwiązaia + przypadki elemetare F, tablica z rozwiązaiem 0 = 0 F =, F = F + F 0 3 4 5 6 7 8 F wpisaie do tablicy wartości dla przypadków elemetarych 0 3 4 5 6 7 8 F 0 obliczeie rozwiązań problemów wyŝszego rzędu aŝ do osiągięcia poŝądaej wartości i wpisaie ich do tablicy 0 3 4 5 6 7 8 F 0 3 5 8 3 9 9 9 34 0 0 0 55 Algorytmy zachłae ae Algorytm zachłay (ag. greedy algorithm) jest to algorytm, w którym w celu rozwiązaia pewego zadaia w kaŝdym kroku dokouje się zachłaego, tj. ajlepiej rokującego w daym momecie wyboru rozwiązaia częściowego Algorytm podejmuje decyzję lokalie optymalą, dokouje wyboru wydającego się w daej chwili ajlepszym, kotyuując rozwiązaie podproblemu wyikające z podjętej decyzji Algorytmy zachłae stosowae są przede wszystkim w optymalizacji Musi zawsze istieć kryterium pozwalające oceić jakość rozwiązaia Dokoyway lokalie ajkorzystiejszy wybór ma w załoŝeiu prowadzić do zalezieia globalego optymalego rozwiązaia

Rok akademicki 007/008, Wykład r 7 /44 Rok akademicki 007/008, Wykład r 7 /44 Programowaie liiowe Programowaie liiowe to klasa programowaia matematyczego, w której wszystkie waruki ograiczające oraz fukcja celu mają postać liiową, p. waruki ograiczające: Zadaie polega a zmaksymalizowaiu (zmiimalizowaiu) fukcji celu: a x + a x a x + a x a x + a x + K+ a x + K+ a x + K+ a x α α = α f = α + c x + c x + K+ c x wiele problemów moŝa sprowadzić do maksymalizacji lub miimalizacji pewej fukcji celu, przy ograiczoych zasobach i atagoistyczych warukach programowaie liiowe zalazło szerokie zastosowaie w teorii decyzji, p. do optymalizacji plau produkcyjego Programowaie liiowe Fabryka produkuje urządzeia A i B. W ciągu jedego dia moŝa wytworzyć łączie 00 urządzeń. Wyprodukowaie urządzeia A zajmuje 3 roboczogodziy, a urządzeia B - 4 roboczogodziy. Dziea liczba dostępych roboczogodzi wyosi 600. W ciągu jedego dia aleŝy wyprodukować mi. 50 urządzeń A i mi. 50 urządzeń B. Zysk ze sprzedaŝy urządzeia A to 000 PLN, a B - 00 PLN. Ile urządzeń A i B aleŝy dzieie wyprodukować, aby zysk był jak ajwiększy? Waruki ograiczające: Fukcja celu: x A 3 x + x x, x A A 00 + 4 x B B B 50 f = 000 x 600 + 00 A x B Rok akademicki 007/008, Wykład r 7 3/44 Rok akademicki 007/008, Wykład r 7 4/44 Algorytmy siłowe Algorytm siłowy (ag. brute force) jest to określeie algorytmu opierającego się a sukcesywym sprawdzaiu wszystkich moŝliwych kombiacji w poszukiwaiu rozwiązaia problemu Algorytmy probabilistycze Ogólie algorytmy moŝa podzielić a determiistycze i probabilistycze Dae wejściowe Dae wejściowe Algorytm siłowy jest zazwyczaj ieoptymaly, ale ajprostszy w implemetacji W programowaiu termi te odosi się do dowolego algorytmu, który rozwiązuje problem przez weryfikację i oceę wszystkich wariatów postępowaia Algorytm determiistyczy Dae wyjściowe Algorytm probabilistyczy Dae wyjściowe Geerator liczb losowych Stosowae jest takŝe pojęcie ataku brute force, odoszące się do przeprowadzaych przez człowieka lub program komputerowy prób złamaia zabezpieczeń, p. odgadięcia hasła, poprzez wypróbowaie wszystkich moŝliwych kombiacji cyfr, liter i iych zaków Działaie algorytmu determiistyczego jest całkowicie zdetermiowae przez waruki początkowe (wejście), tz. dla takich samych daych wejściowych algorytm zawsze zwraca taki sam wyik Algorytm probabilistyczy albo radomizoway (ag. radomized algorithm) to algorytm, który do swojego działaia uŝywa losowości (geeratora liczb pseudolosowych)

Rok akademicki 007/008, Wykład r 7 5/44 Rok akademicki 007/008, Wykład r 7 6/44 Algorytmy probabilistycze Algorytmy probabilistycze - algorytm Mote Carlo Główą zaletą algorytmów probabilistyczych jest działaie w średim przypadku, dzięki czemu złośliwe dae wejściowe ie wydłuŝają jego działaia Wśród algorytmów probabilistyczych wyróŝia się algorytmy Las Vegas i algorytmy Mote Carlo Algorytm Las Vegas: Algorytm Las Vegas zawsze zwraca prawidłową odpowiedź, ale jego czas działaia ie jest z góry ustaloy (p. szukaie litery a w tablicy zawierającej połowę liter a i połowę liter b ) Algorytm Moe Carlo: Algorytm Mote Carlo kończy się w ustaloym czasie, ale moŝe z pewym prawdopodobieństwem zwrócić zły wyik lub zwrócić wyik tylko z pewą dokładością (p. obliczaie całek ozaczoych) obliczamy przybliŝoą wartość całki ozaczoej metodą Mote Carlo: dla fukcji f(x), której całkę chcemy obliczyć w przedziale [x p,x k ] wyzaczamy prostokąt obejmujący pole pod wykresem tej fukcji o wysokości h i długości podstawy (x k -x p ) losujemy puktów i zliczamy te pukty w, które wpadają w pole pod wykresem fukcji wartość całki obliczaa jest a podstawie wzoru przybliŝoego: I xk = x p xk I = f ( x) dx x p w f ( x) dx h( xk x p ) Rok akademicki 007/008, Wykład r 7 7/44 Rok akademicki 007/008, Wykład r 7 8/44 Rekurecja Rekurecja - przykłady Rekurecja lub rekursja (ag. recursio, z łac. recurrere, przybiec z powrotem) jest to odwoływaie się p. fukcji do samej siebie Rekurecja polega a tym, Ŝe rozwiązaie daego problemu wyraŝa się za pomocą rozwiązań tego samego problemu, ale dla daych o miejszych rozmiarach W matematyce mechaizm rekurecji stosoway jest dość często do defiiowaia lub opisywaia algorytmów silia liczby! = ( )! dla dla = 0 UŜycie opisu rekurecyjego w przypadku algorytmu pozwala a przejrzysty, zwarty opis fukcji lub procedury Nie zawsze rozwiązaie rekurecyje prowadzi do rozwiązaia efektywego, czasem prowadzi do obiŝeia efektywości programu Rekurecja zawsze zwiększa zapotrzebowaie programu a pamięć it silia(it ) { if (==0) retur ; else retur *silia(-); }

Rok akademicki 007/008, Wykład r 7 9/44 Rok akademicki 007/008, Wykład r 7 30/44 Rekurecja - przykłady Rekurecja - przykłady defiicja ciągu Fiboacciego ajwiększy wspóly dzielik - algorytm Euklidesa 0 dla = 0 F = dla = F + F dla > NWD(a, b) a = NWD(b,a mod b) dla dla b = 0 b it F(it ) { if (==0) retur 0; else if (==) retur ; else retur F(-) + F(-); } it NWD(it a, it b) { if (b==0) retur a; else retur NWD(b,a % b); } Rok akademicki 007/008, Wykład r 7 3/44 Rok akademicki 007/008, Wykład r 7 3/44 ZłoŜoość obliczeiowa W celu rozwiązaia daego problemu obliczeiowego staramy się zaleźć algorytm ajbardziej efektywy, tz. ajszybszy i o moŝliwie małym zapotrzebowaiu a pamięć Do ocey efektywości programu słuŝy tzw. złoŝoość obliczeiowa ZłoŜoość obliczeiowa azywaa jest takŝe kosztem algorytmu ZłoŜoość obliczeiowa algorytmu jest to ilość zasobów (czas, pamięć, liczba procesorów) potrzebych do jego działaia ZłoŜoość obliczeiowa algorytmu jest fukcją rozmiaru daych wejściowych (p. sortowaie tablicy - im większa tablica tym więcej zasobów jest potrzebych do jej posortowaia) W zaleŝości od rozwaŝaego zasobu mówimy o: złoŝoości czasowej złoŝoości pamięciowe ZłoŜoość obliczeiowa ZłoŜoość czasowa: Miarą złoŝoości czasowej jest liczba operacji podstawowych (domiujących) w zaleŝości od rozmiaru daych wejściowych Operacje podstawowe to p. podstawieie, porówaie, operacja arytmetycza Pomiar czasu zegarowego ie jest stosoway ze względu a silą zaleŝość od implemetacji algorytmu, zastosowaego kompilatora, komputera, doświadczeia programisty ZłoŜoość pamięciowa: ZłoŜoość pamięciowa jest miarą wykorzystaia pamięci (liczba komórek pamięci)

Rok akademicki 007/008, Wykład r 7 33/44 Rok akademicki 007/008, Wykład r 7 34/44 ZłoŜoość obliczeiowa ZłoŜoość obliczeiowa zaleŝy od postaci daych a jakich algorytm operuje Dla pewych, specyficzych daych algorytm moŝe wykoać się bardzo szybko, dla iych zaś zaczie woliej Z powyŝszych powodów rozróŝia się: złoŝoość pesymistyczą złoŝoość średią ZłoŜoość obliczeiowa Porówując złoŝoość algorytmów bierze się pod uwagę asymptotycze tempo wzrostu, czyli to jak zachowuje się fukcja określająca złoŝoość wraz ze wzrostem wartości jej argumetów Asymptotycze tempo wzrostu opisuje jak szybko daa fukcja rośie lub maleje abstrahując od kokretej postaci tych zmia Do opisu asymptotyczego tempa wzrostu stosuje się otację duŝego O, zwaą otacją Ladaua ZłoŜoość pesymistycza: Odpowiada ajbardziej iesprzyjającym dla algorytmu daym ZłoŜoość średia: ZłoŜoość uśredioa po wszystkich moŝliwych zestawach daych ZłoŜoość dla typowych daych wejściowych Rok akademicki 007/008, Wykład r 7 35/44 Rok akademicki 007/008, Wykład r 7 36/44 Notacja O Notacja O otacja ta wyraŝa złoŝoość matematyczą algorytmu porówaie ajczęściej występujących złoŝoości: w otacji tej po literze O występuje wyraŝeie w awiasach zawierające literę, która ozacza liczbę elemetów, a której działa algorytm za miarę dobroci algorytmu przyjmuje się liczbę wykoywaych w im elemetarych operacji, p. dodawaie, moŝeie, porówywaie Elemety 0 00 O(log ) 3 7 O() 0 00 O( log ) 33 664 O( ) 00 0 000 O( ) 04,7 0 30 Przykład: O() - złoŝoość algorytmu jest prostą fukcją liczby elemetów 000 0 000 0 3 000 0 000 9 966 3 877 000 000 00 000 000,07 0 30,99 0 300 O( ) - (jeśli sortowaie 000 elemetów zajmuje s, to sortowaie - (000 elemetów zajmie s) - czas koieczy do wykoaia algorytmu rośie wraz z kwadratem liczby elemetów (przy podwojeiu liczby elemetów ich obsługa będzie trwała cztery razy dłuŝej) O(log ) - złoŝoość logarytmicza O() - złoŝoość liiowa O( log ) - złoŝoość liiowo-logarytmicza O( ) - złoŝoość kwadratowa O( ) - złoŝoość wykładicza

Rok akademicki 007/008, Wykład r 7 37/44 Rok akademicki 007/008, Wykład r 7 38/44 Notacja O Uwagi: przy porówywaiu róŝych wyraŝeń O() stałe ie mają zaczeia i mogą być igorowae, p. O( ) i O(9 ) mogą być rozwaŝae jak O( ) Język programowaia Język programowaia jest to usystematyzoway sposób przekazywaia komputerowi poleceń do wykoaia Język programowaia pozwala a dokłady zapis algorytmów oraz iych zadań jakie komputer ma wykoać połączeie algorytmów o róŝych złoŝoościach tworzy algorytm o wyŝszej z połączoych złoŝoości, p. dołączeie algorytmu o złoŝoości O( ) do algorytmu o złoŝoości O() tworzy algorytm o złoŝoości O( ) zagłębiaie algorytmów (tj. moŝeie ich wpływu) tworzy algorytm z pomoŝoą złoŝoością, p. algorytm O() zagłębioy w O(log ) daje w wyiku O( log ) Rok akademicki 007/008, Wykład r 7 39/44 Rok akademicki 007/008, Wykład r 7 40/44 Język programowaia Składia języka określa: sposób opisywaia struktur sterujących sposób opisywaia struktur daych sposób tworzeia poprawych symboli do azywaia zmieych i struktur daych sposób stosowaia iterpukcji, tj. zaków typu spacje, średiki, kropki, awiasy sposób budowy poprawych wyraŝeń Sematyka języka określa zaczeie poprawych składiowo wyraŝeń Język programowaia Implemetacja języka - kokreta realizacja języka dla maszy określoego typu Program komputerowy - zbiór (ciąg) istrukcji opisujących zadaie, które ma wykoać komputer Program komputerowy - pewa metoda obliczeiowa wyraŝoa za pomocą języka programowaia Kod źródłowy - postać programu wyraŝoa w języku programowaia Przetwarzaie kodu źródłowego odbywa się a dwa sposoby kompilacja (kompilowae języki programowaia) iterpretacja (iterpretowae języki programowaia)

Rok akademicki 007/008, Wykład r 7 4/44 Rok akademicki 007/008, Wykład r 7 4/44 Język programowaia Kompilacja: Kod źródłowy jest tłumaczoy do postaci kodu maszyowego (sekwecji elemetarych operacji gotowych do bezpośrediego przetworzeia przez procesor) Kompilacja do kodu maszyowego zapewia ajwyŝszą wydajość Wygeeroway kod jest ściśle powiązay z platformą sprzętową Iterpretacja: Kod źródłowy jest a bieŝąco tłumaczoy i wykoyway przez dodatkowy program zway iterpreterem Języki iterpretowae zapewiają większą przeośość programów, które są często iezaleŝe od platformy i systemu operacyjego Programy w językach iterpretowaych są miej wydaje iŝ w językach kompilowaych Geeracje językj zyków w programowaia Geeracje języków opisują zaawasowaie (rozbudowaie) struktury języka, co jest rówocześie związae z łatwością posługiwaia się imi im miejsza liczba ozaczająca geerację języka tym bardziej jest o zbliŝoy do sprzętu im większa geeracja języka tym jest o bardziej ituicyjy i iezaleŝy od sprzętu Rok akademicki 007/008, Wykład r 7 43/44 Rok akademicki 007/008, Wykład r 7 44/44 Języki programowaia Języki programowaia Istieje około 500 języków programowaia http://www.oreilly.com/pub/a/oreilly/ews/laguageposter_0504.html http://www.oreilly.com/pub/a/oreilly/ews/laguageposter_0504.html

Rok akademicki 007/008, Wykład r 7 45/44 Rok akademicki 007/008, Wykład r 7 46/44 Koiec wykładu r 7 Źródła a (KsiąŜ ąŝki): Dziękuj kuję za uwagę! Adamski T., Ogrodzki J.: Algorytmy komputerowe i struktury daych. Oficya Wydawicza Politechiki Warszawskiej, Warszawa, 005 - Rozdz... Wprowadzeie (str. 9-48) Goczyła K.: Struktury daych. Wydawictwo Politechiki Gdańskiej, Gdańsk, 00 - Rozdz..3 Miary jakości algorytmów (str. 9-0) Goczyła K.: Struktury daych. Wydawictwo Politechiki Gdańskiej, Gdańsk, 00 - Rozdz..4 Szacowaie (str. 0-3) Alexader R., Besley G.: C++. Optymalizacja oprogramowaia. Wydawictwo RM, Warszawa, 00 - Rozdz. 5 Pomiary czasu i złoŝoości (str. 89-9) Baachowski L., Diks K., Rytter W.: Algorytmy i struktury daych. WNT, Warszawa, 006 - Rozdz... ZłoŜoość obliczeiowa (str. 3-0) Baachowski L., Diks K., Rytter W.: Algorytmy i struktury daych. WNT, Warszawa, 006 - Rozdz..8. Metody układaia algorytmów (str. 40-4) Corme T.H., Leiserso Ch.E., Rivest R.L., Stei C.: Wprowadzeie do algorytmów. WNT, Warszawa, 005 - Rozdz.. Rola algorytmów w obliczeiach (str. 4-) Rok akademicki 007/008, Wykład r 7 47/44 Rok akademicki 007/008, Wykład r 7 48/44 Źródła a (KsiąŜ ąŝki): Źródła a (Iteret): Corme T.H., Leiserso Ch.E., Rivest R.L., Stei C.: Wprowadzeie do algorytmów. WNT, Warszawa, 005 - Rozdz..3. Projektowaie algorytmów (str. 7-36) Corme T.H., Leiserso Ch.E., Rivest R.L., Stei C.: Wprowadzeie do algorytmów. WNT, Warszawa, 005 - Rozdz. 4. Rekurecje (str. 60-87) Wróblewski P.: Algorytmy, struktury daych i techiki programowaia. Wydaie III, Helio, Gliwice, 003 - Rozdz.. Zaim wystartujemy (str. 9-8) Wróblewski P.: Algorytmy, struktury daych i techiki programowaia. Wydaie III, Helio, Gliwice, 003 - Rozdz.. Rekurecja (str. 9-5) Wróblewski P.: Algorytmy, struktury daych i techiki programowaia. Wydaie III, Helio, Gliwice, 003 - Rozdz. 9. Zaawasowae techiki programowaia (str. 09-7) http://pl.wikipedia.org/wiki/algorytm - Algorytm http://pl.wikipedia.org/wiki/dziel_i_zwyci%c4%99%c5%bcaj - Dziel i zwycięŝaj http://pl.wikipedia.org/wiki/programowaie_dyamicze - Programowaie dyamicze http://pl.wikipedia.org/wiki/algorytm_zach%c5%8ay - Algorytm zachłay http://pl.wikipedia.org/wiki/programowaie_liiowe - Programowaie liiowe http://pl.wikipedia.org/wiki/brute_force - Atak brute force http://pl.wikipedia.org/wiki/algorytm_probabilistyczy - Algorytm probabilistyczy http://pl.wikipedia.org/wiki/heurystyka - Heurystyka http://pl.wikipedia.org/wiki/rekurecja - Rekurecja http://pl.wikipedia.org/wiki/z%c5%8o%c5%bcoo%c5%9b%c4%87_obliczeiowa - ZłoŜoość obliczeiowa