ALG8
Rozdział 3. Analiza sprawności algorytmów
3.6. Nowe zadanie: uprościć obliczenia!
Nic sposób pominąć faktu, że wszystkie nasze dotychczasowe zadania byty dość skomplikowane rachunkowo, a tego leniwi ludzie (czytaj: programiści) nie lubią. Jak zatem postępować, aby wykonać tylko te obliczenia, które są naprawdę niezbędne do otrzymania wyniku? Otóż warto zapamiętać następujące „sztuczki”, które znacznie ułatwią nam to zadanie, pozwalając niejednokrotnie określić natychmiastowo poszukiwany wynik:
• W analizie programu zwracamy uwagę tylko na najbardziej „czasochłonne” operacje (np. poprzednio były to instrukcje porównań).
• Wybieramy jeden wiersz programu znajdujący się w najgłębiej położonej instrukcji iteracyjnej (pętle w pętlach, a te jeszcze w innych pętlach...), a następnie obliczamy, ile razy się on wykona. Z tego wyniku deduku-jemy złożoność teoretyczną.
Pierwszy sposób był już wcześniej stosowany. Aby wyjaśnić nieco szerzej drugą metodę, proponuję przestudiować poniższy fragmentu programu:
while (i<N)
i
while (j<=N)
(
suma=suma+?;
j-j+1;
I
)
Wybieramy instrukcję suinu-suma+2 i obliczamy w prosty sposób, iż wykona
się ona |V <,v + 11 razy. Wnioskujemy, że ten fragment programu ma złożo-2
ność teoretyczną równą 0(n2).
3.7. Analiza programów rekurencyjnych
Większość programów rekurencyjnych nie da się niestety rozważyć przy użyciu metody poznanej w przykładzie znajdującym się w §3.2. Istotnie, zastosowana tam metoda rozwiązywania równania rekurencyjnego, polegająca na rozpisaniu jego składników i dodaniu układu równań stronami, nie zawsze się sprawdza. U nas doprowadziła ona do sukcesu, tzn. do uproszczenia obliczeń - niestety, zazwyczaj równania potraktowane w ten sposób jeszcze bardziej się komplikują...
Wyszukiwarka
Podobne podstrony:
ALG8 78___Rozdział 3 Analiza sprawności algorytmówZad. 3-4 Proszę rozwiązać następujące równanieALG4 54 Rozdział 3. Analiza sprawności algorytmów Tematyką tego rozdziału jest tzw. złożoność oblicALG6 56 Rozdział 3. Analiza sprawności algorytmów jest intuicyjnie bardzo proste, dalej będziemy użAlg0 60 Rozdział 3. Analiza sprawności algorytmów • Znak graficzny 3 należy czytaALG2 52 Rozdział 3. Analiza sprawności algorytmów Rys. 3 -ALG4 64 Rozdział 3. Analiza sprawności algorytmów3.4. Przykład 3: Wpadamy w pułapkę Zadania z dwóchALG6 66 Rozdział 3. Analiza sprawności algorytmów return pos; else //element zostALG0 70 Rozdział 3. Analiza sprawności algorytmów Przykład: SRL=xn-3x„.i+2 x„ -2=0 dajeALG2 72 Rozdział 3. Analiza sprawności algorytmówn o) = i, i = A + O, A = 1. Po tALG4 74 Rozdział 3. Analiza sprawności algorytmów • funkcja d(n) musi spełniać następującą własnośćALG6 76 Rozdział 3. Analiza sprawności algorytmów Analogicznie dla 2 otrzymamy: Vn > 1, A(n,2) =ALG2 12 PrzedmowaRozdział 3 Analiza sprawności algorytmów Przegląd najpopularniejszych i najprostszALG8 58Rozdział 3. Analiza sprawności algorytmów konania programu zależy od danej wejściowej n? W lALG8 48 Rozdział 2. Rekurencja W celu dokładniejszego przeanalizowania algorytmu posłużymy się kilkALG3 Rozdział 3Analiza sprawności algorytmów Podstawowe kryteria pozwalające na wybór właściwego alALG8 88 Rozdział 4. Algorytmy sortowania Jest chyba dość oczywiste, że wywołania rekurencyjne zatrzALG8 198 Rozdział 7. Algorytmy przeszukiwania pod indeks ///, stwierdzimy, że już wcześniej ktoś siwięcej podobnych podstron