Documente Academic
Documente Profesional
Documente Cultură
SD Curs-03
SD Curs-03
Octombrie, 2013
Cont inut
Analiza functiilor recursive Functii recursive Metoda substitutiei Arborele de recursie Teorema Master
Structuri de date ()
Curs 3
Octombrie, 2013
2 / 40
Clase de ecienta
Exemplu Cautare binara Cautare secventiala Sortare prin insertie Inmultirea a doua matrici nxn Prelucrarea submultimilor unei multimi cu n elemente Prelucrarea permutarilor de ordin n
Structuri de date ()
Curs 3
Octombrie, 2013
3 / 40
formularea unei ipoteze initiale privind ecienta algoritmului compararea algoritmilor analiza ecientei unei implementari vericarea unei armatii privind ecienta
Structuri de date ()
Curs 3
Octombrie, 2013
4 / 40
Se stabileste scopul analizei Se alege o masura a ecientei (exemplu: numarul de executii ale unor operatii, timpul, etc.) Se stabilesc caracteristicile setului de date de intrare Se implementeaza algoritmul Se genereaza datele de intrare Se executa programul pentru toate datele de intrare; se inregistreaza rezultatele Se analizeaza rezultatele
Structuri de date ()
Curs 3
Octombrie, 2013
5 / 40
Cont inut
Analiza functiilor recursive Functii recursive Metoda substitutiei Arborele de recursie Teorema Master
Structuri de date ()
Curs 3
Octombrie, 2013
6 / 40
Cont inut
Analiza functiilor recursive Functii recursive Metoda substitutiei Arborele de recursie Teorema Master
Structuri de date ()
Curs 3
Octombrie, 2013
7 / 40
Functii recursive
Functia f() apeleaza direct functia g() daca in denitia lui f() exista un apel la g() Functia f() apeleaza indirect functia g() daca f() apeleaza direct o functie h(), iar h() apeleaza direct sau indirect functia g() Functia f() este denita recursiv daca ea se auto-apeleaza direct sau indirect
Structuri de date ()
Curs 3
Octombrie, 2013
8 / 40
Functii recursive
Testarea cazului de baza conditia de oprire a apelului recursiv Apelul recursiv (cazul general): o variabila (intreaga) este transmisa ca parametru functiei insasi, in asa fel ca dupa un numar de pasi sa se atinga cazul de baza Exista si functii recursive fara parametri
Structuri de date ()
Curs 3
Octombrie, 2013
9 / 40
Functii recursive
Function factorial(n) begin if n <= 1 then return 1 else return (n factorial (n 1)) end
Structuri de date ()
Curs 3
Octombrie, 2013
10 / 40
algoritmii recursivi: usor de implementat costuri suplimentare: la ecare apel recursiv se plaseaza o serie de informatii intr-o zon a de memorie specica (stiva programului)
Structuri de date () Curs 3 Octombrie, 2013 11 / 40
Function factorial(n) begin produs 1 while n > 1 do produs produs n n n1 return produs end
Valoarea returnata de factorial (n) este corecta doar pentru valorile lui n pentru care n! INT MAX
Structuri de date ()
Curs 3
Octombrie, 2013
12 / 40
Function b(n) begin if n <= 1 then return n else return (b (n 1) + b (n 2)) end
Structuri de date ()
Curs 3
Octombrie, 2013
13 / 40
Structuri de date ()
Curs 3
Octombrie, 2013
14 / 40
Numar de apeluri
n 2 24 42 43
Structuri de date ()
Curs 3
Octombrie, 2013
15 / 40
Function ib(n) begin f00 f11 if n <= 1 then return n else for k 2 to n do temp f 1 f1f1+f0 f 0 temp return f 1 end
Structuri de date ()
Curs 3
Octombrie, 2013
16 / 40
40
20
0 20
40
60
80
Structuri de date ()
Curs 3
Octombrie, 2013
17 / 40
Function cmmdc(m, n) begin if m == n then return m else if m > n then return cmmdc (m n, n) else return cmmdc (m, n m) end
Structuri de date ()
Curs 3
Octombrie, 2013
18 / 40
se stabileste relatia de recurenta care exprima legatura dintre timpul de executie corespunzator problemei initiale si timpul de executie corespunzator problemei reduse rezolvarea relatiei de recurenta
Exemplu: pentru calculul factorialului, relatia de recurenta pentru timpul de executie este: 0, n=0 T (n ) = T (n 1) + 1, n > 1
Structuri de date ()
Curs 3
Octombrie, 2013
19 / 40
Rezolvarea recurentelor
1. Metoda substitutiei: se ghiceste o limita si apoi se utilizeaza inductia matematica pentru a demonstra corectitudinea 2. Arborele de recursie: converteste recurenta intr-un arbore (nodurile reprezinta costuri) 3. Metoda master: furnizeaza limite pentru recurente de forma T (n) = aT (n/b ) + f (n)
Structuri de date ()
Curs 3
Octombrie, 2013
20 / 40
Cont inut
Analiza functiilor recursive Functii recursive Metoda substitutiei Arborele de recursie Teorema Master
Structuri de date ()
Curs 3
Octombrie, 2013
21 / 40
1. Metoda substitutiei
se ghiceste solutia se utilizeaza inductia matematica pentru a determina constantele si pentru a demonstra ca solutia functioneaza
Structuri de date ()
Curs 3
Octombrie, 2013
22 / 40
Ghicim solutia: T (n) = O (nlgn) Demonstram prin inductie ca T (n) cnlgn, pentru c > 0. Presupunem ca limita are loc pentru toate valorile pozitive m < n, in particular pentru m = n/2: T (n/2) c n/2lg (n/2). T (n) 2(c n/2lg (n/2)) + n cnlg (n/2) + n = cnlgn cnlg 2 + n = cnlgn cn + n cnlgn, pentru c 1 Trebuie sa aratam ca solutia este valida si pentru conditiile limita. T (1) = 1 c 1lg 1 = 0 Cazuri de baza: T(2) si T(3) ( n0 = 2 ) T (2) = 4 si T (3) = 5, T (2) c 2lg 2 si T (3) c 3lg 3 c 2.
Structuri de date () Curs 3 Octombrie, 2013 23 / 40
scaderea unui termen de ordin inferior (pentru a consolida ipoteza inductiva) Exemplu: T (n) = T (n/2) + T (n/2) + 1
Ghicim solutia: T (n) = O (n). Demonstram prin inductie ca T (n) cn, pentru c > 0. T (n) c n/2 + c n/2 + 1 = cn + 1
Demonstram prin inductie ca T (n) cn d , d >= 0 const. T (n) (c n/2 d ) + (c n/2 d ) + 1 = cn 2d + 1 cn d , pentru d 1 Trebuie sa alegem constanta c sucient de mare pentru a satisface conditiile limita.
Structuri de date ()
Curs 3
Octombrie, 2013
24 / 40
evitarea capcanelor Exemplu: T (n) = 2T (n/2) + n Demonstram fals ca T (n) = O (n) ghicind T (n) cn si argumentand: T (n) 2(c n/2) + n cn + n = O (n), fals !! Eroarea: nu am demonstrat forma exacta a ipotezei inductive.
Structuri de date ()
Curs 3
Octombrie, 2013
25 / 40
schimbare de variabile Exemplu: T (n) = 2T (sqrt (n)) + lgn Simplicam recurenta printr-o schimbare de variabile m = lgn. T (2m ) = 2T (2m/2 ) + m Redenumim S (m) = T (2m ), si avem S (m) = 2S (m/2) + m. S (m) = O (mlgm), T (n) = T (2m ) = S (m) = O (mlgm) = O (lgnlglgn).
Structuri de date ()
Curs 3
Octombrie, 2013
26 / 40
Cont inut
Analiza functiilor recursive Functii recursive Metoda substitutiei Arborele de recursie Teorema Master
Structuri de date ()
Curs 3
Octombrie, 2013
27 / 40
2. Arborele de recursie
permite vizualizarea ieterarii unei recurente ecare nod reprezinta costul unei subprobleme se calculeaza suma costurilor pe nivele si apoi se insumeaza aceste costuri pentru a determina costul total al recursiei
Arborele de recursie poate utilizat pentru a genera o valoare buna pentru metoda substitutiei
Structuri de date ()
Curs 3
Octombrie, 2013
28 / 40
se porneste de la cazul particular si se construiesc termeni succesivi folosind relatia de recurenta se identica forma termenului general T (n) se verica prin calcul direct sau inductie matematica
inversa
se porneste de la cazul T (n) si se inlocuieste T (h(n)) cu valoarea corespunzatoare, apoi se inlocuieste T (h(h(n))) si asa mai departe, pana se ajunge la cazul particular se efectueaza calculele si se obtine T (n)
Structuri de date ()
Curs 3
Octombrie, 2013
29 / 40
T (n ) =
0, n=0 T (n 1) + 1, n > 1 Iterare inversa T(n)=T(n-1)+1 T(n-1)=T(n-2)+1 ... T(2)=T(1)+1 T(1)=0 - (+) T(n)=n-1
Structuri de date ()
Curs 3
Octombrie, 2013
30 / 40
n
i =0
3 ( )i + (nlog4 3 xT (1)) 4
= 4n + (nlog4 3 xT (1)) = O (n ) Obs: serii geometrice x n+1 1 + x + x 2 + ... + x n = 1 1x , pentru x = 1 1 1 + x + x 2 + ... = 1 x , pentru |x | < 1
Structuri de date () Curs 3
Octombrie, 2013
31 / 40
Arborele de recursie
Structuri de date ()
Curs 3
Octombrie, 2013
32 / 40
Structuri de date ()
Curs 3
Octombrie, 2013
33 / 40
dimensiunea unei subprobleme corespunzatoare unui nod de adancime i : n/4i dimensiunea subproblemei ajunge la n = 1 cand n/4i = 1 i = log4 n arborele are log4 n + 1 nivele numarul de noduri de la nivelul i : 3i ecare nod de la nivelul i are costul: c (n/4i )2 costul total al nodurilor de la nivelul i : 3i c (n/4i )2 = (3/16)i cn2 ( ultimul nivel log4 n: nlog4 3 T (1) )
Structuri de date ()
Curs 3
Octombrie, 2013
34 / 40
T (n) = cn2 +
log4 n1
=
i =0
<
i =0
3 i 2 ) cn + (nlog4 3 ) 16
Structuri de date ()
Curs 3
Octombrie, 2013
35 / 40
Utilizam metoda substitutiei pentru a verica ca T (n) = O (n2 ) este o limita superioara pentru relatia T (n) = 3T (n/4) + (n2 ).
aratam ca T (n) dn2 , pentru d > 0 T (n) 3T (n/4) + cn2 3d n/42 + cn2 3d (n/4)2 + c (n2 ) 3 2 dn + cn2 = 16 dn2 , pentru d (16/13)c
Structuri de date ()
Curs 3
Octombrie, 2013
36 / 40
Cont inut
Analiza functiilor recursive Functii recursive Metoda substitutiei Arborele de recursie Teorema Master
Structuri de date ()
Curs 3
Octombrie, 2013
37 / 40
3. Teorema Master
Furnizeaza o metoda de rezolvare a recurentelor de forma T (n) = aT (n/b ) + f (n) unde a 1 si b > 1 sunt constante, iar f (n) este o functie asimptotic pozitiva. Teorema Master: Fie a 1 si b > 1 constante, f (n) o functie si T (n) denita pe numere intregi nenegative prin relatia de recurenta: T (n) = aT (n/b ) + f (n). Avem:
1. Daca f (n) = O (nlogb a ) pentru > 0 constant, atunci T (n) = (nlogb a ). 2. Daca f (n) = (nlogb a ), atunci T (n) = (nlogb a lgn). 3. Daca f (n) = (nlogb a+ ) pentru > 0 constant, si daca af (n/b ) cf (n) pentru c < 1 si n sucient de mare, atunci T (n) = (f (n)).
Structuri de date () Curs 3 Octombrie, 2013 38 / 40
T (n) = 9T (n/3) + n a = 9, b = 3, f (n) = n si nlogb a = nlog3 9 = (n2 ) Cum f (n) = O (nlog3 9 ), cu = 1, putem aplica cazul 1 al teoremei master T (n) = (n2 )
T (n) = T (2n/3) + 1 a = 1, b = 3/2, f (n) = 1 si nlogb a = nlog3/2 1 = n0 = 1 Cum f (n) = (nlogb a ) = (1), putem aplica cazul 2 al teoremei master T (n) = (lgn)
Structuri de date ()
Curs 3
Octombrie, 2013
39 / 40
T (n) = 3T (n/4) + nlgn a = 3, b = 4, f (n) = nlgn si nlogb a = nlog4 3 = O (n0.793 ) Cum f (n) = (nlog4 3+ ), cu 0.2, putem aplica cazul 3 al teoremei master daca are loc conditia: af (n/b ) = 3(n/4)lg (n/4) (3/4)nlgn = cf (n) pentru c = 3/4 si n sucient de mare. Rezulta T (n) = (nlgn)
Metoda master nu se poate aplica pentru T (n) = 2T (n/2) + nlgn a = 2, b = 2, f (n) = nlgn si nlogb a = n Cum f (n) = nlgn este asimptotic mai mare decat nlogb a = n, putem aplica cazul 3 (fals!!). f (n) nu este polinomial mai mare. f (n)/nlogb a = (nlgn)/n = lgn este asimptotic mai mic decat n , pentru orice constanta pozitiva .
Structuri de date () Curs 3 Octombrie, 2013 40 / 40