Temat: Poprawo całkowita i czciowa algorytmu. Złooo obliczeiowa algorytmu. Złooo czasowa redia i pesymistycza. Rzd fukcji. I. Literatura 1. L. Baachowski, K. Diks, W. Rytter Algorytmy i struktury daych. T. H. Corme, C. E. Leiserso, R. L. Rivest Wprowadzeie do algorytmów 3. N. Wirth Algorytmy + struktury daych = programy 4. A. Drozdek, D. L. Simo Struktury daych w jzyku C 5. D. Harel Rzecz o istocie iformatyki. Algorytmika 6. A. V. Aho, J.E. Hopcroft, J. D. Ullma - Projektowaie i aaliza algorytmów komputerowych Aaliza algorytmów to dział iformatyki zajmujcy si szukaiem ajefektywiejszych, poprawych algorytmów dla daych problemów komputerowych II. Poprawo całkowita i czciowa algorytmu WP waruek pocztkowy formuła logicza defiiujca dae wejciowe algorytmu WK waruek kocowy formuła logicza defiiujca dae wyjciowe algorytmu uzyskae dla daych wejciowych spełiajcych WP Algorytm A jest czciowo poprawy wzgldem daego waruku WP i daego waruku WK wtedy i tylko wtedy, gdy dla dowolych daych wejciowych spełiajcych waruek WP, jeeli algorytm A zatrzymuje si, to dae wyjciowe algorytmu spełiaj waruek WK. Algorytm A jest całkowicie poprawy wzgldem daego waruku WP i daego waruku WK wtedy i tylko wtedy, gdy dla dowolych daych wejciowych spełiajcych waruek WP algorytm A zatrzymuje si i dae wyjciowe tego algorytmu spełiaj waruek WK.
Przykład WP: >0 N WK: s=1+3+5+...+ mod 0 s=1+3+5+...+-1 mod =0 Algorytm: s:=0; i:=1; while i<>+ do begi s:=s + i; i:=i+; ed Algorytm jest poprawy czciowo, ale ie całkowicie. Dla parzystego ptla ie ma stopu, ale dla dowolego ieparzystego ptla koczy si po skoczoej liczbie kroków i warto kocowa zmieej s spełia WK. III. Złooo obliczeiowa algorytmu Złooo obliczeiowa algorytmu to ilo zasobów komputerowych, potrzebych do jego wykoaia. Zasoby komputerowe to czas działaia i ilo zajmowaej pamici. złooo obliczeiowa złooo czasowa złooo pamiciowa d - dae wejciowe algorytmu, czyli takie, które spełiaj waruek WP d - rozmiar daych d Przykład A1 WP: a 1, a,..., a - cig liczb całkowitych ( >0)
WK: Cig a 1, a,..., a posortoway iemalejco d cig a 1, a,..., a liczb całkowitych ( >0) d - A WP: a 0, a 1,..., a - cig liczb rzeczywistych ( 0) defiiujcy współczyiki daego wielomiau W, x- daa liczba rzeczywista WK: Liczba W(x) warto wielomiau W dla argumetu x d cig a 0, a 1,..., a, cig liczb rzeczywistych ( 0) defiiujcy współczyiki daego wielomiau W d - +1 A3 WP: t 1, t,..., t - cig zaków tekstu ( > 0) w 1, w,..., w m - cig zaków wzorca ( m > 0) WK: p- zmiea logicza przyjmuje warto true, gdy wzorzec wystpuje w tekcie, a false, gdy wzorzec ie wystpuje w tekcie d - t 1, t,..., t - cig zaków tekstu ( > 0) w 1, w,..., w m - cig zaków wzorca ( m > 0) d -, m Operacja elemetara (iaczej operacja domiujca) to operacja charakterystycza dla daego algorytmu. To taka operacja, e łcza ich liczba jest proporcjoala do liczby wykoa wszystkich operacji jedostkowych w dowolej komputerowej realizacji algorytmu. Przykład A1- operacj elemetar jest operacja porówywaia elemetów sortowaego cigu albo operacja przestawiaia elemetów cigu w czasie sortowaia. A- operacj elemetar jest operacja arytmetycza moeia albo operacja arytmetycza dodawaia realizowaa w procesie obliczaia wartoci wielomiau dla daego x. A3 operacja porówywaia zaków wzorca ze zakami tekstu w procesie sprawdzaia, czy wzorzec wystpuje w tekcie.
Za jedostk złoooci czasowej przyjmuje si wykoaie jedej operacji elemetarej (domiujcej). Złooo czasowa algorytmu jest fukcj rozmiaru daych. IV. Złooo czasowa redia i pesymistycza Nieformalie Złooo czasowa pesymistycza to ilo wykoaych operacji elemetarych dla daych ajgorszego przypadku Złooo czasowa oczekiwaa to ilo wykoaych operacji elemetarych dla daych typowego przypadku Formalie Ozaczeia D zbiór zestawów moliwych daych wejciowych rozmiaru t(d) liczba operacji elemetarych wykoaych dla daych wejciowych d pr(d) prawdopodobiestwo, e dae d s daymi wejciowymi algorytmu Pesymistycza złooo czasowa algorytmu to fukcja T ( ) = max { t( d ): d } max D Oczekiwaa (redia) złooo czasowa algorytmu to fukcja T r ( ) = pr ( d ) t( d ) d D Przykład Algorytm wyszukiwaia ustaloej liczby w cigu ieuporzdkowaym WP: A: a 1, a,..., a - cig liczb całkowitych ( > 0). Liczby w cigu s róe. x szukaa warto. x jest liczb całkowit. WK: zmiea logicza p=true, gdy a i = x i p=false w przeciwym Algorytm i := 1; przypadku while (i<=) ad (a i <>x) do i:=i+1; p:=i<=; i = 1..
Operacja elemetara: porówaia midzy elemetami cigu a liczb x. Rozmiar daych: - długo cigu Złooo czasowa pesymistycza Dae ajgorszego przypadku to cig, w którym x ie wystpuje. Tmax ( ) = max t( d ): d D = { } Złooo czasowa redia Zakładamy, e prawdopodobiestwo zalezieia liczby x w cigu A jest rówe p. Prawdopodobiestwo, e x wystpuje a a kadej z pozycji w cigu jest takie samo i wyosi T + r p. ( ) = pr ( d ) t( d ) = pr ( x A) t( x A) i= 1 pr d D ( x = ai ) t( x = ai ) = ( 1 p ) + p 1+ p = 1 ( 1 p) + = + ( ) IV. Rzd fukcji Niech f, g, h: N R + {0}. Mówimy, e f jest co ajwyej rzdu g, co zapisujemy f()=o(g()), jeli c 0 N > > 0 0 f ( ) cg( ) Na przykład + = O( ), bo + 3 dla kadego aturalego. Mówimy, e f jest co ajmiej rzdu g, co zapisujemy f()=ω(g()), jeli g()=o(f()). Mówimy, e f jest dokładie rzdu g, co zapisujemy f()=θ(g()), jeli zarówo g()=o(f()), jak i f()=o(g()) (g()= Ω (f()). Na przykład + = ( ), bo + 3 dla kadego aturalego i= 1 p + i =
i + dla kadego 0. Lemat o porówywaiu rzdów fukcji: f(), g() fukcje, których rzdy mamy porówa. f ( ) E = lim g ( ) Jeli E=+, to g()=o(f()), ale ie f()=o(g()), Jeli E=c>0, to g()= Θ (f()), Jeli E=0, to f()= O (g()), ale ie g()=o(f()). Na przykład: f ( E = ) g( ) log czyli log=o( ), ale ie =O(log). l l 1/ l lim = lim = lim = lim = 0, V. Porówaie czasów realizacji algorytmu wykładiczego a dwóch komputerach o róej szybkoci wykoaia operacji elemetarej Rozmiar 0 50 100 00 Czas działaia 1,04 s 35,7 lat 14 44 4 10 5 10 6 ( /10 ) wieków wieków Czas działaia 0,001 s 13 di 11 41 4 10 5 10 9 /10 wieków wieków ( )