Esercitazione 7 Algorithmi e Strutture Dati (Informatica) A.A 2015/2016

Documenti analoghi
Algoritmi e Strutture Dati

Algoritmi e strutture dati. Analisi di algoritmi Funzioni di costo, notazione asintotica

ESERCITAZIONI DI INTRODUZIONE AGLI ALGORITMI (A.A. 08/09)

Esercizi di Algoritmi e Strutture Dati

Algoritmi e Strutture Dati. Analisi di algoritmi Funzioni di costo, notazione asintotica

Esercizi per il corso di Algoritmi

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati

Tecniche di analisi degli algoritmi

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati

Esercizi Capitolo 2 - Analisi di Algoritmi

Esercizi sulla complessità di frammenti di pseudo-codice

Tecniche di analisi degli algoritmi

Analisi asintotica. Astrazione: come il tempo di esecuzione cresce in funzione della taglia dell input asintoticamente.

Algoritmi e Strutture Dati

Sommario della Lezione

Tecniche di analisi degli algoritmi

Algoritmi e Strutture Dati. Luciano Gualà

Notazione asintotica. notazione Ω. notazione O. notazione o notazione ω. Marina Zanella Algoritmi e strutture dati Richiami matematici 1

Algoritmi e Strutture di Dati I 1. Algoritmi e Strutture di Dati I Massimo Franceschet francesc

Valutazione di progressioni geometriche

CAPITOLO 2. Divide et Impera

In questa lezione: correttezza del mergesort Analisi del mergesort: relazioni di ricorrenza e alberi della ricorsione

Divide et impera (Divide and Conquer) Dividi il problema in sottoproblemi piu` semplici e risolvili ricorsivamente

Algoritmi e Strutture di Dati I 1. Algoritmi e Strutture di Dati I Massimo Franceschet

Appunti lezione Capitolo 2 Analisi delle funzioni di costo

Tecniche Algoritmiche: divide et impera

Esercizi di Algoritmi e Strutture Dati

Algoritmi e Strutture Dati. Luciano Gualà

Esercizi per il corso di Algoritmi, anno accademico 2011/12

COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI

Di cosa parliamo oggi?

Università degli Studi di Camerino Laurea in Informatica Prima Prova Parziale del corso di Algoritmi e Strutture Dati

Lezione 4 Ugo Vaccaro

Di cosa parliamo oggi?

Crescita funzioni. 20 novembre Come possiamo confrontare le funzioni di costo che abbiamo ottenuto finora?

Analisi Matematica 1 Soluzioni prova scritta n. 1

Tecniche di analisi degli algoritmi

Algoritmi e strutture di dati 2

Algoritmi (9 CFU) (A.A )

3.2 Notazioni standard e funzioni comuni

ALGORITMI Docente: Prof. Domenico Cantone

In questa lezione. Il Mergesort: primo esempio di applicazione della tecnica divide et impera analisi tempo di esecuzione del Mergesort

Algoritmo di ordinamento sul posto che ha tempo di esecuzione :

Quick Sort. PARTITION(A,p,r) risistema il sottoarray A[p...r] e riporta l indice q:

Ω (grande omega) Esempio 10 COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI

Esempio : i numeri di Fibonacci

Esercitazione 4 Algorithmi e Strutture Dati (Informatica) A.A 2015/2016

Analisi Matematica per Bio-Informatici Esercitazione 08 a.a

Per regnare occorre tenere divisi i nemici e trarne vantaggio. fai ad ogni passo la scelta più conveniente

Esercizi sulla complessità asintotica. Roberto Cordone

Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti

Algoritmi e Strutture Dati

Algoritmi di ordinamento

Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti

Si imposti la relazione di ricorrenza che ne descrive la complessità e la si risolva utilizzando il metodo della sostituzione.

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati

Algoritmi di Ordinamento

Macchina RAM. Modelli di calcolo e metodologie di analisi. Linguaggio di una macchina RAM. Algoritmi e Strutture Dati. Istruzioni.

Algoritmi e Strutture Dati. Capitolo 1 Un introduzione informale agli algoritmi

ANALISI MATEMATICA I MODULO, I e II MODULO, II MODULO CORSO DI LAUREA IN INFORMATICA

Complessità degli algoritmi

Esercizi di Analisi Matematica

Sostituire cf(n) a ciascun termine O(f(n)), dove c è una costante reale simbolica specifica per quel termine

a) Determinare il dominio, i limiti agli estremi del dominio e gli eventuali asintoti di f. Determinare inoltre gli zeri di f e studiarne il segno.

3. (Punti 8) Si consideri l integrale improprio. x n dx, n N.

Algoritmi e Strutture Dati

Tempo e spazio di calcolo (continua)

Algoritmi e Strutture Dati

Facoltà di Scienze MFN, Università di Cagliari Analisi Matematica 1 (Informatica), a.a. 2007/08. Insiemi numerici: sup A, inf A

Corso di Laurea in Ingegneria Biomedica ANALISI MATEMATICA 1. Prova scritta del 14 gennaio 2017 Fila 1.

SERIE NUMERICHE. c Paola Gervasio - Analisi Matematica 1 - A.A. 2018/19 Serie numeriche cap5c.pdf 1

Esercizio 1. Per quali valori di h e k le seguenti funzione sono derivabili? x 3 sin 1 x 0. 0 x = 0. x cos 1 x > 0

Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano. Usa la tecnica del divide et impera:

Analisi Matematica I modulo Soluzioni prova scritta preliminare n. 2

Tempo e spazio di calcolo (continua)

Soluzioni. 1 x + x. x = t 2 e dx = 2t dt. 1 2t dt = 2. log 2 x dx. = x log 2 x x 2 log x 1 x dx. = x log 2 x 2 log x dx.

Funzioni derivabili (V. Casarino)

A.A CORSO DI ALGEBRA 1. PROFF. P. PIAZZA, E. SPINELLI. SOLUZIONE ESERCIZI FOGLIO 5.

Analisi Matematica III 04 Novembre In coordinate polari l insieme K è rappresentabile come unione dei seguenti insiemi normali

Notazioni asintotiche. Martedì 30 settembre 2014

Mergesort (cont.) 2018/ Lezione 16. Venerdì, 16 Novembre 2018

Gli algoritmi ricorsivi di ordinamento. Paolo Camurati Dip. Automatica e Informatica Politecnico di Torino

Analisi algoritmi ricorsivi e relazioni di ricorrenza

Dipartimento di Elettronica, Informazione e Bioingegneria API 2013/4

Nozioni di base (II Parte)

Successioni numeriche (II)

Analisi Matematica 1. Serie numeriche. (Parte 2) Dott. Ezio Di Costanzo.

Ricerca. Per ricerca si intende il procedimento di localizzazione di una particolare informazione in un elenco di dati.

Definizioni di base. Algoritmo: procedura computazionale ben definita che prende valori in input e produce valori in output.

Esercizi di Algoritmi e Strutture Dati

5) Equazioni di ricorrenza

Elementi di Calcolo Scientifico per l Ingegneria A.A

Vi sono naturalmente altri metodi per risolvere le ricorrenze. I più comuni sono:

Esercitazione 5 Algorithmi e Strutture Dati (Informatica) A.A 2015/2016

Algoritmi e Strutture Dati

Introduzione agli algoritmi Prova di esame del 19/9/2016 Prof.sse E. Fachini - R. Petreschi. Parte prima

Transcript:

Esercitazione 7 Algorithmi e Strutture Dati (Informatica) A.A 015/016 Tong Liu April 1, 016 Elementi fondamentali Notazioni Asintotiche Definition 1.1. (Notazione O) Sia g (n) una funzione di costo; indichiamo con O(g (n)) l insieme delle funzioni f (n) tali per cui: c > 0,m 0 : f (n) cg (n), n m (1.1) g (n) è un limite asintotico superiore per f (n). Definition 1.. (Notazione Ω) Sia g (n) una funzione di costo; indichiamo con Ω(g (n)) l insieme delle funzioni f (n) tali per cui: c > 0,m 0 : cg (n) f (n), n m (1.) g (n) è un limite asintotico inferiore per f (n). Definition 1.3. (Notazione Θ) Sia g (n) una funzione di costo; indichiamo con Θ(g (n)) l insieme delle funzioni f (n) tali che per cui: c 1 > 0,c > 0,m 0 : c 1 g (n) f (n) c g (n), n m (1.3) Tecniche su calcolo della complessità Data un equazione di ricorrenza at (n/b) + cn β (1.4) 1

Metodo di sostituzione: Sostituire T (n) con cg (n), si usa spesso in analisi per tentativi. Metodo di iterazione: Iterare sull equazione di ricorrenza T (n), e.g. T (n/) + d = T (n/4) + d =... = T (1) + lognd. Analisi per tentativi: Intuire il valore di g (n) e sostituire il valore nella relazione di ricorrenza, dimostrare per l induzione tale valore è una. Si solito, si conclude definendo il valore di c. Analisi per livelli di ricorsione: Si espande T (n) e si osserva l andamento di cn β alla fine si cerca di stimare il costo di intera procedura. Teorema delle ricorrenze Noto anche come teorema pricipale, teorema di esperto, master theorem. Definition 1.4. Ricorrenze lineari con partizione bilanciata Siano a e b costanti intere tali che a 1 e b, e c,d e β costanti reali tali che c > 0,d 0, e β 0. Sia T (n) data dalla relazione di ricorrenza: d per n = 1 at (n/b) + cn β per n > 1 (1.5) Posto α = log a logb, allora: O(n α ) O(n α logn) O(n β ) se α > β se α = β se α < β (1.6) Definition 1.5. Ricorrenze lineari di ordine costante Siano a 1, a,..., a n b costanti intere non negative, con h costante positiva, c e β costanti reali tali che c > 0 e β 0, sia T (n) definita dalla relazione di ricorrenza: Posto a = 1 i h a i allora: costante a i T (n i ) + cn β 1 i h O(n β+1 ) se a = 1 O(a n n β ) se a per n m h altrimenti (1.7) (1.8)

Equazioni matematiche utili n 1 i = n 1 n n(n + 1) i = log x y = log x + log y, log x y = log x log y log x k = k log x, a log a x = log a a x = x log a a = 1, log a 1 = 0 3

Esercizi Esercizio 1 Algorithm 1 FUN1 1: procedure FUN1(int n) : if n then 3: Return n; 4: else 5: Return FUN1(n 1) - FUN1(n ); 6: end if 7: end procedure 1, Determinare un limite inferiore sufficientemente accurato del tempo di esecuzione T (n), Determinare un limite superiore sufficientemente accurato del tempo di esecuzione T (n) Il tempo di esecuzione T(n) può essere calcolato come della seguente equazione di ricorrenza: c1 se n (1.9) T (n 1) + T (n ) + c altrimenti con c 1 e c opportune costanti positive. Per studiare il valore di T (n) è importante osservare che la funzione T (b) è monotona crescente, ossia risulta T (n) T (n 1), da questa osservazione possiamo scrivere T (n 1) + T (n ) + c T (n 1) + c 4T (n ) + c + c 8T (n 3) + 4c + c + c... k T (n k) +... n T (0) + n 1 k 1 i c i c = n c 1 + ( n 1)c = n (c 1 + c ) c Da cui possiamo concludere che O( n ). In realtà, quando arriviamo al T (n 1) + c possiamo già applicare la teorema delle ricorrenze lineare per concludere il risultato. Per la seconda domanda, ragionando in maniera simile, avremmo: T (n 1) + T (n ) + c T (n ) + c 4T (n 4) + c + c 8T (n 6) + 4c + c + c 4

... k 1 k T (n k) + i c... n T (n n n 1 ) + i c = n c 1 + ( n 1)c = n (c 1 + c ) c Possiamo concludere che Ω( n ). Esercizio [15/09/015] Si calcoli la complessità T (n) della seguente procedura (Pseudocodice ), chiamata con crazy(a,1,n) Algorithm L algoritmo da calcolare la cui complessià 1: procedure CRAZY(integer[] A, integer i, integer j ) : if i j then 3: return 4: end if 5: Integer h (i+j ) 6: for Integer k i + 1to j 1 do 7: h h + 1 8: end for 9: return h (i+j ) crazy(a,i + 1, ) + crazy(a, (i+j ) + 1, j-1) 10: end procedure Ad ogni chiamata della funzione crazy(), il ciclio della linea 6 comporta un costo di O(n), per la procedura ricorsiva della linea 9, infatti comporta un costo di T ( n ) + T ( n ). Quindi il costo della procedura è il seguente: T (n/) + n (1.10) Applichiamo il teorema delle ricorrenze, otteniamo O(n logn) Esercizio 3 [Libro.13] Scrivere un algoritmo ricorsivo che riceve come parametro un vettore di n elementi tale che il suo tempo di esecuzione T (n) verifichi la relazione d per n k 5T (n/) + T (n 1) + cn per n > k (1.11) 5

con c,d e k costanti opportune. L ordine di grandezza di T (n) è polimoniale oppure no? Una possibile funzione (Pseudocodice 3) può essere il seguente: Algorithm 3 una possibile per l esercizio 3 1: procedure CRAZY(integer[] A,integer i,integer j ) : integer c 0 3: if j i > 10 then 4: for k 1 to 5 do 5: c c+ crazy(a,i + k, (i + j )/ ) 6: end for 7: c c+ crazy(a,i, j 1) 8: c c+ crazy(a,i + 1, j ) 9: for k 1 i to j do 10: for k k 1 + 1 to j do 11: if A[k1] = A[k] then 1: c c + 1 13: end if 14: end for 15: end for 16: end if 17: return c 18: end procedure Nota: funzioni in riga 7 e riga 8 hanno lo stesso costo (T (n 1)), il ciclio annidato in riga 9 ha il costo O(n ). Il costo della funzione è polimoniale, si può dimostrare con il metodo di sostituzione. Esercizio 4 Analisi con scambio di variabile [Libro.14] Si dimostri che la ricorrenza d se n k T ( n) + logn se n > k (1.1) con d e k costanti opportune, ha O(log n log log n). Per ridurre l equazione verso il formato di quello di teorema ddelle ricorrenze, dobbiamo eliminare il logn Quindi, poniamo n = m. La ricorrenza viene riscritta nel modo seguente: T ( m ) = T ( m/ ) + log m (1.13) 6

Ora poniamo S(m) = T ( m ), sostituiamo e semplifichiamo: S(m) = S(m/) + m (1.14) la cui sappiamo essere S(m) = Θ(m logm). Sapendo che m = logn, otteniamo: Esercizio 5.1 Θ(logn loglogn) (1.15) [3/06/015,Libro.] Per dimostrare che una funzione g (n) = O(f (n)) si può calcolare il limite per n che tende all infinito del rapporto g (n) f (n). Se tale limite esiste ed è uguale ad una costante allora g (n) = O(f (n)), mentre se il limite è infinito allora g (n) cresce più di f (n). Si dimostri che O(logn) = O(n a ) per ogni a > 0 n logn logn lim n n a = lim n n a 1 calcolare la derivata applicando la regola de L Hôpital = lim n n 1 (a 1)n a = lim n 1 (a 1)n a 1 = 0 Esercizio 5. Dimostrare logn! = θ(n logn) logn! = O(n logn) perchè: n! = n (n 1) 1 nn...n = n n logn! logn n logn! = O(n logn) logn! = Ω(n logn) perchè: Metà dei fattori in n! superano n/, l altra metà supera 1. Quindi: n n n 1 n! = ( n ) n 7

Applicando il logaritmo, otteniamo: logn! log( n ) n = n log n = n logn n log = Ω(n logn) Esercizio 5.3 n Dimostrare i h è O(n h+1 ) n n i h n h = nn h = n h+1 = O(n h+1 ) Credits: Prof. Alberto Montresor, Prof. Moreno Marzolla 8