ALGORITMI SI COMPLEXITATE ALGORITMI Defiiţie: U algoritm ete o procedură (o mulţime fiită de reguli bie defiite care îdeplieşte u obiectiv preci Algoritmul pleacă de la o tare iiţială şi e termiă îtr-o tare fială U exemplu implu de algoritm ete reţeta de bucătărie Majoritatea algoritmilor ut mai complecşi: au paşi care e repetă eceită decizii Mai mult algoritmii pot fi compuşi petru a crea alţi algoritmi Iiţial coceptul de algoritm a reprezetat o procedură petru rezolvarea uei probleme matematice (ex găirea divizorului comu a două umere îmulţirea a două umere Î forma a actuală coceptul a fot formalizat de către Ala Turig şi Alozo Church î lucrările lor "Maşii Turig" şi repectiv "Lambda Calcul" Algoritmii ut eeţiali î procearea iformaţiei î calculator deoarece u program de calculator ete practic u algoritm Di acet puct de vedere algoritmul poate fi coiderat ca "o ecveţă de operaţii care pot fi executate de către u item Turig complet" Exită defiiţii ale oţiuii de algoritmi care îi leagă de "Maşia Turig" ($ Defiiţie: U algoritm ete u proce de calcul defiit de către o maşiă Turig (Gurevich Deoarece proceează iformaţie algoritmul citeşte date de la u dipozitiv şi poate îregitra (alva date eceare altor proceări Datele alvate ut privite ca o parte a tării itere a algoritmului Î practică atfel de tări ut îregitrate î "tructuri de date" U algoritm eceită şi date itere petru operaţii pecifice Acetea e umec "tipuri de date abtracte" U algoritm trebuie ă e termie au u? Uii autori retricţioează defiiţia algoritmului la o procedură care e termiă Alţii coideră că algoritmii ut proceduri care pot ă e execute la ifiit o atfel de procedură umidu-e "metodă de calcul" Î acete cazuri e coideră că algoritmul trebuie ă geereze obiecte Exemplu: U algoritm care verifică dacă exită mai mult de u zero îtr-o ecveţă ifiită de cifre biare aleatoare trebuie ă e execute la ifiit Exprimarea algoritmilor Algoritmii pot fi exprimaţi pri mai multe moduri: limbaj atural; peudocod; cheme logice; limbaje de programare Exprimarea pri limbaj atural tide ă fie complicată şi ueori ambiguă Peudocodul şi chemele logice ut modalităţi tructurate de exprimare a algoritmilor şi ut idepedete de limbajul de programare Î fial limbajul de programare ete preferat deoarece reprezită exprimarea algoritmului îtr-o formă ce poate fi executată de către calculator Exemplul : U algoritm care găeşte cel mai mare umăr ditr-o lită de umere Limbaj atural: Admitem că primul elemet ete cel mai mare
Examiează fiecare di elemetele rămae î lită şi dacă ete mai mare decât "cel mai mare" at uci otează acet fapt (ot ează-l ca fiid "cel mai mare" 3 Ultimul elemet otat ete "cel mai mare" Peudocod : Itrare: O lită L de elemet e evidă Ieşire: Cel mai mare elemet di lita L cel_mai_mare L for elemet î L > do if (elemet > cel_mai_mare the cel_mai_mare elemet ed_if retur cel_mai_mare Exemplul : Algoritmul lui Euclid petru aflarea celui mai mare divizor comu a două umere aturale Limbaj atural: Fiid date două umere aturale a şi b tetează dacă b ete zero Dacă da a ete cel mai mare divizor comu Dacă u repetă proceul utilizâd pe b şi ce rămâe după împărţirea lui a la b Peudocod: fuctio cmmdc(a b if b = the retur a ele retur cmmdc(b a mod b ed_if au fuctio cmmdc(a b while if ele a b do a > b the a a b ed_if ed_while b b a Vom demotra corectitudiea acetui algoritm Fie a b N a > b a = b + r Să arătăm că orice divizor al lui a şi b ete divizor şi petru r Avem r = a b Dacă d ete u divizor al lui a şi b fie a = d b = td Rezultă r = d td = ( td Deci d ete divizor al lui r Cum orice divizor al lui a şi b ete divizor şi petru r atuci şi cel maim mare divizor e referă şi la r Ete uficiet ă cotiuăm proceul cu umerele b şi r Cum r ete mai mic ca b î valoare abolută vom găi r = îtr-u umăr fiit de paşi Claificarea algoritmilor Î multe cazuri e doreşte a e recuoaşte petru u algoritm dat câte reure particulare ut eceare (timp de execuţie memorie de tocare Ete vorba depre "aaliza algoritmilor" Aceata depide de "claificarea algoritmilor"
Claificare fucţie de implemetare: recurivi (e ivocă pe ei îşişi iterativi (au cotrucţii repetitive; logici (cotrolează deducţii logice; eriali (u igur proceor şi o igură itrucţiue executată la u momet dat paraleli (mai multe proceoare care executa itrucţiui î acelaşi timp ; determiitici (o decizie exactă la fiecare pa/ edetermiitici (rezolvă problema plecâd de la preupueri; Claificare fucţie de "deig" (metodă ex: împarte şi tăpâeşte (împarte problema î ua au mai multe itaţe mai mici; programare diamică (caută tructuri optimale - o oluţie optimală a problemei poate fi cotruită plecâd de la oluţiile optimale ale ubproblemelor; metoda Greedy (caută tot tructuri optimale cu deoebirea că oluţiile la ubprobleme u trebuie ă fie cuocute la fiecare pa; alegerea Greedy e referă la ce arată mai bie la u momet dat Claificare fucţie de domeiul de tudiu algoritmii ut: de căutare de ortare umerici algoritmi de grafuri de geometrie computaţioală de îvăţare automată de criptografie etc Claificare fucţie de complexitate Uii algoritmi e îcheie îtr-u timp liear alţii î timp expoeţial iar alţii u e îcheie Di acet puct de vedere algoritmii ut claificaţi î clae de echivaleţă bazate pe complexitate I cotiuare oi vom fi itereaţi de acet ultim tip de claificare Petru a formaliza coceptele legate de Complexitatea Algoritmilor ete evoie de u model computaţioal U atfel de model ete Maşia Turig MASINA TURING Defiiţia U alfabet Σ ete o mulţime evidă şi fiită de elemete umite imboluri: Σ = { σ σ σ } Defiiţia U cuvât pete Σ ete u t -uplu x = σ i σi σ au mai implu Defiiţia 3 U limbaj L pete Σ ete o ubmulţime a lui Σ Complemetul lui L ete L c = Σ L Cuvitele î Σ pot fi pue î ordie lexicografică Atfel: petru N cuvitele de lugime precedă cuvitele de lugime ( + ; petru orice lugime ordiea ete alfabetică i k σ σ i i σ i k Maşia Turig cotă di următoarele: a k bezi ifiite î două direcţii Bezile ut cotituite ditr-u umăr ifiit de celule î ambele direcţii Fiecare badă are o celulă ditictă celula de tart au celula Î fiecare celulă a fiecărei bezi e poate crie u imbol al uui alfabet Σ Se poate admite şi celula goală care coţie imbolul ul al alfabetului b Fiecare badă are u cap de citire/criere şi fiecare pa al acetuia e face pe badă Deplaarea poate fi L e f t R ig h t S t a y c O uitate cetrală care ete u automat fiit Stările acetuia ut di mulţimea Q Exită o tare ditictă START şi ua STOP Uele maşii Turig iau î coideraţie o ubmulţime F a lui Q ca fiid mulţimea de tări fiale La fiecare pa automatul e află
îtr-o tare i avâd ca itrări k imboluri (de pe cele k bezi pe care capetele de citire le citec (imbolurile curete Ieşirea ete reprezetată de alte k imboluri pe care capetele le criu pe bezile corepuzătoare (imbolurile oi i o oua tare Fiecare capăt excută apoi o deplaare âga dreapta au tă pe loc j Ob: Pe o badă imbolul curet şi cel ou u ut eapărat diferite Rezumâd o maşiă Turig determiitică cu k bezi ( k ete uit-uplul Q Σ I F ude: Q : mulţimea fiită de tări; Σ : mulţime fiită alfabetul (ude Σ ete imbolul ul; I : o mulţime fiită de elemete m ude mişcările pe cele k bezi ete tarea iiţială Vom mai coidera şi Q F Q o mulţime de tări fiale ' k Σ m { Left Right Stay } k Quit-uplul m ete u pa (o itrucţiue al (a maşiii Turig ude: : tarea curetă; = ( k ' ' ' k : cele k imboluri curete luate î coideraţie pe cele k bezi; = ( : cele k imboluri care trebuie crie; m = ( m m mk ' : tarea ouă : mişcările pe cele k bezi Eumeram câteva elemete care caracterizează o mşiă Turig Itrarea maşiii Turig: cele k cuvite de pe cele k bezi crie iiţial îcepad cu celulele zero Ieşirea maşiii Turig: cele k cuvite crie pe bezi î mometul câd maşia Turig e opeşte Î mod frecvet utem itereaţi doare de uul igur Starea globală a maşiii Turig o otăm cu S = {tarea curetă a automatului coţiutul curet al celor k bezi poziţiile curete ale celor k capete} Notăm cu S tarea globală iiţială Calculul determiit al maşiii Turig T petru itrarea x (ude x ( x x k ut cuvite îl otăm cu T ( x iiţială S iar fiecare tare globală urmează alteia î şir = iar x xk şi ete ecveţa de tări globale care îcepe cu tarea Rezultă că maşia Turig determiită ete caracterizată de faptul că are cel mult o itrare petru orice combiaţie de imboluri şi tări Dacă x ete u cuvât de itrare atuci puem că proceul de calcul al maşiii Turig T x ete fiită şi ultima tare ete fială petru x e opreşte dacă ( Cuvâtul x ete acceptat de maşia Turig T dacă T ( x ete fiită şi dacă ultima tare ete o tare de acceptare Vom coidera două tări fiale mai importate: A : tarea de acceptare; R : tarea de rejectare Petru maşia Turig T otăm cu L ( T x Σ / T ( x maşia T { e icheie cu } = A limbajul acceptat de Maşia Turig edetermiită ete caracterizată de faptul că petru orice tare şi imbol oricare ditre tările di Q poate fi tare următoare Uei tări globale S îi poate urma orice tare globală P Prezetăm câteva exemple de maşii Turig Vom decrie itrucţiuile atfel: (tare_cureta imbol_curet (tare_oua imbol_ou icremet
Exeplul Maşiă Turig care u are la itrare iciu cuvât iar la ieşire tipăreşte cuvâtul HELLO Stare curetă Simbol curet Stare ouă Simbol ou Icremet H H + H E E + E L L + L L L + L O O O A O H H H E 3 H E E L 4 H E L L L 5 H E L L O O 6 H E L L O A 7 H E L L O A Exemplul Maşia Turig care determiă cuvitele polidrom ale alfabetului { } Stare curetă Simbol curet Stare ouă Simbol ou Icremet
+ + + R R + + + R REV R REV R R R R REV REV REV REV REV + A Mulţimea tărilor ete { } Q = R A REV R R I următoarele exemple de calcul petru aceată maşiă cuvâtul = va fi acceptat iar cuvâtul = va fi rejectat P : P : P 3: P 4: P 5:
P 6: R P 7: P 8: P 9: REV REV REV P : P : P : P 3: Q Q R P 4: REV P 5: P 6: A Accept P : P : P 3: P 4: P 5: P 6: P 7: R R Reject
I cotiuare dăm euţul a două teoreme Teorema Petru orice k şi orice alfabet Σ exită o maşiă Turig cu ( + k bezi Teorema Petru orice maşiă Turig S cu k bezi exită o maşiă Turig T cu o badă care îlocuieşte pe S î următorul e: petru orice cuvât x Σ maşia S e opreşte îtr-u umăr fiit de paşi la itrarea x dacă şi umai dacă T e opreşte la itrarea x şi la oprire acelaşi lucru ete cri pe ultima badă a lui S şi pe bada lui T Mai mult dacă S face N paşi atuci: T face ( N O paşi O maşiă Turig care ete capabilă ă imuleze orice altă maşiă Turig e umeşte Maşiă Turig Uiverală Calculatoarele modere cu programe îregitrate ut itaţe ale uei maşii Turig mai ofiticate umită Maşiă Program cu acce aleator (Radom Acce Stored Program Machie RASP RASP îregitrează programul î memorie Programul ete o ecveţă fiită de tări ale maşiii (umite şi itrucţiui RASP are u umăr ifiit de regitrii celule de memorie care pot coţie orice îtreg RASP ete caracterizată de adrearea idirectă coţiutul uui regitru poate arăta pre adrea oricărui alt regitru 3 MĂSURAREA COMPLEXITĂŢII Exită două tipuri de măură a complexităţii algoritmilor Măura tatică ete bazată pe tructura algoritmului Măura diamică ete bazată pe calitatea algoritmului itrările lui comportametul calculatorului î timpul execuţiei algoritmului De itere ete măura diamică Î geeral o măură a complexităţii Φ ete idepedetă de modelul computaţioal dacă P de algoritmi are proprietăţile: î raport cu o mulţime { } i i domeiul lui Φi ete măura lui P i ; Φ i ete acelaşi cu al lui Exită u predicat M atfel îcât: ( i x m Φ ( x = m P i iar codomeiul ete iclu î N ude M i i x m Vom da o măură a complexităţii di puct de vedere al timpului de execuţie al uui algoritm Vom foloi ca model computaţioal maşia Turig Î geeral câd vorbim depre timpul de execuţie al uui algoritm e gâdim la umărul de paşi executaţi de proceul computaţioal (calculul determiit aociat algoritmului Câd proceul de calcul u e opreşte coiderăm timpul ca fiid edefiit Defiiţie Aaliza complexităţii determiă timpul î care operaţiile de bază ale uui algoritm ut executate petru fiecare et de date de itrare Sut mai multe cazuri î care e determiă complexitatea uui algoritm: Cazul defa vorabi l W ( defavorabil mai bu caz Cazul cel mai bu B ( 3 Fiecare caz T ( : î cât timp operaţiile de bază ut executate î cazul : î cât timp operaţiile de bază ut executate î cazul cel : î cât timp operaţiile de bază ut executate petru fiecare 4 Cazul mediu A ( : î cât timp operaţiile de bază ut executate î medie
Î cotiuare dăm câteva exemple de calcul a complexităţii Exemplul Căutarea ecveţială îtr-u tablou [ ] begi ed locaţie while (locaţie ad ( [locaţie] x do locaţie loc aţie + ed_while if (locaţie > the ed_if = : locaţie / elemet egăit / Să aalizăm complexitatea î cele patru cazuri W ( = + elemetul x u ete î tablou = x e află î primul elemet u e calculează deoarece operaţiile de bază u ut executate de acelaşi umăr de ori petru toate itaţele de dimeiue A : B ( 3 T ( 4 Petru ( Cazul x ete î tablou Toate compoetele tabloului au valori diferite Rezultă că x poate fi găit î fiecare ditre ele cu aceeaşi probabilitate Rezultă că ( ( + + + A = k = k = = ete practic valoarea medie aşteptată a k = k = comparaţiilor Cazul x e află au u î tablou Fie p probabilitatea ca el ă e afle î tablou p Probabilitatea ca el ă e afle î uul di elemete ete iar probabilitatea ca el ă u p fie î tablou ete ( Dacă x e află pe poziţia k vom avea k treceri pri buclă iar dacă x u aparţie p p A ( = k + ( p = k + ( p = tabloului vom avea treceri Atuci k = k = + p p p + p = + + p = p p p = + = + Petru = p rezultă ( p A = + şi petru = 5 Exemplul Sortarea uui tablou [ ] A = p re zul tă ( 3 + = pri metoda iterchimbării begi ed for i = to do for j = i + to do if ( [ j] [ i] ed_if < the [ i] [ j] Notăm cu T ( umărul de paşi executaţi de algoritm
Operaţiile de bază ut: comparaţia [ i] cu [ j] şi chimbarea [ i] cu [ j] Bucla exterioară e execută de ori La primul pa al buclei exterioare e vor executa paşi î bucla iterioară La al doi l ea pa al bucl ei e xteri oar e vor fi paş i î buc l a i teri oară Apoi 3 4 paşi etc Deci ( = ( + ( ( T + + + = iar complexitatea ete O ( Următoarele defiiţii reprezită cazuri de mărgiire a complexităţii Defii ţia Pe tru o fuc ţi e f ( otăm cu O ( f ( mulţimea fucţiilor g ( proprietatea că c R şi N atfel îcât g ( c f ( Exemplu ( f = şi g ( + + c ; ( + Petru u = c ; ( c + [ ] ; [( c + ] > prima iegalitate ete adevărată c Defii ţia Pe tru o fuc ţi e f ( otăm cu Ω ( f ( mulţimea fucţiilor g ( proprietatea că c R şi N+ Exemplul 3 Ω ( ( + Exemplul Ω ( ( + Deci petru atfel îcât g ( c f ( petru că + = 4 3 Atfel petru e petru c = şi = avem îdepliită codiţia impuă î defiiţie 4 Defii ţia 3 Petru o fu c ţi e f ( otăm cu ( f ( = O ( f ( Ω ( f ( g ( cu proprietatea că c c şi N atfel îcât c f ( g ( c f ( cu cu Φ mulţimea fucţiilor Exemple de clae de complexitate: ( ( ( O : 3 log ( + 8 Ω : Φ : 4 3 4 5 + 7 6 + 9 log ( 6 4 5 + 4 + 3 6 + 9 6 + 5 + + 4 4 6 + 9 5 + Prezetăm î cotiuare u algoritm de cautare care are o complexitate mai buă decât alogoritmul de cautare ecveţială Căutarea biară î tabloul [ ] begi mi ; max ; locaţie ; while (mi max ad (locaţie = do mijloc (mi + max div ; if (x = [mijloc] the locaţie mijloc ele if (x < [mijloc] the max mijloc ele mi mijloc + ed_if ed_if
ed_while ed Aaliza complexităţii Coiderăm cazul defavorabil W ( Preupuem că ete putere a lui mai preci k = Prima itrucţiue di buclă îjumătăţeşte dimeiuea tabloului de căutare Aceata e îtâmplă de fiecare dată câd e trece pri buclă Petru cazul câd x ete mai mic au mai mare decât toate elemetele di lită vom arăta că W ( = log ( + Di îjumătăţirea ecveţei de căutare deducem: W W W W W W + ( = W ( = ( = W ( + = ( 4 = W ( + = 3 ( 8 = W ( 4 + = 3 + = 4 ( 6 = W ( 8 + = 4 + = 5 Să demotrăm pri iducţie că ( = log ( + Petru = : W ( = = log ( + W Preupuem W ( = log ( + W ( = W ( + = log ( + + = log ( + log ( log ( + Î cazul câd k + = avem î geeral complexitatea log ( + = O (log ( + Algoritmul de ortare biară ete u exemplu de problemă Divide-et-Impera ($Error! Referece ource ot foud 3 Tipuri de probleme şi complexitatea lor ( ( O log apare câd o problemă mai mare ete rezolvată pri traformarea ei îtr-o problemă de dimeiue mai mică (tip logaritmic; O O ( ( ( apare câd fiecare elemet al problemei eceită u mic effort (timp de proceare (tip liear; lg apare câd o problemă ete partă î mai multe ubprobleme rezolvabile idepedet iar apoi ut combiate oluţiile (tip liearitmic; O ( O ( apare câd algoritmul proceează toate perechile de elemete ale uei mulţimi (tip uadratic; tip expoeţial
Primele trei curbe di tâga graficului de mai u reprezită î ordie (de la tâga la dreapta complexităţile O ( ( O şi O ( ( lg Iată câteva cazuri practice de tabilire a complexităţii Cazul de rezolvare al uei igure itrucţiui ce e execută o igură dată: O ( Cazul de rezolvare: for i = to do ; ude e te O ( Rezultă complexitatea O ( = O ( Cazul de rezolvare: for i = to do for j = to do ; ude e te ( Cazul de rezolvare: h = while ( h ; h h ed_while O Rezultă complexitatea O ( = O ( do aici variabila h ia valorile 48 pâă câd depăşeşte pe Rezultă că ut + log treceri Avem complexitatea ( log Cazul de rezolvare: for i = to do for ; j = i to do O Bucla iterioară e execută de i ori ude i = Numărul de execuţii ete ( + i = i= deci complexitatea ete ( Cazul de rezolvare: h = ; j = while j < h do for i = to do ; O
h h/ ed_while Bucla iterioară are complexitatea O ( iar bucla exterioară execută Complexitatea ete deci ( log O log iteraţii 4 RECURSIVITATE Î geeral puem că u obiect au o metodă ete recuriv (ă dacă e poate defii î fucţie de el (ea îuşi (îăşi Mai preci u atfel de obiect au metodă e poate defii pri: câteva cazuri imple au metode imple; reguli care traformă cazurile complexe î cazuri imple Exemplu : orice părite are u trămoş; păriţii oricărui trămoş ut de aemeea trămoşi ai peroaei coiderate Cazul fucţiilor: O fucţie ete defiită recuriv dacă porid de la aumite valori ale ei e pot calcula alte valori pri autoapelarea fucţiei Altfel pu o fucţie recurivă ete parţial defiită î termei de ea îăşi Defiiţia uei fucţii recurive trebuie ă atifacă codiţia de coiteţă: valoarea fucţiei recurive trebuie ă fie direct calculabilă au calculabilă cu ajutorul uor valori direct calculabile Î defiirea uei fucţii recurive trebuie ă apară cel puţi o codiţie de oprire di recurivitate şi Expreia uei ficţii recurive ete dată de o relaţie de recureţă Fie o ecveţă { t } k N Dacă avem: t + k = a t + k + a t + k + + ak tk atuci ecveţa ete o ecveţă recurivă de ordi k iar relaţia precedetă ete o relaţie recurivă de ordi k 4 Exemple de fucţii recurive Formulă recurivă petru algoritmul lui Euclid cmmdc = ude r ete retul împărţirii lui m Petru m N m > avem ( m cmmdc ( r la Deci r = m m / Atuci cmmdc ( m = cmmdc ( m m / Algoritm Euclid cri ca fucţie recurivă: fuctio cmmdc ( m if ( = the retur m ele ed_if ed_fuc retu r cmmdc ( m m / Apel: răpu cmmdc ( a b Agoritmul Euclid cri ca procedură recurivă procedure cmmdc (i : m ; out reult if ( = the reult m ele cmmdc m m ; reult
ed_if ed_proc Apel: cmmdc ( a b ; rapu Fucţia factorial fact : N N fact ( = fact ( daca daca = fuctio fact ( if ( = the retur ele re tur fact ( ed_if ed_fuc ; Exemplu de calcul efectiv petru fucţia factorial: factorial (3 factorial ( factorial ( factorial ( retur ( retur = retur = retur 3 = 6 putere 3 Fucţia putere x Petru u îtreg x > ă e calculeze ( x Evidet ( : N N N putere ( x = x putere putere ( x x = dacă = dacă x ude Vom coidera fucţia Atuci expreia recuretă a fucţiei ete: Corectitudiea defiiţiei rezultă di x = (paul de verificare şi iducţie Afirmăm că fucţia ( are complexitatea O ( Notăm cu T ( T ( T ( + O ( timpul de execuţie a fucţiei putere = ude ( T ( = T ( + O ( = T ( + O ( T ( = T ( + O ( Rezultă complexitatea O ( + x + = x x O ete timpul ecear petru a retura valoarea x Exprimâd altfel fucţia putere vom obţie u algoritm cu o complexitate mai buă Obervăm că 6 3 fel ( x 4 x e poate calcula mai uşor dacă am calculat x = Notăm / = div (paul de 4 x deoarece ( x x = La Co i derăm x div = putere ( x div şi otăm cu r ridicarea la puterea doi Atuci r ( putere ( x div Atuci: x = x r ( putere ( x div ( putere ( x div x x * = r dacă impar dacă par dacă impar dacă par
iar algoritmul complet ete: putere ( x = x r ( putere ( x div r ( putere ( x div Notăm cu T ( T ( = T + dacă = dacă impar dacă par timpul de execuţie petru aceată formulă Fie petru = petru > m m ( = T ( = T ( + = T ( + = = T ( + m = T ( + m = m + = log + m = Atuci: m T Rezultă complexitatea O ( log 4 Alte exemple de fucţii recurive: a Fiboacci: fib : N N fib ( = fib ( + ( = > = b Ackerma: ack + ( m = ack ( m ack ( m ack ( m m = = ret c Maa Puelli maa ( = x f x ( f ( x + x [ 4 Tipuri de recurie Petru exprimare vom foloi fucţiile: f ( x g ( x h ( x i ( x ( uv ϕ a Recuria liiară f ( x ( x dacă p ( x ( f ( h ( x i ( x altfel g = = ϕ Exemplu: fact ( true
b Recuria eliiară de tip cacadă f ( x ( x dacă p ( x ( f ( h ( x f ( i ( x altfel g = = ϕ Exemplu: fib ( = fib ( + fib ( true = au altfel = > c Recuria eliiară de tip împachetat f ( x = ( x dacă p ( x ( f ( f ( h ( x altfel g = f Exemplu: maa ( true 43 Ecuaţii recurete Î multe cazuri aaliza complexităţii coduce la ecuaţii recurete şi la rezolvarea acetora Prezetăm două tehici geerale petru rezolvarea ecuaţiilor recurete Teorema Fie ecuaţia recuretă omogeă şi liiară cu coeficieţi cotaţi a t + a t + + ak t k = k k Dacă ecuaţia a caracteritică a r + a r + + ak r = are k oluţii diticte r r r k atuci igurele oluţii ale ecuaţiei recurete ut de forma k k k = t = c r + c r + + c r Exemplu: t 5 t + 6 t = t = t = Ecuaţia caracteritică ete r 5 r + 6 = Rezul tă r 3 r Soluţia geerală ete = c 3 + c şi di codiţiile iiţiale avem t t = 3 = = Teorema Fie r rădăcia de multiplicitate m petru ecuaţia caracteritică a uei ecuaţii omogee liiare şi recurete cu coeficieţi cotaţi: a t + a t + + ak t k = m Atuci t = r t = r t = r t = r ut toate oluţii ale ecuaţii recurete Fiecare ditre aceşti termei trebuie itrodu î oluţia geerală (pri aduare Exemplu: Să e rezolve: t 7 t + 5 t + 9 t 3 = t = t = t = Ecuaţia caracteritică ete r 3 7 r + 5 r 9 = Rezultă r r 3 Soluţia geerală ete t = + 3 3 t 3 = 3 = = c + c 3 + c3 şi di codiţia iiţială electăm oluţia