Algoritmi e Strutture Dati Analisi asintotica e Metodi di analisi Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Notazione asintotica • 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 2 Copyright © 2004 - The McGraw - Hill Companies, srl Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Notazione asintotica O f(n) = O( g(n) ) se due costanti c>0 e n0≥0 tali che f(n) ≤ c g(n) per ogni n ≥ n0 f(n) = ( g(n) ) cg(n) f(n) n0 3 n Copyright © 2004 - The McGraw - Hill Companies, srl Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Notare: limn fn 0 gn fn Ogn fn Ogn limn 4 fn Ogn limn fn gn fn 0 gn (se esiste) Copyright © 2004 - The McGraw - Hill Companies, srl Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Notazione asintotica W f(n) = W( g(n) ) se due costanti c>0 e n0≥0 tali che f(n) ≥ c g(n) per ogni n ≥ n0 f(n) = W(g(n)) f(n) c g(n) n0 5 n Copyright © 2004 - The McGraw - Hill Companies, srl Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Notare: limn fn gn fn Wgn fn Wgn 6 fn Wgn limn limn fn gn fn gn (se esiste) 0 Copyright © 2004 - The McGraw - Hill Companies, srl Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Notazione asintotica Q f(n) = Q( 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 f(n) = Q(g(n)) c2 g(n) f(n) c1 g(n) n0 7 n Copyright © 2004 - The McGraw - Hill Companies, srl Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Notare che: fn Qg(n) fn Ogn fn Og(n) fn Θgn fn Qg(n) fn Wgn fn Wg(n) fn Qgn fn Qg(n) 8 fn Ωgn e fn Ogn Copyright © 2004 - The McGraw - Hill Companies, srl Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano 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: ogn fn ogn 9 Ogn limn fn 0 gn Copyright © 2004 - The McGraw - Hill Companies, srl Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano 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: gn fn gn 10 Wgn limn fn gn Copyright © 2004 - The McGraw - Hill Companies, srl Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Riassumendo …… fn Θgn fn 0 c1 c2 gn fn Ogn 0 fn Wgn 0 c1 asintotica mente fn c2 gn asintotica mente fn gn asintotica mente fn ogn limn fn 0 gn fn gn limn fn gn 11 Copyright © 2004 - The McGraw - Hill Companies, srl Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Esempio: Se T(n) = ad nd + ad-1 nd-1 + … + a0 è un polinomio di grado d (con ad>0), allora T(n) = Q(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 12 Copyright © 2004 - The McGraw - Hill Companies, srl Polinomi …… Algoritmi e strutture dati nd Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano P(n) = ad + ad-1 ad > 0 Esponenziali …… nd-1 + … + a0 f(n) = an a >1 an limn d n Logaritmi …… f(n) = logb(n) b>1 limn Fattoriali …… logb n c nd f(n) = n! = n*(n-1)*……*2*1 13 P(n) = Q(nd) P(n) = O(nd) P(n) = W(nd) an = (nd) an = W(nd) logb(n) = o(nd) logb(n) = O(nd) 0, c, d 1 n! = o(nn) n! = (an) Copyright © 2004 - The McGraw - Hill Companies, srl Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Proprietà della notazione asintotica Transitività fn Qgn fn Ogn fn Wgn e e e gn Qhn gn Ohn gn Whn fn Qhn fn Ohn fn Whn fn ogn e gn ohn fn ohn fn gn e gn hn fn hn Riflessività fn Qfn fn Οfn fn Wfn Simmetria fn Qgn Simmetria trasposta gn Qfn fn Ogn gn Wfn fn ogn gn fn 14 Copyright © 2004 - The McGraw - Hill Companies, srl Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Notazione asintotica: esempi 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)=W(n2): scegliere c=1 e n0=0 • Infatti, 3n2+10 ≥ 1n2 per ogni n≥0 ═> f(n)=Q(n2): infatti f(n)= Q(g(n)) se e solo se f(n)= (g(n)) e f(n)= W(g(n)) – f(n)=O(n3) basta scegliere c=1 e n0=4 • Infatti, 3n2+10 ≤ 1n3 per ogni n≥4 …ma f(n)≠Q(n3) 15 Copyright © 2004 - The McGraw - Hill Companies, srl Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Metodi di analisi 16 Copyright © 2004 - The McGraw - Hill Companies, srl Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Caso peggiore, migliore e medio • 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 17 Copyright © 2004 - The McGraw - Hill Companies, srl Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Caso peggiore • 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 18 Copyright © 2004 - The McGraw - Hill Companies, srl Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Caso migliore • 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 19 Copyright © 2004 - The McGraw - Hill Companies, srl Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Caso medio • Sia P(I) la probabilità di occorrenza dell’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 20 Copyright © 2004 - The McGraw - Hill Companies, srl Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano 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? 21 Copyright © 2004 - The McGraw - Hill Companies, srl