Algoritmi e Strutture Dati
|
|
|
- Gennaro Ranieri
- 8 anni fa
- Просмотров:
Транскрипт
1 Algoritmi Ricorsivi e Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino A.A. 2006/07
2 I conigli di Fibonacci Ricerca Binaria L isola dei conigli Leonardo da Pisa (noto anche come Fibonacci) si interessò di molte cose, tra cui il seguente problema di dinamica delle popolazioni: Quanto velocemente si espanderebbe una popolazione di conigli sotto appropriate condizioni? In particolare, partendo da una coppia di conigli in un isola deserta, quante coppie si avrebbero nell anno n?
3 I conigli di Fibonacci Ricerca Binaria Le regole di riproduzione Una coppia di conigli genera due coniglietti ogni anno I conigli cominciano a riprodursi soltanto al secondo anno dopo la loro nascita I conigli sono immortali
4 I conigli di Fibonacci Ricerca Binaria L albero dei conigli La riproduzione dei conigli può essere descritta in un albero come segue:
5 I conigli di Fibonacci Ricerca Binaria La regola di espansione Nell anno n, ci sono tutte le coppie dell anno precedente, più una nuova coppia di conigli per ogni coppia presente due anni prima Indicando con F n il numero di coppie dell anno n, abbiamo la seguente relazione di ricorrenza: F (n) = { F (n 1) + F (n 2) se n 3 1 se n = 1, 2
6 I conigli di Fibonacci Ricerca Binaria Il problema Come calcoliamo F (n)?
7 I conigli di Fibonacci Ricerca Binaria Un approccio numerico Possiamo usare una funzione matematica che calcoli direttamente i numeri di Fibonacci Si può dimostrare che: F (n) = 1 5 ( φ n ˆφ n) dove e φ = ˆφ =
8 I conigli di Fibonacci Ricerca Binaria Algoritmo fibonacci1 algoritmo fibonacci1(intero n) intero return 1 5 ( φ n ˆφ n)
9 I conigli di Fibonacci Ricerca Binaria L algoritmo fibonacci1 è corretto? Problema: qual è l accuratezza su φ e ˆφ per ottenere un risultato corretto? Ad esempio con tre cifre decimali: φ e ˆφ n fibonacci1 arrotondamento F (n)
10 I conigli di Fibonacci Ricerca Binaria L algoritmo fibonacc12 L algoritmo fibonacci1 non è corretto; un possibile approccio alternativo consiste nell utilizzare un algoritmo ricorsivo: algoritmo fibonacci2(intero n) intero if (n 2) return 1 else return fibonacci2(n 1) + fibonacci2(n 2) Opera solo su numeri interi
11 I conigli di Fibonacci Ricerca Binaria L algoritmo fibonacc12 Il costo di esecuzione di fibonacci2 è espresso dalla seguente funzione ricorsiva (equazione di ricorrenza o semplicemente ricorrenza) { T (n 1) + T (n 2) se n 3 T (n) = c se n = 1, 2 vi ricorda qualcosa??
12 I conigli di Fibonacci Ricerca Binaria L algoritmo fibonacc12 Il costo di esecuzione di fibonacci2 è espresso dalla seguente funzione ricorsiva (equazione di ricorrenza o semplicemente ricorrenza) { T (n 1) + T (n 2) se n 3 T (n) = c se n = 1, 2 vi ricorda qualcosa?? { F (n 1) + F (n 2) se n 3 F (n) = 1 se n = 1, 2
13 I conigli di Fibonacci Ricerca Binaria L algoritmo fibonacc12 Il costo di esecuzione di fibonacci2 è espresso dalla seguente funzione ricorsiva (equazione di ricorrenza o semplicemente ricorrenza) { T (n 1) + T (n 2) se n 3 T (n) = c se n = 1, 2 vi ricorda qualcosa?? { F (n 1) + F (n 2) se n 3 F (n) = 1 se n = 1, 2 Possiamo dimostrare che T (n) = cf (n) = c 1 5 ( φ n ˆφ n)
14 I conigli di Fibonacci Ricerca Binaria L algoritmo fibonacc12 In realtà fibonacci2 è un algoritmo molto lento: T (n) = O(2 n ) Dimostrazione. Dalla definizione di O, dobbiamo dimostrare che esistono delle costanti positive c 0 ed n 0 tali che T (n) c 0 2 n per ogni n n 0. La prova è per induzione su n
15 I conigli di Fibonacci Ricerca Binaria Induzione Problema: dimostrare che una affermazione Aff (n) è vera per ogni n 0 Theorem (induzione 1) Se 1 Aff (0) è vera; 2 Aff (n 1) vera implica Aff (n) vera; allora Aff (n) è vera per ogni n 0 Theorem (induzione 2) Se 1 Aff (0) è vera; 2 Aff (n ) vera per ogni n < n implica Aff (n) vera; allora Aff (n) è vera per ogni n 0
16 I conigli di Fibonacci Ricerca Binaria Dimostrazione per induzione: un esempio Proviamo a dimostrare per induzione su n che Aff (n) = n i = i=1 n(n + 1) 2 Caso Base(i = 1): 1 i=1 i = 1 = 1(2) 2 = 1(1 + 1) 2 OK Passo induttivo: Assumiamo Aff (n 1) vera, cioè n 1 i = i=1 (n 1)n 2 e dimostriamo che, allora, anche Aff (n) è vera
17 I conigli di Fibonacci Ricerca Binaria Dimostrazione per induzione: un esempio n n 1 i = i + n = i=1 i=1 = n(n 1 + 2) 2 (n 1)n 2 = + n = n(n + 1) 2 (n 1)n + 2n 2 OK
18 I conigli di Fibonacci Ricerca Binaria L algoritmo fibonacc12 T (n) = O(2 n ). Dalla definizione di O, dobbiamo dimostrare che esistono delle costanti positive c 0 ed n 0 tali che T (n) c 0 2 n per ogni n n 0. Casi base n = 1: T (1) = c c 0 2 basta scegliere c 0 c/2 n = 2: T (2) = c c 0 4 vero se c 0 c/2 (infatti c 0 c/2 implica 4c 0 4 c/2 = 2c c) Passo induttivo: assumiamo T (n ) c2 n per ogni n n. Allora: T (n) = T (n 1) + T (n 2) c 0 2 n 1 + c 0 2 n 2 = c 0 2 n 2 (2 + 1) c 0 2 n 2 4 = c 0 2 n
19 I conigli di Fibonacci Ricerca Binaria Ricerca in un insieme non ordinato ricercasequenziale(array A, elem x) for i 1 to lenght[a] do if A[i] = x return trovato return non trovato T best (n) = 1 T worst (n) = n T avarange (n) = (n + 1)/2 x è in prima posizione x è in ultima posizione oppure non è in L sotto un assunzione di equi-distribuzione delle istanze
20 I conigli di Fibonacci Ricerca Binaria Ricerca in un insieme ordinato RicercaBinaria(array A, elem x) n Lunghezza di A if n=0 return non trovato i n/2 if A[i] = x return trovato else if A[i] > x RicercaBinaria(A[1; i 1], x) else RicercaBinaria(A[i + 1; n], x)
21 I conigli di Fibonacci Ricerca Binaria Ricerca in un insieme ordinato RicercaBinaria(array A, elem x) n Lunghezza di A if n=0 return non trovato i n/2 if A[i] = x return trovato else if A[i] > x RicercaBinaria(A[1; i 1], x) else RicercaBinaria(A[i + 1; n], x) Come analizziamo questo algoritmo?
22 I conigli di Fibonacci Ricerca Binaria Tempo di esecuzione di RicercaBinaria È descritto mediante la seguente equazione di ricorrenza : T (n) = { c + T ( (n 1)/2 ) se n > 1 1 se n = 1
23 Cosa è una relazione di ricorrenza Una relazione di ricorrenza - o più semplicemente ricorrenza - è una equazione che descrive una funzione in termini del suo valore con input più piccoli Esistono tre grandi metodi per risolvere le ricorrenze - ovvero per ottenere dei limiti asintotici Θ o O Il metodo di sostituzione Il metodo iterativo metodo della albero di ricorsione Il metodo dell esperto che consente di calcolare i limiti per ricorrenze della forma T (n) = at (n/b) + f (n) dove a 1, b > 0 ed f (n) è una funzione data
24 : un caso semplice : consiste nello srotolare la ricorsione fino ad ottenere una sommatoria dipendente da n Esempio: T (n) = { 1 + T (n/2) se n > 1 1 se n = 1 Proviamo ad applicare il metodo iterativo a T (n) T (n) = 1 + T (n/2) = T (n/4) = 2 + T (n/4) = T (n/8) = 3 + T (n/8) = T (n/16) = 4 + T (n/16) =
25 : un caso semplice T (n) = 1 + T (n/2) = T (n/4) = 2 + T (n/4) = 2 + T (n/2 2 ) = T (n/8) = 3 + T (n/8) = 3 + T (n/2 3 ) = T (n/16) = 4 + T (n/16) = 4 + T (n/2 4 ) = = k + T (n/2 k ) Continuiamo a srotolare la ricorsione fin quando n/2 k = 1; ora n/2 k = 1 implica 2 k = n e quindi k = log 2 n (k è il logaritmo in base 2 di n). Allora: T (n) = log 2 n + 1 = O(log 2 n)
26 : un altro esempio (meno semplice) Il metodo iterativo può essere applicato a qualsiasi ricorrenza, ma a volte può essere di difficile soluzione Esempio: T (n) = { n + T (n/2) se n > 1 1 se n = 1 Proviamo ad applicare il metodo iterativo a T (n) T (n) = n + T (n/2) = n + n/2 + T (n/4) = n + n/2 + n/4 + T (n/8) = n + n/2 + n/4 + n/8 + T (n/16) =
27 : un altro esempio (meno semplice) T (n) = n + T (n/2) = n + n/2 + T (n/4) = n + n/2 + n/4 + T (n/8) = n + n/2 + n/2 2 + n/2 3 + T (n/16) = = n + n/2 + n/2 2 + n/ n/2 k 1 + T (n/2 k ) = k 1 i=0 n/2i + T (n/2 k ) Di nuovo ci fermiamo k = log 2 n. Allora: T (n) = log 2 n 1 i=0 log 2 n 1 n/2 i + 1 = n i=0 (1/2) i + 1
28 : un altro esempio (meno semplice) Fact T (n) = log 2 n 1 i=0 log 2 n 1 n/2 i + 1 = n m i=0 i=0 α i = 1 αm+1 1 α (1/2) i + 1 log 2 n 1 T (n) = n (1/2) i + 1 = n 1 (1/2)log 2 n 1 (1/2) i=0 + 1
29 : un altro esempio (meno semplice) T (n) = n 1 (1/2)log 2 n 1 (1/2) + 1
30 : un altro esempio (meno semplice) T (n) = n 1 (1/2)log 2 n 1 (1/2) + 1 = n 1 (1/2)log 2 n 1/2 + 1
31 : un altro esempio (meno semplice) T (n) = n 1 (1/2)log 2 n 1 (1/2) + 1 = n 1 (1/2)log 2 n 1/2 + 1 = 2n (1 (1/2) log 2 n ) + 1
32 : un altro esempio (meno semplice) T (n) = n 1 (1/2)log 2 n 1 (1/2) + 1 = n 1 (1/2)log 2 n 1/2 + 1 = 2n (1 (1/2) log 2 n ) + 1 = 2n (1 (1/2 log 2 n )) + 1
33 : un altro esempio (meno semplice) T (n) = n 1 (1/2)log 2 n 1 (1/2) + 1 = n 1 (1/2)log 2 n 1/2 + 1 = 2n (1 (1/2) log 2 n ) + 1 = 2n (1 (1/2 log 2 n )) + 1 = 2n (1 1/n) + 1
34 : un altro esempio (meno semplice) T (n) = n 1 (1/2)log 2 n 1 (1/2) + 1 = n 1 (1/2)log 2 n 1/2 + 1 = 2n (1 (1/2) log 2 n ) + 1 = 2n (1 (1/2 log 2 n )) + 1 = 2n (1 1/n) + 1 = 2n ((n 1)/n) + 1
35 : un altro esempio (meno semplice) T (n) = n 1 (1/2)log 2 n 1 (1/2) + 1 = n 1 (1/2)log 2 n 1/2 + 1 = 2n (1 (1/2) log 2 n ) + 1 = 2n (1 (1/2 log 2 n )) + 1 = 2n (1 1/n) + 1 = 2n ((n 1)/n) + 1 = 2 (n 1) + 1 = 2n 1 = O(n)
36 Algoritmi ricorsivi Vengono usati in alternativa al metodo iterativo Un albero di ricorsione è un albero in cui ogni nodo rappresenta il costo di un sottoproblema da qualche parte nell insieme delle chiamate ricorsive Consideriamo la ricorrenza { n + 2T (n/2) se n > 1 T (n) = 1 se n = 1 e costruiamo la derivazione dell albero delle ricorrenze per T (n)
37 : un esempio T(n) n T(n/2) T(n/2) (a) (b) n n/2 n/2 T(n/4) T(n/4) T(n/4) T(n/4) (c)
38 Algoritmi ricorsivi n n/2 n/2 n/4 n/4 n/4 n/4 T(n/8) T(n/8) T(n/8) T(n/8) T(n/8) T(n/8) T(n/8) T(n/8) (d)
39 Algoritmi ricorsivi 0 n 1 n/2 n/2 2 n/4 n/4 n/4 n/4 3 n/8 n/8 n/8 n/8 n/8 n/8 n/8 n/8 k T(1) T(1) T(1) T(1) T(1) T(1) T(1) T(1) T(1) T(1) T(1) T(1) T(1) T(1) T(1) T(1)
40 Algoritmi ricorsivi Sia i un dato livello dell albero di ricorsione (i = 0,..., #livelli) (al momento, non meglio specificato) Quanti nodi ci sono al livello i? esattamente 2 i nodi (al livello 0 abbiamo 1 = 2 0 nodi, ed ogni livello ha un numero di nodi doppio rispetto al livello precedente) Quale è il costo di un nodo al livello i? ogni nodo al livello i costa n/2 i nodi (l unico nodo al livello 0 ha un costo pari ad n = n/1 = n/2 0, ed ogni volta che scendiamo di livello il costo dei nodi si dimezza) il costo complessivo dei nodi al livello i è #nodi(i) costo nodo(i) = 2 i n/2 i = n
41 Algoritmi ricorsivi Quale è il costo complessivo della chiamata T (n)? T (n) = #livelli j=0 costo livello(j) = #livelli j=0 Ci rimane da determinare questo #livelli n = n (#livelli + 1) L ultimo livello corrisponde ad una serie di chiamate di T (1) (ci fermiamo quando la dimensione del problema è 1) 1 = n/2 k con k pari all altezza dell albero di ricorsione e quindi al #livelli: n/2 k = 1 implica 2 k = n e quindi #livelli = k = log 2 n
42 Algoritmi ricorsivi Ricapitolando: T (n) = n (log 2 n + 1) = Θ(n log 2 n)
43 : indovinare una possibile soluzione ed usare l induzione matematica per dimostrare che la soluzione è corretta Consideriamo di nuovo la ricorrenza { n + T (n/2) se n > 1 T (n) = 1 se n = 1 e dimostriamo, applicando il metodo della sostituzione, che T (n) = O(n)
44 Dobbiamo dimostrare che che esistono delle costanti positive c ed n 0 tali che 0 T (n) cn per ogni n n 0 Caso base n = 1: T (1) = 1 c1 = c per ogni costante c 1 (positiva) Passo induttivo: assumiamo T (n ) cn per ogni n < n. Allora T (n) = n + T (n/2) n + cn/2 = n(1 + c/2) se scegliamo c 2 1 cn 1 Infatti se c 2, allora 1 c/2 e 1 + c/2 c/2 + c/2 = c
45 : un altro esempio Consideriamo la seguente ricorrenza { n + 2T (n/2) se n > 1 T (n) = 1 se n = 1 Dimostriamo che T (n) = O(n log 2 n) ossia che che esistono delle costanti positive c ed n 0 tali che 0 T (n) cn log 2 n per ogni n n 0 Caso base n = 1 : T (1) = 1 c0 = 0 è chiaramente falsa n = 2: T (2) = 2 + 2T (1) = 4 2c basta scegliere c 2
46 : un altro esempio Passo induttivo: assumiamo T (n ) cn log 2 n per ogni n < n. Allora T (n) = n + 2T (n/2) n + 2c(n/2) log 2 (n/2) = n + cn log 2 (n/2) = n + cn(log 2 n log 2 2) = n + cn(log 2 n 1) = n + cn log 2 n cn = cn log 2 n + n(1 c) cn log 2 n per ogni c 2 Quindi, se scegliamo c 2 ed n 0 = 2, allora T (n) cn log 2 n per ogni n n 0
47 Teorema dell esperto Teorema Master Permette di analizzare algoritmi basati sulla tecnica del divide et impera: dividi il problema (di dimensione n) in a sotto-problemi di dimensione n/b risolvi i sotto-problemi ricorsivamente ricombina le soluzioni Sia f (n) il tempo per dividere e ricombinare istanze di dimensione n. La relazione di ricorrenza è data da: { at (n/b) + f (n) se n > 1 T (n) = 1 se n = 1
48 Teorema dell esperto Teorema Master La soluzione della ricorrenza { at (n/b) + f (n) se n > 1 T (n) = 1 se n = 1 dipende da f (n). Più precisamente: 1 Se f (n) = O(n log b a ε ) per qualche costante ε > 0, allora T (n) = Θ(n log b a ) 2 Se f (n) = Θ(n log b a ), allora T (n) = Θ(n log b a log 2 n) 3 Se f (n) = Ω(n log b a+ε ) per qualche costante ε > 0 e se, per qualche costante c < 1, af (n/b) cf (n), allora T (n) = Θ(f (n))
49 Applicazioni del teorema dell esperto T (n) = n + 2T (n/2) a = b = 2, log b a = 1 f (n) = Θ(n) = Θ(n log b a ) (caso 2 del teorema master) T (n) = Θ(n log b a log 2 n) = Θ(n log 2 n)
50 Applicazioni del teorema dell esperto T (n) = c + 9T (n/3) a = 9, b = 3, log b a = log 3 9 = 2 f (n) = c = O(n) = O(n log b a ε ) = O(n 2 ε ) con ε = 1 (caso 1 del teorema master) T (n) = Θ(n log b a ) = Θ(n 2 )
51 Applicazioni del teorema dell esperto T (n) = n + 3T (n/9) a = 3, b = 9, log b a = log 9 3 = 1/2 (3 = 9 = 9 1/2 ) f (n) = n = Ω(n) = Ω(n log 9 3+ε ) con ε = 1/2 inoltre, af (n/b) = 3f (n/9) = 3(n/9) = 1/3n cf (n), per c = 1/3 (caso 3 del teorema master) T (n) = Θ(f (n)) = Θ(n)
Algoritmi e Strutture Dati
Analisi asintotica e Ricorrenze Esercizi Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino A.A. 2006/07 Notazioni O, Ω e Θ Parte I Notazioni
Tempo e spazio di calcolo (continua)
Tempo e spazio di calcolo (continua) I numeri di Fibonacci come case study (applichiamo ad un esempio completo le tecniche illustrate nei lucidi precedenti) Abbiamo introdotto tecniche per la correttezza
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati Capitolo 1 Un introduzione informale agli algoritmi Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Definizione informale di algoritmo Insieme di istruzioni, definite
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati Informazioni sul corso + Un introduzione informale agli algoritmi Domenico Fabio Savo 1 Domenico Fabio Savo Email: [email protected] Web: http://www.dis.uniroma1.it/~savo
Tecniche Algoritmiche: divide et impera
Tecniche Algoritmiche: divide et impera Una breve presentazione F. Damiani - Alg. & Lab. 04/05 Divide et impera (o Divide and conquer) Per regnare occorre tenere divisi i nemici e trarne vantaggio F. Damiani
Algoritmi e Strutture Dati
Analisi Asintotica Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino Un graduale processo di astrazione Passo 1: abbiamo ignorato il costo effettivo
Macchina RAM. Modelli di calcolo e metodologie di analisi. Linguaggio di una macchina RAM. Algoritmi e Strutture Dati. Istruzioni.
Algoritmi e Strutture Dati Macchina RAM Nastro di ingresso Modelli di calcolo e metodologie di analisi Contatore istruzioni Programm a Accumulatore Unità centrale M[0] M[1] Nastro di uscita Basato su materiale
Algoritmi e strutture dati. Analisi di algoritmi Funzioni di costo, notazione asintotica
Algoritmi e strutture dati Analisi di algoritmi Funzioni di costo, notazione asintotica Alberto Montresor Università di Trento 2016/09/11 This work is licensed under a Creative Commons Attribution-ShareAlike
Algoritmi e Strutture Dati
Analisi di algoritmi Maria Rita Di Berardini 2, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino 2 Polo di Scienze Università di Camerino ad Ascoli Piceno Parte I Analisi
Algoritmi e Strutture Dati
Heap Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino A.A. 2006/07 Heap Heap binari: definizione Un heap binario è una struttura dati composta
Lezione 4. Problemi trattabili e soluzioni sempre più efficienti. Gianluca Rossi
Lezione 4 Problemi trattabili e soluzioni sempre più efficienti Gianluca Rossi Trattabile o intrattabile? Consideriamo ora il problema, ben noto a tutti gli studenti a partire dalla scuola media, di calcolare
Algoritmi (9 CFU) (A.A )
Algoritmi (9 CFU) (A.A. 2009-10) Equazioni di ricorrenza Prof. V. Cutello Algoritmi 1 Overview Definiamo cos è una ricorrenza Introduciamo 3 metodi per risolvere equazioni di ricorrenza Sostituzione e
Programmazione dinamica
Programmazione dinamica Primi esempi 29 ottobre 2014 Punto della situazione Abbiamo visto: analisi asintotica relazioni di ricorrenza (vedremo altri esempi) prima tecnica di programmazione: divide-etimpera
Esercizi di Algoritmi e Strutture Dati
Esercizi di Algoritmi e Strutture Dati Moreno Marzolla http://www.moreno.marzolla.name/ Ultima Modifica: 7 ottobre 202 Copyright Portions of this work are Copyright 202, Moreno Marzolla. This work is licensed
5. DIVIDE AND CONQUER I
Divide-et-Impera (Divide and conquer) 5. DIVIDE AND CONQUER I Mergesort e Relazioni di ricorrenza Esempi di progettazione D&I Moltiplicazione di interi Contare inversioni Divide-et-Impera. Definizione
Analisi algoritmi ricorsivi e relazioni di ricorrenza
Analisi algoritmi ricorsivi e relazioni di ricorrenza Punto della situazione Finora abbiamo affrontato: il tempo di esecuzione di un algoritmo, l analisi asintotica con le notazioni asintotiche e la tecnica
Il problema dello zaino
Il problema dello zaino Programmazione Dinamica Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino 25 gennaio 2010 Il problema dello zaino 0-1
Esempio : i numeri di Fibonacci
Esempio : i numeri di Fibonacci La successione di Fibonacci F 1, F 2,... F n,... è definita come: F 1 =1 F 2 =1 F n =F n 1 F n 2,n 2 Leonardo Fibonacci (Pisa, 1170 Pisa, 1250) http://it.wikipedia.org/wiki/leonardo_fibonacci
Cammini minimi fra tutte le coppie
Capitolo 12 Cammini minimi fra tutte le coppie Consideriamo il problema dei cammini minimi fra tutte le coppie in un grafo G = (V, E, w) orientato, pesato, dove possono essere presenti archi (ma non cicli)
A.A CORSO DI ALGEBRA 1. PROFF. P. PIAZZA, E. SPINELLI. SOLUZIONE ESERCIZI FOGLIO 5.
A.A. 2015-2016. CORSO DI ALGEBRA 1. PROFF. P. PIAZZA, E. SPINELLI. SOLUZIONE ESERCIZI FOGLIO 5. Esercizio 5.1. Determinare le ultime tre cifre di n = 13 1625. (Suggerimento. Sfruttare il Teorema di Eulero-Fermat)
Esercizi sulla complessità di frammenti di pseudo-codice
Esercizi sulla complessità di frammenti di pseudo-codice Esercizio 1 Si determini la complessità temporale del seguente frammento di pseudo-codice in funzione di n. Il ciclo contiene solo istruzioni elementari;
Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti
Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti Alberto Montresor 19 Agosto, 2014 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente,
Note per la Lezione 6 Ugo Vaccaro
Progettazione di Algoritmi Anno Accademico 2016 2017 Note per la Lezione 6 Ugo Vaccaro Ancora sulla tecnica Programmazione Dinamica Nella lezione scorsa abbiamo appreso che la tecnica Divide-et-Impera,
Problemi, istanze, soluzioni
lgoritmi e Strutture di Dati II 2 Problemi, istanze, soluzioni Un problema specifica una relazione matematica tra dati di ingresso e dati di uscita. Una istanza di un problema è formata dai dati di un
Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti
Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti Alberto Montresor 27 marzo 2012 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente,
Un tipico esempio è la definizione del fattoriale n! di un numero n, la cui definizione è la seguente:
Pag 29 4) La ricorsione 4.1 Funzioni matematiche ricorsive Partiamo da un concetto ben noto, quello delle funzioni matematiche ricorsive. Una funzione matematica è detta ricorsiva quando la sua definizione
Dati e Algoritmi I (Pietracaprina) Esercizi sulle Nozioni di Base
Dati e Algoritmi I (Pietracaprina) Esercizi sulle Nozioni di Base Dati e Algoritmi I (Pietracaprina): Esercizi 1 Problema 1. Sia T una stringa arbitraria di lunghezza n 1 su un alfabeto Σ. È sempre possibile
Esercizi di Algoritmi e Strutture Dati
Esercizi di Algoritmi e Strutture Dati Moreno Marzolla [email protected] Ultimo aggiornamento: 3 novembre 2010 1 Trova la somma/1 Scrivere un algoritmo che dati in input un array A[1... n] di n interi
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA. INFORMATICA B Ingegneria Elettrica. La ricorsione
INFORMATICA B Ingegneria Elettrica La ricorsione Ricorsione Che cos è la ricorsione? Un sottoprogramma P richiama se stesso (ricorsione diretta) Un sottoprogramma P richiama un altro sottoprogramma Q che
Programmazione dinamica
Programmazione dinamica Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Violetta Lonati Programmazione
Algoritmi e Strutture Dati
Introduzione al Corso Maria Rita Di Berardini (Camerino), Emanuela Merelli (Ascoli) 1 1 Scuola di Scienze e Tecnologie - Sezione di Informatica Università di Camerino Parte I Il concetto di Algoritmo Il
02 - Logica delle dimostrazioni
Università degli Studi di Palermo Facoltà di Economia Dipartimento di Scienze Economiche, Aziendali e Statistiche Appunti del corso di Matematica 0 - Logica delle dimostrazioni Anno Accademico 015/016
Esercitazione. Ricorsione. May 31, Esercizi presi dal libro di Rosen
Esercitazione Ricorsione May 31, 2016 Esercizi presi dal libro di Rosen Problema 2 a) sezione 5.3 Data la seguente funzione definita ricorsivamente come: f(n+1) = 2f(n) f(0) = 3 Determinare il valore di
5) Equazioni di ricorrenza
Pag 37 5) Equazioni di ricorrenza Valutare la complessità di un algoritmo ricorsivo è, in genere, più laborioso che nel caso degli algoritmi iterativi. Infatti, la natura ricorsiva della soluzione algoritmica
Albero di Riscorsione
Albero di Riscorsione Albero di ricorsione Un albero di ricorsione è un modo di visualizzare cosa accade in un algoritmo divide et impera L etichetta della radice rappresenta il costo non ricorsivo della
Dati e Algoritmi I (Pietracaprina) Esercizi sugli Alberi
Dati e Algoritmi I (Pietracaprina) Esercizi sugli Alberi Dati e Algoritmi I (Pietracaprina): Esercizi 1 Problema 1 Dimostrare che un albero non vuoto con n nodi interni, dove ogni nodo interno ha almeno
04 - Logica delle dimostrazioni
Università degli Studi di Palermo Facoltà di Economia CdS Sviluppo Economico e Cooperazione Internazionale Appunti del corso di Matematica 04 - Logica delle dimostrazioni Anno Accademico 013/014 D. Provenzano,
Università degli Studi di Roma Tor Vergata. Principio di induzione matematica
Università degli Studi di Roma Tor Vergata. Principio di induzione matematica Il Principio di induzione matematica è una tecnica di dimostrazione che permette la dimostrazione simultanea di infinite affermazioni.
Alberi di copertura. Mauro Passacantando. Dipartimento di Informatica Largo B. Pontecorvo 3, Pisa
Alberi di copertura Mauro Passacantando Dipartimento di Informatica Largo B. Pontecorvo, Pisa [email protected] M. Passacantando TFA 0/ - Corso di Ricerca Operativa Università di Pisa / 9 Definizioni
Esercizi sul Principio d Induzione
AM110 - ESERCITAZIONI I - II - 4 OTTOBRE 01 Esercizi sul Principio d Induzione Esercizio svolto 1. Dimostrare che per ogni n 1, il numero α(n) := n 3 + 5n è divisibile per 6. Soluzione. Dimostriamolo usando
Algoritmi e Strutture Dati. Capitolo 1 Un introduzione informale agli algoritmi
Algoritmi e Strutture Dati Capitolo 1 Un introduzione informale agli algoritmi Cos è un algoritmo? Procedimento chiaro e non ambiguo per risolvere correttamente un problema in tempo finito Esempio: algoritmo
Laboratorio di Python
Problem solving, Ricorsione, Università di Bologna 13 e 15 marzo 2013 Sommario 1 2 3 4 Errore di semantica Esercizio def vocali(s): voc='' for c in s: if c in 'aeiou': voc=voc+c return voc Cerchiamo di
Programmazione dinamica
Programmazione dinamica Primi esempi 6 ottobre 2015 Algoritmi Abbiamo bisogno di algoritmi ogni qual volta vogliamo scrivere un programma per risolvere un problema in maniera automatica. Obiettivo finale:
Proprietà delle notazioni asintotiche
Proprietà delle notazioni asintotiche Punto della situazione Cos è un algoritmo Tempo di esecuzione T(n) Analisi di algoritmi: analisi asintotica di T(n) Notazioni asintotiche Argomento di oggi Proprietà
Algoritmi greedy. Gli algoritmi che risolvono problemi di ottimizzazione devono in genere operare una sequenza di scelte per arrivare alla soluzione
Algoritmi greedy Gli algoritmi che risolvono problemi di ottimizzazione devono in genere operare una sequenza di scelte per arrivare alla soluzione Gli algoritmi greedy sono algoritmi basati sull idea
2. Analisi degli Algoritmi
2. Analisi degli Algoritmi Introduzione 2.1 Un modello di macchina elementare: la Macchina a Registri 2.2 Costo di esecuzione di un programma 2.3 Analisi del costo di esecuzione: il modello a costi uniformi
Heap e code di priorità
Heap e code di priorità Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica AA 2009/2010
Algoritmi e Strutture Dati
Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino A.A. 2006/07 Il concetto di dato Il concetto di tipo di dato Insertion Sort for j 2 to lenght[a]
Progettazione di Algoritmi
Corso di laurea in Informatica Prova scritta del: Progettazione di Algoritmi 0/06/06 Prof. De Prisco Inserire i propri dati nell apposito spazio. Non voltare la finché non sarà dato il via. Dal via avrai
Corso di Calcolo Numerico
Corso di Calcolo Numerico Dott.ssa M.C. De Bonis Università degli Studi della Basilicata, Potenza Facoltà di Ingegneria Corso di Laurea in Ingegneria Meccanica Risoluzione di Equazioni Algebriche Le equazioni
RISOLUZIONE IN LOGICA PROPOSIZIONALE. Giovanna D Agostino Dipartimento di Matemaica e Informatica, Università di Udine
RISOLUZIONE IN LOGICA PROPOSIZIONALE Giovanna D Agostino Dipartimento di Matemaica e Informatica, Università di Udine 1. Risoluzione Definitione 1.1. Un letterale l è una variabile proposizionale (letterale
Algoritmi e Strutture Dati Esercizi Svolti. Giuseppe Persiano Dipartimento di Informatica ed Appl. Renato M. Capocelli Università di Salerno
Algoritmi e Strutture Dati Esercizi Svolti Giuseppe Persiano Dipartimento di Informatica ed Appl Renato M Capocelli Università di Salerno Indice Esercizio 12-3 5 Esercizio 23-4 6 Esercizio 63-3 7 Esercizio
04 - Numeri Complessi
Università degli Studi di Palermo Scuola Politecnica Dipartimento di Scienze Economiche, Aziendali e Statistiche Appunti del corso di Matematica 04 - Numeri Complessi Anno Accademico 2015/2016 M. Tumminello,
Laboratorio di Programmazione M-Z
Diretta Laboratorio di Programmazione M-Z Docente: Dott.ssa Alessandra Lumini [email protected] Università di Bologna, Sede di Cesena Divide et impera Dividere un problema in sottoproblemi più
Esercizi su alberi binari
Esercizi su alberi binari Esercizi svolti: Determinazione nodi contenti verifica completezza verifica quasi completezza lunghezza del cammino interno determinazione ultima foglia in un quasi completo verifica
Algoritmi e Strutture Dati 2/ed Quiz a risposta multipla
Camil Demetrescu Irene Finocchi Giuseppe F. Italiano Algoritmi e Strutture Dati 2/ed Quiz a risposta multipla Indice 1 Un introduzione informale agli algoritmi 1 2 Modelli di calcolo e metodologie di
Esercizi per il corso Matematica clea
Esercizi per il corso Matematica clea Daniele Ritelli anno accademico 008/009 Lezione : Numeri naturali e principio di induzione Esercizi svolti. Provare che + + + n. Provare che + + + n n(n + ) n(n +
Note per la Lezione 4 Ugo Vaccaro
Progettazione di Algoritmi Anno Accademico 2016 2017 Note per la Lezione 4 Ugo Vaccaro Ripasso di nozioni su Alberi Ricordiamo che gli alberi rappresentano una generalizzazione delle liste, nel senso che
Strutture dati per insiemi disgiunti
Strutture dati per insiemi disgiunti Servono a mantenere una collezione S = {S 1, S 2,..., S k } di insiemi disgiunti. Ogni insieme S i è individuato da un rappresentante che è un particolare elemento
Esercizi Capitolo 2 - Analisi di Algoritmi
Esercizi Capitolo - Analisi di Algoritmi Alberto Montresor 19 Agosto, 014 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente, è possibile saltare
3.4 Metodo di Branch and Bound
3.4 Metodo di Branch and Bound Consideriamo un generico problema di Ottimizzazione Discreta dove X è la regione ammissibile. (P ) z = max{c(x) : x X} Metodologia generale di enumerazione implicita (Land
