4962385661

4962385661



Żeby analizować złożoność algorytmu musimy coś wiedzieć o tym jak on będzie wykonywany przez maszynę.

My będziemy zakładać, że programy są wykonywane na maszynie o dostępie swobodnym (RAM): tzn. instrukcje są wykonywane jedna po drugiej (nigdy dwie na raz) i program nie może się modyfikować w trakcie działania.

Czas działania zależy od rozmiaru danych wejściowych. 5 liczb nasz algorytm sortuje szybciej niż 1000. Także dla dwóch ciągów równej długości algorytm może wykonywać różną liczbę instrukcji w zależności od tego jak bardzo różnią się one od ciągu posortowanego. Na ogół, czas działania algorytmu wyrażany jest jako funkcja rozmiaru danych wyjściowych.

1.    Rozmiar danych wejściowych jest to funkcja przyporządkowująca poprawnym danym wejściowym algorytmu liczbę naturalną.

2.    Czas działania algorytmu jest to funkcja przyporządkowująca danym wejściowym liczbę podstawowych operacji wykonywanych przez algorytm na tych danych.

3.    (Pesymistyczna, czasowa) złożoność algorytmu jest to funkcja z N w N przyporządkowująca liczbie naturalnej n najdłuższy czas działania algorytmu na danych o rozmiarze n.

Dla problemu sortowania rozmiar danych to długość ciągu.

nr

1    dla j:=2 do n wykonuj

2    k:=A[j];

3    i:=j-l;

4    dopóki i>0 oraz A[i]>k wykonuj

5    A[i+1] :=A[i] ;

6    i:=i—1;

7    ACi+1] :=k;


czas

n


n-1

n-1

t_2+...+t_n (t_2-l)+...+(t_n-l) (t_2-l)+...+(t_n-l)


n-1


•    tj - liczba wykonań linii 4 przy ustalonym j.

•    tj - jest największy gdy macierz jest uporządkowana w porządku malejącym, wtedy tj = j.

•    T(n) - złożoność algorytmu.

T(n) = 3(n - 1) + n + 2 £(j - 1) + £>' =

3=2    j=2

n. .    n(n — 1) n(n +1)    3 o 7

;3(n—l) + n + 2 k 2    + k2 l = -»2 + -n-4

To jest ciągle ’za dokładnie’, składniki |n i —4 oraz stała § nie mają większego znaczenia, przy dużych n. To co jest ważne to n2. Mówimy, że algorytm sortowania przez wkładanie ma złożoność (pesymistyczną, czasową) 0(n2).

Notacja 0(f(n)). Niech / : N —» N funkcja. Mówimy, że funkcja g : N —» N jest (klasy) 0(f(n)) (piszemy g 6 0(f(ń)) lub wręcz g = 0(f(n))) jeśli istnieją stałe a, b £ R takie, że dla n > b, g(n) < a* f(n) (’g przyjmuje wartości nie większe niż / z dokładnością do stałej’).

6



Wyszukiwarka

Podobne podstrony:
12494961B7879347411445?74527476929966544 n Wszystkiego, co naprawdę trzeba wiedzieć o tym, jak żyć,
12494961B7879347411445?74527476929966544 n Wszystkiego, co naprawdę trzeba wiedzieć o tym, jak żyć,
54,55 Impas Złożona propozycja pokonuje impas w dyskusji, tak jak transakcja pomaga przejść przez im
Bez tytułu (5) Analiza Porównawcza algorytmów - złożoność obliczeniowa algorytmów. Złożoność algoryt
BISKUP JAN STEFAN WYDŻGA I KAPITUŁA WARMIŃSKA 149 wiedzieli o tym i gdy mieli coś tajnego do przekaz
ALG4 54 Rozdział 3. Analiza sprawności algorytmów Tematyką tego rozdziału jest tzw. złożoność oblic
Badanie złożoności algorytmów cz I 3 Żeby zdać sobie sprawę co do rzeczywistej skali ulepszeń rozważ
ZĄB (12) Ale jak się nic wiedzie, to się nie wiedzie! Tym razem pękł sznurek przywiązany rlrt yohn P
skanuj0061 wiedziała o tym pośrednio, kiedy powiedziałem, że się leją i może on się mi powiększy, od
5. Sporządzanie analiz i informacji z wykonania procesów finansów publicznych w j.s.t., w tym monito
RZYM 105 Wampir nie oderwał ust od jej szyi, żeby spojrzeć na ilu cha, chociaż wiedziałam, że martw

więcej podobnych podstron