rozmiar danych

Transkrypt

rozmiar danych
J. Koszelew
Temat 3: Poj cie zło ono ci obliczeniowej algorytmu.
Przykłady efektywnych i nieefektywnych
algorytmów
rozwi zuj cych
ten
sam
problem komputerowy.
1. Poj cie zło ono ci obliczeniowej algorytmu
Analiza algorytmów to dział informatyki zajmuj cy si szukaniem
najefektywniejszych, poprawnych algorytmów dla danych problemów
komputerowych.
Problem komputerowy to zadanie przeznaczone do realizacji na
maszynie cyfrowej z okre lonym warunkiem pocz tkowym (WP) i
ko cowym (WK).
WP – warunek pocz tkowy – specyfikacja (dokładny opis) danych
wej ciowych problemu
WK – warunek ko cowy – specyfikacja (dokładny opis) danych
wyj ciowych (wynikowych) uzyskanych dla danych wej ciowych
spełniaj cych WP
Rozwi zaniem problemu komputerowego jest algorytm, którego dane
wej ciowe spełniaj WP, a wyniku WK.
Zło ono
obliczeniowa algorytmu to ilo
zasobów komputerowych,
potrzebnych do jego wykonania. Zasoby komputerowe to czas działania
i ilo
pami ci zajmowanej prze dane wej ciowe, wynikowe i struktury
pomocnicze u ywane w algorytmie.
1
J. Koszelew
2. Zło ono
czasowa algorytmu
Zło ono czasowa algorytmu okre la „czas” realizacji algorytmu.
Zło ono czasowa niezale na od:
- szybko ci procesora, który wykonuje zaimplementowany algorytm
(program),
- wyboru j zyka programowania, w którym wykonana jest
implementacja algorytmu.
a) Rozmiar problemu komputerowego
Rozmiar problemu komputerowego to rozmiar tych danych
wej ciowych, których ilo wpływa na czas wykonania algorytmu, tzn.
im wi ksza jest ilo tych danych, tym dłu ej realizuje si algorytm.
Przykład 1
Problem A1
WP: a1, a2, ..., an- ci g liczb całkowitych (n >0)
WK: Ci g a1, a2, ..., an posortowany niemalej co
Rozmiar zadania: n – długo
ci gu, który nale y posortowa
Problem A2
WP: t1, t2, ..., tn- ci g znaków tekstu (n > 0)
w1, w2, ..., wm- ci g znaków wzorca (n ≥ m > 0)
WK: p- zmienna logiczna, która przyjmuje warto 1 (prawda), gdy
wzorzec wyst puje w tek cie, a 0 (fałsz), gdy wzorzec nie
wyst puje w tek cie
Rozmiar zadania: n – długo
wzorca, m – długo
tekstu
b) operacja elementarna
Operacja elementarna (inaczej operacja dominuj ca) to operacja
charakterystyczna dla danego algorytmu. To taka operacja, której
ł czna liczba wykona jest proporcjonalna do rozmiaru zadania, tzn. im
wi kszy rozmiar zadania, tym wi cej razy realizuje si operacja
elementarna.
2
J. Koszelew
Przykład 2
Problem A1 - operacj elementarn jest operacja porównywania
elementów sortowanego ci gu albo operacja przestawiania elementów
ci gu w czasie sortowania.
Problem A2 – operacja porównywania znaków wzorca ze znakami
tekstu w procesie sprawdzania, czy wzorzec wyst puje w tek cie.
Za jednostk zło ono ci czasowej przyjmuje si wykonanie jednej
operacji elementarnej (dominuj cej). Zło ono czasowa algorytmu jest
funkcj parametru (parametrów) rozmiaru zadania.
c) Zło ono
czasowa rednia i pesymistyczna
Nieformalnie
Pesymistyczna zło ono
czasowa to liczba wykonanych operacji
elementarnych dla danych „najgorszego” przypadku.
rednia (oczekiwana) zło ono czasowa to liczba wykonanych operacji
elementarnych dla danych „typowego” ( redniego) przypadku.
Przykład 3
Problem wyszukiwania ustalonej liczby w ci gu nieuporz dkowanym
WP: A: a0, a1, ..., an-1- ci g liczb całkowitych (n > 0). Liczby w ci gu s
ró ne; x – szukana warto . x jest liczb całkowit .
WK: zmienna logiczna jest=1, gdy x wyst puje w ci gu A oraz jest=0 w
przeciwnym przypadku
Algorytm
i = 0;
while (i<n && ai!=x) i++;
jest=i<n;
3
J. Koszelew
Operacja elementarna: porównania mi dzy elementami ci gu A a liczb
x.
Rozmiar danych: n - długo ci gu
Pesymistyczna zło ono czasowa algorytmu
Dane „najgorszego” przypadku to ci g, w którym x nie wyst puje albo
wyst puje w indeksie n-1.
T max (n ) = n
rednia zło ono
czasowa algorytmu
T ave (n ) =
3. Rz d funkcji
n
2
Przy formułowaniu ostatecznych wniosków dotycz cych efektywno ci
czasowej (zło ono ci czasowej algorytmu) bierze si pod uwag nie tyle
dokładn funkcj kosztu, ile jej rz d (klas wzrostu funkcji).
Na przykład, je eli dwa algorytmy A i B rozwi zuj ce ten sam problem
maj zło ono pesymistyczn wyra aj c si odpowiednio wzorami:
Tmax (n ) = n 2 + 2n i Tmax (n ) = 3n 2
A
B
to ró nica realnego czasu wykonania obydwu algorytmów jest
stosunkowo niewielka, nawet dla du ego n. Na czas realizacji algorytmu
zasadniczo wpływa bowiem w obydwu funkcjach fakt,
e s
wielomianami stopnia 2.
n
10
20
50
100
1000
0,1n2
10
40
250
1000
100000
0,1n2+n+100
120
160
400
1200
101100
( )
Tmax (n ) = n 2 + 2n = Θ n 2 = Tmax (n ) = 3n 2
A
B
4
J. Koszelew
Kategorie zło ono ci:
( ) Θ(n ) Θ(n ) Θ(a ) Θ(b ) Θ(n!)
Θ(log n ) Θ(n ) Θ(n log n ) Θ n 2
j
k
n
n
( )
Θ nn
gdzie k > j > 2 oraz b > a > 1.
4. Porównanie czasów realizacji algorytmu wykładniczego na dwóch
komputerach o ró nej szybko ci wykonania operacji
elementarnej
Pewien algorytm ma zło ono
dwa komputery:
Θ(2n). Załó my, ze mamy do dyspozycji
• wolniejszy – taki, który jedn operacj elementarn wykonuje w
czasie 10-6 s,
• szybszy – dokładnie 1000 razy szybszy, który jedn operacj
elementarn wykonuje w czasie 10-9 s
W poni szej tabelce zobrazowano wzrost realnego czasu wykonania
algorytmu dla rosn cego rozmiaru zadania
n - rozmiar zadania
czas realizacji na
wolniejszym
procesorze
(2 n / 106 )
czas realizacji na
szybszym procesorze
(2
n
/ 10
9
)
20
1,04 s
0,001 s
50
100
35,7 lat 4 ⋅ 1014
wieków
200
13 dni
5 ⋅ 10 41
4 ⋅ 1011
wieków
5 ⋅ 10 44
wieków
wieków
Z powy szej tabelki wynika, e „rozs dny” czas wykonania algorytmu o
zło ono ci Θ(2n) przestaje by „rozs dny” przy stosunkowo niewielkim n,
bo n=50.
5
J. Koszelew
5. Przykłady efektywnych i niefektywnych algorytmów
a) Wyszukiwanie w ci gu uporz dkowanym
WP: A: a0, a1, ..., an-1- ci g liczb całkowitych (n > 0), uporz dkowany
rosn co; x – szukana warto ; x jest liczb całkowit ; liczby w
ci gu si nie powtarzaj .
WK: p=true gdy x ∈A; p=false gdy x∉A.
Operacja elementarna: porównania mi dzy elementami ci gu a liczb
x.
Rozmiar danych: n - długo ci gu
Algorytm liniowy
i = 0;
while (i<n && ai<x) i++;
p= ai =x;
Zło ono
czasowa pesymistyczna
Dane „najgorszego” przypadku to ci g, w którym x nie wyst puje i
wszystkie liczby w ci gu s mniejsze od x.
Tmax (n ) = n = Θ (n )
Algorytm wyszukiwania binarnego (oparty na strategii „dziel i
zwyci aj”)
l=0; r=n-1; p=0;
while (l<=r && ! p)
{
m=(l+r)/2;
if (am ==x) p=1;
else if (am <x) l=m+1;
else r=m-1;
6
J. Koszelew
Przykład 4
A:
2
0
6
8
1
13
15
29
45
60
89
94
3
4
5
6
7
8
9
2
x=30
Porównywane z x warto ci ci gu A: 15, 60, 29, 45
Zło ono czasowa pesymistyczna
Dane „najgorszego” przypadku to ci g, w którym x nie wyst puje.
Tmax (n ) = Θ (log 2 n )
Wniosek: Strategia „dziel i zwyci aj” obni a znacz co koszt
algorytmu rozwi zuj cego problem wyszukiwania w ci gu
uporz dkowanym.
b) Wyznaczanie warto ci wielomianu
WP: a0, a1, ..., an- ci g liczb rzeczywistych (n ≥ 0) definiuj cy
współczynniki danego wielomianu W, x- dana liczba rzeczywista
WK: Liczba W(x) – warto
wielomianu W dla argumentu x
Algorytm naiwny
w=a0;
for (int i=1;i<=n;i++)
{
p=x;
for (int j=0;j<i-1;j++) p*=x;
w+=ai*p;
}
T max (n ) = 1 + 2 + 3 + ... + n =
1+ n
⋅ n = Θ n2
2
( )
7
J. Koszelew
Algorytm liniowy
w=a0;p=1;
for (int i=1;i<=n;i++)
{
p*=x;
w+=ai*p;
}
T max (n ) = 2 n = Θ (n )
Algorytm oparty na schemacie Hornera
w=a0;
for (int i=0; i<n; i++)
w+=ai+x*w;
Tmax (n ) = n = Θ (n )
8