...

Algoritmi e Strutture Dati - Dipartimento di Matematica

by user

on
Category: Documents
10

views

Report

Comments

Transcript

Algoritmi e Strutture Dati - Dipartimento di Matematica
Algoritmi e Strutture Dati
Capitolo 2
Modelli di calcolo e
metodologie di analisi
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Notazione asintotica
2
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
3
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
4
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)
5
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Notare:
limn 
fn 
 0
gn 

fn   Ogn 
fn   Ogn 

limn 
fn 
 0
gn 
fn   Ogn 

limn 
fn 
gn 
6
(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
7
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)
8
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Notare:
limn 
9
fn 
 
gn 

fn   Wgn 
fn   Wgn 

limn 
fn 
 
gn 
fn   Wgn 

limn 
fn 
gn 
(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
10
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)
11
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Notare che:
fn   Qg(n) 

fn   Ogn 
fn   Og(n) 

fn   Θgn 
fn   Qg(n) 

fn   Wgn 
fn   Wg(n) 

fn   Qgn 
fn   Qg(n) 
12
 fn   Ωgn  e fn   Ogn 
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:
ogn 
fn   ogn 
13


Ogn 
limn 
fn 
 0
gn 
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:
gn 
fn   gn 
14

Wgn 

limn 
fn 
 
gn 
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Riassumendo ……
fn   Θgn 

fn 
0  c1 
 c2  
gn 
fn   Ogn 

0
fn   Wgn 

0  c1 
asintotica mente
fn 
 c2  
gn 
asintotica mente
fn 
gn 

asintotica mente
fn   ogn 

limn 
fn 
0
gn 
fn   gn 

limn 
fn 

gn 
15
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
16
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
17
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à
fn   Qgn 
fn   Ogn 
fn   Wgn 
e
e
e
gn   Qhn 
gn   Ohn 
gn   Whn 



fn   Qhn 
fn   Ohn 
fn   Whn 
fn   ogn 
e
gn   ohn 

fn   ohn 
fn   gn 
e
gn   hn 

fn   hn 
Riflessività
fn   Qfn 
fn   Οfn 
fn   Wfn 
Simmetria
fn   Qgn 

Simmetria trasposta
gn   Qfn 
fn   Ogn 

gn   Wfn 
fn   ogn 

gn   fn 
18
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
• Qual è la dimensione dell’input nel problema del
calcolo dell’n-esimo numero di Fibonacci?
19
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
… osservazioni sul parametro n…
Tempo di
esecuzione
Occupazione di
memoria
fibonacci2
O(2n)
O(n)
fibonacci3
O(n)
O(n)
fibonacci4
O(n)
O(1)
fibonacci5
O(n)
O(1)
fibonacci6
O(log n)
O(log n)
dimensione dell’istanza I è |I|= log2 n= O(log n)
20
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Riepilogo
Tempo di
esecuzione
fibonacci2
O(22 )
O(2|I|)
fibonacci3
O(2|I|)
O(2|I|)
fibonacci4
O(2|I|)
O(1)
fibonacci5
O(2|I|)
O(1)
fibonacci6
21
|I|
Occupazione di
memoria
O(|I|)
O(|I|)
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Delimitazioni
inferiori e superiori
22
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(f(n)) su istanze di
dimensione n e rispetto ad una certa risorsa di calcolo, se la
quantità r di risorsa sufficiente per eseguire A su una qualunque
istanza di dimensione n verifica la relazione r(n)=O(f(n))
Definizione
Un problema P ha una complessità O(f(n)) rispetto ad una
risorsa di calcolo se esiste un algoritmo che risolve P il cui
costo di esecuzione rispetto quella risorsa è O(f(n))
23
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(f(n)) su istanze di
dimensione n e rispetto ad una certa risorsa di calcolo, se la
massima quantità r di risorsa sufficiente per eseguire A su
Istanze di dimensione n verifica la relazione r(n)= W(f(n))
Definizione
Un problema P ha una complessità W(f(n)) rispetto ad una
risorsa di calcolo se ogni algoritmo che risolve P ha
costo di esecuzione W(f(n)) rispetto quella risorsa
24
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(f(n)) rispetto ad
una risorsa di calcolo, un algoritmo che risolve P è ottimo
se ha costo di esecuzione O(f(n)) rispetto quella risorsa
25
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Metodi di analisi
26
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
27
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
28
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
29
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
30
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Esempio 1
Ricerca di un elemento x in una lista L non
ordinata
31
Tbest(n) = 1
Tworst(n) = n
x è in prima posizione
xL oppure è in ultima posizione
Tavg(n) = (n+1)/2
assumendo che le istanze siano
equidistribuite (x  L)
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Esempio 2 (1/2)
Ricerca di un elemento x in un array L ordinato
Confronta x con l’elemento centrale di L e
prosegue nella metà sinistra o destra in base
all’esito del confronto
32
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Esempio 2 (2/2)
Tbest(n) = 1
l’elemento centrale è uguale a x
Tworst(n) = log n
xL oppure viene trovato
all’ultimo confronto
Poiché la dimensione del sotto-array su cui
si procede si dimezza dopo ogni confronto,
dopo l’i-esimo confronto il sottoarray di
interesse ha dimensione n/2i
Risulta n/2i = 1 per i=log2n
Tavg(n) = log n -1+1/n assumendo che le istanze siano
equidistribuite
33
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Analisi di algoritmi ricorsivi
34
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Esempio
L’algoritmo di ricerca binaria può essere riscritto
ricorsivamente come:
Come analizzarlo?
35
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Equazioni di ricorrenza
Il tempo di esecuzione può essere descritto tramite
una equazione di ricorrenza:
T(n) =
c + T(n-1/2) se n>1
1
se n=1
Vari metodi per risolvere equazioni di ricorrenza:
iterazione, sostituzione, teorema Master...
36
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Metodo dell’iterazione
Idea: “srotolare” la ricorsione, ottenendo una
sommatoria dipendente solo dalla dimensione
n del problema iniziale
Esempio: T(n) = c + T(n/2)
T(n/2) = c + T(n/4)
...
T(n) = c + T(n/2) = 2c + T(n/4) =
= ( ∑j=1...i c) + T(n/2i) = i c + T(n/2i)
Per i=log2n: T(n) = c log n + T(1) = O(log n)
37
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Metodo della sostituzione
Idea: “indovinare” una soluzione, ed usare
induzione matematica per provare che la
soluzione dell’equazione di ricorrenza è
effettivamente quella intuita
Esempio: T(n) = n + T(n/2), T(1)=1
Assumiamo che la soluzione sia T(n)≤ c n per
una costante c opportuna
Passo base: T(1)=1≤ c1 per ogni c
Passo induttivo: T(n)= n + T(n/2) ≤ n+c (n/2) = (c/2+1)n
Quindi T(n) ≤ c n per c≥2
38
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Teorema Master
Permette di analizzare algoritmi basati sulla tecnica del
divide et impera:
- dividi il problema (di dimensione n) in a sottoproblemi
di dimensione n/b
- risolvi i sottoproblemi ricorsivamente
- ricombina le soluzioni
Sia f(n) il tempo per dividere e ricombinare istanze di
dimensione n. La relazione di ricorrenza è data da:
T(n) =
39
a T(n/b) + f(n) se n>1
1
se n=1
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Algoritmo fibonacci6
a=1, b=2, f(n)=O(1)
40
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Teorema Master
La relazione di ricorrenza:
T(n) =
a T(n/b) + f(n) se n>1
1
se n=1
ha soluzione:
1. T(n) = Q(n logba ) se f(n)=O(n logba- e ) per e>0
2. T(n) = Q(n logba log n) se f(n) = Q(n logba )
3. T(n) = Q(f(n)) se f(n)=W(n logba+ e) per e>0 e
a f(n/b)≤ c f(n) per c<1 e n sufficientemente grande
41
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Esempi
1) T(n) = n + 2T(n/2)
a=2, b=2, f(n)=n=Q(n log22 )
(caso 2 del teorema master)
T(n)=Q(n log n)
2) T(n) = c + 3T(n/9)
a=3, b=9, f(n)=c=(n log93 - e )
(caso 1 del teorema master)
T(n)=Q(√n)
3) T(n) = n + 3T(n/9)
a=3, b=9, f(n)=n=W(n log93 + e)
3(n/9)≤ c n per c=1/3
(caso 3 del teorema master)
42
T(n)=Q(n)
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Esempi
4) T(n) = n log n + 2T(n/2)
a=2, b=2, f(n) =W(n log22 )
ma f(n)W(n log22+e), e > 0
43
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
…albero della ricorsione
• Proprietà 1: i sottoproblemi a livello i dell’albero della
ricorsione hanno dimensione n/bi
• Proprietà 2: il contributo al tempo di esecuzione di un
nodo a livello i (escluso tempo chiamate ricorsive) è
f(n/bi)
• Proprietà 3: il numero di livelli dell’albero è logb n
• Proprietà 4: il numero di nodi a livello i è ai
logb n
i f(n/bi)
T(n)=
a
i=0
44
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Riepilogo
• Esprimiamo la quantità di una certa risorsa di calcolo
(tempo, spazio) usata da un algoritmo in funzione della
dimensione n dell’istanza di ingresso
• La notazione asintotica permette di esprimere la quantità
di risorsa usata dall’algoritmo in modo sintetico,
ignorando dettagli non influenti
• A parità di dimensione n, la quantità di risorsa usata può
essere diversa, da cui la necessità di analizzare il caso
peggiore o, se possibile, il caso medio
• La quantità di risorsa usata da algoritmi ricorsivi può
essere espressa tramite relazioni di ricorrenza, risolvibili
tramite vari metodi generali
45
Copyright © 2004 - The McGraw - Hill Companies, srl
Fly UP