Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
aa:lab:sol:10 [2023/12/17 21:43]
mihai.udubasa created
aa:lab:sol:10 [2025/12/15 15:04] (current)
dmihai
Line 1: Line 1:
-<note important>​ +{{:aa:lab:sol:sol.zip|}}
-Teorema Master se poate aplica pe recurente de forma: +
-$ T(n) = a * T(\frac n b) + f(n); a \ge 1; b > 1 $ +
-In functie de $ f(n) $ apar urmatoarele cazuri: +
-  - $ f(n) = \Theta(n^c) ; c < log_ba $                                  $ \Rightarrow T(n) = \Theta(n^{log_ba}) $  +
-  - $ f(n) = \Theta(n^c * log^kn); k >= 0; c = log_ba $      $ \Rightarrow T(n) = \Theta(n^{log_ba}*log^{k+1}n) $ +
-  - $ f(n) = \Theta(n^c);​ c > log_ba $                                   $ \Rightarrow T(n) = \Theta(f(n)) $    +
-</​note>​  +
- +
-1. +
- +
-  * $ T_1(n) = 4T_1(\frac n 4) + 1 $ +
-$ a = 4; b = 4; f(n) = 1; log_ba = log_44 = 1 $ \\ +
-Aceasta recurenta intra in cazul 1 al teoremei master, deci $ T_1(n) = \Theta(n^{log_ba}) = \Theta(n^{log_44}) = \Theta(n) $ +
-  * $ T_2(n) = 4T_2(\frac n 2) + n^2 $ +
-$ a = 4; b = 2; f(n) = n^2; log_ba = log_24 = 2 $ \\ +
-Aceasta recurenta intra in cazul 2 al teoremei master cu $ k = 0 $, deci $ T_2(n) = \Theta(n^{log_ba} * log^{k+1}n) = \Theta(n^2 log\ n)$ +
-  * $ T_3(n) = 8T_3(\frac n 2) + 2n^4 $ +
-$ a = 8; b = 2; f(n) = 2n^4; log_ba = log_28 = 3 $ \\ +
-Aceasta recurenta intra in cazul 3 al teoremei master, deci $ T_3(n) = \Theta(n^c) = \Theta(n^4)$ +
- +
- +
-2. +
- +
-Codul reprezinta un algoritm de cautare binara. La fiecare pas se apeleaza recursiv functia pe jumatate din array-ul curent pana se gaseste valoarea sau pana sea ajunge la un subarray de dimensiune 1. Cazul worst case este de cautare a unei valori care nu exista, caz in care se va merge pana la cazul de baza (n = 1). La fiecare apel recursiv se fac doar cateva verificari in timp constant (presupunem ca indexarea array-ului se face in timp constant). +
- +
-**Teorema Master**\\ +
-Relatia de recurenta e urmatoarea$ T(n) = T(\frac n 2) + \Theta(1) $ +
- +
-Aceasta recurenta face parte din cazul 2 al teoremei master ( $ log_ba = 0, f(n) = n^0 * log^0(n) $ ), deci $ T(n) = \Theta(n^0 * log^1n) = \Theta(log(n)) $ +
- +
-**Substitutie**\\ +
-Presupunem $ T(\frac n 2) = \Theta(log \frac n 2) $ si incercam sa demonstram ca $ T(n) = \Theta(log\ n) $ +
- +
-$ \exists c_1, c_2 > 0 $ astfel incat\\ +
-$ c_1 log \frac n 2 \le T(\frac n 2) \le c_2 log \frac n 2 $        $| +c$ \\ +
-$ c_1 log \frac n 2 + c \le T(\frac n 2) + c \le c_2 log \frac n 2 + c $        $| +c$ \\ +
-$ c + c_1 log\ n - c_1 log\ 2 \le T(n) \le c + c_2 log\ n - c_2 log\ 2$ \\ +
- +
-Alegem $ c, c_1, c_2 $ astfel incat $ c_1 log\ 2 =< c =< c_2 log\ 2 $, deci $ c - c_1 log\ 2 \ge 0 $ si $ c - c_2 log\ 2 \le 0 $ :\\ +
- +
-$ c_1 log\ n \le c + c_1 log\ n - c_1 log\ 2 \le T(n) \le c + c_2 log\ n - c_2 log\ 2 \le c_2 log\ n $  $ =>  T(n) = \Theta(log\ n) $ \\  +
- +
- +
-** Arbore **\\ +
-Nivelul 0 contine $ T(n) + c $ si are un singur nod fiuFiercare nivel urmator $ h $ contine $ T(\frac n {2^h}) + c $. $ h $ este de ordinul $ log\ n $. Deci recurenta se calculeaza ca $ \sum_{i=0}^{h-1}{c} + \#_{frunze} * T(1) = \sum_{0}^{log\ n}{c+ T(1) = \Theta(log\ n) $ +
- +