WYKŁAD
ZŁOŻONOŚĆ ALGORYTMÓW
„Ilość zasobów komputera niezbędna do wykonania algorytmu”:
- czas działania (T) na etapie wykonania - złożoność czasowa (zależy od ilości operacji do wykonania i szybkości komputera)
- zajętość pamięci (P) - złożoność pamięciowa
a) jednoznaczna jednostka (np. Byte, słowo maszynowe, komórka)
b) złożoność: P(n)
c) traci na znaczeniu (np. ceny RAM maleją, ale nie do końca - przetwarzanie obrazów),
np. P(n) = 2n (dla n = 150; liczba komórek pamięci przekracza liczbę atomów we wszechświecie).
- rozmiar zadania (n) - liczba pojedynczych danych w zadaniu
- T i P - funkcje od n (są związane ze sobą)
ZŁOŻONOŚĆ CZASOWA
jednostka miary: liczba (szacunek operacji) operacje dominujące (zliczane) złożoność pesymistyczna i oczekiwana złożoność praktyczna T(n) złożoność teoretyczna - klasa algorytmu
0(n) = 0(T(n)), gdzie O - rząd funkcji T(n) asymptotyczny n - rozmiar zadania
np.
T(n) |
O |
n+1 n2-n+1 2"+n2+4 |
3'''c O o o |
KLASA ALGORYTMU - przykład
- obliczanie wartości wielomianu (zwykłe)
W(x, n) = anxn+ a„_ix +...+ atx+ a0 operacja dominująca - mnożenie złożoność praktyczna:
n+1 1 1
T(n) = n = (n-1)+...+ 1= = — n2+ ~n
2 2 2
klasa algorytmu 0(n) = 0(n2)
- obliczanie wartości wielomianu - schemat Homera W(x, n) = ao+x(a|+x(a2+...+ x(an_i+xan)...)) operacja dominująca - mnożenie
złożoność praktyczna:
T(n) = n
klasa algorytmu 0(n) = O(n)