Temat: Poprawno całkowita i cz ciowa algorytmu. Zło ono obliczeniowa algorytmu. Zło ono czasowa rednia i pesymistyczna. Rz d funkcji. I. Literatura 1. A. V. Aho, J.E. Hopcroft, J. D. Ullman - Projektowanie i analiza algorytmów komputerowych 2. L. Banachowski, K. Diks, W. Rytter – Algorytmy i struktury danych 3. (!)T. H. Cormen, C. E. Leiserson, R. L. Rivest – Wprowadzenie do algorytmów 4. (!)A. Drozdek, D. L. Simon – Struktury danych w j zyku C 5. D. Harel – Rzecz o istocie informatyki. Algorytmika 6. (!)R. Neapolitan, K. Naimipour, Podstawy algorytmów z przykładami w C++ 7. (!)V. V. Vazirani, Algorytmy aproksymacyjne Analiza algorytmów to dział informatyki zajmuj cy si najefektywniejszych, poprawnych algorytmów dla danych komputerowych. I. szukaniem problemów Problem komputerowy Problem komputerowy to zadanie przeznaczone do realizacji na maszynie cyfrowej z okre lonym warunkiem pocz tkowym i ko cowym. WP – warunek pocz tkowy – formuła logiczna definiuj ca dane wej ciowe problemu WK – warunek ko cowy – formuła logiczna definiuj ca dane wyj ciowe (wyniki rozwi zania problemu) uzyskane dla danych wej ciowych spełniaj cych WP 1 II. Poprawno całkowita i cz ciowa algorytmu Definicja 1 Algorytm A jest cz ciowo poprawny wzgl dem danego warunku WP i danego warunku WK wtedy i tylko wtedy, gdy dla dowolnych danych wej ciowych spełniaj cych warunek WP, je eli algorytm A zatrzymuje si , to dane wyj ciowe algorytmu spełniaj warunek WK. Definicja 2 Algorytm A jest całkowicie poprawny wzgl dem danego warunku WP i danego warunku WK wtedy i tylko wtedy, gdy dla dowolnych danych wej ciowych spełniaj cych warunek WP algorytm A zatrzymuje si i dane wyj ciowe tego algorytmu spełniaj warunek WK. Przykład 1 Formalny zapis WP i WK WP: n>0 ∧ n∈N WK: (s=1+3+5+...+n ∧ n mod 2≠0) ∨ (s=1+3+5+...+n-1 ∧ n mod 2=0) Nieformalna specyfikacja WP i WK WP: n – liczba naturalna wi ksza od zera WK: s – suma kolejnych liczb nieparzystych nie wi kszych ni n Algorytm (pseudokod) s=0; i=1; while (i!=n+2) { s=s + i; i+=2; }; Powy szy algorytm jest poprawny cz ciowo, ale nie całkowicie. Dla n parzystego p tla nie ma stopu, ale dla dowolnego n nieparzystego p tla ko czy si po sko czonej liczbie kroków i warto ko cowa zmiennej s spełnia WK. 2 III. Zło ono obliczeniowa algorytmu Zło ono obliczeniowa algorytmu to ilo zasobów komputerowych, potrzebnych do jego wykonania. Zasoby komputerowe to czas działania i ilo zajmowanej pami ci. zło ono obliczeniowa zło ono IV. zło ono pami ciowa czasowa Zło ono czasowa algorytmu Zło ono czasowa algorytmu okre la „czas” realizacji algorytmu. Zło ono czasowa musi by niezale na od: - szybko ci procesora, który wykonuje algorytm, - wyboru j zyka programowania, w którym wykonana jest implementacja algorytmu. a) Rozmiar zadania Rozmiar zadania (problemu) to rozmiar tych danych wej ciowych, których ilo wpływa na czas wykonania algorytmu, tzn. im wi ksza jest ilo tych danych, tym dłu ej realizuje si algorytm. Przykład 2 Problem A1 WP: a0, a1, ..., an-1 - ci g liczb całkowitych (n >0) WK: Ci g dany w WP posortowany niemalej co Rozmiar zadania: n – długo ci gu, który nale y posortowa 3 Problem A2 WP: a0, a1, ..., an- ci g liczb rzeczywistych (n ≥ 0) definiuj cy współczynniki danego wielomianu W, x- dana liczba rzeczywista WK: Liczba W(x) – warto wielomianu W dla argumentu x Rozmiar zadania: n - stopie wielomianu W(x) Problem A3 WP: t1, t2, ..., tn- ci g znaków tekstu (n > 0) w1, w2, ..., wm- ci g znaków wzorca (n ≥ m > 0) WK: p- zmienna logiczna, która przyjmuje warto 1 (prawda), gdy wzorzec wyst puje w tek cie, a 0 (fałsz), gdy wzorzec nie wyst puje w tek cie Rozmiar zadania: n – długo wzorca, m – długo tekstu b) operacja elementarna Operacja elementarna (inaczej operacja dominuj ca) to operacja charakterystyczna dla danego algorytmu. To taka operacja, której ł czna liczba wykona jest proporcjonalna do rozmiaru zadania, tzn. im wi kszy rozmiar zadania, tym wi cej razy realizuje si operacja elementarna. Przykład 3 Problem A1 - operacj elementarn jest operacja porównywania elementów sortowanego ci gu albo operacja przestawiania elementów ci gu w czasie sortowania. Problem A2 - operacj elementarn jest operacja arytmetyczna mno enia albo operacja arytmetyczna dodawania realizowana w procesie obliczania warto ci wielomianu dla danego x. Problem A3 – operacja porównywania znaków wzorca ze znakami tekstu w procesie sprawdzania, czy wzorzec wyst puje w tek cie. Za jednostk zło ono ci czasowej przyjmuje si wykonanie jednej operacji elementarnej (dominuj cej). Zło ono czasowa algorytmu jest funkcj parametru (parametrów) rozmiaru zadania. 4 c) Zło ono czasowa rednia i pesymistyczna Nieformalnie Zło ono czasowa pesymistyczna to ilo dla danych „najgorszego” przypadku Zło ono czasowa oczekiwana to ilo danych „typowego” przypadku wykonanych operacji elementarnych wykonanych operacji elementarnych dla Formalnie Definicja 3 Oznaczenia Dn – zbiór zestawów mo liwych danych wej ciowych rozmiaru n t(d) – liczba operacji elementarnych wykonanych dla danych wej ciowych d pr(d) – prawdopodobie stwo, e dane d s danymi wej ciowymi algorytmu Pesymistyczna zło ono czasowa algorytmu to funkcja T max (n ) = max {t (d ) : d ∈ D n } Oczekiwana ( rednia) zło ono T r (n ) = czasowa algorytmu to funkcja d ∈Dn pr (d ) ⋅ t (d ) Przykład 4 Problem wyszukiwania ustalonej liczby w ci gu nieuporz dkowanym WP: A: a0, a1, ..., an-1- ci g liczb całkowitych (n > 0). Liczby w ci gu s ró ne. x – szukana warto . x jest liczb całkowit . WK: zmienna logiczna jest=1, gdy ∃ ai = x oraz jest=0 w przeciwnym i∈{1..n} przypadku Algorytm i = 0; while (i<n && ai!=x) i++; jest=i<n; 5 Operacja elementarna: porównania mi dzy elementami ci gu A a liczb x. Rozmiar danych: n - długo ci gu Zło ono czasowa pesymistyczna Dane „najgorszego” przypadku to ci g, w którym x nie wyst puje albo wyst puje w indeksie n-1 Tmax (n ) = max {t (d ) : d ∈ D n } = n Zło ono czasowa rednia Zakładamy, e prawdopodobie stwo znalezienia liczby x w ci gu A jest równe p. Prawdopodobie stwo, e x wyst puje na ka dej z n pozycji w ci gu jest takie p samo i wynosi . n T + r (n ) = n −1 i=0 d∈Dn pr ( x = a i ) ⋅ t ( x = a i ) = (1 − p ) ⋅ n + = (1 − p ) ⋅ n + V. pr (d ) ⋅ t (d ) = pr ( x ∉ A ) ⋅ t ( x ∉ A ) + p 1+ n p ⋅ ⋅ n = n + (1 − n ) n 2 2 n −1 i=0 p ⋅ (i + 1) = n Rz d funkcji Przy formułowaniu ostatecznych wniosków dotycz cych efektywno ci czasowej (zło ono ci czasowej algorytmu) bierze si pod uwag nie tyle dokładn funkcj kosztu, ile jej rz d (klas wzrostu funkcji). Na przykład, je eli dwa algorytmy A i B rozwi zuj ce ten sam problem maj zło ono pesymistyczn wyra aj c si odpowiednio wzorami: Tmax (n ) = n 2 + 2n i Tmax (n ) = 3n 2 A B to ró nica realnego czasu wykonania obydwu algorytmów jest stosunkowo niewielka, nawet dla du ego n. Na czas realizacji algorytmu zasadniczo wpływa bowiem w obydwu funkcjach fakt, e s wielomianami stopnia 2. N 10 20 50 100 1000 0,1n2 10 40 250 1000 100000 0,1n2+n+100 120 160 400 1200 101100 6 Definicja 4 Powiemy, e funkcja f(n) jest co najwy ej takiego rz du jak funkcja g(n) i zapiszemy nast puj co: f(n)=O(g(n)), gdy istnieje rzeczywista, dodatnia stała c oraz pewna nieujemna warto całkowita N, taka, e dla wszystkich n≥N zachodzi warunek: f (n ) ≤ c ⋅ g (n ) Na przykład, je eli f(n)=100n a g(n)=n2+100 to wystarczy przyj aby nierówno ( ) c=5 i N=10, 100n ≤ 5 ⋅ n + 100 była prawdziwa dla wszystkich n≥N 2 Definicja 5 Powiemy, e funkcje f(n) i g(n) s tego samego rz du i zapiszemy nast puj co: f(n)=Θ(g(n)), gdy f(n)=O(g(n)) oraz g(n)=O(f(n)), czyli istniej rzeczywiste, dodatnie stałe c1 i c2 oraz pewne nieujemne warto ci całkowite N1 i N2, takie, e dla wszystkich n≥N1 zachodzi warunek: a dla wszystkich n≥N2 warunek: g (n ) ≤ c1 ⋅ f (n ) f (n ) ≤ c2 ⋅ g (n ) Na przykład, je eli f(n)=100n2 a g(n)=n2+3n+10 to wystarczy przyj c1=1 i 2 2 N1=1, aby nierówno n + 3n + 10 ≤ 1 ⋅ 100n była prawdziwa dla wszystkich n≥1 oraz c2=100 aby nierówno dla wszystkich n≥1 VI. ( ) 100n 2 ≤ 100 ⋅ n 2 + 3n + 10 była prawdziwa Lemat o porównywaniu rz dów funkcji Lemat 1 f(n), g(n) – funkcje, których rz dy mamy porówna E = lim n→ ∞ f (n ) g (n ) Je li E=+∞, to g(n)=O(f(n)), ale nie f(n)=O(g(n)), Je li E=c>0, to g(n)= Θ (f(n)), Je li E=0, to f(n)= O (g(n)), ale nie g(n)=O(f(n)). 7 Przy kład 5 f (n ) n log n ln n 1/ n E = lim = lim = = =0, 2 lim lim g ( n ) n n ln 2 ln 2 n →∞ n →∞ n →∞ n →∞ czyli nlogn=O(n2), ale nieprawda, e n2=O(nlogn). Kategorie zło ono ci: ( ) Θ(n ) Θ(n ) Θ(a ) Θ(b ) Θ(n!) Θ(log n ) Θ(n ) Θ(n log n ) Θ n 2 j k n n gdzie k > j > 2 oraz b > a > 1. Je eli funkcja zło ono ci g(n) nale y do kategorii le cej na lewo od kategorii zawieraj cej funkcj f(n), to g (n ) = O( f (n )) . VII. Porównanie czasów realizacji algorytmu wykładniczego na dwóch komputerach o ró nej szybko ci wykonania operacji elementarnej Pewien algorytm ma zło ono komputery: Θ(2n). Załó my, ze mamy do dyspozycji dwa - wolniejszy – taki, który jedn operacj elementarn wykonuje w czasie 10-6 s, - szybszy – dokładnie 1000 razy szybszy, który jedn operacj elementarn wykonuje w czasie 10-9 s W poni szej tabelce zobrazowano wzrost realnego czasu wykonania algorytmu dla rosn cego rozmiaru zadania Rozmiar zadania - n Czas realizacji na wolniejszym procesorze (2 n / 106 ) Czas realizacji na szybszym procesorze (2 n / 10 9 ) 20 1,04 s 0,001 s 50 100 35,7 lat 4 ⋅ 1014 wieków 200 13 dni 5 ⋅ 10 41 4 ⋅ 1011 wieków 5 ⋅ 10 44 Wieków Wieków Z powy szej tabelki wynika, e „rozs dny” czas wykonania algorytmu o zło ono ci Θ(2n) przestaje by „rozs dny” przy stosunkowo niewielkim n, bo n=50. 8