Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
asintotiche
Mercoledì 8 marzo 2023
• Punto della situazione
– Cos’è un algoritmo
– Tempo di esecuzione T(n)
– Analisi di algoritmi: analisi asintotica di T(n)
– Notazioni asintotiche O, Ω, Θ
–
• Argomento di oggi
– Notazioni asintotiche o, ω
• Motivazioni
– Confrontare tempi di esecuzione di algoritmi fra
loro o con funzioni standard (lineare, polinomiale,
esponenziale…)
Notazioni asintotiche
Nell’analisi asintotica analizziamo T(n)
1. A meno di costanti moltiplicative (perché non quantificabili)
2. Asintoticamente (per considerare input di taglia arbitrariamente
grande, quindi in numero infinito)
Le notazioni asintotiche:
O, Ω, Θ, o, ω
ci permetteranno il confronto tra funzioni, mantenendo queste
caratteristiche.
Nota: se T(n) = (f(n)), esistono c1, c2, n0, t.c. c1f(n) ≤ T(n) ≤ c2f(n)
per ogni n ≥ n0 .
Esistono quindi dei valori di c per cui T(n) ≥ c f(n) e dei valori di c per
cui T(n) ≤ cf(n) (per opportuni valori di n)
Notazione «o piccolo»
Per indicare che f(n)=O(g(n)) ma f(n) ≠ Θ (g(n)) si scrive:
f(n)=o(g(n)) (o «piccolo»)
Equivale a dire che:
per ogni costante c > 0, esiste nc ≥0, tale che
f(n) ≤ cg(n) per ogni n ≥ nc
Esempio 1: n = o(n2)
Esempio 2: 2n+1=o(n) ?
Dimostro che: 2n+1=O(n).
2n+1 ≤ 2n+n=3n quindi 2n+1 ≤ c (n) é vera con c=3, n0=1.
Ma 2n+1 ≤ c (n) non é vera per ogni valore di c:
per c=1, 2, non esistono valori di n0 opportuni.
Infatti 2n+1= Θ (n)
Notazione «omega piccolo»
Notazione duale di «o piccolo»:
f(n) = ω (g(n))
(ovvero f(n)=o(g(n)) )
(ovvero g(n)=o(f(n)))
Esempio
Sia f(n)=log n e g(n)=n2
Da cui log n = o( n2 )
Esempio
In generale, sia f(n)=log n e g(n)=nd con d reale
diverso da 0.
Da cui log n = o( nd )
Notation
• Slight abuse of notation. T(n) = O(f(n)).
– Asymmetric:
• f(n) = 5n3; g(n) = 3n2
• f(n) = O(n3) = g(n) Mettendo in
• but f(n) g(n). evidenza che c’è
– Better notation: T(n) O(f(n)). una classe di
funzioni O(f(n)).
22
Analisi di T(n)
Analizzare il tempo di esecuzione T(n) di un algoritmo
significherà dimostrare che:
oppure
(nel caso in cui il caso peggiore sia diverso dal caso migliore).
Limitazioni più utilizzate
Scaletta:
Man mano che si scende
troviamo funzioni che crescono
più velocemente (in senso stretto):
conta il grado
• 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).
• etc etc…..
Due regole fondamentali
Da dimostrare in seguito …
Nel determinare l’ordine di crescita asintotica di una funzione
ATTENZIONE!
Le regole NON servono però per determinare esplicitamente le
costanti c ed n0.
Applicazioni
Le due regole (se vere) ci dicono che:
3n + log10 n = (n)
log2 n+ 234 n3 + 100 = ( n3 )
3 2n + 3n = (2n)
etc etc…..
Per stabilire la crescita di una funzione
Basterà usare:
• La «scaletta»
• Le proprietà di additività e transitività
• Le due regole fondamentali
Esercizio 1
Esercizio 1bis
Dimostrare che
3n5 − 16n+ 2 = (n5)
per definizione, cioè mostrando dei possibili
valori per le costanti c ed n0.
Esercizio 2