Il teorema principale delle equazioni ricorrenti, o teorema dell’esperto, fornisce un metodo per determinare la complessità temporale di una famiglia di equazioni di ricorrenza nella forma

Avendo una funzione ricorsiva , la possiamo confrontare con e possono verificarsi solo 3 casi (se esiste almeno una costante e ):

  • è fortemente dominata:
  • è asintoticamente uguale:
  • domina fortemente

N.B.: Il master theorem non si può applicare se c’è un nell’equazione, oppure quando la funzione non domina o non è dominata fortemente da .

Per il caso si deve verificare questa condizionema in realtà si verifica sempre, a meno che non ci siano in gioco funzioni trigonometriche.

Esempio di applicazione con la ricerca binaria

Calcoliamo la funzione per confrontare : Il risultato è 1, significa che e sono asintoticamente uguali, quindi siamo nel caso del teorema:

Il teorema principale delle equazioni ricorrenti, o teorema dell’esperto, fornisce un metodo per determinare la complessità temporale di una famiglia di equazioni di ricorrenza nella forma

Avendo una funzione ricorsiva , la possiamo confrontare con e possono verificarsi solo 3 casi (data una qualsiasi costante ):

  • è fortemente dominata:
  • è asintoticamente uguale:
  • domina fortemente

N.B.: Il master theorem non si può applicare se c’è un nell’equazione, oppure quando la funzione non domina o non è dominata fortemente da .

Per il caso si deve verificare questa condizionema in realtà si verifica sempre, a meno che non ci siano in gioco funzioni trigonometriche.

Esempio di applicazione con la ricerca binaria

\begin{cases} \Theta(1) & n=1\\ T\left(\frac{n}{2}\right) + \Theta(1) & \text{altrimenti} \end{cases}$$ - $a = 1$ - $b=2$ Calcoliamo la funzione per confrontare $f(n)$: $$n^{\log_{b}{a}}=n^{log_{2}{1}}=1$$ Il risultato è 1, significa che $f(n)$ e $n^{log_{b}{a}}$ sono asintoticamente uguali, quindi siamo nel caso $\Theta$ del teorema: $$f(n) = \Omega(1) \to T(n) = \Theta(n^{\log_{b}{a}} \cdot \log{n}) = \Theta(\log{n})$$ ### esempio di applicazione con un programma ``` python def es(n): if n <= 2: return 7 x = 5 * es(n//2) while n >= 1: n = n//2 x += 3 return x ``` $$T(n) = \begin{cases} \Theta(1) & n \leq 2\\ T\left(\frac{n}{2}\right) + \Theta(\log{n}) & \text{altrimenti} \end{cases}$$ - $a=1$ - $b=2$ Calcoliamo la funzione per confrontare $f(n)$: $$n^{\log_{b}{a}}=n^{log_{2}{1}}=n^{0+\varepsilon}$$ Il risultato è 1, significa che $f(n)$ e $n^{log_{b}{a}}$ sono asintoticamente uguali, quindi siamo nel caso $\Theta$ del teorema: $$f(n) = \Omega(1) \to T(n) = \Theta(n^{\log_{b}{a}} \cdot \log{n}) = \Theta(\log{n})$$