ALG8

ALG8



68


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ównanie
ALG4 54 Rozdział 3. Analiza sprawności algorytmów Tematyką tego rozdziału jest tzw. złożoność oblic
ALG6 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 czyta
ALG2 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óch
ALG6 66 Rozdział 3. Analiza sprawności algorytmów return pos; else    //element zost
ALG0 70 Rozdział 3. Analiza sprawności algorytmów Przykład: SRL=xn-3x„.i+2 x„ -2=0 daje
ALG2 72 Rozdział 3. Analiza sprawności algorytmówn o) = i, i = A + O, A =    1. Po t
ALG4 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 najprostsz
ALG8 58Rozdział 3. Analiza sprawności algorytmów konania programu zależy od danej wejściowej n? W l
ALG8 48 Rozdział 2. Rekurencja W celu dokładniejszego przeanalizowania algorytmu posłużymy się kilk
ALG3 Rozdział 3Analiza sprawności algorytmów Podstawowe kryteria pozwalające na wybór właściwego al
ALG8 88 Rozdział 4. Algorytmy sortowania Jest chyba dość oczywiste, że wywołania rekurencyjne zatrz
ALG8 198 Rozdział 7. Algorytmy przeszukiwania pod indeks ///, stwierdzimy, że już wcześniej ktoś si

więcej podobnych podstron