==== TEMA 1 ==== ''Responsabili tema'': Peticila Alexandru, Peticila Constantin * I. (//0.4 x 5 = 2p//) Pentru fiecare din urmatoarele recurente aplicati teorema Master (sau argumentati de ce nu poate fi aplicata, daca este cazul): * $math[T(n) = 4T(\frac{n}{2}) + n^{2.5}] * $math[T(n) = 4T(\frac{n}{2}) + n^2 log(n)] * $math[T(n) = T(\sqrt{n}) + \Theta(log( log( n)))] * $math[T(n) = T(\frac{n}{2}) + n(2 − cos n)] * $math[T(n) = 3T(\frac{n}{3}) + \frac{n}{log (n)}] * II. (//0.75 x 2 = 1.5p//) Determinati $math[f(n)] cat mai restrictiv astfel incat : * $math[T(n) = \Theta(f(n))], unde a ≥ 1, c > 0 si $math[T(n) = T(n − a) + T(a) + cn ] * $math[T(n) = O(f(n))], unde $math[T(n) = T(n − 1) + T(\frac{n}{2}) + n] * III. (//1.5p//) Rezolvati urmatoarea recurenta: * $math[T(a^n) = aT(a^{(n-1)} ) + 2ca^n] \\ unde a, c constante cu a > 1 si T(1) = 0 * IV. (//1.5p//) Pentru inmultirea matricelor Matei foloseste in acest moment un algoritm cu recurenta urmatoare: $math[T(n) = 7T(n/2) + n^2].\\ El nu este multumit de complexitatea acestui algoritm si doreste sa realizeze un algoritm asimptotic mai rapid prin impartirea matricelor in bucati de dimensiune n/4*n/4.\\ Care este numarul maxim de subprobleme pe care algoritmul sau poate sa il creeze astfel incat sa fie asimptotic mai rapid decat algoritmul cel vechi?\\ ''Nota'': Pasii de divide si combina au impreuna complexitatea de Θ($math[n^2] ). * V.(//2 x 0.75 = 1.5p//) Spunem ca f(n) = $math[{Ω}^{ꝏ}(g(n))] daca ∃ un c ∈ $math[{R}^{+}] astfel incat f(n) ≥ c*g(n) ≥ 0 pentru o infinitate de numere n. - Verificati daca Ω = $math[{Ω}^{ꝏ}] si $math[{Ω}^{ꝏ}] = Ω - Stabiliti relatia de adevar a urmatoarei propozitii:\\ Fie f(n) si g(n) doua functii asimptotic positive. Atunci: fie f(n) = O(g(n)), fie f(n) = $math[{Ω}^{ꝏ}](g(n)) sau ambele.\\ Raspunsul este acelasi si daca inlocuim $math[{Ω}^{ꝏ}] cu Ω? Argumentati! * VI. (//2p//) Analizati complexitatea urmatorului algoritm: private static Integer recursiveMethod(Integer length) { if (length > 0) { Integer index = random(length - 1); return recursiveMethod(index) + recursiveMethod(length - 1 - index); } else { return 1; } } ''Nota'': Metoda random(n) foloseste o unitate de timp si returneaza o valoare uniform distribuita in intervalul [0,n], iar timpul pentru celelalte instructiuni e neglijabil.\\ === PRECIZARI: === * Tema va fi redactata individual. * Tema va fi predata la cursul din data de **6.12.2019** . * Tema valoreaza **1** punct din nota finala.