Delimitazioni inferiori e superiori alla complessita’ di un problema Alcune tecniche F. Damiani - Alg. & Lab. 04/05 (da U. de' Liguoro - Alg. & Spe. 03/04) Nozioni preliminari F. Damiani - Alg. & Lab. 04/05 (da U. de' Liguoro - Alg. & Spe. 03/04) Una nozione preliminare: albero k-ario completo Un Unalbero alberok-ario k-arioèècompleto completose setutti tuttiiinodi nodiinterni interni hanno hannokkfigli, figli,eetutte tuttelelefoglie fogliesono sonosullo sullostesso stessolivello livello Quanti nodi sul livello m? F. Damiani - Alg. & Lab. 04/05 (da U. de' Liguoro - Alg. & Spe. 03/04) 1 Un Unalbero alberok-ario k-arioèècompleto completose setutti tuttiiinodi nodiinterni interni hanno hannokkfigli, figli,eetutte tuttelelefoglie fogliesono sonosullo sullostesso stessolivello livello Livello 0: 1 (la radice) Livello 1: k (i figli della radice) Livello 2: k⋅k = k2 La prova è per induzione su m … Livello m: km F. Damiani - Alg. & Lab. 04/05 (da U. de' Liguoro - Alg. & Spe. 03/04) Un Unalbero alberok-ario k-arioèècompleto completose setutti tuttiiinodi nodiinterni interni hanno hannokkfigli, figli,eetutte tuttelelefoglie fogliesono sonosullo sullostesso stessolivello livello Proprieta’: Proprieta’: ••lelefoglie fogliedi diun unalbero alberok-ario k-ario h completo completodi dialtezza altezzahhsono sonokkh ••se seun unalbero alberok-ario k-ariocompleto completoha hann foglie, foglie,allora alloraha haaltezza altezzahh==log logkknn Quanti sono i nodi interni se l’altezza è h? F. Damiani - Alg. & Lab. 04/05 (da U. de' Liguoro - Alg. & Spe. 03/04) Un Unalbero alberok-ario k-arioèècompleto completose setutti tuttiiinodi nodiinterni interni hanno hannokkfigli, figli,eetutte tuttelelefoglie fogliesono sonosullo sullostesso stessolivello livello h −1 Nodi interni = 1 + k + k 2 + K + k h −1 = ∑ k i = i =0 k h −1 k −1 Allora la cardinalità di un albero k-ario completo di altezza h è k h +1 − 1 k −1 F. Damiani - Alg. & Lab. 04/05 (da U. de' Liguoro - Alg. & Spe. 03/04) 2 Un’altra nozione preliminare: albero binario quasi completo Qual è l’altezza se le foglie sono n? Un albero binario quasi completo è completo sino al penultimo livello 2 h −1 < n ≤ 2 h quindi h = log n F. Damiani - Alg. & Lab. 04/05 (da U. de' Liguoro - Alg. & Spe. 03/04) Delimitazioni inferiori e superiori alla complessita’ di un problema F. Damiani - Alg. & Lab. 04/05 (da U. de' Liguoro - Alg. & Spe. 03/04) Delimitazione superiore alla complessità di un problema Qual è un tempo di calcolo sufficiente alla risoluzione di un dato problema? Confine Confinesuperiore superiorealla allacomplessità complessitàdi diun unproblema: problema: un unconfine confinesuperiore superioreper perililtempo tempodi dicalcolo calcolo(nel (nelcaso caso peggiore) peggiore)di diun unalgoritmo algoritmoche cherisolve risolveililproblema problema F. Damiani - Alg. & Lab. 04/05 (da U. de' Liguoro - Alg. & Spe. 03/04) 3 g T ∃T . T (n) ∈ O( g (n)) Confine Confinesuperiore superiorealla allacomplessità complessitàdi diun unproblema: problema: un unconfine confinesuperiore superioreper perililtempo tempodi dicalcolo calcolo(nel (nelcaso caso peggiore) peggiore)di diun unalgoritmo algoritmoche cherisolve risolveililproblema problema F. Damiani - Alg. & Lab. 04/05 (da U. de' Liguoro - Alg. & Spe. 03/04) Un esempio “importante”: il problema dell’ordinamento Il tempo di InsertSort nel caso peggiore è O(n2): questo è allora un confine superiore per il problema dell’Ordinamento! Non si può fare di meglio? F. Damiani - Alg. & Lab. 04/05 (da U. de' Liguoro - Alg. & Spe. 03/04) Delimitazione inferiore alla complessita’ di un problema Qual è un tempo di calcolo necessario alla risoluzione del problema dell’Ordinamento? Delimitazione Delimitazioneinferiore inferiorealla allacomplessità complessitàdi diun unproblema: problema:un un confine confineinferiore inferioreper periitempi tempidi dicalcolo calcolo(nel (nelcaso casopeggiore) peggiore)di di tutti glialgoritmi algoritmiche cherisolvono risolvonoililproblema problema tuttigli F. Damiani - Alg. & Lab. 04/05 (da U. de' Liguoro - Alg. & Spe. 03/04) 4 T1 … Tk … ∀Ti . Ti ( n) ∈ Ω( f (n)) f Delimitazione Delimitazioneinferiore inferiorealla allacomplessità complessitàdi diun unproblema: problema:un un confine confineinferiore inferioreper periitempi tempidi dicalcolo calcolo(nel (nelcaso casopeggiore) peggiore)di di tutti tuttigli glialgoritmi algoritmiche cherisolvono risolvonoililproblema problema F. Damiani - Alg. & Lab. 04/05 (da U. de' Liguoro - Alg. & Spe. 03/04) Alcune tecniche di base • 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. F. Damiani - Alg. & Lab. 04/05 (da U. de' Liguoro - Alg. & Spe. 03/04) La tecnica dell’albero delle decisioni In molti problemi un albero può rappresentare un algoritmo che risolve il problema: • i nodi interni rappresentano operazioni di confronto o comunque di scelta tra 2 (o piu’) alternative possibili, • le foglie rappresentano i possibili output (determinati in base ad una sequenza di scelte). I rami rappresentano quindi particolari esecuzioni. L’albero di decisione che minimizza l’altezza fornisce un confine inferiore al numero di decisioni necessarie nel caso peggiore. F. Damiani - Alg. & Lab. 04/05 (da U. de' Liguoro - Alg. & Spe. 03/04) 5 Esempio: usiamo la tecnica dell’albero delle decisioni per il problema dell’ordinamento di 3 elementi (1) a:b a<b b<c b:c c<b a, b, c b<c a:c a<c b:c a:c c<a a, c, b n=3 b<a c, a, b a<c c<b b, c, a c<a b, a, c b, c, a h=3 F. Damiani - Alg. & Lab. 04/05 (da U. de' Liguoro - Alg. & Spe. 03/04) Esempio: usiamo la tecnica dell’albero delle decisioni per il problema dell’ordinamento di 3 elementi (2) a:b a<b b<c b:c c<b a, b, c b<c a:c a<c a, c, b n=3 b<a b:c a:c c<a c, a, b a<c b, a, c c<b c, b, a c<a b, c, a h = log 2 3! = 3 F. Damiani - Alg. & Lab. 04/05 (da U. de' Liguoro - Alg. & Spe. 03/04) Una delimitazione inferiore per il problema dell’ordinamento • Le permutazioni di n oggetti sono n! • L’albero delle decisioni per il problema dell’ordinamento ha allora n! foglie, ed ha altezza minima se è quasi completo • Dunque un confine inferiore per l’Ordinamento è Ω(log n!) Che cos’e’ log(n!) ? F. Damiani - Alg. & Lab. 04/05 (da U. de' Liguoro - Alg. & Spe. 03/04) 6 Che cos’è log(n!) ? log 2 n!≈ log 2 ( La formula di Stirling ) 2πn (n / e) n = log 2 2πn + n log 2 (n / e) Allora log(n!) ∈ Θ(n log n) Ve la ricordavate la formula di Stirling? F. Damiani - Alg. & Lab. 04/05 (da U. de' Liguoro - Alg. & Spe. 03/04) Algoritmi ottimi Un Unalgoritmo algoritmoèèottimo ottimose seililsuo suotempo tempodi dicalcolo calcoloèèO(f(n)) O(f(n)) ed edililproblema problemache cherisolve risolveèèΩ(f(n)) Ω(f(n)) F. Damiani - Alg. & Lab. 04/05 (da U. de' Liguoro - Alg. & Spe. 03/04) Domande… Un confine inferiore per il problema dell’ordinamento è Ω(n log n). Un confine superiore è O(n2). Possiamo colmare questa distanza? Se tra qualche giorno qualcuno vi dicesse che ha trovato un algoritmo di ordinamento che permettere di ordinare l’insieme {1,…,n} con complessita’ O(n) nel caso pessimo, che cosa gli rispondereste? F. Damiani - Alg. & Lab. 04/05 (da U. de' Liguoro - Alg. & Spe. 03/04) 7 Una disgressione (per chi non si ricorda della formula di Stirling) F. Damiani - Alg. & Lab. 04/05 (da U. de' Liguoro - Alg. & Spe. 03/04) Disgressione: rispondiamo alla domanda “Che cos’è log(n!) ?” senza usare la formula di Stirling (1) log 2 (n!) = log 2 (1⋅ 2 ⋅ K ⋅ (n − 1) ⋅ n) = log 2 1 + log 2 2 + K + log 2 (n − 1) + log 2 n ≤ log 2 n + K + log 2 n 144 42444 3 n Allora log(n!) ∈ O(n log n) F. Damiani - Alg. & Lab. 04/05 (da U. de' Liguoro - Alg. & Spe. 03/04) Disgressione: rispondiamo alla domanda “Che cos’è log(n!) ?” senza usare la formula di Stirling (2) Se lim n →∞ log 2 (n!) = l < ∞ allora log 2 (n!) ∈ Θ(n log 2 n) n log 2 n Proviamolo! F. Damiani - Alg. & Lab. 04/05 (da U. de' Liguoro - Alg. & Spe. 03/04) 8 Disgressione: rispondiamo alla domanda “Che cos’è log(n!) ?” senza usare la formula di Stirling (3) 5 4 ∫ n 1 n log 2 x dx ≤ ∑ log 2 k ≤ ∫ n +1 2 k =2 log 2 x dx 3 log 2 x 2 n ∑ log 1 k =2 2 4 6 8 2 k = log 2 (n!) 10 Si consideri ad es. n=4 F. Damiani - Alg. & Lab. 04/05 (da U. de' Liguoro - Alg. & Spe. 03/04) Disgressione: rispondiamo alla domanda “Che cos’è log(n!) ?” senza usare la formula di Stirling (4) ∫ log ∫ n 1 2 x dx = x log 2 x − x log 2 e = F ( x) Integrando per parti log 2 x dx = F (n) − F (1) = n log 2 n − nd + d ≤ log(n!) ≤∫ n +1 2 log 2 x dx = F (n + 1) − F ( 2) Posto d = log2 e = (n + 1) log 2 (n + 1) − (n − 1)d − 2 Usando il teorema fondamentale del Calcolo F. Damiani - Alg. & Lab. 04/05 (da U. de' Liguoro - Alg. & Spe. 03/04) Disgressione: rispondiamo alla domanda “Che cos’è log(n!) ?” senza usare la formula di Stirling (5) n log 2 n − nd + d ≤ log 2 (n!) ≤ (n + 1) log 2 (n + 1) − (n − 1)d − 2 se e solo se, dividendo per n log2 n d d log(n!) ( n + 1) log(n + 1) 1 d −2 1− + ≤ ≤ − + log n n log n n log n n log n log n n log n log(1 + 1 / n) 1 d −2 − + = (1 + 1 / n)1 + log n log n n log n entrambi → 1 se n → ∞ quindi lim n →∞ log(n!) =1 n log n log(n!) ∈ Θ(n log n) F. Damiani - Alg. & Lab. 04/05 (da U. de' Liguoro - Alg. & Spe. 03/04) 9