chip and be conquered - b subprobleme de dimensiune n-c Exercitiu: Dati exemple de algoritmi care au recurente de tipul celor de mai sus.

Σχετικά έγγραφα
Metode iterative pentru probleme neliniare - contractii

Proiectarea Algoritmilor 2. Scheme de algoritmi Divide & Impera

Curs 4 Serii de numere reale

Sisteme diferenţiale liniare de ordinul 1

Curs 10 Funcţii reale de mai multe variabile reale. Limite şi continuitate.

Planul determinat de normală şi un punct Ecuaţia generală Plane paralele Unghi diedru Planul determinat de 3 puncte necoliniare

Curs 14 Funcţii implicite. Facultatea de Hidrotehnică Universitatea Tehnică "Gh. Asachi"

Asupra unei inegalităţi date la barajul OBMJ 2006

V.7. Condiţii necesare de optimalitate cazul funcţiilor diferenţiabile

(a) se numeşte derivata parţială a funcţiei f în raport cu variabila x i în punctul a.

Integrala nedefinită (primitive)

III. Serii absolut convergente. Serii semiconvergente. ii) semiconvergentă dacă este convergentă iar seria modulelor divergentă.

5. FUNCŢII IMPLICITE. EXTREME CONDIŢIONATE.

Curs 1 Şiruri de numere reale

DISTANŢA DINTRE DOUĂ DREPTE NECOPLANARE

Analiza în curent continuu a schemelor electronice Eugenie Posdărăscu - DCE SEM 1 electronica.geniu.ro

Algoritmi Divide-et-Impera Structura unui algoritm divide-et-impera divide: impera: combina: Utilizarea cea mai frecventa

Functii definitie, proprietati, grafic, functii elementare A. Definitii, proprietatile functiilor X) functia f 1

Metode de interpolare bazate pe diferenţe divizate

Functii definitie, proprietati, grafic, functii elementare A. Definitii, proprietatile functiilor

Definiţia generală Cazul 1. Elipsa şi hiperbola Cercul Cazul 2. Parabola Reprezentari parametrice ale conicelor Tangente la conice

Examen AG. Student:... Grupa:... ianuarie 2011

Seminariile Capitolul X. Integrale Curbilinii: Serii Laurent şi Teorema Reziduurilor

Subiecte Clasa a VII-a

Esalonul Redus pe Linii (ERL). Subspatii.

a n (ζ z 0 ) n. n=1 se numeste partea principala iar seria a n (z z 0 ) n se numeste partea

Criptosisteme cu cheie publică III

MARCAREA REZISTOARELOR

SERII NUMERICE. Definiţia 3.1. Fie (a n ) n n0 (n 0 IN) un şir de numere reale şi (s n ) n n0

Curs 2 Şiruri de numere reale

R R, f ( x) = x 7x+ 6. Determinați distanța dintre punctele de. B=, unde x și y sunt numere reale.

VII.2. PROBLEME REZOLVATE

5.5. REZOLVAREA CIRCUITELOR CU TRANZISTOARE BIPOLARE

Functii Breviar teoretic 8 ianuarie ianuarie 2011

Laborator 11. Mulţimi Julia. Temă

Aplicaţii ale principiului I al termodinamicii la gazul ideal

Subiecte Clasa a VIII-a

Seminar 5 Analiza stabilității sistemelor liniare

BARAJ DE JUNIORI,,Euclid Cipru, 28 mai 2012 (barajul 3)

Ecuatii exponentiale. Ecuatia ce contine variabila necunoscuta la exponentul puterii se numeste ecuatie exponentiala. a x = b, (1)

COLEGIUL NATIONAL CONSTANTIN CARABELLA TARGOVISTE. CONCURSUL JUDETEAN DE MATEMATICA CEZAR IVANESCU Editia a VI-a 26 februarie 2005.

1.3 Baza a unui spaţiu vectorial. Dimensiune

METODE NUMERICE: Laborator #5 Metode iterative pentru rezolvarea sistemelor: Jacobi, Gauss-Siedel, Suprarelaxare

Ecuaţia generală Probleme de tangenţă Sfera prin 4 puncte necoplanare. Elipsoidul Hiperboloizi Paraboloizi Conul Cilindrul. 1 Sfera.

Curs 2 DIODE. CIRCUITE DR

SEMINAR 14. Funcţii de mai multe variabile (continuare) ( = 1 z(x,y) x = 0. x = f. x + f. y = f. = x. = 1 y. y = x ( y = = 0

Seminar Algebra. det(a λi 3 ) = 0

Laborator 1: INTRODUCERE ÎN ALGORITMI. Întocmit de: Claudia Pârloagă. Îndrumător: Asist. Drd. Gabriel Danciu

Principiul Inductiei Matematice.

Conice. Lect. dr. Constantin-Cosmin Todea. U.T. Cluj-Napoca


riptografie şi Securitate

EDITURA PARALELA 45 MATEMATICĂ DE EXCELENŢĂ. Clasa a X-a Ediţia a II-a, revizuită. pentru concursuri, olimpiade şi centre de excelenţă

Eficienta algoritmilor

Metode de sortare. Se dau n numere întregi, elemente ale unui vector a. Se cere să se aranjeze elementele vectorului a în ordine crescătoare.

RĂSPUNS Modulul de rezistenţă este o caracteristică geometrică a secţiunii transversale, scrisă faţă de una dintre axele de inerţie principale:,

Capitolul 4 PROPRIETĂŢI TOPOLOGICE ŞI DE NUMĂRARE ALE LUI R. 4.1 Proprietăţi topologice ale lui R Puncte de acumulare

Lucrare. Varianta aprilie I 1 Definiţi noţiunile de număr prim şi număr ireductibil. Soluţie. Vezi Curs 6 Definiţiile 1 şi 2. sau p b.

CONCURS DE ADMITERE, 17 iulie 2017 Proba scrisă la MATEMATICĂ

T R A I A N ( ) Trigonometrie. \ kπ; k. este periodică (perioada principală T * =π ), impară, nemărginită.

Laborator 6. Integrarea ecuaţiilor diferenţiale

2.1 Sfera. (EGS) ecuaţie care poartă denumirea de ecuaţia generală asferei. (EGS) reprezintă osferă cu centrul în punctul. 2 + p 2

Capitolul 4. Integrale improprii Integrale cu limite de integrare infinite

Sortare. 29 martie Utilizarea şi programarea calculatoarelor. Curs 16

Concurs MATE-INFO UBB, 1 aprilie 2017 Proba scrisă la MATEMATICĂ

riptografie şi Securitate

Sisteme liniare - metode directe

Capitolul 2 - HIDROCARBURI 2.5.ARENE

Al cincilea baraj de selecţie pentru OBMJ Bucureşti, 28 mai 2015

Proiectarea Algoritmilor 4. Scheme de algoritmi Programare dinamica

Algoritmica grafurilor XI. Cuplaje in grafuri. Masuri de calitate. Numere Ramsey

1. Sisteme de ecuaţii liniare Definiţia 1.1. Fie K un corp comutativ. 1) Prin sistem de m ecuaţii liniare cu n necunoscute X 1,...

Examen AG. Student:... Grupa: ianuarie 2016

Ecuatii trigonometrice

Fig Impedanţa condensatoarelor electrolitice SMD cu Al cu electrolit semiuscat în funcţie de frecvenţă [36].

Programarea dinamica I

Subiecte Clasa a V-a

Lectia VI Structura de spatiu an E 3. Dreapta si planul ca subspatii ane

* K. toate K. circuitului. portile. Considerând această sumă pentru toate rezistoarele 2. = sl I K I K. toate rez. Pentru o bobină: U * toate I K K 1

V O. = v I v stabilizator

2 Transformări liniare între spaţii finit dimensionale

Problema a II - a (10 puncte) Diferite circuite electrice

5.1. Noţiuni introductive

CIRCUITE INTEGRATE MONOLITICE DE MICROUNDE. MMIC Monolithic Microwave Integrated Circuit

a) (3p) Sa se calculeze XY A. b) (4p) Sa se calculeze determinantul si rangul matricei A. c) (3p) Sa se calculeze A.

a. 11 % b. 12 % c. 13 % d. 14 %

5.4. MULTIPLEXOARE A 0 A 1 A 2

Matrice. Determinanti. Sisteme liniare

Vectori liberi Produs scalar Produs vectorial Produsul mixt. 1 Vectori liberi. 2 Produs scalar. 3 Produs vectorial. 4 Produsul mixt.

Proiectarea filtrelor prin metoda pierderilor de inserţie

Cum folosim cazuri particulare în rezolvarea unor probleme

1.7. AMPLIFICATOARE DE PUTERE ÎN CLASA A ŞI AB

Metode Runge-Kutta. 18 ianuarie Probleme scalare, pas constant. Dorim să aproximăm soluţia problemei Cauchy

7. Fie ABCD un patrulater inscriptibil. Un cerc care trece prin A şi B intersectează

SEMINARUL 3. Cap. II Serii de numere reale. asociat seriei. (3n 5)(3n 2) + 1. (3n 2)(3n+1) (3n 2) (3n + 1) = a

Profesor Blaga Mirela-Gabriela DREAPTA

FLUXURI MAXIME ÎN REŢELE DE TRANSPORT. x 4

IV. CUADRIPOLI SI FILTRE ELECTRICE CAP. 13. CUADRIPOLI ELECTRICI

Capitolul 2 - HIDROCARBURI 2.5.ARENE

Cursul Măsuri reale. D.Rusu, Teoria măsurii şi integrala Lebesgue 15

Transcript:

\ Determinarea complexitatii algoritmilor numararea este in general simpla pe algoritmi nerecursivi: identificam operatiile (critice) si de cate ori se executa acestea (v. insertion sort in laboratorul trecut) ceva mai dificil este cu algoritmii recursivi: nu este mereu clar sau usor de determinat cate apeluri recursive se executa (si fiecare are alta talie) Determinarea complexitatii unui algoritm recursiv costul recursiv al unui apel - cate noi apeluri recursive lanseaza un anumit apel - dimensiunea parametrilor acestor noi apeluri costul nerecursiv al unui apel - orice altceva mai face un apel in afara de a lansa noi apeluri recursive T(n) = cost_recursiv(n) + cost_nerecursiv(n) Relatii de recurenta uzuale divide et impera - problema e impartita in b subprobleme de dimensiune n/c - b si c difera de la un algoritm la altul, cel mai des b=c= n - = bt( ) + f ( n) c chip and conquer - in fiecare pas, problema este redusa la o subproblema de dimensiune n-c (practic se elimina c posibilitati), cu ajutorul unor operatii care vor constitui cost nerecursiv (f(n)) - = T ( n c) + f ( n) chip and be conquered - b subprobleme de dimensiune n-c - = bt ( n c) + f ( n) Exercitiu: Dati exemple de algoritmi care au recurente de tipul celor de mai sus. Determinarea recurentei de complexitate pt un algoritm recursiv: mergesort Algoritmul de sortare prin interclasare (mergesort, in engleza) sorteaza unui vector de n elemente printr-o strategie divide et impera: - imparte vectorul in jumatati (divide) - sorteaza fiecare jumatate folosind sortare prin interclasare (impera) - combina cei vectori sortati intr-un singur vector mare, sortat (combina) mergesort(start, stop) { if start<stop then { mijloc=(start+stop)/ mergesort(start, mijloc) // sorteaza prima jumatate

} } mergesort(mijloc+, stop) // sorteaza a doua jumatate merge(start, mijloc, stop) // interclaseaza vectorii sortati merge(start, mijloc, stop) { for i=start to stop b[i]=a[i] // copiaza jumatatile sortate intr-un vector auxiliar b } i=start; j=mijloc+; k=start; // copiaza inapoi in a pe cel mai mic dintre elementele curente in // cele jumatati while (i<=mijloc) and (j<=stop) if b[i]<=b[j] then a[k++]=b[i++] else a[k++]=b[j++] // copiaza ce a mai ramas din prima jumatate, daca in ea a mai ramas while i<=mijloc a[k++]=b[i++] // similar pt a doua while j<=stop a[k++]=b[j++] Exercitii: Care este costul nerecursiv? Raspuns: Costul nerecursiv este efortul efectuat de functia merge. Aici se asaza pe rand n elemente intr-un nou vector sortat. Pentru a alege al i-lea element, se realizeaza maxim 3 teste (i<=mijloc, j<=stop, b[i]<=b[j]) si 3 atribuiri (a[k]=b[i], k++, i++), prin urmare costul nerecursiv este. Operatia de copiere care precede interclasarea propriu-zisa este in mod evident si ea si nu afecteaza complexitatea functiei. f(n) = Care este costul recursiv? Raspuns: Ne uitam in functia mergesort, unde se fac apeluri recursive, fiecare de dimensiune n/ (fiecare din ele pe un vector de ori mai mic decat cel din pasul curent). cost_recursiv(n) = T(n/) Se obtine recurenta de complexitate: T(n) = T(n/) + Obs: O recurenta de complexitate are nevoie si de un caz de baza (orice recursivitate are o iesire, cand problema devine elementara). Cazul de baza spune care este complexitatea rezolvarii problemei elementare. Aici: T()= Θ(), cu semnificatia atunci cand am de sortat vectori de sg element, pot face asta intr-un numar constant de operatii. Metode de rezolvare a recurentelor de complexitate nu exista o metoda universal valabila este necesara cunoasterea mai multor metode, fiecare cu aria ei de aplicabilitate (similar cu metodele existente pt rezolvarea integralelor)

Metoda iterativa: presupune sa calculezi suma seriei rezultata din eliminarea recurentei Exemplu (mergesort): T(n) = T(n/) +, T() = Θ() n = T ( ) + θ ( n) n n n T ( ) = T ( ) + θ ( ) n 3 n n T ( ) = T ( ) + θ ( ) 3... q n T ( ) = q Recurenta se termina atunci cand se ajunge la T() (pentru care cunoastem complexitatea, Θ()), deci cand n/ q = => q=log(n). Adunand termenii stangi, respectiv termenii drepti din toate aceste ecuatii si reducand termenii care apar atat in stanga, cat si in dreapta, obtinem: log( n) log( n) q n = θ ( ) = ( n) = ( n)( + log( n)) q θ θ q= q+ n T ( q + q n ) + θ ( ) q q= Reprezentarea cu arbori de recurenta - nivel in arbore = nivel de adancime in recursivitate - nod = apel recursiv - pe fiecare nivel este figurat si costul nerecursiv platit la acel nivel - la fel este figurat costul nerecursiv in dreptul unui nod log(n)+ nivele Θ(n/)) T(n/) T(n) Θ(n/)) T(n/) Θ(n/4) T(n/4) T(n/4) T(n/4) T(n/4) Θ() T() T() T() T() T() n frunze

Exemplu (mergesort): rezulta log(n)+ nivele in arbore, pe fiecare executandu-se un efort de. Asadar: T(n) = (+log(n)) = Θ(n+n log(n)) = Θ(n log(n)). Metoda substitutiei - intr-un anumit sens, aceasta metoda este universal valabila - problema este ca trebuie sa incepi prin a ghici o solutie F(n) pentru recurenta de complexitate - apoi iti confirmi intuitia prin inductie dupa n - in general se foloseste una din metodele mai putin riguroase pt a ghici o solutie, apoi metoda substitutiei pt a demonstra corectitudinea solutiei ghicite - pentru recurenta T(n) = f(t(g(n))) (neaparat g(n)<n), cu T(n )=c pe cazul elementar, si pentru ghiceala F(n), schema metodei substitutiei este urmatoarea: caz de baza : F( n ) = c n n ( n ipoteza inductiva : T ( g( n)) g( n)) pas de inductie : n),, N n = g( n )) n) Schema in cuvinte - identificam n, c, g(n) si alegem F pentru recurenta de care ne ocupam - verificam cazul de baza (F(n )=c) - demonstram ca T(g(n))=F(g(n)) => T(n)=F(n) Exemplu (mergesort): T(n) = T(n/) +, T() = Θ() Identificam constantele si alegem solutia: n =, c=θ(), g(n)=n/, F(n)=Θ(n+n log(n)) Caz de baza: T(n ) n ) <=> T()=F()=Θ() --- OK Pas de inductie: Ipoteza inductiva: T(n/) n/) = Θ(n/+n/ log(n/)). Trebuie aratat: T(n) n). = T ( n / ) + θ ( n) n / ) + θ ( n) = θ ( n / + ( n / ) log( n / )) + θ ( n) = θ ( n + n log( n / )) + θ ( n) = θ ( n + n (log( n) )) + θ ( n) = θ ( n + n log( n)) n)

Problema: incercam sa demonstram prin inductie ca n=o(). Caz de baza: =O() --- OK Pas de inductie: Ipoteza inductiva: n-=o(). Trebuie aratat: n=o(). n = n-+ = O()+O() = O() --- OK Exercitiu: Ce e in neregula in demonstratia de mai sus? Raspuns: Se schimba constanta din definitia lui O pe parcursul demonstratiei! Obs: Nu este riguros sa umblam cu O, Ω, Θ in inductii, tocmai din cauza ca riscam sa schimbam constantele si demonstratiile sa nu mai fie corecte. Trebuie, in loc, sa umblam chiar cu constantele din definitiile notatiilor de complexitate. Metoda substitutiei aplicata riguros pt mergesort: T(n) = T(n/) +, T() = Θ() Identificam constantele si alegem solutia: n =, c=θ(), g(n)=n/, F(n)=Θ(n+n log(n)). Adica: c (n+n log(n)) F(n) c (n+n log(n)). Caz de baza: T(n ) n ) <=> T()=F()=Θ() --- OK Pas de inductie: Ipoteza inductiva: c (n/+n/ log(n/)) T(n/) c (n/+n/ log(n/)). Trebuie aratat: c (n+n log(n)) T(n) c (n+n log(n)). T(n) = T(n/) + c (n+n log(n/)) + c 3 n T(n) c (n+n log(n/)) + c 4 n c (n+n (log(n)-)) + c 3 n T(n) c (n+n(log(n)-)) + c 4 n c n log(n) + c 3 n T(n) c n log(n) + c 4 n Daca alegem de la inceput c <c 3 si c >c 4 (permis, intrucat c 3 si c 4 sunt fixate): c (n+n log(n)) T(n) c (n+n log(n)) --- OK Exercitiu: refaceti demonstratia pt n=o() prin metoda riguroasa. Metoda master - un set de criterii pt a determina comportamentul algoritmilor divide et impera - valabila pt algoritmi care au recurenta de complexitate de forma T(n) = bt(n/c) + f(n) si respecta, in plus, anumite restrictii Schita de justificare a teoremei master Pt recurenta de mai sus, arborele de recurenta va contine pe al doilea nivel b noduri (fiecare nod reprezentand o problema de dimensiune n/c), pe urmatorul b, apoi tot asa pana la ultimul nivel pe care se vor gasi b inaltimea_arborelui frunze.

log( b) log ( n) logc ( b) nr _ frunze = b = n log( c) = n = E n ( notatie) Considerand doar varful si baza arborelui de recurenta: - la varf, costul semnificativ este costul nerecursiv f(n) - la baza, fiecare frunza rezolva o problema elementara, iar costul nivelului ultim din arbore e influentat nu atat de ce face fiecare frunza, cat de numarul de frunze, n E, care determina de cate ori se face acel efort elementar - intrebarea devine care dintre costul de la varf si cel de la baza este dominant; daca este unul dominant, atunci el va dicta complexitatea algoritmului Cele 3 cazuri din teorema master se bazeaza pe relatia dintre aceste costuri, in felul urmator: Cazul (n E dominant) - valabil daca ε> a.i. f(n) O(n E-ε ) - T(n) = Θ(n E ) Cazul (costuri similare pentru n E si f(n)) - valabil daca f(n) Θ(n E ) - in acest caz, efortul e distribuit uniform intre nivelele din arbore si va fi de ordinul n E * numarul_de_nivele - T(n) = Θ(n E log(n)) Cazul 3 (f(n) dominant) - valabil daca ε> a.i. f(n) Ω(n E+ε ) si, in plus, constantele <a<, n, a.i. pt orice n n, b f(n/c) a f(n) - T(n) = Θ(f(n)) - daca nu s-ar indeplini conditia suplimentara b f(n/c) a f(n), costul nerecursiv ar creste foarte mult in josul arborelui, iar f(n) nu ar mai fi dominant Exercitii: T(n) = T(n/) + T(n) = 3T(n/) + T(n) = 3T(n/3) + n T(n) = T(n/) + n log(n) T(n) = 4T(n/) + n (mergesort)