Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie di analisi Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Modello di calcolo • Per valutare la complessità di un algoritmo, bisogna prima di tutto stabilire un modello di calcolo di riferimento su cui esso viene eseguito • Macchina a registri (RAM: random access machine) – un programma finito – un nastro di ingresso e uno di uscita – una memoria strutturata come un array • ogni cella può contenere un qualunque valore intero/reale – un registro detto accumulatore (contiene operandi istruzione corrente) – un registro detto contatore delle istruzioni (contiene indirizzo istruzione successiva) • la RAM è un’astrazione dell’architettura di von Neumann 2 Copyright © 2004 - The McGraw - Hill Companies, srl Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Criterio di costo uniforme • Complessità temporale misurata come numero di passi elementari eseguiti • Passi elementari sulla RAM: – istruzione ingresso/uscita (lettura o stampa) – operazione aritmetico/logica – accesso/modifica del contenuto della memoria • Complessità spaziale misurata come numero massimo di celle di memoria della RAM occupate durante l’esecuzione • Complessità temporale e spaziale espresse in notazione asintotica 3 Copyright © 2004 - The McGraw - Hill Companies, srl Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Notazione asintotica 4 Copyright © 2004 - The McGraw - Hill Companies, srl 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 5 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 6 n Copyright © 2004 - The McGraw - Hill Companies, srl Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Esempi: Sia f(n) = 2n2 + 3n, allora • f(n)=O(n3) (c=1, n0=3) • f(n)=O(n2) (c=3, n0=3) • f(n) O(n) 7 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 8 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 9 n Copyright © 2004 - The McGraw - Hill Companies, srl Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Esempi: Sia f(n) = 2n2 – 3n, allora • f(n)= W(n) (c=1, n0=2) • f(n)=W(n2) (c=1, n0=3) • f(n) W(n3) 10 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 11 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 12 n Copyright © 2004 - The McGraw - Hill Companies, srl Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Esempi: Sia f(n) = 2n2 – 3n, allora • f(n)= Q(n2) (c1=1, c2=2, n0=3) • f(n) Q(n) • f(n) Q(n3) 13 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) 14 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 15 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 16 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 17 Copyright © 2004 - The McGraw - Hill Companies, srl Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Esempio: Se f(n) = ad nd + ad-1 nd-1 + … + a0 è un polinomio di grado d (con ad>0), allora f(n) = Q(nd) Infatti: f(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 f(n) c2 nd 18 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 19 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 20 Copyright © 2004 - The McGraw - Hill Companies, srl Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Metodi di analisi 21 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 delle istanze • Istanze diverse, a parità di dimensione, potrebbero però richiedere risorse diverse • Distinguiamo quindi ulteriormente tra analisi nel caso peggiore, migliore e medio 22 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 • Definizione analoga può essere data per lo spazio 23 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 24 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 25 Copyright © 2004 - The McGraw - Hill Companies, srl Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Delimitazioni inferiori e superiori 26 Copyright © 2004 - The McGraw - Hill Companies, srl Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Delimitazioni superiori (upper bound) Definizione Un algoritmo A ha costo di esecuzione O(g(n)) su istanze di dimensione n e rispetto ad una certa risorsa di calcolo, se la quantità f(n) di risorsa sufficiente per eseguire A nel caso peggiore (e quindi sufficiente per una qualunque istanza di dimensione n) verifica la relazione f(n)=O(g(n)) Definizione Un problema P ha una complessità O(g(n)) rispetto ad una certa risorsa di calcolo se esiste un algoritmo che risolve P il cui costo di esecuzione rispetto a quella risorsa è O(g(n)) 27 Copyright © 2004 - The McGraw - Hill Companies, srl Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Delimitazioni inferiori (lower bound) Definizione Un algoritmo A ha costo di esecuzione W(g(n)) su istanze di dimensione n e rispetto ad una certa risorsa di calcolo, se la quantità f(n) di risorsa necessaria per eseguire A nel caso peggiore (e quindi non è detto che debba essere necessaria per ogni istanza di dimensione n: istanze facili potrebbero richiedere meno risorse!) verifica la relazione f(n)= W(g(n)) Definizione Un problema P ha una complessità W(g(n)) rispetto ad una certa risorsa di calcolo se ogni algoritmo che risolve P ha costo di esecuzione W(g(n)) rispetto a quella risorsa 28 Copyright © 2004 - The McGraw - Hill Companies, srl Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Ottimalità di un algoritmo Definizione Dato un problema P con complessità W(g(n)) rispetto ad una certa risorsa di calcolo, un algoritmo che risolve P è ottimo se ha costo di esecuzione O(g(n)) rispetto a quella risorsa 29 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? 30 Copyright © 2004 - The McGraw - Hill Companies, srl