analisi asintotica e metodi di analisi algoritmi e strutture dati
TRANSCRIPT
Analisi asintotica e Metodi di analisi
Algoritmi e Strutture Dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl2
• f(n) = tempo di esecuzione / occupazione di memoria di un algoritmo su input di dimensione n
• La notazione asintotica è un’astrazione utile per descrivere l’ordine di grandezza di f(n) ignorando i dettagli non influenti, come costanti moltiplicative e termini di ordine inferiore
Notazione asintotica
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl3
f(n) = O( g(n) ) se due costanti c>0 e n0≥0 tali che f(n) ≤ c g(n) per ogni n ≥ n0
Notazione asintotica O
cg(n)
f(n)
n0 n
f(n) = ( g(n) )
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl4
Notare:
ngOnf 0ngnf
limn
0ngnf
lim ngOnf n
esiste) (se ngnf
lim ngOnf n
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl5
f(n) = ( g(n) ) se due costanti c>0 e n0≥0 tali che f(n) ≥ c g(n) per ogni n ≥ n0
Notazione asintotica
n0 n
f(n) = ( g(n) )f(n)
c g(n)
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl6
Notare:
ngnf ngnf
limn
ngnf
lim ngnf n
0 esiste) (se ngnf
lim ngnf n
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl7
f(n) = ( g(n) ) se tre costanti c1,c2>0 e n0≥0 tali che c1 g(n) ≤ f(n) ≤ c2 g(n) per ogni n ≥ n0
Notazione asintotica
n0 n
f(n) = ( g(n) )f(n)
c1 g(n)
c2 g(n)
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl8
Notare che:
ngOnf g(n) nf
ngΘnf g(n)O nf
ngnf g(n) nf
ngnf g(n) nf
ngOnf e ngΩnf g(n) nf
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl9
Notazione o
Data una funzione g(n): N R, si denota con o(g(n)) l’ insieme delle funzioni f(n): N R:
o(g(n)) = {f(n) : c > 0, n0 tale che n n0 0 f(n) c g(n) }
Notare:
0ngnf
lim ngonf n
ngO ngo
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl10
Notazione
Data una funzione g(n): N R, si denota con (g(n)) l’ insieme delle funzioni f(n):
(g(n)) = {f(n) : c > 0, n0 tale che n n0 0 c g(n) f(n) }
Notare:
ngnf
lim ngnf n
ng ng
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl11
Riassumendo ……
menteasintotica cngnf
c0 ngΘnf 21
menteasintotica ngnf
c0 ngnf 1
menteasintotica cngnf
0 ngOnf 2
0 ngnf
lim ngonf n
ngnf
lim ngnf n
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl12
Se T(n) = ad nd + ad-1 nd-1 + … + a0 è un polinomio di grado d (con ad>0), allora T(n) = (nd)
Infatti:
T(n) / nd = ad + ad-1 n-1 + … + a0 n-d n0 : n n0 ad - |ad-1|n-1 - … - |a0| n-d > 0
Se scegliamo:
c1 = ad - |ad-1| n0-1 - … - |a0 | n0
-d
c2 = ad + |ad-1| + … + |a0| n n0 c1 nd T(n) c2 nd
Esempio:
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl13
Logaritmi ……
Esponenziali ……
Polinomi ……
Fattoriali ……
P(n) = ad nd + ad-1 nd-1 + … + a0
ad > 0
f(n) = an
a >1
P(n) = (nd)P(n) = O(nd)P(n) = (nd)
an = (nd)an = (nd)
f(n) = logb(n) b>1
1,,0 dc
d
cb
n nnlog
lim
logb(n) = o(nd)logb(n) = O(nd)
f(n) = n! = n*(n-1)*……*2*1 n! = o(nn) n! = (an)
d
n
n na
lim
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl14
Proprietà della notazione asintotica
Transitività
Riflessività
Simmetria
Simmetria trasposta
nhnf nhng e ngnf nhOnf nhOng e ngOnf nhnf nhng e ngnf
nhnf nhng e ngnf ooo
nhnf nhng e ngnf
nfnf
nfΟnf nfnf
nfng ngnf
nfng ngOnf
nfng ngonf
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl15
Sia f(n)=3n2+10– f(n)=O(n2): basta scegliere c=4 e n0=4
• Infatti, 3n2+10 ≤ 4n2 per ogni n≥4
– f(n)=(n2): scegliere c=1 e n0=0• Infatti, 3n2+10 ≥ 1n2 per ogni n≥0
═> f(n)=(n2): infatti f(n)= (g(n)) se e solo se f(n)= (g(n)) e f(n)= (g(n))
– f(n)=O(n3) basta scegliere c=1 e n0=4• Infatti, 3n2+10 ≤ 1n3 per ogni n≥4
…ma f(n) ≠ (n3)
Notazione asintotica: esempi
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl16
Metodi di analisi
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl17
• Misureremo le risorse di calcolo usate da un algoritmo ( tempo di esecuzione / occupazione di memoria ) in funzione della dimensione n delle istanze
• Istanze diverse, a parità di dimensione, potrebbero però richiedere risorse diverse
• Distinguiamo quindi ulteriormente tra analisi nel caso peggiore, migliore e medio
Caso peggiore, migliore e medio
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl18
• Sia tempo(I) il tempo di esecuzione di un algoritmo sull’istanza I
Tworst(n) = max istanze I di dimensione n {tempo(I)}
• Intuitivamente, Tworst(n) è il tempo di esecuzione sulle istanze di ingresso che comportano più lavoro per l’algoritmo
Caso peggiore
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl19
• Sia tempo(I) il tempo di esecuzione di un algoritmo sull’istanza I
Tbest(n) = min istanze I di dimensione n {tempo(I)}
• Intuitivamente, Tbest(n) è il tempo di esecuzione sulle istanze di ingresso che comportano meno lavoro per l’algoritmo
Caso migliore
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl20
• Sia P(I) la probabilità di occorrenza del-l’istanza I
Tavg(n) = ∑ istanze I di dimensione n {P(I) tempo(I) }
• Intuitivamente, Tavg(n) è il tempo di esecuzione nel caso medio, ovvero sulle istanze di ingresso “tipiche” per il problema
• Richiede di conoscere una distribuzione di probabilità sulle istanze
Caso medio
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati
Copyright © 2004 - The McGraw - Hill Companies, srl21
Approfondimento
Sia dato un mazzo di n carte scelte in un universo U di 2n carte, e si supponga di dover verificare se una certa carta x in U appartenga o meno al mazzo. Qual è il costo di tale verifica (in termine di numero di confronti) nel caso migliore, peggiore e medio?