Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
e
Analisi asintotica
26 febbraio 2019
• Aggiungere qualche slides dell’anno scorso
numero 2 e 3
Obiettivi del corso
Abbiamo bisogno di algoritmi ogni qual volta vogliamo scrivere un
programma.
max = a1 max a1
For i = 2 to n for i = 2 to n {
If (ai > max) then if (ai > max)
max = ai max ai
Endif }
Endfor
T(n)
T2(n)
Tk(n)
If then else
Ttest(n)
T(n) ≤ Ttest(n) + max {Tif(n), Telse(n)}
Tif(n) Telse(n)
Ciclo for
Ti(n)
Ttest(n)
g(n)
volte T(n) = Ti(n) + Ttest(n)+ g(n) (Ttest(n) + Tc(n) + Tr(n))
Tc(n)
Tr(n)
Regole per il calcolo di T(n) (caso non ricorsivo)
Linea 1: 1 assegnamento = c1
Linee 3 – 5 (una esecuzione): 1 confronto + 1 assegnamento eventualmente ≤ c2 + c1
Linea 2 - 6: 1 assegnamento + (n-1) incremento + n confronti + (n-1) if ≤
≤ c1 + (n-1) c3 + n c2 + (n-1) (c2 + c1)
T(n) ≤ 2 c1 + (n-1) c3 + n c2 +(n-1) (c2 + c1) = (c3 + 2c2 + c1) n + (c1 - c3 - c2)
Approssimativamente….
Funzioni standard
Confronteremo la crescita della funzione T(n) con alcune funzioni
standard.
Fra le funzioni non decrescenti T: N R+ ci interesseranno
principalmente le seguenti (e le loro combinazioni):
Le notazioni asintotiche: O, Ω, Θ
ci permetteranno il confronto tra funzioni, mantenendo queste
caratteristiche
Diremo per esempio che l’algoritmo per la ricerca del massimo ha un
tempo di esecuzione lineare, T(n) =O(n), essendo T(n) ≤ An + B
Vantaggi dell’analisi asintotica
• Indipendente da hardware
• Effettuabile con pseudocodice prima di
implementare l’algoritmo
• Considera infiniti input
33
Quando un algoritmo può essere considerato
efficiente?
Worst-Case Polynomial-Time
• Def. An algorithm is efficient if its running time is polynomial, i.e. upper bounded by a
polynomial function (e.g. T(n) ≤ A n3 + B n + C)
• Exceptions.
– Some poly-time algorithms do have high constants and/or exponents, and are useless in practice.
– Some exponential-time (or worse) algorithms are widely used because the worst-case instances
seem to be rare.
35
Why It Matters
36
Confronto efficienza
n logn vs 2n