Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
aa:tema_1_2019 [2019/11/15 17:11] cpeticila |
aa:tema_1_2019 [2019/11/23 11:18] (current) cpeticila |
||
---|---|---|---|
Line 2: | Line 2: | ||
- | ''Responsabili tema'': Mihaela Catrina, Teodor Popescu | + | ''Responsabili tema'': Peticila Alexandru, Peticila Constantin |
- | * I. (//0.5 x 6 = 3p//) Pentru fiecare din urmatoarele recurente aplicati teorema Master (sau argumentati de ce nu poate fi aplicata, daca este cazul): | + | * 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.5}] | ||
* $math[T(n) = 4T(\frac{n}{2}) + n^2 log(n)] | * $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(\sqrt{n}) + \Theta(log( log( n)))] | ||
- | * $math[T(n) = 3T(\frac{n}{3}) + \frac{n}{log (n)}] | ||
* $math[T(n) = T(\frac{n}{2}) + n(2 − cos n)] | * $math[T(n) = T(\frac{n}{2}) + n(2 − cos n)] | ||
- | * $math[T(n) = 16T(\frac{n}{4}) + 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] | ||
- | * II. (//1p//) Determinati $math[f(n)] astfel incat $math[T(n) = \theta(f(n))]: | + | * III. (//1.5p//) Rezolvati urmatoarea recurenta: |
- | * $math[T(n) = \frac{1}{4}T(\frac{n}{4}) + \frac{3}{4}T(\frac{3n}{4}) + 1] | + | * $math[T(a^n) = aT(a^{(n-1)} ) + 2ca^n] \\ unde a, c constante cu a > 1 si T(1) = 0 |
- | * III. (//1p//) Rezolvati urmatoarea recurenta, presupunand ca n este o putere a lui 2: | + | * 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] ). |
- | * $math[T(n) = \displaystyle\sum_{i=1}^{log_2n} T(\frac{n}{2^i}) + n] | + | |
- | * IV. (//2p//) Determinati $math[f(n)] astfel incat $math[T(n) = \theta(f(n))]: | + | * 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. |
- | * $math[T(n) = \sqrt{n}T(\sqrt{n}) + 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! | ||
- | * V. (//3p//) Analizati complexitatea urmatorului algoritm, | + | * VI. (//2p//) Analizati complexitatea urmatorului algoritm: |
- | <code cpp> | + | <code java> |
- | s = 0; | + | private static Integer recursiveMethod(Integer length) { |
- | for(i = 0; i < pow(2,n) ; i++) { | + | if (length > 0) { |
- | for(j = i; j > 0; j = f(i, j)) { | + | Integer index = random(length - 1); |
- | s++; | + | return recursiveMethod(index) + recursiveMethod(length - 1 - index); |
+ | } else { | ||
+ | return 1; | ||
+ | } | ||
} | } | ||
- | } | ||
</code> | </code> | ||
- | | ||
- | avand in vedere ca operatiiile aritmetice si operatiile pe biti (&) se realizeaza in timp constant, iar $math[pow(2,n) = 2^n], pentru cazul in care : | ||
- | - <code> f(i,j) = (j-1) & j </code> | ||
- | - <code> f(i,j) = (j-1) & i </code> | ||
+ | ''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 === | + | === PRECIZARI: === |
* Tema va fi redactata individual. | * Tema va fi redactata individual. | ||
- | * Tema va fi predata la cursul din data de **23 noiembrie 2018**. | + | * Tema va fi predata la cursul din data de **<color #ed1c24>6.12.2019</color>** . |
* Tema valoreaza **1** punct din nota finala. | * Tema valoreaza **1** punct din nota finala. | ||