rozmiar danych
Transkrypt
rozmiar danych
J. Koszelew Temat 3: Poj cie zło ono ci obliczeniowej algorytmu. Przykłady efektywnych i nieefektywnych algorytmów rozwi zuj cych ten sam problem komputerowy. 1. Poj cie zło ono ci obliczeniowej algorytmu Analiza algorytmów to dział informatyki zajmuj cy si szukaniem najefektywniejszych, poprawnych algorytmów dla danych problemów komputerowych. Problem komputerowy to zadanie przeznaczone do realizacji na maszynie cyfrowej z okre lonym warunkiem pocz tkowym (WP) i ko cowym (WK). WP – warunek pocz tkowy – specyfikacja (dokładny opis) danych wej ciowych problemu WK – warunek ko cowy – specyfikacja (dokładny opis) danych wyj ciowych (wynikowych) uzyskanych dla danych wej ciowych spełniaj cych WP Rozwi zaniem problemu komputerowego jest algorytm, którego dane wej ciowe spełniaj WP, a wyniku WK. Zło ono obliczeniowa algorytmu to ilo zasobów komputerowych, potrzebnych do jego wykonania. Zasoby komputerowe to czas działania i ilo pami ci zajmowanej prze dane wej ciowe, wynikowe i struktury pomocnicze u ywane w algorytmie. 1 J. Koszelew 2. Zło ono czasowa algorytmu Zło ono czasowa algorytmu okre la „czas” realizacji algorytmu. Zło ono czasowa niezale na od: - szybko ci procesora, który wykonuje zaimplementowany algorytm (program), - wyboru j zyka programowania, w którym wykonana jest implementacja algorytmu. a) Rozmiar problemu komputerowego Rozmiar problemu komputerowego 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 1 Problem A1 WP: a1, a2, ..., an- ci g liczb całkowitych (n >0) WK: Ci g a1, a2, ..., an posortowany niemalej co Rozmiar zadania: n – długo ci gu, który nale y posortowa Problem A2 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. 2 J. Koszelew Przykład 2 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 – 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. c) Zło ono czasowa rednia i pesymistyczna Nieformalnie Pesymistyczna zło ono czasowa to liczba wykonanych operacji elementarnych dla danych „najgorszego” przypadku. rednia (oczekiwana) zło ono czasowa to liczba wykonanych operacji elementarnych dla danych „typowego” ( redniego) przypadku. Przykład 3 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 x wyst puje w ci gu A oraz jest=0 w przeciwnym przypadku Algorytm i = 0; while (i<n && ai!=x) i++; jest=i<n; 3 J. Koszelew Operacja elementarna: porównania mi dzy elementami ci gu A a liczb x. Rozmiar danych: n - długo ci gu Pesymistyczna zło ono czasowa algorytmu Dane „najgorszego” przypadku to ci g, w którym x nie wyst puje albo wyst puje w indeksie n-1. T max (n ) = n rednia zło ono czasowa algorytmu T ave (n ) = 3. Rz d funkcji n 2 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 ( ) Tmax (n ) = n 2 + 2n = Θ n 2 = Tmax (n ) = 3n 2 A B 4 J. Koszelew Kategorie zło ono ci: ( ) Θ(n ) Θ(n ) Θ(a ) Θ(b ) Θ(n!) Θ(log n ) Θ(n ) Θ(n log n ) Θ n 2 j k n n ( ) Θ nn gdzie k > j > 2 oraz b > a > 1. 4. 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 dwa komputery: Θ(2n). Załó my, ze mamy do dyspozycji • 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 n - rozmiar zadania 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. 5 J. Koszelew 5. Przykłady efektywnych i niefektywnych algorytmów a) Wyszukiwanie w ci gu uporz dkowanym WP: A: a0, a1, ..., an-1- ci g liczb całkowitych (n > 0), uporz dkowany rosn co; x – szukana warto ; x jest liczb całkowit ; liczby w ci gu si nie powtarzaj . WK: p=true gdy x ∈A; p=false gdy x∉A. Operacja elementarna: porównania mi dzy elementami ci gu a liczb x. Rozmiar danych: n - długo ci gu Algorytm liniowy i = 0; while (i<n && ai<x) i++; p= ai =x; Zło ono czasowa pesymistyczna Dane „najgorszego” przypadku to ci g, w którym x nie wyst puje i wszystkie liczby w ci gu s mniejsze od x. Tmax (n ) = n = Θ (n ) Algorytm wyszukiwania binarnego (oparty na strategii „dziel i zwyci aj”) l=0; r=n-1; p=0; while (l<=r && ! p) { m=(l+r)/2; if (am ==x) p=1; else if (am <x) l=m+1; else r=m-1; 6 J. Koszelew Przykład 4 A: 2 0 6 8 1 13 15 29 45 60 89 94 3 4 5 6 7 8 9 2 x=30 Porównywane z x warto ci ci gu A: 15, 60, 29, 45 Zło ono czasowa pesymistyczna Dane „najgorszego” przypadku to ci g, w którym x nie wyst puje. Tmax (n ) = Θ (log 2 n ) Wniosek: Strategia „dziel i zwyci aj” obni a znacz co koszt algorytmu rozwi zuj cego problem wyszukiwania w ci gu uporz dkowanym. b) Wyznaczanie warto ci wielomianu 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 Algorytm naiwny w=a0; for (int i=1;i<=n;i++) { p=x; for (int j=0;j<i-1;j++) p*=x; w+=ai*p; } T max (n ) = 1 + 2 + 3 + ... + n = 1+ n ⋅ n = Θ n2 2 ( ) 7 J. Koszelew Algorytm liniowy w=a0;p=1; for (int i=1;i<=n;i++) { p*=x; w+=ai*p; } T max (n ) = 2 n = Θ (n ) Algorytm oparty na schemacie Hornera w=a0; for (int i=0; i<n; i++) w+=ai+x*w; Tmax (n ) = n = Θ (n ) 8