Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
di esecuzione di
algoritmi con le
notazioni
asintotiche
Giovedì 9 marzo 2023
• Cos’è un algoritmo
Punto della • Tempo di esecuzione T(n)
situazione •
•
Analisi di algoritmi: analisi asintotica di T(n)
Notazioni asintotiche
oppure
Scaletta:
Man mano che si scende
troviamo funzioni che crescono
più velocemente (in senso stretto):
Lo proveremo con
c=1 e n0=1, cioè
log2 n ≤ n, n≥1
Domanda
Per questo genere di esercizi:
a cosa serve la calcolatrice?
Suggerimento:
ricorda che f(n) = O(g(n)) significa f(n) c g(n) per ogni n ≥ n0
cioè per un numero infinito di valori di n.
• Additivity.
– If f = O(h) and g = O(h) then f + g = O(h).
– If f = (h) and g = (h) then f + g = (h).
– If f = (h) and g = (h) then f + g = (h).
ATTENZIONE!
Le regole NON servono però per determinare esplicitamente le
costanti c ed n0.
Tempo di esecuzione
Tempo di esecuzione T(n) è espresso rispetto al numero di
operazioni elementari/atomiche per eseguire l’algoritmo su un
input di taglia n
1 + 2 + 3 + … + (n-1) + n = ?
= 1 + 2 + 3 + … + (n-2) + (n-1) + n =
= (n+1) n/2 =
= ϴ(??)
Somma quadrati (sup)
12 + 22 + 32 + … + (n-1) 2 + n2 = ϴ(??)
12 + 22 + 32 + … + (n-1) 2 + n2 ≤
≤ n2 + n2 + n2 + … + n2 + n2 =
= ( n2) n = n3
12 + 22 + 32 + … + (n-1) 2 + n2 = O(n3 )
D: 12 + 22 + 32 + … + (n-1) 2 + n2 = Ω(n3 ) ?
Somma quadrati (inf)
12 + 22 + 32 + … + (n-1) 2 + n2 = σ𝑛𝑖=1 𝑖 2
12 + 22 + 32 + … + (n-1) 2 + n2 = Ω(n3 ) ?
12 + 22 + … + (n/2)2 + … + (n-1) 2 + n2 ≥
≥ (n/2)2 + … + (n-1) 2 + n2 ≥
≥ (n/2)2 + … + (n/2)2 + (n/2)2 =
= (n/2)2 n/2 =
= (n2/4) n/2 =
= 1/8 n3
12 + 22 + 32 + … + (n-1) 2 + n2 = Ω(n3 )
12 + 22 + 32 + … + (n-1) 2 + n2 = O(n3 )
12 + 22 + 32 + … + (n-1) 2 + n2 = ϴ(n3)
Numero di volte in cui eseguo x = x + 1 è
Numero di volte in cui eseguo x = x + 1 è
Esercizi (continua)
Più precisamente:
Fissato j, il test del while è eseguito un numero di volte fra 1 e j.
Da cui
𝑛
𝑛(𝑛+1) 1 1
T(n) ≤ 𝑗
𝑗=2
= 2
−1 = 𝑛2 + 𝑛 − 1
2 2
svolto
svolto
Confronto2
A. f(n) = o (g(n))
B. f(n) = ω (g(n))
C. f(n) = (g(n))
D. nessuna
Prima prova intercorso 2020
TEMPO ESECUZIONE
1) 1
Un algoritmo ha tempo di esecuzione T(n) polinomiale se:
A. T(n) = (nc) per una costante c>0 C. T(n) = O(nc) per una costante c>0
B. T(n) = (nc) per una costante c>0 D. Nessuna delle precedenti
2) 2
Qual è il tempo di esecuzione del seguente frammento di pseudocodice?
for i=1 to n/2 A. O(log n)
if i>10 then B. (n)
x=2x C. (n2)
return x D. Nessuna delle risposte precedenti
3) 3
Qual è il tempo di esecuzione del seguente frammento di pseudocodice?
for i=1 to logn A. O(log n)
for j=1 to logn B. O(n log n), ma non Ɵ (n log n)
x=i*j C. Ɵ (n2)
return x D. Nessuna delle risposte precedenti
Dal file in Materiale del corso
Dal file in Materiale del corso