La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Analisi di algoritmi ricorsivi: Il Teorema master (*) Algoritmi e Strutture Dati.

Presentazioni simili


Presentazione sul tema: "Analisi di algoritmi ricorsivi: Il Teorema master (*) Algoritmi e Strutture Dati."— Transcript della presentazione:

1 Analisi di algoritmi ricorsivi: Il Teorema master (*) Algoritmi e Strutture Dati

2 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 2 Teorema Master Permette di analizzare algoritmi basati sulla tecnica del divide et impera: - dividi il problema (di dimensione iniziale n) in a≥1 sottoproblemi di dimensione n/b, b>1 - 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: a T(n/b) + f(n) se n>1 Θ(1) se n=1 T(n) =

3 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Esempio: algoritmo fibonacci6 a=1, b=2, f(n)=Θ(1)

4 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 4 Esempio: algoritmo di ricerca binaria a=1, b=2, f(n)=Θ(1)

5 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 5 La relazione di ricorrenza: Teorema Master ha soluzione: a T(n/b) + f(n) se n>1 Θ(1) se n=1 T(n) = 1. T(n) =  (n ) se f(n)=O(n ) per qualche  >0 log b a log b a -  2. T(n) =  (n log n) se f(n) =  (n ) log b a 3. T(n) =  (f(n)) se f(n)=  (n ) per qualche  >0 (ma sotto l’ulteriore ipotesi che f(n) soddisfi la condizione di regolarità: a f(n/b)≤ c f(n) per qualche c<1 ed n sufficientemente grande) log b a + 

6 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 6 Dimostrazione del caso 1 Albero della ricorsione

7 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 7 Proprietà dell’albero della ricorsione Proprietà 1: il numero di nodi a livello i dell’albero della ricorsione è a i (ricorda che la radice è a livello 0) Proprietà 2: i sottoproblemi a livello i dell’albero della ricorsione hanno dimensione n/b i Proprietà 3: il contributo al tempo di esecuzione di un nodo a livello i (escluso tempo chiamate ricorsive) è f(n/b i ) Proprietà 4: il numero di livelli dell’albero è (circa) log b n T(n)=  a i f(n/b i ) i=0 log b n

8 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 8 …quindi, nel caso 1 Inoltre, T(n)  a (ultimo termine della sommatoria) = n = Ω(n ), da cui la tesi. I casi 2 e 3 possono essere mostrati in modo analogo. QED log b n log b a

9 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 9 1) T(n) = 2T(n/2) + n a=2, b=2, f(n)=n=  (n ) caso 2 TM T(n)=  (n log n) =  (n log n) Esempi (per tutti assumiamo T(1)=  (1)) log 2 2 2) T(n) = 3T(n/9) + 7 a=3, b=9, f(n)=7=  n ) caso 1 TM T(n) =  (n )=  (√n) log  3) T(n) = 3T(n/9) + n a=3, b=9, f(n)=n=  (n ) caso 3 del TM log  T(n)=  (n) inoltre 3(n/9)≤ c n per c=1/3 log 2 2 log 9 3

10 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 10 4)T(n) = 2T(n/2)+n log n a=2, b=2 e quindi ovviamente non ricade nel caso 1 perché f(n)=n log n ≠ O(n )  O(n ) inoltre f(n) ≠ Θ  (n ), e quindi non ricade nel caso 2, infine non esiste alcun  > 0 per cui f(n)=  (n )  (n 1+  ) (infatti, per ogni  > 0 ) Esempi log 2 2 log 2 2-  non si può applicare il teorema Master! 1-  log 2 2+ 

11 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Upper e lower bound di un algoritmo e di un problema

12 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 12 Delimitazioni superiori (upper bound) Definizione (complessità di un algoritmo) Un algoritmo A ha costo di esecuzione O(g(n)) su istanze di dimensione n e rispetto ad una certa risorsa di calcolo (spazio o tempo), se la quantità f(n) di risorsa sufficiente per eseguire A su qualunque istanza di dimensione n (e quindi in particolare anche nel caso peggiore) verifica la relazione f(n)=O(g(n)). Definizione (upper bound di un problema) Un problema P ha una delimitazione superiore alla complessità O(g(n)) rispetto ad una certa risorsa di calcolo (spazio o tempo) se esiste un algoritmo che risolve P il cui costo di esecuzione rispetto a quella risorsa è O(g(n)).

13 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 13 Delimitazioni inferiori (lower bound) Definizione Un algoritmo A ha costo di esecuzione  (g(n)) su istanze di dimensione n e rispetto ad una certa risorsa di calcolo (spazio o tempo), 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 worst (n)=  (g(n)). Definizione (lower bound o complessità intrinseca di un problema) Un problema P ha una delimitazione inferiore alla complessità  (g(n)) rispetto ad una certa risorsa di calcolo (spazio o tempo) se ogni algoritmo che risolve P ha costo di esecuzione  (g(n)) rispetto a quella risorsa.

14 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 14 Ottimalità di un algoritmo Definizione Dato un problema P con complessità intrinseca  (g(n)) rispetto ad una certa risorsa di calcolo (spazio o tempo), un algoritmo che risolve P è ottimo (in termini di complessità asintotica, ovvero a meno di costanti moltiplicative e di termini additivi/sottrattivi di “magnitudine” inferiore) se ha costo di esecuzione O(g(n)) rispetto a quella risorsa.

15 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 15 Convenzioni Se scriverò che un algoritmo ha complessità T(n) = O(g(n)), intenderò che su ALCUNE istanze costerà Θ(g(n)), ma sulle rimanenti costerà o(g(n). Se scriverò che un algoritmo ha complessità T(n)=Θ(g(n)), intenderò che su TUTTE le istanze costerà Θ(g(n)) Da ora in poi, quando parlerò di UB di un problema, mi riferirò alla complessità del MIGLIORE ALGORITMO che sono stato in grado di progettare sino a quel momento (ovvero, quello con minore complessità nel caso peggiore). Da ora in poi, quando parlerò di LB di un problema, mi riferirò alla PIÙ GRANDE delimitazione inferiore che sono stato in grado di dimostrare sino a quel momento.

16 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 16 Alcuni esempi L’algoritmo di ricerca sequenziale di un elemento in un insieme non ordinato di n elementi costa T(n) = O(n), in quanto su alcune istanze costa Θ(n), mentre su altre costa o(n) Ovviamente, per quanto sopra, l’upper bound del problema della ricerca di un elemento in un insieme non ordinato di n elementi è pari a O(n) Si osservi ora che il lower bound del problema della ricerca di un elemento in un insieme non ordinato di n elementi è pari a Ω(n): infatti, ogni algoritmo di risoluzione deve per forza di cose guardare tutti gli elementi dell’insieme per decidere se l’elemento cercato appartiene o meno ad esso! l’algoritmo di ricerca sequenziale è ottimo!

17 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 17 Alcuni esempi (2) L’algoritmo Fibonacci4 per il calcolo dell’n-esimo numero della sequenza di Fibonacci costa T(k=log n) = Θ(2 k =n), in quanto su tutte le istanze costa sempre Θ(2 k =n) L’algoritmo Fibonacci6 per il calcolo dell’n-esimo numero della sequenza di Fibonacci costa T(k=log n) = Θ(k=log n), in quanto su tutte le istanze costa sempre Θ(k=log n) Ovviamente, per quanto sopra, l’upper bound del problema del calcolo dell’n-esimo numero della sequenza di Fibonacci è pari a O(log n) Si osservi ora che il lower bound del problema del calcolo dell’n- esimo numero della sequenza di Fibonacci è pari a Ω(1): infatti, ogni algoritmo di risoluzione deve per forza di cose leggere l’input, al costo di 1 operazione, ma non sono in grado di definire altre operazioni necessarie a tutti gli algoritmi! l’algoritmo Fibonacci6 non è ottimo!


Scaricare ppt "Analisi di algoritmi ricorsivi: Il Teorema master (*) Algoritmi e Strutture Dati."

Presentazioni simili


Annunci Google