ALGORYTM
Złożoność obliczeniowa
Pojęcie algorytmu
Algorytm jest ciągiem kroków
obliczeniowych prowadzących do
przekształcenia danych wejściowych w
dane wyjściowe.
2
Każdy algorytm:
zposiada dane wejściowe
zprodukuje pewien wynik
zjest precyzyjnie zdefiniowany
zjest skończony
Algorytm jest poprawny, gdy dla każdego
zestawu sensownych danych wejściowych
zatrzymuje się i daje dobry wynik.
3
Analiza algorytmów
Analiza algorytmów to dział informatyki
zajmujący się szukaniem najlepszych
algorytmów dla zadań komputerowych.
4
Analiza algorytmów pozwala
odpowiedzieć na pytania:
zczy dany problem może być rozwiązany na
komputerze w dostępnym czasie i pamięci
zktóre ze znanych algorytmów należy
zastosować
zczy istnieje lepszy algorytm od rozważanego
zjak uzasadnić, że stosując dany algorytm
rozwiąże się zamierzone zadanie
5
Dokonując analizy algorytmu zwracamy
uwagę na:
zjego poprawność semantyczną
zprostotę
zczas działania
zilość zajmowanej pamięci
zoptymalność
zokoliczności, w jakich należy go używać, a w
jakich nie
6
Złożoność obliczeniowa
Złożoność obliczeniową algorytmu definiuje się
jako ilość zasobów komputerowych,
potrzebnych do jego wykonania.
Podstawowymi zasobami są:
zczas działania (złożoność czasowa)
zilość zajmowanej pamięci (złożoność
pamięciowa)
7
Rozmiar danych
Jednym z decydujących parametrów
mających wpływ na złożoność
obliczeniową jest rozmiar danych.
Pojęcie rozmiaru danych:
" dla funkcji sortującej - rozmiar tablicy
" dla drzewa binarnego - liczba węzłów w drzewie
" dla programu obl.silnię - wielkość danej wejściowej
" dla wielomianu - stopień wielomianu
8
Złożoność pamięciowa
Za jednostkę złożoności pamięciowej
przyjmuje się słowo pamięci maszyny.
9
Złożoność czasowa
zZłożoność czasowa danego algorytmu powinna
nie zależeć od komputera, języka programowania
czy sposobu zakodowania.
zW tym celu wyróżnia się w algorytmie
charakterystyczne dla niego operacje, nazywane
operacjami dominującymi.
zZa jednostkę złożoności czasowej przyjmuje się
wykonanie jednej operacji dominującej.
10
Operacje dominujące
zAlgorytmy sortowania - porównanie dwóch
elementów lub przestawienie elementów w
ciągu
zalgorytmy przeglądania drzewa binarnego -
przejście dowiązania między węzłami w
drzewie
zalgorytmy wyznaczania wartości wielomianu -
operacje arytmetyczne +, -, *, /
11
Złożoność obliczeniowa algorytmu
jest funkcją rozmiaru danych n
Wyróżnia się:
zzłożoność pesymistyczną - ilość zasobów
komputerowych potrzebnych przy najgorszych
danych wejściowych rozmiaru n
zzłożoność oczekiwaną (średnia) - ilość zasobów
przy typowych danych wejściowych rozm. n
zzłożoność optymistyczną - ilość zasobów
komputerowych potrzebnych przy najlepszych
danych wejściowych rozmiaru n
12
Najczęściej rozpatrujemy przypadek
pesymistyczny, gdyż:
zJest to górna granica możliwego czasu
działania algorytmu
zdla niektórych algorytmów pesymistyczny
czas działania występuje dosyć często
zprzypadek średni jest zbliżony do
pesymistycznego
13
Przykład
Wczytujemy n liczb i drukujemy je w odwrotnej kolejności.
z Rozmiarem danych, który ma decydujący wpływ na
długość trwania programu jest liczba elementów do
przetworzenia.
z Następuje n razy wykonanie odczytu i n razy wypisanie
na ekranie.
z Jeżeli więc zwiększymy liczbę danych dwukrotnie -
również dwukrotnie wzrośnie czas wykonania programu.
z Mamy więc zależność czasu wykonania programu od
danych jako funkcję liniową.
14
Złożoność oznaczamy symbolem O i w nawiasie
umieszczamy typ zależności:
O(n), O(n^2), O(n^3)
z Przyjmujemy, że wykonanie czynności czytania lub
wypisania zabiera czas jednostkowy. W takim przypadku
czas wykonania programu będzie oszacowany na n+n czyli
2n. I faktycznie, czas wykonania programu tyle wynosi, i
możemy zapisać, że program wykonuje się w czasie T(2n).
z Ale nie liczymy czasu wykonania, tylko złożoność
obliczeniową, a to jest co innego.
z W przykładzie złożoność wynosi O(n).
15
zW złożoności podamy tylko i wyłącznie
rząd wielomianu, czyli jeżeli będzie to 2n,
to O(n), jeżeli 125n to również mamy
złożoność O(n).
zZłożoność mówi nam bowiem najogólniej,
jak szybko będzie rósł czas wykonania
programu przy zwiększaniu rozmiaru
danych wejściowych.
16
zA co, jeżeli czas wykonania wyniesie
T(n^3+1000n^2+n) ?
zNajwyższa potęga wynosi tutaj 3, więc
złożoność takiego programu to O(n^3).
17
Jeśli ktoś stwierdzi, że jego program jest
szybki, bo wykonał operację w 10
sekund,
to nie dostaniemy w ten sposób żadnej
konkretnej informacji.
18
Musi on jeszcze odpowiedzieć na następujące
pytania:
z Jakiego komputera użył?
z Jaka jest częstotliwość pracy zegara taktującego
procesor?
z Czy program był jedynym wykonującym się wówczas w
pamięci? Jeśli nie to jaki miał priorytet?
z Jakiego kompilatora użyto podczas pisania tego
programu?
z Czy w danym kompilatorze zostały włączone opcje
optymalizacji kodu?
z itd.
19
zPotrzebna jest nam miara uniwersalna,
nie mająca nic wspólnego ze szczegółami
natury sprzętowej .
zParametrem decydującym najczęściej o
czasie wykonania określonego algorytmu
jest rozmiar danych, z którymi ma on
do czynienia.
20
Przykład
var a,liczba,n:integer;
var a,liczba,n,nr:integer;
tab:array[1..100]of integer;
tab:array[1..100]of integer;
begin
begin
write('Podaj szukana liczbe :');
write('Podaj szukana liczbe :');
readln(liczba);
readln(liczba);
write('Podaj ilosc liczb w tablicy :');
write('Podaj ilosc liczb w tablicy :');
readln(n);
readln(n);
a:=1;
nr:=0;
while (a<=n) and (tab[a]<>liczba) do
for a:=1 to n do
a=a+1;
if tab[a]=liczba then nr:=a;
if a<=n then writeln( element o numerze : ', a)
if nr>0 then writeln( element o numerze : ', nr)
else writeln('Nie znaleziono liczby');
else writeln('Nie znaleziono liczby');
readln;
readln;
end.
end.
Złożoność pesymistyczna O(n)
Złożoność średnia O(n/2)
Złożoność O(n)
21
Wyszukiwarka
Podobne podstrony:
Wykład 14wyklad 14 2012WDP Wykład 13Wyklad 14Chemia organiczna wykład 14Wykład 3 14,4,12Wykład 14 Regulacje prawne działalności deweloperówwykład 14 przestrzenie afiniczneppmy wyklad 14 KasiaBwykład 1 14 10 12WYKŁAD 14 syndrom metaboliczny (otyłość, cukrzyca, nadciśnienie) SKRYPTwyklad 14Wykład 14 i 15 WyznacznikiBiochemia wykłady Wykład 14 10 2013rwięcej podobnych podstron