METODY ANALIZY PROGRAMÓW Grażyna Mirkowska mirkowska@pjwstk.waw.pl tel.w. 153 pokój 306 Wyklad MAP 01/PJWSTK Wyklad 01/PJWSTK
Cel Przedstawienie problemów i metod specyfikacji i weryfikacji programów, zapoznanie z technikami wspomagającymi poprawne konstruowanie algorytmów, zapoznanie z podstawowymi kryteriami oceny algorytmów, wyrobienie umiejętności nieformalnej analizy poprawności i szacowania złożoności. Wyklad MAP 01/PJWSTK
Literatura Banachowski L., Kreczmar A.: Elementy analizy algorytmów, WNT, 1999 Cormen T., Leiserson CH., Rivest R.: Wprowadzenie do algorytmów, DUNOD, 1994 Harel D.: Rzecz o istocie Informatyki, algorytmika, WNT 1992 Mirkowska G., Salwicki A.: Logika dla programistów, WNT, 1992 -------------------- Aho A.J., Hopcroft J.E., Ullman J.D.: Struktury danych i algorytmy, PWN Ben-Ari M.: Podstawy programowania współbieżnego i rozproszonego, WNT 1996 Dijkstra C.A.R.: Umiejętność programowania, WNT Mirkowska G., Salwicki A.: Algorithmic Logic, PWN, 1989 Wyklad MAP 01/PJWSTK
problem metoda rozwiązania rozwiązanie specyfikacja program poprawność poprawność specyfikacji programu opis implementacja Algorytm + Struktura danych Wyklad MAP 01/PJWSTK
Jak sformułować problem? Specyfikacja problemu - dokument, który informuje co należy zrobić i który jest podstawą do zweryfikowania rozwiązania problemu. Rozwiązanie - program musi być zgodny z zadaną specyfikacją. Problemy: jednoznaczność, niesprzeczność. Wyklad MAP 01/PJWSTK
Kryteria oceny algorytmów Prostota, czytelność Poprawność Koszt realizacji Idealny algorytm to taki, który jest prosty, łatwy do zrozumienia, krótki, który liczy szybko, zajmuje mało miejsca w pamięci i zawsze daje poprawne wyniki. Wyklad MAP 01/PJWSTK
Jak zapisywać algorytmy? Język x := t if g then P1 else P2 fi begin P1; P2 end while g do P1 od procedury p(in- , out- prametry ) funkcje f(parametry) Grafy przepływu flowdiagramy Wyklad MAP 01/PJWSTK
Poprawność algorytmu algorytm <warunek początkowy, warunek końcowy> Dane Wyniki Algorytm A jest poprawny ze względu na specyfikację <wp,wk> wttw gdy z tego, że warunek początkowy wp jest spełniony przez dane wynika, że algorytm zatrzymuje się i otrzymane wyniki spełniają warunek końcowy wk. Wyklad MAP 01/PJWSTK
Powiemy, że algorytm jest częściowo poprawny ze względu na specyfikację <wp,wk> wttw dla każdych danych, dla których algorytm zatrzymuje się i dla których dane spełniają warunek początkowy wp, wyniki spełniają warunek końcowy wk. Przykład Następujący algorytm jest całkowicie poprawny ze względu na specyfikację wp={x>0 , eps>0}, wk={y- x 2eps} begin z := 0; if x<1 then y := 1 else y := x fi; while y - z > eps do z := y; y := (z+x/z)/2 end Wyklad MAP 01/PJWSTK
Koszt algorytmu Miary kosztu: pamięć, czas. Operacja dominująca, rozmiar danych t(A, d)- liczba operacji dominujących, którą wykona algorytm A dla danych d T(A,n) = koszt algorytmu A jako funkcja rozmiaru danych n Tmax(A,n)=max{t(A,d) : dDn}koszt pesymistyczny Tsr(A,n)= {pr(d)* t(A,d) : d Dn}koszt średni Wyklad MAP 01/PJWSTK
Notacja asymptotyczna Niech f: NR, g: N R . g=O(f) wttw (c>0) (no)( n>no) g(n) c f(n) g=(f) wttw (c>0) (no)( n>no) c f(n) g(n) g=(f) wttw g=O(f) i g= (f) Wyklad MAP 01/PJWSTK
Przykłady 1/5 n3+ 100n2 + 1600 = (n3) lg n + n = O(n) 2n + n5 = O(2n) 2n = O(3n) 3n = (2n) 2n (3n) n lg n = O(n2) n lgn = (n) n! = O(nn) g(n)= O(f) & f(n)=O(h) g(n)=O(h) Wyklad MAP 01/PJWSTK
Czy zawsze istnieje rozwiązanie? Przykład Dany jest zbiór T kart (1x1) podzielonych przekątnymi na 4 części, z których każda jest pomalowana pewnym kolorem. Karty mają ustaloną orientację i nie można ich obracać. Czy dowolną skończoną powierzchnię o dowolnym rozmiarze można pokryć za pomocą tych kart tak, by kolory przylegających krawędzi były identyczne? Wyklad MAP 01/PJWSTK Wyklad 01/PJWSTK