Moltiplicazione di interi e relazioni di ricorrenza

Moltiplicazione di interi e
relazioni di ricorrenza
Punto della situazione
• Per analizzare il tempo di esecuzione di un algoritmo,
dobbiamo distinguere il caso degli algoritmi ricorsivi (che sono
tanti, per esempio tutti gli algoritmi basati sul paradigma
divide-et-impera)
• L’analisi di un algoritmo ricorsivo ci porta a dover risolvere una
relazione di ricorrenza per T(n) ( o S(n)).
• Dobbiamo imparare come risolverle.
• Esistono vari metodi (di cui abbiamo visto un primo esempio):
– Unrolling
– Alberi di ricorsione
– Sostituzione (per induzione)
• Esiste poi il Master Theorem (che vedremo oggi)
Sommario
• L’esempio dell’algoritmo Divide-et-Impera per
la moltiplicazione di matrici
• Vari esempi di analisi di algoritmi ricorsivi
• Master Theorem (senza dimostrazione e
facoltativo)
Analisi algoritmi ricorsivi
Si usano le stesse regole, tranne che il tempo per le
chiamate ricorsive, non conoscendolo esplicitamente,
lo lasceremo indicato T(…).
Otterremo così una relazione di ricorrenza per T(n), da
risolvere in risolvere in seguito, con i metodi che stiamo
studiando.
Altri esempi di analisi
di algoritmi ricorsivi
Non ci interessa cosa calcoli ma quanto tempo impiega
Supponiamo che il tempo per eseguire qualcosa sia c
n-1 do
n-1
c(n-1) altrimenti
Nota: visto per MergeSort con a = c = 2
Master Theorem
facoltativo
Applicazioni del Master Theorem
Confrontare f(n) con nlogba: qual è «più grande»?
Il più grande (asintoticamente e polinomialmente) vince!
Esempio 1: T(n)= 2 T(n/2)+ log n:
a = b = 2, f(n)= log n vs nlogba = nlog22 = n1
f(n)=O(n 1-ε ) per ε=1/2, quindi T(n)= Θ(n)
Esempio 2: T(n)= 2 T(n/2)+ n:
a=b=2, f(n)= n vs nlogba= nlog22= n1
f(n)= Θ(n ), quindi T(n)= Θ(n log n)
Esempio 3: T(n)= 2 T(n/2)+ n3:
a=b=2, f(n)= n3 vs nlogba= nlog22= n1
f(n)= Ω(n 1+ε ) e inoltre 2(n/2) 3≤ cn 3 per c= 2>1
quindi T(n)= Θ(n3)
Da ricordare: serie geometrica