Wydział Cybernetyki
Wykład 1
Pojęcia podstawowe.
Złożoność obliczeniowa algorytmów (cz. 1).
Tematyka wykładu
Pojęcia podstawowe
Klasyfikacja algorytmów
Własności algorytmów
Metody oceny algorytmów
Pojęcie złożoności obliczeniowej algorytmów
Złożoność asymptotyczna: O-notacja, Ω-notacja, Θ-
notacja
f: We Wy
Dane Dane
wejściowe wyjściowe
syntaktycznych
i semantycznych języka programowania
Przetworzenie
programu
źródłowego
w kod
maszynowy
Kod źródłowy programu Kod wynikowy programu
(w języku programowania) (w języku maszynowym)
∆=b2-4ac
∆=b2-4ac
x1=(-b-sqrt(∆))/2a
x1=(-b-sqrt(∆))/2a x2=(-b+sqrt(∆))/2a
x2=(-b+sqrt(∆))/2a
STOP STOP
START
START
Silnia = 1
= 5 * 4! i=1
== 44**3!3!
=3 3* *2!2! N
i≤5
= 22**1!
1! T
=1 1 Silnia = Silnia*i
i=i+1
STOP STOP
■ Funkcja „silnia”:
1 dla n=0 (warunek zakończenia rekurencji)
n!=
n*(n-1)! dla n>0
f(n)=
f(n-1) + 1/f(n-1), dla n>0,
określa ciąg o wartościach:
1, 2, 5/2, 29/10, 941/290, 969581/272890,.................
Algorytmy i struktury danych 18
Funkcja rekurencyjna – ciąg
Fibonacciego
■ Ciąg Fibonacciego jest wyliczany wg formuły:
n dla n<2
Fib(n)=
Fib(n-2) + Fib(n-1) dla n>=2
F(4) F(5)
F F F F F F F F
0 1 1 (0) (1) 1 (0) (1) (0) (1) (1) (2)
F F
0 1 0 1 0 1 1 (0) (1)
0 1
Liczba Liczba
n
dodawań wywołań
6 12 25
10 88 177
15 986 1 973
20 10 945 21 891
10 27 177
15 42 1 973
20 57 21 891
25 72 242 785
30 87 2 692 537
int StadDoWiecznosci(int n)
{
if (n==1)
return 1;
else
if ((n%2)==0) //
return StadDoWiecznosci(n-2)*n;
else
return StadDoWiecznosci(n-1)*n;
}
prostota,
czytelność kodu,
długość kodu,
poprawność,
czas realizacji (obliczeń),
zajętość pamięci.
< wp , wk >
wp A
wk
Algorytm A wykorzystujący strukturę danych S jest częściowo poprawny ze
względu na specyfikację <wp, wk> jeżeli dla wszystkich danych spełniających
warunek początkowy i dla których algorytm zatrzyma się, uzyskane wyniki
spełniają warunek końcowy.
Algorytmy i struktury danych 27
Całkowita poprawność algorytmu
wp A wk