Upload
biagino-cossu
View
223
Download
3
Embed Size (px)
Citation preview
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3
Complessità computazionale concreta
Corso di Informatica 2
a.a. 2003/04
Lezione 3
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3
Che cos’è la teoria della complessità?
La teoria della complessità è un tentativo di dare una risposta matematica a domande come:
• Cosa vuol dire che un algoritmo è più efficiente di un altro?
• In che senso un problema di calcolo è più difficile di un altro?
• Che cosa rende una funzione calcolabile “praticamente trattabile”?
• Esistono soluzioni ottimali per problemi di calcolo effettivamente risolvibili?
• Quali problemi si possono risolvere meglio parallelizzando?
ecc.
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3
Problemi e istanze
In generale un problema di calcolo è una funzione : Input Output ; un’ istanza del problema è un particolare x Input.
Es. Input = N , (x) = la scomposizione in primi di x
Se è a volori 0,1 allora si parla di problema di decisione.
REACHABILITY Dato un grafo finito orientato G = (V,E) e due vertici u, v V, decidere se esiste un cammino in G da u a v.
E’ un problema di decisione un’istanza del quale è una tripla G, u, v.
Es.
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3
Algoritmi
Un algoritmo è metodo dettagliato che consente di risolvere un problema di calcolo, ossia di calcolare i valori della funzione .
Es. Input (G =(V,E), u, v) // alg. per REACHABILITYS := {u}; M := {u};
while S dox := un elemento di S; S := S\{x};
foreach y V if (x,y) E then
M := M {y}; S := S {y}if v M Output 1 else Output 0
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3
Complessità dinamica
Si misura la quantità di risorsa richiesta da ciascuna esecuzione di un algoritmo. E’ dunque una funzione degli ingressi: fA : Input N
Es. SpaceA(x) = quantità di memoria usata da A in x
TimeA(x) = numero delle operazioni elementari eseguite da A in xE’ talvolta espressa in termini di una dimensione: | · | : Input N
Es. | n | = log2 (n+1) = lunghezza della rappresentazione binaria di n ( 0)
Input N N| · | gA
Complessità nel caso peggiore: gA(n) = max{fA(x) : |x| = n}
(che esiste se | n |-1 è finito oppure se fA è limitata su | n |-1, per ogni n).
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3
Confronto tra algoritmi
0
5000
10000
15000
20000
25000
0 10 20 30 40 50 60 70 80 90 100
TA (n) = 100 n
TB (n) = 2 n2
• L’algoritmo A è migliore dell’algoritmo B per n > 50;
• Rimpiazzare B con A è meglio che raddoppiare la velocità del computer:
02)1000(
)1000( 2
)100(
)100(
A
B
A
B
T
T
T
T
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3
Confronto asintotico tra funzioni
f g x. f(x) g(x)
dove x. P(x) z x z. P(x).
Oss. x. P(x) x. P(x)
x. P(x) x. P(x)
f
g
z
f
g
f g x. f(x) g(x)
dove x. P(x) z x z. P(x).
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3
La relazione è un preordine
f g non è tricotomica, essendovi funzioni inconfrontabili:
f(x) =1 se x pari
0 se x disparig(x) =
0 se x pari
1 se x dispari
f g non è un ordine parziale, non essendo antisimmetrica:
f g f g z x z. f(x) = g(x)
In generale z 0.
La relazione f g è soltanto un preordine (riflessiva e transitiva). Infatti:
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3
O-grande
Def. Se f (x) e g(x) sono funzioni su N, allora f (n) = O(g(n)) sse
c R+\{0} n0 N n n0. f (n) c g(n).
A rigore O(g(n)) è un insieme di funzioni, onde si dovrebbe scrivere f (n) O(g(n)).
c g(n)
f (n)
n0
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3
Le costanti non contano
Per ogni f, g, e per ogni costante c > 0:
f (n) = O(c g(n)) f (n) = O(g(n)) .
) a fortiori, visto che c > 0.
) esistono d > 0 e n0 tali che
f (n) d g(n), per ogni n n0
posto k = d/c (esiste perché c 0), abbiamo k > 0 e
f (n) d g(n) = k c g(n)
per ogni n n0.
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3
Eliminazione dei termini d’ordine inferiore
Se p(x) è un polinomio di grado k a coeff. in R+ e x positiva allora
p(x) = O(xk)
dove a = max{ai : 0 i k}.Se q(x) è un polinomio di grado h < k, allora p(x) O(q(x)):p.a. se p(x) = O(q(x)) = O(xh), allora q.o. ma
perché ak > 0, da cui una contradd. quando x > d.
kk
i
ik
i
ik
i
ii xkaxaaxxaxp )1()(
000
hkk cxxpxa )(
dacxacxcxxa hkkk
hkhkk //
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3
Gli ordini di grandezza
Ordini Funzioni
O(1) costanti
O(log2 n) logaritmiche
O(n) lineari
O(n log n) n log n
O(n2) quadratiche
O(n3) cubiche
O(np) p > 0 polinomiali
O(2n) esponenziali
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3
Alcune inclusioni importanti
• O(1) < O(log n): conseguenza del fatto che log n è sup. illimitata.
f (n) = O(1) c n. f (n) c
Ma, per n 2c, c log n definitivamente.
• O(log n) < O(n): sfruttando il fatto che n < 2n per ogni n,
log n n n = 2log n 2n
• O(n) < O(n log n):
n > 2 log n > 1 n log n > n
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3
O(np) < O(2n)
Lemma. Siano f, g funzioni a valori interi positivi con g(n) 0 per ogni n. Allora:
))(()())(()(0)(
)(lim nfOngngOnf
ng
nf
n
Dall’ipotesi segue che per ogni c > 0, 0 f (n)/g(n) < c q.o., quindi f (n) < c g(n) q.o., ossia f (n) = O(g(n)).
P.a. g(n) = O(f (n)): allora esiste d > 0 t.c. g(n) d f (n) q.o. Poiché g ha valori int. positivi non nulli, 1/ d f (n)/g(n) q.o., mentre dovrebbe essere, definitivamente, 0 f (n)/g(n) < c per ogni c > 0.
Corollario. O(np) < O(2n): perché lim n np/2n = 0.
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3
O-grande ed o-piccolo
Se f (n) = O(g(n)) e g h, allora f (n) = O(h(n)): quanto “buono” è questo confine superiore?
Def. f (n) = o(g(n)) sse c > 0 n. 0 f (n) < c g(n).
Se f (n) = o(g(n)) allora f è un infinitesimo di g, quindi g non è un confine superiore “stretto” di f.
Osserviamo infatti che, se g è positiva non nulla:
0)(
)())(()( lim
ng
nfngonf
n
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3
Algebra di O-grande (1)
Definiamo:f (n) + O(g(n)) = {h : g O(g(n)) . n. h(n) f (n) + g(n)}
f (n) O(g(n)) = {h : g O(g(n)) . n. h(n) f (n) g(n)}Allora ne segue:
f (n) + O(g(n)) = O(f (n) + g(n))f (n) O(g(n)) = O(f (n) g(n)).
Similmente definiamoO(f (n)) + O(g(n)) =
{h : f O(f (n)) g O(g(n)) n. h(n) f (n) + g(n)},
ed O(f (n)) O(g(n)) analogamente.
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3
Algebra di O-grande (2)
Ne deriva:
f (n) = O(f (n))
c O(f (n)) = O(f (n)) c costante
O(f (n)) + O(g(n)) = O(f (n) + g(n))
O(f (n)) + O(f (n)) = O(f (n))
f g O(f (n)) + O(g(n)) = O(g(n))
O(f (n)) O(g(n)) = O(f (n) g(n))
Perciò ad esempio:
O(1) + O(1) = O(2) = O(1) ma
n O(1) = O(n) (n è una variabile!)
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3
Una semplice applicazione
IdentityMatrix (Matrix A, int n)
// costruisce la matrice identità di ordine n
for i := 1 to n do
for j := 1 to n do
A[i,j] := 0; // T1
for i := 1 to n do
A[i,i] := 1; // T4
T2
T5
T3
T1(n) c1 = O(1) T2(n) = n T1(n) = n O(1) = O(n)
T3(n) = n T2(n) = n O(n) = O(n2) T4(n) c2 = O(1)
T5(n) = n T4(n) = n O(1) = O(n)
T(n) = T3(n) + T5(n) = O(n2) + O(n) = O(n2 + n) = O(n2)
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3
e
Def. Supposto che g sia asintoticamente non negativa:
f (n) = (g(n)) sse c R+\{0} n0 N n n0.
c g(n) f (n).
f (n) = (g(n)) sse c1,c2 R+\{0} n0 N n n0.
c1 g(n) f (n) c2 g(n).
Teor. f (n) = (g(n)) f (n) = O(g(n)) f (n) = (g(n)).
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3
Notazione asintotica
• f(x) = O(g(x)) c > 0 x. f (x) c g(x)
• f(x) = (g(x)) c > 0 x. c g(x) f (x)
• f(x) = (g(x)) c1, c2 > 0 x. c1g(x) f (x) c2g(x)
fc g
f(x) = O(g(x))
c gf
f(x) = (g(x))
c1 g
c2 g
f
f(x) = (g(x))
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3
Relazioni di ricorrenza
Sono equazioni, o diseguaglianze, in cui una funzione viene descritta in termini dei suoi valori su argomenti più piccoli:
Semplificazioni:
1. Le funzioni si assumono definite su R.
2. Il caso di base si trascura.
T(n) =(1) se n = 1
2T(n/2) + (n) se n > 1
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3
Il metodo di sostituzione (1)
Si indovina la soluzione Si verifica induttivamente che la soluzione sia tale.
T(n) = 2T(n/2) + n
Soluzione: T(n) c n log n
T(n) 2 (c (n/2) log (n/2)) + n ip. ind.
= c n log (n/2) + n
= c n log n – c n log 2 + n
= c n log n – c n + n
c n log n (se c 1)
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3
Il metodo di sostituzione (2)
Quanto vale c ?
Se T(1) = 1, allora T(1) c 1 log 1 = 0 non può valere!
Ma T(2) c 2 log 2, T(3) c 3 log 3, valgono per c 2.
Tanto basta: il confine superiore cercato è asintotico.
Attenzione: indovinando T(n) = c n si può “dimostrare” la tesi T(n) = O(n):
T(n) 2(c n/2) + n ip. ind.
= c n + n
= O(n) Errore!!!
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3
Il metodo di iterazione
Sviluppare l’equazione sino ad ottenere una somma di termini che dipendono da n e dalle condizioni iniziali:
T(n) = n + 4T(n/2) = n + 4 (n/2 + 4 T(n/4)) = n + 2n + 42(n/4 + 4 T(n/8) ) = n + 2n + 4n + 43(n/8 + 4 T(n/16) ) = n + 2n + … + 2lg (n-1) n + 4lg n T(1) = n (1 + 2 + … + 2lg (n-1) ) + n2 (1) = n (2lg n 1) + (n2) = n2 n + (n2) = (n2)
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3
Il metodo principale
Si basa su un teorema:
Teor. (versione semplificata) Siano a 1, b > 1 e c 0 delle costanti. T(n) sia definita dalla seguente ricorrenza:
T(n) = a T(n/b) + (nc),dove n/b rappresenta n/b oppure n/b. Allora:
1. se c < logba allora T(n) = (nlogb
a), 2. se c = logba allora T(n) = (nc log n),3. se c > logba allora T(n) = (nc).
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3
Esempi
Il tempo di calcolo per l’algoritmo DI-Min-Max soddisfa la ricorrenza:
T(n) = 2 T(n/2) + (1)a = b = 2c = 0 < 1 = logba Caso 1 del teorema principale:
T(n) = (nlog22) = (n)
Il tempo di calcolo per l’algoritmo Merge-Sort soddisfa la ricorrenza:
T(n) = 2 T(n/2) + (n)a = b = 2c = 1 = logba Caso 2 del teorema principale:
T(n) = (nc log n) = (n log n)
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3
Confini inferiori ed ottimalità
Un problema di calcolo ha confine inferiore alla complessità g se qualunque algoritmo per è (g(n)).
Se ha confine inferiore g ed esiste un algoritmo di complessità O(g(n)), allora tale algoritmo sarà ottimo per .
Nota. Si ricordi che la complessità è valutata nel caso peggiore, e sempre in rapporto ad una risorsa (spazio, tempo, ecc.)
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3
Confini banali
Dimensione dei dati: quando è necessario esaminare tutti i dati in ingresso, ovvero generare tutti i dati in uscita.
Es. La moltiplicazione di due matrici quadrate di ordine n richiede l’ispezione di 2n2 = (n2) entrate.
Eventi contabili: quando c’è un evento la cui ripetizione un numero contabile di volte sia necessaria alla soluzione del problema.
Es. La determinazione del massimo tra n elementi richiede n 1 = (n) confronti, in cui altrettanti elementi non massimi risultino minori.
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3
Alberi di decisione
Un albero rappresenta un algoritmo:
i nodi interni rappresentano decisioni, le foglie rappresentano possibili uscite, i rami rappresentano particolari esecuzioni.
L’albero di decisione che minimizza l’altezza fornisce un confine inferiore al numero di decisioni necessarie nel caso peggiore.
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3
Alberi quasi perfettamente bilanciati
Def. Un albero binario è completo se ha 2k vertici per ogni livello k non vuoto. Un albero binario è quasi perfettamente bilanciato (qpb) se, avendo altezza h, è completo sino al livello h 1.
Le foglie di un albero quasi perfettamente bilanciato di altezza h sono:
2h1 s 2h , ovvero h log2 s
Quindi un problema la cui soluzione può rappresentarsi con un albero qpb con s(n) possibili soluzioni è (log2 s(n)).
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3
Il problema dell’ordinamento
Nel caso dell’ordinamento: s(n) = n! (un ordinamento è una permutazione) i nodi interni rappresentano confronti
Nel caso dell’ordinamento (sorting) il numero dei confronti deve essere dunque maggiore di (usando la formula di Stirling):
Ossia il problema è (n log n). Algoritmi O(n log n), come il Merge-Sort e lo Heap-Sort, sono allora ottimi.
)/(log2log)/(2log!log 2222 ennnennn n
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3
L’albero per l’ordinamento di 3 el.
a:b
b:c b:c
a:c
a < b b < a
a, b, c
b < c c < b
a, c, b c, a, b
c < aa < ca:c
b, a, c b, c, a
c < aa < cb, c, a
c < bb < c
3!3log2 h
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3
Quando serve l’albero delle decisioni ?
Se s(n) = (f(n)g(n)) allora l’albero delle decisioni fornisce il confine inferiore
(g(n) log2 f(n))
utile se f(n) è O(1).
Non è interessante nel caso del problema Min-Max, per cui s(n) = n(n 1), ma
log2 s(n) = log2 n + log2 (n 1)
peggiore del confine banale (n).
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3
L’oracolo
Oracolo: avversario immaginario che divina la situazione più sfavorevole in cui possa operare un algoritmo che risolva il problema per cui si cerca un confine inferiore.
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3
Il torneo
a
a b
d
c d
a
f
f
e f
h
g h
f
j
i l
m
m n
m
o
o
o p
r
q r
o
o
Per stabilire il massimo tra n elementi si organizza un torneo: un albero qbf di altezza k = log2 n.
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3
Il torneo di consolazione
r
p r
f
m f
r
Per stabilire il secondo tra n elementi si organizza un torneo di consolazione tra tutti gli el. risultati perdenti in scontri diretti col vincitore: m = k.
Numero degli incontri (confronti) = numero dei nodi interni dei due alberi:
C(n) = n + log2 n – 2.
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3
Il doppio torneo è ottimo (1)
A = insieme degli incontri per stabilire il massimo tra n el.
B = insieme degli incontri in cui ciascun el., salvo il campione, è sconfitto:
|B| = n 1.
Se a:b A, con a, b diversi dal campione, allora a:b B.
Se y = numero el. Perdenti col campione in B, allora sono necessari y 1 incontri per stabilire il secondo:
|A| n + y 2.
Oracolo: nell’incontro a:b risulta a < b sse il numero degli el. trovati peggiori di b di quelli peggiori di a: si minimizzano le informazioni ricavabili per transitività.
M(j) = numero max el. Peggiori del campione dopo j incontri:
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3
Il doppio torneo è ottimo (2)
M(j) = numero max el. peggiori del campione dopo j incontri:
M(0) = 0
M(j) = 2 M(j 1) + 1 se j > 0
Quindi M(j) = 2j 1: perché risulti M(y) = 2y – 1 n – 1 occorre che y log2 n:
sostituendo in |A| n + y 2 si trova
n + log2 n – 2.