 |
panzone |
.primate.
Registered: Sep 2010
Posts: 63 (0.01 al dì)
Location: Vigevano
Corso: Informatica
Anno: 2
Time Online: 16:10:18 [...]
Status: Offline
Edit | Report | IP: Logged |
Un' equazione generatrice del tipo:
T(n) = a T(n/b) + xn^c
può essere asintotica a:
T(n) = Teta(n^c) se a< b^c
T(n) = Teta( n^ c log n ) se a = b^c
T(n) = Teta( n^ log base b di a ) se a > b^c
Ovvero, messa giù in termini umani: visto che l' equazione di ricorrenza sopra rappresenta un generico calcolo del tempo di una procedura dividi et impera, questo valore è asintotico a quale tra la fase di suddivisione del problema ( aT(n/b) ) e la fase di ricostruzione del risultato ( xn^c ) è dominante. L' esempio perfetto è mergesort. Difatti:
T(n) = 2T(n/2) + n-1
n-1 è asintotico ad n, ergo posso vederla come
T(n) = 2T(n/2) + n
Intuitivamente, dividere il problema in due parti uguali ( T(n/2) ) e calcolare le singole parti ha un costo uguale ad n, ovvero la fase di ricostruzione. Ergo la fase di suddivisione e di riunione del problema son di stessa dimensione ergo è il caso centrale, ovvero Teta(n log n ). Ma se vogliamo fare le cose bene:
a= 2 b=2 c=1
ergo 2=2^1 ergo vale Teta(n^1 log n).
La dimostrazione passa per il calcolo della funzione generatrice.
|