Professional Documents
Culture Documents
1 marca 2012
1 marca 2012
1 / 51
Notacja asymptotyczna przypomnienie Algorytmy podstawy Algorytmy iteracyjne przykad Algorytmy rekurencyjne przykad
1 marca 2012
2 / 51
1 marca 2012
3 / 51
Rzdy funkcji
Denicja
Niech
f : N R+ {0} i g : N R+ {0}
n
lim
bd funkcjami takimi, e:
f (n ) = a, g (n ) g
gdzie
a R+ {0}. a = 0, a = c,
Jeeli:
to mwimy, e
ni rzd funkcji
rzdowi funkcji
f g, a = ,
rzd funkcji f jest rwny funkcje f i g s tego samego rzdu) i oznaczamy przez
ni rzd funkcji
to mwimy, e
oznaczamy przez
1 marca 2012
4 / 51
Rzdy funkcji
Wniosek
Jeeli dla pewnej funkcji
znajdziemy funkcj
tak, e
oraz:
g (n) = c , gdzie c 0 jest pewn sta, to f jest funkcj sta, g (n) = logc n, gdzie c > 0 jest pewn sta i n 1, to f jest funkcj logarytmiczn (dla funkcji log2 n wprowadzamy oznaczenie lg n), g (n ) = n c , g (n ) = n c , g (n ) = c n , g (n ) = n n ,
1
gdzie
c>1 c1 c>1
f f f
(szczeglnym przypadkiem funkcji wielomianowej jest funkcja liniowa gdzie to jest pewn sta, to
f (n) = n),
Wniosek
Jeeli
c>1
c logc n n c n n lg n nc c n n! nn ,
dla wszystkich dostatecznie duych
Pawe Rembelski (PJWSTK)
n N.
1 marca 2012 5 / 51
Ograniczenie z dou
Denicja
Niech to mwimy e rzd funkcji
f : N R+ {0} i g : N R+ {0} bd funkcjami. Jeeli f f jest rwny co najmniej rzdowi funkcji g ogranicza z dou funkcj f ) i oznaczamy przez f = (g ).
albo
(lub funkcja
g,
Na przedstawionym rysunku
Pawe Rembelski (PJWSTK)
f = (g ),
gdzie
c>0
Ograniczenie z gry
Denicja
Niech to mwimy e rzd funkcji
f : N R+ {0} i g : N R+ {0} bd funkcjami. Jeeli f g f jest rwny co najwyej rzdowi funkcji g (lub ogranicza z gry funkcj f ) i oznaczamy przez f = O (g ).
albo
funkcja
g,
Na przedstawionym rysunku
Pawe Rembelski (PJWSTK)
f = O (g ),
gdzie
c>0
Denicja
Niech e
f : N R+ {0} i g : N R+ {0} bd funkcjami. Jeeli f g , to mwimy funkcja g ogranicza z dou i z gry funkcj f i oznaczamy przez f = (g ).
Na przedstawionym rysunku
Pawe Rembelski (PJWSTK)
f = (g ),
gdzie
c1 , c2 > 0
s pewnymi staymi.
1 marca 2012 8 / 51
Funkcja lg
n!
Ograniczenie z gry:
lg
n! = lg
n i =1
i lg
n i =1
n = lg nn = n lg n,
czyli lg
n! n lg n.
n n
lg
Ograniczenie z dou:
lg
n!
= =
lg
i =1
i=
i =1
n
lg
1
xdx =
n
1
ln
ln 2
dx
x ln x x
ln 2
n
1
n ln n
ln 2
= c n lg n,
gdzie
c1
n! c n lg n.
< c 1,
Wniosek
Poniewa lg lg
n! n lg n n! = (n lg n).
i lg
n! c n lg n,
dla 0
to lg
n!
n lg n.
Std
1 marca 2012
9 / 51
Algorytmy podstawy
Algorytmy podstawy
1 marca 2012
10 / 51
Algorytmy podstawy
Intuicje
1 marca 2012
11 / 51
Algorytmy podstawy
Zaoenie
Przedmiotem dalszych wsplnych rozwaa bd jedynie problemy algorytmiczne.
Pawe Rembelski (PJWSTK) Algorytmy i struktury danych 1 marca 2012 12 / 51
Algorytmy podstawy
S = U , o0 , o1 , o2 , . . . , rn , r1 , . . . , rm ,
gdzie
jest uniwersum a
U,
oi , rj ,
dla 0
i n
oraz 0
j m,
to odpowiednio operacje
S = N, +, <
1 marca 2012
13 / 51
Algorytmy podstawy
Pojcie algorytmu
* okrelenie algorytm wywodzi si od nazwiska matematyka perskiego Muhammed'a ibn Musa Alchwarizmi (przeom VIII i IX wieku).
1 marca 2012
14 / 51
Algorytmy podstawy
Pojcie algorytmu
wektora
T,
T [0], max jest mniejsza ni warto 2-go elementu wektora, to przypisz zmiennej max warto owego elementu, jeeli warto zmiennej max jest mniejsza ni warto 3-go elementu wektora, to przypisz zmiennej max warto owego elementu,
przypisz zmiennej jeeli warto zmiennej ... jeeli warto zmiennej
max
max
n-go
elementu
max .
1 marca 2012
15 / 51
Algorytmy podstawy
Zapis algorytmu
Denicja
Schematem blokowym algorytmu
rozwaanej metody. nazywamy skoczony graf skierowany o ustalonej skadni i semantyce krawdzi oraz wierzchokw, reprezentujcy sposb dziaania
n:
1 marca 2012
16 / 51
Algorytmy podstawy
Zapis algorytmu
Denicja
Implementacj algorytmu
nazywamy zapis sposobu dziaania rozwaanej metody w danym jzyku (pseudokodzie) o ustalonej skadni i semantyce.
n:
1 int Max(int T[], int n) { 2 int i:=1, max:=T[0]; 3 4 while (i<n) { 5 if (max<T[i]) max:=T[i]; 6 i:=i+1; 7 } 8 return max; 9 }
Uwaga! W dalszej czci wykadu bdziemy analizowali algorytmy zapisane gwnie w
postaci implementacyjnej w pseudokodzie o skadni i semantyce zblionej do jzykw programowania rwnoci).
Pawe Rembelski (PJWSTK) Algorytmy i struktury danych 1 marca 2012 17 / 51
C, C++, Java
Algorytmy podstawy
Poprawno algorytmu
Denicja
Specykacj algorytmu nazywamy par WP , WK , dla WP bdcego warunkiem pocztkowym i WK jest warunkiem kocowym algorytmu, gdzie posta obu warunkw
jest podyktowana sformuowaniem rozwizywanego problemu.
int i:=1, max:=T[0]; ... return max; | WK : Max (T , n) = max , gdzie max
n N+ , |T | = n
1 marca 2012
18 / 51
Algorytmy podstawy
Poprawno algorytmu
Denicja
Algorytm
Alg
specykacj
WP , WK
dziaajcy w strukturze
jest
ze wzgldu na
WP ,
jeeli algorytm
WK .
S = N, +, <
Denicja
Algorytm
Alg
dziaajcy w strukturze
wzgldu na specykacj
WP , WK
jest
ze
S = N, +, <
1 marca 2012
19 / 51
Algorytmy podstawy
Poprawno algorytmu
Wniosek
Kady algorytm, ktry jest cakowicie poprawny jest take czciowo poprawny, ale nie kady algorytm, ktry jest czciowo poprawny jest take cakowicie poprawny.
Denicja
Algorytm
Alg
ma (spenia)
wasno stopu
WP .
Wniosek
Aby dowie poprawnoci cakowitej algorytmu wystarczy: udowodni jego poprawno czciow, wykaza wasno stopu algorytmu.
1 marca 2012
20 / 51
Algorytmy podstawy
Poprawno algorytmu
Trudnoci
Czy ustalenie wasnoci poprawnoci nawet trywialnego algorytmu iteracyjnego jest zadaniem prostym ... niestety nie! Dla niektrych algorytmw wasno poprawnoci zaley od poprawnoci dotychczas nierozwizanych hipotez.
1 bool Collatz(int n) { | WP : n N 2 int i:=n; 3 4 while (i>1) { 5 if (i mod 2=0) i:=i/2; 6 else i:=3*i+1; 7 } 8 return TRUE; | WK : Collatz (n) = TRUE 9 }
Hipoteza Collatza
Dla dowolnej liczby naturalnej dodatniej n prawd jest, e Collatz (n) = TRUE .
1 marca 2012
21 / 51
Algorytmy podstawy
Poprawno algorytmu
Wniosek
Zamy, e hipoteza Collatz'a jest faszywa, wtedy: algorytm Collatz jest czciowo poprawny, algorytm Collatz nie jest cakowicie poprawny (brak wasnoci stopu).
1 marca 2012
22 / 51
Algorytmy podstawy
Koszt algorytmu
Denicja
Operacj dominujc
w algorytmie nazywamy t z jego czynnoci skadowych, ktrej wykonanie uwaamy za najbardziej kluczowe z punktu widzenia np. implementacji realizacji w danym rodowisku obliczeniowym.
1 int Max(int T[], int n) { 2 int i:=1, max:=T[0]; 3 4 while (i<n) { | operacja porwnania 5 if (max<T[i]) max:=T[i]; | operacja porwnania, operacja przypisania 6 i:=i+1; | operacja przypisania, operacja dodawania 7 } 8 return max; 9 }
1 marca 2012
23 / 51
Algorytmy podstawy
Koszt algorytmu
Denicja
Niech
Alg
algorytmu.
Koszt czasowy
wykonania algorytm
Alg
jest to
liczba operacji dominujcych jakie wykonuje rozwaany algorytm na rozwaanych danych wejciowych. Koszt czasowy oznaczamy przez
t (Alg , d ).
Pytanie. Jaki jest koszt czasowy algorytmu Max dla danych wejciowych
gdzie
n = 100? Alg
d = (T , n),
Denicja
Niech bdzie algorytmem oraz algorytmu.
Koszt pamiciowy
wykonania algorytm
Alg
jest to
liczba dodatkowych jednostek pamici jakie s niezbdne do wykonania rozwaanego algorytmu na rozwaanych danych wejciowych. Koszt pamiciowy oznaczamy przez
s (Alg , d ).
gdzie
Pytanie. Jaki jest koszt pamiciowy algorytmu Max dla danych wejciowych
n = 100?
d = (T , n), t (d )
i
s (d )
24 / 51
Algorytmy podstawy
Zoono algorytmu
Denicja
Zoono czasowa
algorytmu
Alg
rozwaany algorytm na danych wejciowych rozmiaru tych danych. Zoono czasow oznaczamy przez
Pytanie. Jaka jest zoono czasowa algorytmu Max? Pytanie. Jakie jest ograniczenie dolne zoonoci czasowej algorytmu Max?
Denicja
Zoono pamiciowa S (Alg , n).
algorytmu
Alg
n,
wyraona jako funkcja rozmiaru tych danych. Zoono pamiciow oznaczamy przez
Pytanie. Jaka jest zoono pamiciowa algorytmu Max? Pytanie. Jakie jest ograniczenie grne zoonoci pamiciowej algorytmu Max?
S (n )
T (n)
1 marca 2012
25 / 51
Algorytmy podstawy
Zoono algorytmu
Trudnoci ...
Czy zoono czasow algorytmu mona zawsze oszacowa w sposb dokadny ...
niestety nie! Dla niektrych algorytmw, zoono czasowa jest funkcj nie tylko
rozmiaru danych wejciowych ale i ich postaci.
n N+ , |T | = n
while (i<n) { if (max<T[i]) max:=T[i]; if (T[i] mod 2=1) { T[i]:=T[i]-1; i:=0; } else i:=i+1; } return max; | WK : ModiedMax (T , n) = max , gdzie max
maksymalnym elementem wektora
max ?
1 marca 2012
26 / 51
Algorytmy podstawy
Zoono algorytmu
Denicja
Pesymistyczna zoono czasowa algorytmu Alg , oznaczona przez W (Alg , n) jest rwna W (Alg , n) = max {t (Alg , d ) : d Dn } ,
gdzie
Dn
rozwizuje algorytm
Alg .
Denicja
rednia (oczekiwana) zoono czasowa
rwna algorytmu
Alg ,
oznaczona przez
A (Alg , n)
jest
A (Alg , n) =
d Dn
p (d ) t (Alg , d ) , n
dla problemu, ktry
gdzie
Dn
rozwizuje algorytm
Alg ,
p (d )
d.
A (n )
W (n )
Pytanie. Jaka jest rednia i pesymistyczna zoono czasowa algorytmu Max oraz
ModiedMax, jeeli operacj dominujc jest czynno porwnywania wartoci elementw wektora wejciowego z wartoci zmiennej
Pawe Rembelski (PJWSTK)
max ?
1 marca 2012
27 / 51
Algorytmy podstawy
Zoono algorytmu
Denicja
Algorytm nazywamy
efektywnym
operacj dominujc na sekund. Jak dugo bdziemy oczekiwali na wynik oblicze? dla dla dla
n = 8, t (Alg1 , d ) = 3 sek., t (Alg2 , d ) = 64 sek., t (Alg3 , d ) = 256 sek. n = 16, t (Alg1 , d ) = 4 sek., t (Alg2 , d ) = 256 sek., t (Alg3 , d ) 18, 2 godz. n = 32, t (Alg1 , d ) = 5 sek., t (Alg2 , d ) 17, 1 min., t (Alg3 , d ) 136, 2 lat! Alg3
dla danych
rozmiaru 64?
1 marca 2012
28 / 51
Algorytmy podstawy
Optymalno algorytmu
Denicja
problem
T (n) bdzie funkcj zoonoci czasowej algorytmu Alg rozwizujcego pewien P dla danych wejciowych rozmiaru n. Algorytm Alg nazywamy asymptotycznie optymalnym rozwizaniem problemu P jeeli nie istniej algorytm Alg , o pesymistycznej zoonoci czasowej W (Alg , n), rozwizujcy problem P taki, e W (Alg , n) T (n).
Niech
Denicja
Alg P dla danych wejciowych rozmiaru n. Algorytm Alg nazywamy asymptotycznie optymalnym, w przypadku rednim, rozwizaniem problemu P jeeli A (Alg , n) T (n).
Niech bdzie funkcj zoonoci czasowej optymalnego algorytmu rozwizujcego pewien problem
T (n )
Denicja
Niech
Alg P dla danych wejciowych rozmiaru n. Algorytm Alg nazywamy asymptotycznie optymalnym, w przypadku pesymistycznym, rozwizaniem problemu P jeeli W (Alg , n) T (n ).
bdzie funkcj zoonoci czasowej optymalnego algorytmu rozwizujcego pewien problem
Pawe Rembelski (PJWSTK) Algorytmy i struktury danych 1 marca 2012 29 / 51
T (n )
Algorytmy podstawy
Optymalno algorytmu
Wniosek
Kady algorytm optymalny w przypadku pesymistycznym jest algorytmem optymalnym dla zadanej klasy problemw, ale nie kady algorytm optymalny w przypadku rednim jest algorytmem optymalnym dla zadanej klasy problemw.
1 marca 2012
30 / 51
1 marca 2012
31 / 51
Problem
Poda algorytm iteracyjny
Alg (n)
n.
N, +, , <
Specykacja algorytmu
Specykacj algorytmu Alg stanowi para kocowy s postaci kolejno:
WP , WK
WP : n N, WK : Alg (n) = n!
1 marca 2012
32 / 51
1 marca 2012
33 / 51
1 int Silnia(int n) { | WP : n N 2 int i:=0, s:=1; 3 4 while (i<n) { 5 i:=i+1; 6 s:=s*i; 7 } 8 return s; | WK :Silnia (n) = n! 9 }
1 marca 2012
34 / 51
1 int Silnia(int n) { | n N 2 int i:=0, s:=1; | (i = 0 s = 1) (i ! = 1 s = 1) s = i 3 | ustalenie niezmiennika: NZ : s = i ! 4 while (i<n) { | werykacja niezmiennika: s = i ! 5 i:=i+1; | (s = i ! i := i + 1) s = (i 1)! 6 s:=s*i; | odtworzenie niezmiennika: (s = (i 1)! s := s i ) 7 } | (NZ (i
8 return 9 }
s i = (i 1)!
= i!
NZ : s
= i!
Wniosek
Algorytm iteracyjny Silnia jest czciowo poprawny wzgldem specykacji
WP , WK
=0
jak i w
kadej iteracji rozwaanej ptli zmienna i inkrementowana jest o warto rwn 1, to ostatecznie
i
= n.
Std warunek i
= n.
1 marca 2012
35 / 51
n N:
n = 0 i inicjalizacji zmiennej i := 0, nie jest speniony warunek i < n, std algorytm Silnia zatrzymuje si, zaoenie indukcyjne: dla 0 i < n algorytm Silnia spenia wasno stopu, teza indukcyjna: dla n 1 algorytm Silnia spenia wasno stopu.
baza indukcji: dla
dozoru ptli iteracyjnej
i < n.
Wniosek
Poniewa algorytm iteracyjny Silnia jest czciowo poprawny i spenia wasno stopu, to jest cakowicie poprawny wzgldem specykacji .
n N, Silnia(n) = n!
1 marca 2012
36 / 51
Zoono algorytmu
A (n ) = W (n ).
n: n 1,
T (n) = n 1 = (n),
n:
oszacowanie zoonoci czasowej wzgldem liczby bitw niezbdnych do zapisania wartoci argumentu
= lg (n + 1) n: T (n) = (2 ),
n:
2 zmienne dodatkowe,
oszacowanie zoonoci czasowej wzgldem wartoci argumentu oszacowanie zoonoci czasowej wzgldem liczby bitw niezbdnych do zapisania wartoci argumentu
n : S (n ) = ( 1),
= lg (n + 1) n : S (n ) = ( 1).
1 marca 2012 37 / 51
1 marca 2012
38 / 51
Problem
Poda algorytm rekurencyjny
Alg (n)
n.
N, +, , =
Specykacja algorytmu
Specykacj algorytmu Alg stanowi para kocowy s postaci kolejno:
WP , WK
1 marca 2012
39 / 51
1 marca 2012
40 / 51
1 int Silnia(int n) { | WP : n N 2 if (n=0) 3 return 1; | WK :Silnia (n) = n! 4 else 5 return Silnia(n-1)*n; | WK :Silnia (n) = n! 6 }
1 marca 2012
41 / 51
n N:
1 int Silnia(int n) { | WP : n N 2 if (n=0) 3 return 1; | baza indukcji: Silnia(n) = 1, dla n = 0 4 else | zaoenie indukcyjne: Silnia(i 1) = (i 1)!, dla 0 i < n 5 return Silnia(n-1)*n; | teza indukcyjna: Silnia(n) = n!, dla n 1 6 }
Silnia (n) := Silnia (n 1) n, std i z zaoenia Silnia (n) := (n 1)! n, zatem Silnia (n) = n!, dla dowolnego n 1. Silnia (n) = n!, dla dowolnego n N, co WK :Silnia (n) = n!. WP , WK
Wniosek
Algorytm rekurencyjny Silnia jest czciowo poprawny wzgldem specykacji .
1 marca 2012
42 / 51
n N:
n=0
i <n
n1
i < n.
algorytmu algorytmu
Silnia (n 1)
jeden krok rekurencyjny dusze od wykonania algorytmu jest skoczone dla dowolnego
n 1.
Silnia (n 1).
Silnia (n)
jest o
Std wykonanie
Wniosek
Poniewa algorytm rekurencyjny Silnia jest czciowo poprawny i spenia wasno stopu, to jest cakowicie poprawny wzgldem specykacji
n N, Silnia(n) = n!
1 marca 2012
43 / 51
Zoono algorytmu
A (n ) = W (n ).
n: n 1,
T (n) = n 1 = (n),
n:
oszacowanie zoonoci czasowej wzgldem liczby bitw niezbdnych do zapisania wartoci argumentu
= lg (n + 1) n: T (n) = (2 ),
n:
oszacowanie zoonoci czasowej wzgldem wartoci argumentu oszacowanie zoonoci czasowej wzgldem liczby bitw niezbdnych do zapisania wartoci argumentu
n : S (n ) = ( 1),
= lg (n + 1) n : S (n ) = ( 1).
1 marca 2012 44 / 51
Zoono algorytmu
n:
n,
S (Silnia, n) = (n),
n:
oszacowanie zoonoci czasowej wzgldem liczby bitw niezbdnych do zapisania wartoci argumentu
= lg (n + 1) n: S (Silnia, n) = (2 ).
1 marca 2012
45 / 51
1 marca 2012
46 / 51
n + f (n ) , b
traktujemy jako
n b
logb
, wtedy:
a
jeeli f (n) = O n
1 int Run(int int n) { | WP : n N 2 int i, tmp:=0; 3 4 if (n=0) return 0; 5 6 for (i:=0;i<n*n;i:=i+1) tmp:=tmp+i+1; 7 8 return 4*Run(n/2)+2*Run(n/2)+Run(n/2); 9 }
Rwnanie rekurencyjne dominujcej ma posta
T (n )
zoonoci algorytmu
Run (n)
T (n) = 3T
Std stae
n
2
+ 2n2 + 2.
uniwersalnej s rwne odpowiednio
a=3
oraz
1 marca 2012
48 / 51
f (n) = 2n2 + 2
std
otrzymujemy:
f (n ) = O n
1,585
> 0,
T (n) = nlog2 3 ,
f (n) = n1,585 , std T (n) = nlog2 3 lg n , 1 f (n) = n1,585+ dla pewnej staej > 0, np. = 16 , std T (n) = (f (n)) n jeeli istnieje staa c < 1 taka, e 3f 2 cf (n) dla dostatecznie duych n. Std 15 dla np. c = 16 otrzymujemy
3 2 12 8
n2
4
+2
48 8 33 8
15 16 15 8 3 8
n2 + 2
15 8
n2 +
n2 +
2
n
Zatem dla
11.
T (n ) =
n N rozwaana nierwno 2 2 2n + 2 = n .
n > 3.
Ostatecznie
1 marca 2012
49 / 51
Literatura
Literatura
1
T. H. Cormen, C. E. Leiserson, R. L. Rivest, C. Stein, Wprowadzenie do algorytmw, WNT 2004. L. Banachowski, K. Diks, W. Rytter, Algorytmy i struktury danych, WNT 1996. A. V. Aho, J. E. Hopcroft, J. D. Ullman, Algorytmy i struktury danych, Helion 2003. A. Dako, T. L. Lee, G. Mirkowska, P. Rembelski, A. Smyk, M. Sydow, Algorytmy i struktury danych zadania, PJWSTK 2006. R. Sedgewick, Algorytmy w C++, RM 1999. N. Wirth, Algorytmy + struktury danych = programy, WNT 1999. A. Drozdek, D. L. Simon, Struktury danych w jzyku C, WNT 1996. D. Harel, Rzecz o istocie informatyki Algorytmika, WNT 2001.
Algorytmy i struktury danych 1 marca 2012 50 / 51
5 6 7 8
Zadania wiczeniowe
Zadania wiczeniowe
1 marca 2012
51 / 51
f1 (n) = lg n3 , f2 (n) = n lg n!, f3 (n) = n1/3 + n, 4 f1 (n) = n3 lg 3n, f2 (n) = 2lg n , f3 (n) = 2n , 1 f1 (n) = n 2 + lg n, f2 (n) = lg n2 , f3 (n) = 2lg n , f4 (n) = n2 f (n )
,
n +n3
1 2
f (n ) =
gdzie
f (n ) = O n 2
lg
n
,
f (n ) =
1 n 1
,
f (n )
f (n ) =
gdzie
f (n ) f (n ) =
gdzie 3
f (n) = lg n n.
f (n ) = n n
n
1 lg
i =1
2 lg
i i
= (n). =
i =1
4
i uporzdkuj niemalejco, ze wzgldu na rzd wielkoci, nastpujce funkcje Algorytmy i struktury danych 1 marca 2012 51 / 51
Zadania wiczeniowe 1
f1 (n) = lg2 (3n) , f2 (n) = n lg n! + n, f3 (n) = n + n, f4 (n) = 3 n + n lg n, f5 (n) = 3 + 2, n cos2 (n), f6 (n) = n 3 n f1 (n) = n2 + sin2 n 2 , f2 (n) = lg n + n, f3 (n) = 2 + lg n!, f4 (n) = n lg n + 2 n, f5 (n) = nlg 8 + n, f6 (n) = lg lg n2 , 1 f1 (n) = 32n + 3n , f2 (n) = lg n + n 4 , f3 (n) = n3 lg n + n2 |sin (2n)| , f4 (n) = 2n
2lg n + 1 , lg n n2 f1 (n) = n! + n lg n, f2 (n) = 2n3 + 3n , f3 (n) = n lg n! + n2 , f4 (n) = n 3n 4 . 3 |sin (n)| + n, f6 (n) = 3 + 3 2 cos2 (n) + lg (n) , f6 (n) =
+ n2lg n , f5 (n) =
n + 2 n 7 , f (n ) = 5
f n g n h n
g (n) + h (n) = O (f (n)), g (n) h (n) = (f (n)), g (n) h (n) = O (f (n)), g (n) /h (n) = (f (n)), dla h (n) = 0. Alg Alg x f n n K t
Niech bdzie algorytmem, ktrego zoono wyraa si pewn funkcj ( ), gdzie jest rozmiarem danych wejciowych. Czas wykonania algorytmu dla danych rozmiaru na komputerze wynosi sekund. Ile czasu zajmie wykonanie algorytmu dla danych rozmiaru -krotnie mniejszego na komputerze ? Jaki jest maksymalny rozmiar danych, jakie algorytm mone przetworzy na komputerze w cigu sekund? Oblicz czas, w jakim komputer , -krotnie szybszy od komputera , obliczy rezultat algorytmu dla danych wejciowych rozmiaru ,
Alg
Alg
1 marca 2012
51 / 51
f (n) = lg n, x = 128, t = 7, p = 2, t = 20, p = 8, x = 512, f (n) = n2 , x = 4, t = 10, p = 4, t = 250, p = 5, x = 50, f (n) = 2n , x = 6, t = 64, p = 3, t = 40, p = 4, x = 8. Alg1 , Alg2 i Alg3
bd algorytmami o nastpujcej zoonoci czasowej wzgldem danych rozmiaru
n:
void Algorytm(int n) { for (i:=0;i<n;i:=i+1) Alg1(n); } void Algorytm(int n) { for (i:=0;i<n;i:=i+1) { Alg2(n); Alg3(n); } } void Algorytm(int n) { for (i:=0;i<n;i:=i+1) Alg1(n); for (i:=0;i<n;i:=i+1) {
1 marca 2012
51 / 51
Zadania wiczeniowe
}
4
Alg2(n); Alg3(n);
void Algorytm(int n) { for (i:=0;i<n;i:=i+1) { Alg1(n); for (j:=0;j<n;j:=j+1) { Alg2(n); Alg3(n); } } } void Algorytm(int n) { for (i:=0;i<n;i:=i+1) Alg1(n); for (i:=0;i<lg(n);i:=i+1) { Alg2(n); Alg3(n); }
}
6
Zadania wiczeniowe
}
8
Dla podanej poniej funkcji Run, warunku pocztkowego N, N uzasadnij, e formua = jest niezmiennikiem ptli w tym algorytmie oraz ustal warunek kocowy. Co jest wynikiem dziaania tej funkcji? Jaka jest jej zoono czasowa wyraona wzgldem wielkoci liczb i ?
s pw
ab
a b
int Run(int a, int b) { | WP : a N, b N int s:=1, p:=a, w:=b; while (w>0) { if (w mod 2=0) { p:=p*p; w:=w/2; } else { s:=s*p; w:=w-1; } } }
9
return s; | WK : ?
Nastpujcy algorytm oblicza kwadrat liczby naturalnej . Udowodnij, e formua 2 1, = 2 1, = 2 jest niezmiennikiem ptli w podanym algorytmie.
int Sqr(int n) { | WP : n N \ {0} int s:=1, i:=1, k:=1; while (i<2n-1) { i:=i+2; s:=s+i; k:=k+1; }
Pawe Rembelski (PJWSTK) Algorytmy i struktury danych 1 marca 2012 51 / 51
Zadania wiczeniowe
}
10
return s; | WK : s = n2
n N, x
j =0
T [j ]x j ,
gdzie
jest
n-elementowym x
n
=
j =i
T [j ]x (j i )
jest
real Horner(int x, int n, real T[]) { | WP : n N, x N int i:=n; real s:=T[n]; while (i>0) { s:=s*x; s:=s+T[i-1]; i:=i-1; } return s; | WK : s = }
11 Rozwa poniszy algorytm, gdzie wszystkie elementy wektora prawdziwo nastpujcych stwierdze: 1 2 niezmiennikiem ptli zewntrznej jest formua jeeli
n j =0
T [j ]x j
rozmiaru
T [0]
jest, 51 / 51
T,
n = 4,
jest rwna 8.
void Run(int n, int T[]) { | WP : n N \ {0} int i, j, min; for (i:=0;i<n-1;i:=i+1) { min:=i; j:=i+1; while (j<=n) { if (T[j]<T[min]) min:=j; j:=j+1; } } Swap(T,i,min);
}
12
n i k: n k
=
n k
, dla dowolnych
n! k !(nk )!
Porwnaj koszty tych algorytmw. Ustal niezmienniki ptli, tak by umoliwiy uzasadnienie poprawnoci przedstawionych algorytmw. 13 Zaproponuj algorytm obliczania wartoci 1 2 iteracyjnej, rekurencyjnej.
n-tej
Uzasadnij poprawno i oszacuj zoono rozwizania. Pawe Rembelski (PJWSTK) Algorytmy i struktury danych 1 marca 2012 51 / 51
Zadania wiczeniowe 14 Zaproponuj algorytm iteracyjny dla problemu Wierz z Hanoi i 1 2 3 4 iteracyjnej, rekurencyjnej, iteracyjnej dla
krkw w wersji:
krkw,
rekurencyjnej dla
krkw,
Uzasadnij poprawno i oszacuj zoono rozwizania. 15 Dane s liczby naturalne i , gdzie , > 0. Zaproponuj algorytm obliczania czci cakowitej logarytmu z przy podstawie . Uzasadnij poprawno i oszacuj zoono rozwizania.
n k n k n
n k
16
Dane s liczby naturalne i zapisane w systemie dziesitnym. Zaproponuj algorytm, ktry podaje reprezentacj liczby w systemie o podstawie . Uzasadnij poprawno i oszacuj zoono rozwizania.
17
Dana jest liczba naturalna . Zaproponuj algorytm badania, czy jest to liczba pierwsza. Uzasadnij poprawno i oszacuj zoono rozwizania. Dane s dwie liczby naturalne i reprezentowane przez tablice i zawierajce kolejne cyfry rozwinicia dziesitnego tych liczb. Zaproponuj algorytm realizujcy tzw. mnoenie pisemne tych liczb. Uzasadnij poprawno i oszacuj zoono rozwizania. Dana jest liczba i cig liczb rzeczywistych zapisanych w tablicy . Zaproponuj algorytm, ktry znajduje najduszy podcig rosncy tego cigu. Uzasadnij poprawno i oszacuj zoono rozwizania. Rozwa algorytm
18
a b
A B
19
Tab
20
int Run(int n) { | WP : ? int m:=3, wynik:=0; while (m<n+1) { m:=m*3; wynik:=wynik+1; } return wynik; | WK : ?
Pawe Rembelski (PJWSTK) Algorytmy i struktury danych 1 marca 2012 51 / 51
Zadania wiczeniowe
}
Zaproponuj tak specykacj, wzgldem ktrej algorytm ten byby cakowicie poprawny w strukturze liczb naturalnych. Uzasadnij poprawno algorytmu stosujc metod niezmiennikw. Napisz, jaki problem rozwizuje ten algorytm, tzn. scharakteryzuj zaleno midzy wartoci n, a zmienn wynik. Oszacuj jego koszt ze wzgldu na wybran operacj dominujc. 21 Niech Run bdzie nastpujcym algorytmem
int Run(int x, int y) { | WP : x N, , y N int z:=0; while (y!=0) { if (y mod 2=1) z:=z+x; x:=x*2; y:=y div 2; } } return z; | WK : ?
Podaj niezmiennik ptli while wystpujcej w tym algorytmie wiedzc, e i s liczbami naturalnymi. Podaj warunek kocowy , tak by algorytm Run by poprawny wzgldem specykacji. Warunek powinien opisywa zaleno midzy pocztkowymi wartociami zmiennych , , a wartociami , , po wykonaniu ptli. Uzasadnij poprawno algorytmu Run wzgldem wybranej specykacji. Oszacuj koszt czasowy algorytmu.
WK
x y
x y
WK x y z
22
Niech bdzie macierz kwadratow rzdu . Rozwa poniszy algorytm Run. Zaproponuj specykacj i udowodnij cakowit poprawno tego algorytmu ze wzgldu na podan specykacj. Uzasadnij poprawno i oszacuj zoono rozwizania.
Zadania wiczeniowe
} }
23
return M[n-1,n-1]; | WK : ?
1 2
Podaj oglny wzr (zwart posta) na warto wynikow funkcji Oszacuj za pomoc notacji
Run(n).
n.
Zaproponuj funkcj FastRun, ktra daje te same wyniki co funkcja Run, ale ma zoono obliczeniow mniejszego rzdu ni funkcja Run i uywa jedynie operacji arytmetycznych dodawania, odejmowania, mnoenia i dzielenia. Uzasadnij poprawno rozwizania korzystajc z metody niezmiennikw. Algorytmy i struktury danych 1 marca 2012 51 / 51
an ,
gdzie
a, n N+ :
Pow (a, n)
return a*POW(a,n-1);
Uzasadnij przez indukcj wzgldem poprawno cakowit algorytmu rekurncyjnego wyznaczajcego element minimalny wektora liczb naturalnych dugoci > 0:
Min (T , n)
0
int MIN(int T[], int n) { // WP : T jest wektorem liczb naturalnych dugoci n > int tmp; if (n=0) return T[0]; tmp:=MIN(T,n-1); if (tmp<T[n]) return tmp; else return T[n];
}
26
Korzystajc z twierdzenia o rekurencji uniwersalnej podaj oszacowanie rozwiza nastpujcych rwna rekurencyjnych: 1 2 3 4 5
+ n3 + n, + n,
1, + n
+ 3 lg n!, + 1.
Algorytmy i struktury danych 1 marca 2012 51 / 51
Zadania wiczeniowe 27 Korzystajc z twierdzenia o rekurencji uniwersalnej oszacuj zoono nastpujcych algorytmw rekurencyjnych, gdzie ( ) jest algorytmem o staej zoonoci czasowej:
Tmp i
return 2*Run(n/2)+4*Run(n/2);
return n*Run(n/2)+n*Run(n/2);
if (n=0) return 1; for (i:=0;i<n;i:=i+1) for (j:=0;j<n;j:=j+1) Tmp(i); for (i:=0;i<27;i++) suma:=suma+i*Run(n/3); return suma;
Pawe Rembelski (PJWSTK) Algorytmy i struktury danych 1 marca 2012 51 / 51
Zadania wiczeniowe
1 marca 2012
51 / 51