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):
    • $ T(n) = 4T(\frac{n}{2}) + n^{2.5}$
    • $ T(n) = 4T(\frac{n}{2}) + n^2 log(n)$
    • $ T(n) = T(\sqrt{n}) + \Theta(log( log( n)))$
    • $ T(n) = T(\frac{n}{2}) + n(2 - cos n)$
    • $ T(n) = 3T(\frac{n}{3}) + \frac{n}{log (n)}$
  • II. (0.75 x 2 = 1.5p) Determinati $ f(n)$ cat mai restrictiv astfel incat :
    • $ T(n) = \Theta(f(n))$ , unde a ≥ 1, c > 0 si $ T(n) = T(n - a) + T(a) + cn $
    • $ T(n) = O(f(n))$ , unde $ T(n) = T(n - 1) + T(\frac{n}{2}) + n$
  • III. (1.5p) Rezolvati urmatoarea recurenta:
    • $ 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: $ 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 Θ($ n^2$ ).
  • V.(2 x 0.75 = 1.5p) Spunem ca f(n) = $ {Ω}^{ꝏ}(g(n))$ daca ∃ un c ∈ $ {R}^{+}$ astfel incat f(n) ≥ c*g(n) ≥ 0 pentru o infinitate de numere n.
    1. Verificati daca Ω = $ {Ω}^{ꝏ}$ si $ {Ω}^{ꝏ}$ = Ω
    2. 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) = $ {Ω}^{ꝏ}$ (g(n)) sau ambele.
      Raspunsul este acelasi si daca inlocuim $ {Ω}^{ꝏ}$ 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.