Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoBiagino Cossu Modificato 10 anni fa
1
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3 Complessità computazionale concreta Corso di Informatica 2 a.a. 2003/04 Lezione 3
2
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.
3
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.
4
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 REACHABILITY S := {u}; M := {u}; while S do x := 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
5
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: f A : Input N Es. Space A (x) = quantità di memoria usata da A in x Time A (x) = numero delle operazioni elementari eseguite da A in x E’ talvolta espressa in termini di una dimensione: | · | : Input N Es. | n | = log 2 (n+1) = lunghezza della rappresentazione binaria di n ( 0) Input NN | · | gA gA Complessità nel caso peggiore: g A (n) = max{f A (x) : |x| = n} (che esiste se | n | -1 è finito oppure se f A è limitata su | n | -1, per ogni n).
6
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3 Confronto tra algoritmi T A (n) = 100 n T B (n) = 2 n 2 L’algoritmo A è migliore dell’algoritmo B per n > 50; Rimpiazzare B con A è meglio che raddoppiare la velocità del computer:
7
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).
8
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 dispari g(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:
9
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} n 0 N n n 0. 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) n0n0
10
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 n 0 tali che f (n) d g(n), per ogni n n 0 posto k = d/c (esiste perché c 0), abbiamo k > 0 e f (n) d g(n) = k c g(n) per ogni n n 0.
11
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(x k ) dove a = max{a i : 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(x h ), allora q.o. ma perché a k > 0, da cui una contradd. quando x > d .
12
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3 Gli ordini di grandezza OrdiniFunzioni O(1)costanti O(log 2 n)logaritmiche O(n)O(n)lineari O(n log n)n log n O(n2)O(n2)quadratiche O(n3)O(n3)cubiche O(n p ) p > 0polinomiali O(2 n )esponenziali
13
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 2 c, c log n definitivamente. O(log n) < O(n): sfruttando il fatto che n < 2 n per ogni n, log n n n = 2 log n 2 n O(n) < O(n log n): n > 2 log n > 1 n log n > n
14
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3 O(n p ) < O(2 n ) Lemma. Siano f, g funzioni a valori interi positivi con g(n) 0 per ogni n. Allora: 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) 0. Corollario. O(n p ) < O(2 n ): perché lim n n p /2 n = 0.
15
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:
16
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 definiamo O(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.
17
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!)
18
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; // T 1 for i := 1 to n do A[i,i] := 1; // T 4 T2T2 T5T5 T3T3 T 1 (n) c 1 = O(1)T 2 (n) = n T 1 (n) = n O(1) = O(n) T 3 (n) = n T 2 (n) = n O(n) = O(n 2 ) T 4 (n) c 2 = O(1) T 5 (n) = n T 4 (n) = n O(1) = O(n) T(n) = T 3 (n) + T 5 (n) = O(n 2 ) + O(n) = O(n 2 + n) = O(n 2 )
19
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} n 0 N n n 0. c g(n) f (n). f (n) = (g(n)) sse c 1,c 2 R + \{0} n 0 N n n 0. c 1 g(n) f (n) c 2 g(n). Teor. f (n) = (g(n)) f (n) = O(g(n)) f (n) = (g(n)).
20
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)) c 1, c 2 > 0 x. c 1 g(x) f (x) c 2 g(x) fc g f(x) = O(g(x)) c g f f(x) = (g(x)) c 1 g c 2 g f f(x) = (g(x))
21
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
22
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)) + nip. 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)
23
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) + nip. ind. = c n + n = O(n)Errore!!!
24
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 + 4 2 (n/4 + 4 T(n/8) ) = n + 2n + 4n + 4 3 (n/8 + 4 T(n/16) ) = n + 2n + … + 2 lg (n-1) n + 4 lg n T(1) = n (1 + 2 + … + 2 lg (n-1) ) + n 2 (1) = n (2 lg n 1) + (n 2 ) = n 2 n + (n 2 ) = (n 2 )
25
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) + (n c ), dove n/b rappresenta n/b oppure n/b . Allora: 1.se c < log b a allora T(n) = (n log b a ), 2.se c = log b a allora T(n) = (n c log n), 3.se c > log b a allora T(n) = (n c ).
26
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 = 2 c = 0 < 1 = log b aCaso 1 del teorema principale: T(n) = (n log 2 2 ) = (n) Il tempo di calcolo per l’algoritmo Merge-Sort soddisfa la ricorrenza: T(n) = 2 T(n/2) + (n) a = b = 2 c = 1 = log b aCaso 2 del teorema principale: T(n) = (n c log n) = (n log n)
27
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.)
28
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 2n 2 = (n 2 ) 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.
29
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.
30
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3 Alberi quasi perfettamente bilanciati Def. Un albero binario è completo se ha 2 k 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: 2 h 1 s 2 h, ovvero h log 2 s Quindi un problema la cui soluzione può rappresentarsi con un albero qpb con s(n) possibili soluzioni è (log 2 s(n)).
31
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.
32
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3 L’albero per l’ordinamento di 3 el. a:b b:c a:c a < bb < a a, b, c b < cc < b a, c, bc, a, b c < aa < c a:c b, a, cb, c, a c < aa < c b, c, a c < bb < c
33
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) log 2 f(n)) utile se f(n) è O(1). Non è interessante nel caso del problema Min-Max, per cui s(n) = n(n 1), ma log 2 s(n) = log 2 n + log 2 (n 1) peggiore del confine banale (n).
34
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.
35
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3 Il torneo a ab d cd a f f ef h gh f j il m mn m o o op r qr o o Per stabilire il massimo tra n elementi si organizza un torneo: un albero qbf di altezza k = log 2 n.
36
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3 Il torneo di consolazione r pr f mf 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 + log 2 n – 2.
37
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:
38
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) + 1se j > 0 Quindi M(j) = 2 j 1: perché risulti M(y) = 2 y – 1 n – 1 occorre che y log 2 n: sostituendo in |A| n + y 2 si trova n + log 2 n – 2.
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.