Calcolo dell n-esimo numero di Fibonacci

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Calcolo dell n-esimo numero di Fibonacci"

Transcript

1 Calcolo dell n-esimo numero di Fibonacci

2 Formulazione F n F F F 0 1 n 0 1 F, n 2 1 n2

3 Algoritmo numerico F n 1 5 n n , 1

4

5

6 Algoritmo ricorsivo

7 Complessità T ( n) 2 T ( n 1) T ( n 2) T ( n) 3F 2 O n n

8 F 7 F 6 F 5 F 5 F 4 F 4 F 3 F 4 F 3

9 Algoritmo dinamico 0 1 +

10

11 Complessità: numero di operazioni T ( n) 4 n ( n 1) 2n 3 S ( n) O( n)

12 Algoritmo dinamico ottimo 0 1 a b +

13

14

15 Complessità: numero di operazioni T ( n) 3 n 3( n 1) 4n S ( n) O(1)

16 Programmazione dinamica La soluzione di alcuni pb. richiede di risolvere i medesimi sottoproblemi (dipendenza) in tutto o in parte 1.Iterativa 2.Utilizza spazio di memoria ausiliario 3.Approccio bottom-up Ambito: pb. di ottimizzazione

17 Definizione ricorsiva della soluzione del pb. Decomposizione del pb. originario in sottopb. Inizializzazione valori array Costruzione dinamica array Restituzione soluzione dall array

18 Caratterizzazione della struttura di una soluzione ottimale Definizione di una regola ricorsiva per il calcolo di una soluzione ottimale Riempimento iterativo della tabella di programmazione dinamica tramite regola ricorsiva Inizializzazione Definizione dell ordine di riempimento della tabella di programmazione dinamica Costruzione della soluzione

19 Il problema del resto

20 Formulazione Siano r, resto, un numero naturale e c=(c 0,..., c d-1 ) i valori delle monete disponibili. Calcolare il numero di monete minimo, per ciascun valore, per fare il resto. d 1 i0 d 1 i0 n c n i i i r sia minimo

21 Esempio Sia r = 77, c1 = 7, c2 = 3, c3 = 1 Ottimo cambio per 77 deve essere Ottimo per 76 più 1 moneta c3 Ottimo per 75 più 1 moneta c3 Ottimo per 73 più 1 moneta c2 Ottimo per 69 più 1 moneta c1 Ottimo per 74 più 1 moneta c2 Ottimo per 70 più 1 moneta c1 Hp.: il numero di monete per ciascun valore è illimitato

22 Stesso pb. risolto più volte

23 In generale, per ogni r e per ogni c 0,..., c d-1 resto( r) 1 resto( r c0 ) min... 1 resto( r cd 1 ) resto(0) 0

24 Algoritmo ricorsivo

25 Meglio resto( r) 0, r 0, c i 1 min j r,0 i d 1 resto( r c ) r : c j j

26 Algoritmo dinamico Array di valori ottimi per ogni i, 0 apple i apple r Soluzione ottima in posizione r Riempimento della tabella da 0 a r

27 Esempio Siano r=4 e c=(1,2) indice = resto =

28

29 Esempio Siano r=6 e c=(2,5) indice = resto =

30 Esempio Siano r=3 e c=(2,5) indice = resto =

31 Complessità O(rd): non polinomiale se r è esponenziale rispetto a d

32 Costruzione della soluzione Quante e quali monete restituire? scelto il minimo per resto[i] si memorizza in monete[i] che i ha dato luogo al minimo prima di restituire resto[r] si nota che la moneta usata è i = moneta[r] e quindi si ricostruisce la soluzione all indietro considerando come resto intermedio j = r c[i] porre i = moneta[j] come moneta successiva, etc.

33

34 Quando restituisce il resto?

35 Esempio Siano r=15 e c=(1,5,11) indice resto monete indice= n=

36 È invariata Complessità

37 Problema del rappresentante o dei turisti

38 Formulazione La mappa di una città è schematizzata con strade orizzontali e parallele che si incrociano con strade verticali parallele. I turisti devono andare dall incrocio in alto a sx a quello in basso a dx potendo muoversi solo verso sud e ovest massimizzando il numero di attrattive visitate.

39 Modello Partenza: (0,0) Passi: (i,j-1) s(i,j) (i-1,j) a(i,j) (i,j) Destinazione: (n-1,m-1)

40 2,3 1,3 2,2 0,3 1,2 1,2 2,1 0,2 1,1 0,2 1,1 1,1 2,0 Stesso pb. risolto più volte

41 cammino(0,j) = somma archi orizzontali da (0,0) a (0,j) cammino(i,0) = somma archi verticali da (0,0) a (i,0) cammino( i, j) cammino( i 1, j) max cammino( i, j 1) peso(( i 1, j), ( i, peso(( i, j 1), ( i, j)) j))

42 Algoritmo ricorsivo

43 Tabella di programmazione dinamica con valori ottimi per ogni (i, j) Ottimo in indice (n-1,m-1) n: numero di righe m: numero di colonne Riempimento dall alto verso il basso e da sinistra verso destra Complessità: O(nm)

44

45 Algoritmo dinamico

46 Costruire una soluzione Si procede ricorsivamente partendo dalla destinazione Complessità è O(n+m)

47

48

49 Prodotto di una sequenza di matrici

50 Associatività del prodotto tra matrici M = (M0 M1) M2 = M0 (M1 M2) for (i = 0; i < n; i++) { for (j = 0; j < m; j++) { c[i][k] = 0; for (k = 0; k < p; k++) { c[i][j]=c[i][j]+a[i][k]*b[k][j]; } } }

51 M0 = ; M1 = ; M2 = (M0 M1) M2 = ( ) + ( ) = 6600 M0 (M1 M2) = ( ) + ( ) =

52 Formulazione Determinare una parentesizzazione del prodotto di n matrici (M0,,Mn-1) in modo da minimizzare il numero di prodotti effettuati

53 Algoritmo di forza bruta Scegliere il valore minimo tra tutte le possibili parentesizzazioni di n matrici 1, n 1 k 1 par( n) n 1 par( k) par( n k) O(4 n ), n 1

54 Sia m[i][j] il minimo numero di prodotti necessari per calcolare Mi. Mj e Mi = p i p i+1 j i p p p j m k k m i i j i j m i j k i j k i, ] 1][ [ ] ][ [ min, 0, ] ][ [ 1 1

55 min 4 1 p p p m m p p p m m p p p m m m

56 Un algoritmo ricorsivo basato sulla precedente relazione per calcolare m[0][n-1] è esponenziale. Nei diversi cammini nell albero di ricorsione richiede di ricalcolare più volte gli stessi sottopb.

57 Algoritmo ricorsivo

58 min 4 1 p p p m m p p p m m p p p m m m Approccio bottom-up: calcolo per diagonali da sx a dx

59 Approccio bottom-up: calcolo per diagonali da sx a dx

60 Algoritmo dinamico

61 Esempio

62 m 1 4 m min m m m m m p 1 p p 1 1 p p p p p p *15* *5* *10 * m =

63 Complessità T ( n) n 1 ( n d ) d O( n 3 ) d 1 S ( n) O( n 2 )? S ( n) O( n)

64 Costruzione della soluzione Ci si avvale di una matrice di appoggio s t.c. s[i][j] memorizza l indice k per cui m[i][j] ha costo ottimo

65

66 m 1 4 m min m m m m m p 1 p p 1 1 p p p p p p *15* *5* *10* s 1 4 2

67 Esempio s[0][5] = 2 M0..M5 = M0 M2 M3 M5 s[0][2] = 0 M0..M2 = M0 (M1 M2) s = s[3][5] = 4 M3..M5 = (M3 M4) M5

68 Algoritmo ricorsivo M0. Mn-1 = M0. Ms[0][n-1] Ms[0][n-1]+1. Mn-1 M0. Ms[0][n-1]= M0. Ms[0][s[0][n-1]] Ms[0][s[0][n-1]] +1. Ms[0][n-1] Ms[0][n-1]+1. Mn-1= Ms[0][n-1]+1. Ms[s[0][n-1]+1][n-1] Ms[s[0][n-1]+1][n- 1] +1. Mn-1 La ricorsione termina quando la sequenza di matrici da moltiplicare è ridotta a una sola matrice

69

70 Il problema dello zaino 0-1

71 Formulazione Massimizzare il valore degli oggetti trasportati di uno zaino

72 max w peso massimo in Kg sopportato dallo zaino i oggetti :1 i n x v i w i i 0, l'oggetto i - esimo non è incluso 1, l'oggetto i - esimo è incluso w i peso in Kg dell'oggetto i - esimo v i 1 1 valore dell'oggetto i - esimo n i1 x i w i max w n i1 x v i i maxvalore

73 Algoritmo di forza bruta 1. Calcolare peso e valore totale di tutte le possibili combinazioni di n oggetti 2. Selezionare la combinazione di massimo valore T ( n) n k 1 n k 2 n

74 Definizione ricorsiva del valore di una soluzione ottima m[ i][ j] valore massimo degli oggetti scelti tra i primi i e capacità residua j m[ i][ j] 0, j 0, i 0, i 0, j m[ i 1][ j], j wi maxm [ i 1][ j], m[ i 1][ j w i ] v i, j w i

75 Algoritmo ricorsivo

76 Algoritmo dinamico

77 Esempio m = v[i-1] è il valore dell oggetto i-esimo w[i-1] è il peso dell oggetto i-esimo

78 Complessità T ( n) S( n) ( n 1)(max w 1)

79 Costruzione di una soluzione Ricorsivamente: partenza da m[n][maxw] (i=n,j=maxw) Se m[i-1][j]!= m[i][j] allora l oggetto i concorre a formare la soluzione e j = j-w[i-1]

80

81 maxw =

82 Massima sottosequenza comune a due stringhe

83 Confronto di sequenze di DNA Scoperto un gene, ci si domanda a cosa serva Approccio comunemente usato Trovare similitudini con geni di cui sono note le funzioni Esempi Scoperto il gene ν-sis che causa il cancro Simile a un gene coinvolto nella crescita Cancro causato dall attivazione di tale gene al momento sbagliato Scoperto il gene della fibrosi cistica Regione intorno al gene sequenziata Trovate similitudini tra qualche segmento della regione e un gene gi`a scoperto e che produce specifiche proteine Comprensione del meccanismo danneggiato nei geni della fibrosi cistica Problema: scoprire similitudini tra diverse sequenze di DNA

84 Quando due stringhe sono simili? code vs. doce algoritmi vs. mitraglia programmi vs. marpioni L ordine è importante!

85 Sottosequenza più lunga Sottosequenza di una sequenza X: sequenza ordinata di caratteri di X (non necessariamente consecutivi) Esempio AGCA e ATTA sono sottosequenze di ATTGCTA TGTT e TCG non sono sottosequenze di ATTGCTA Sottosequenza comune di due sequenze X e Y: sottosequenza di entrambe Esempio: TCTA `e sottosequenza comune di ATCTGAT e TGCATA Problema: date X e Y, trovare una sottosequenza comune più lunga Osservazione s(x,y) è lunghezza di LCS di X e Y d(x,y): distanza di edit con sole inserzioni e cancellazioni No discrepanze d(x,y) = n + m 2 s(x,y) Esempio A T - C - T G A T - T G C A T - A -

86 Definizione m j i Y j Z n i i i Y Z n m n Y m Z j m ],1 [ ] [ t.c.... se esistono 1 è una sottosequenza di allora,, Y : e Z : Dato 2 1 Esempio: serafico è sottosequenza di supercalifragilistichespiralitoso

87 Definizione Date due stringhe comune a X e Y X e Y diciamo che la stringa se è contempora neamente Z è una sottoseque nza Esempio: X=algoritmiestrutturedati, Y=grafidirettiaciclici, Z=grida X=ATTGCTA, Y=TGCATA, Z=TGT sottosequenza di X e Y

88 Definizione Date due stringhe ottosequenza e Y comune a diciamo e Y Esempio: X=marinaio, Y=malaria, W=maria X che la sew X=ATTGCTA, Y=TGCATA, W=TGCTA X stringa max W è una Z sottoseque nza di massima X e Y Z

89 Proprietà Siano X t.c X =m e Y t.c Y =n due stringhe e W t.c W =k una massima sottosequenza comune a X e Y 1. se X[1]=Y[1] allora W[1]=X[1]=Y[1] e W[2 k] è una sottosequenza di lunghezza massima comune a X[2 m] e Y[2 n] 2. se X[1]!=Y[1] allora W[1]!=X[1] implica che W è una sottosequenza di lunghezza massima comune a X[2 m] e Y[1 n] 3. se X[1]!=Y[1] allora W[1]!=Y[1] implica che W è una sottosequenza di lunghezza massima comune a X[1 m] e Y[2 n]

90 Algoritmo ricorsivo public int LCSR(int r, int c) { if ((r==n) (c=m)){ return 0; }else{ if (x[r]==y[c]){ return 1+LCSR(r+1,c+1); }else{ return massimo(lcsr(r+1,c),lcsr(r,c+1)); } } }

91 Complessità T T worst worst ( m, n) ( m, n) le stringhe non hanno caratteri in comune T ( m, n) T ( m 1, n) T ( m, n 1) Il costo esponenziale è dovuto al fatto che si ricalcolano ripetutamente gli stessi sottopb.

92 Definizione ricorsiva del valore di una soluzione ottima 1] [ 1] [, 1] ][ [ ], 1][ [ max 1] [ 1] [ 1], 1][ [ 1 ] ][ [ 1 0 e 1 0 prefissi comune ai sottosequenza massima della lunghezza ] ][ [ c Y r X c r s c r s c Y r X c r s c r s ]..c Y[ ]..r X[ c r s

93 Esempio s Y= A T C G T A C indici X= A T G T T A T

94

95

96 Esempio: priorità ( ) s Y= A T C G T A C indici X= A T G T T A T

97

98 Da dx a sx

99

100 Esempio: priorità ( ) s A T C G T A C indici A T G T T A T

101 Complessità T ( n, m) S ( n, m) O( nm) S(n,m) può essere ridotto a O(n+m) dato che per calcolare s[r][c] sono sufficienti la riga (r-1) e la colonna (c-1)

102 Costruzione della soluzione b[ r][ c] 0, se X 1, se 1, se r 1 Yc 1 è incluso nella soluzione Partendo da b[n][m] si procede a ritroso in modo ricorsivo.

103 Esempio b Y= A T C G T A C indici X= A T G T T A T

104

105

106 Esempio b Y= A T C G T A C indici X= A T G T T A T

107

108 Matrice di allineamento Matrice di due righe e al più n + m colonne t.c. Prima riga contiene caratteri della prima sequenza in ordine Seconda riga contiene caratteri della seconda sequenza in ordine -- possono apparire sia nella prima che nella seconda riga Nessuna colonna contiene due -- Esempio: stringhe ATGTTAT e ATCGTAC A T - G T T A T - A T C G T - A - C Corrispondenza: colonna che contiene lo stesso carattere Discrepanza: colonna che contiene caratteri diversi Inserzione: colonna che contiene -- in seconda riga Cancellazione: colonna che contiene -- in prima riga Numero di corrispondenze, discrepanze, inserzioni e cancellazioni al più n + m

109 Una matrice di allineamento di X e Y corrisponde a cammino di punti nella griglia n m che include archi sud-est t.c. i -esimo punto: (h, k) se h-esimo carattere di X appare in colonna non successiva all i-esima e (h + 1)- esimo carattere di X appare in colonna successiva all i-esima k-esimo carattere di Y appare in colonna non successiva all i-esima e (k + 1)- esimo carattere di Y appare in colonna successiva all i-esima Esempio: data la precedente matrice di allineamento A T - G T T A - T A T C G T - A C - Allora il cammino di punti (esteso a sinistra con il punto (0, 0)) (0, 0) (1, 1) (2, 2) (2, 3) (3, 4) (4, 5) (5, 5) (6, 6) (6, 7) (7, 7)

110 Il cammino da (0, 0) a (n,m) nel grafo di edit corrisponde alla matrice di allineamento t.c. arco diagonale che termina in (r, c) colonna arco orizzontale che termina in arco verticale che termina in (r, c) (r, c) colonna colonna X r -1 Y c -1 Y X r -1 - c -1

111 Esempio b Y= A T C G T A C indici X= A T G T T A T

112 Con priorità tra 1, -1 e 0 ( ) si ha che: corrisponde a: X= A T - G T T A - T Y= A T C G T - A C -

113 Invertendo le priorità tra 1, -1 e 0 Esempio (1,-1,0)(0,1,-1) ( ) che corrisponde a: X= A T - G T T A - T Y= A T C G - T A C -

114 Volendo portare Y=ATCGTAC in X=ATGTTAT con sole operazioni di inserimento e cancellazione allora ATCGTTACT X= A T - G T T A - T Y= A T C G - T A C -

115 Esempio: priorità in caso di non coincidenza ( ) s Y= A T C G T A C indici X= A T G T T A T

116 Volendo portare Y=ATCGTAC in X=ATGTTAT con operazioni di inserimento, cancellazione e sostituzione (ossia mutazione) con priorità 0, 1, -1 ( ) se i caratteri coincidono -2, 1, -1 ( ) se i caratteri non coincidono allora corrisponde a: X= A T - G T T A T Y= A T C G T - A C per cui ATCGTTA(CT)

117 Definizione di distanza Distanza di Hamming: numeri di caratteri diversi nelle stesse posizioni Assume che i -esimo simbolo di una sequenza sia allineato con i -esimo simbolo di altra sequenza Errori nella replicazione del DNA comportano sostituzioni, inserimenti e cancellazioni Raramente si sa se i -esimo simbolo di una sequenza corrisponde a i -esimo simbolo di altra sequenza Esempi Stringhe ATATATAT e TATATATA Distanza di Hamming: 8 Molto simili se allineiamo il secondo carattere della prima al primo carattere della seconda Stringhe ATATATAT e TATAAT Distanza di Hamming: 4 Più simili se inseriamo uno spazio vuoto tra il quarto e il quinto carattere della seconda Distanza di edit Minimo numero di operazioni di inserimento, cancellazione e sostituzione necessarie per trasformare una sequenza nell altra Consente il confronto di sequenze di lunghezza diversa

118 Minimizzazione della distanza di edit 1] [ 1] [, 1] ][ [ ], 1][ [ 1], 1][ [ min 1 1] [ 1] [, 1] 1][ [ 1], ][ [ ],1 1][ [ 1 min,, ][0] [,, ] [0][ ] ][ [ 1 0 e 1 0 prefissi edit dei di distanza minima ] ][ [ c Y r X c r s c r s c r s c Y r X c r s c r s c r s r Y r r s c X c c s c r s ]..c Y[ ]..r X[ c r s

119 Esempio: priorità ( ) = priorità ( )!= s Y= A T C G T A C indici X= A T G T T A T

120 La minima distanza di edit tra Y=ATCGTAC e X=ATGTTAT considerando operazioni di inserimento, cancellazione e sostituzione (ossia mutazione) con priorità 0, 1, -1 ( ) se i caratteri coincidono -2, 1, -1 ( ) se i caratteri non coincidono è ATCGTTA(CT) X= A T - G T T A T Y= A T C G T - A C

121 Funzioni di punteggio La bontà di un allineamento equivale alla bontà del corrispondente cammino Funzione di punteggio Assegna punteggi più alti ad allineamenti con più corrispondenze Le più semplici assegnano punteggio positivo a corrispondenze e punteggio non positivo al resto Miglior allineamento corrisponde a cammino più lungo Esempio: 1 a corrispondenze, 0 ad altro Sottosequenza comune più lunga

122 LCS e cammini più lunghi Lasciamo nel grafo di edit solo archi diagonali corrispondenti a corrispondenze Discrepanze non sono permesse Peso 1 ad archi diagonali e 0 ad altri Vogliamo massimizzare corrispondenze Cammino più lungo corrisponde a sottosequenza comune più lunga Esempio

Sottosequenza comune piu' lunga (programmazione dinamica)

Sottosequenza comune piu' lunga (programmazione dinamica) piu' (programmazione Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona Sommario piu' piu' Il problema del turista a manhattan piu' Problema

Dettagli

Algoritmi e strutture di dati 2

Algoritmi e strutture di dati 2 Paola Vocca Lezione 4: Programmazione dinamica 1 Caratteristiche Programmazione dinamica: paradigma basato sullo stesso principio utilizzato per il divide et impera o il problema viene decomposto in sotto-problemi

Dettagli

Programmazione Dinamica (PD)

Programmazione Dinamica (PD) Programmazione Dinamica (PD) Altra tecnica per risolvere problemi di ottimizzazione, piu generale degli algoritmi greedy La programmazione dinamica risolve un problema di ottimizzazione componendo le soluzioni

Dettagli

Corso di Perfezionamento

Corso di Perfezionamento Programmazione Dinamica 1 1 Dipartimento di Matematica e Informatica Università di Camerino 15 febbraio 2009 Tecniche di Programmazione Tecniche di progettazione di algoritmi: 1 Divide et Impera 2 Programmazione

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Elementi di Programmazione Dinamica Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino 19 novembre 2008 Elementi di programmazione dinamica Parte

Dettagli

Programmazione dinamica

Programmazione dinamica Programmazione dinamica Ilaria Castelli castelli@dii.unisi.it Università degli Studi di Siena Dipartimento di Ingegneria dell Informazione A.A. 29/21 I. Castelli Programmazione dinamica, A.A. 29/21 1/35

Dettagli

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 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

Dettagli

PROGRAMMAZIONE DINAMICA. Prof. Reho Gabriella Olimpiadi di Informatica

PROGRAMMAZIONE DINAMICA. Prof. Reho Gabriella Olimpiadi di Informatica PROGRAMMAZIONE DINAMICA Quando si usa P.D.? La programmazione dinamica si usa nei casi in cui esista una definizione ricorsiva del problema, ma la trasformazione diretta di tale definizione in un algoritmo

Dettagli

Informatica II. Capitolo 13 Programmazione dinamica. Programmazione dinamica vs Divide-et-impera. Divide-et-impera Tecnica ricorsiva

Informatica II. Capitolo 13 Programmazione dinamica. Programmazione dinamica vs Divide-et-impera. Divide-et-impera Tecnica ricorsiva Programmazione dinamica vs Divideetimpera Divideetimpera Tecnica ricorsiva Informatica II Approccio topdown (problemi divisi in sottoproblemi) Vantaggioso solo quando i sottoproblemi sono indipendenti

Dettagli

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 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

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Elementi di Programmazione Dinamica Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino Tecniche di Programmazione Tecniche di progettazione e

Dettagli

Programmazione dinamica

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

Dettagli

Algoritmi e Strutture Dati. Capitolo 10 Tecniche algoritmiche

Algoritmi e Strutture Dati. Capitolo 10 Tecniche algoritmiche Algoritmi e Strutture Dati Capitolo 10 Tecniche algoritmiche Programmazione Dinamica: principi generali 1) identificare un numero piccolo di sottoproblemi es: calcolare l II di peso massimo di G j, j=1,,n

Dettagli

la edit distance tra X e Y è la distanza relativa all allineamento (o agli allineamenti) che minimizza tale distanza.

la edit distance tra X e Y è la distanza relativa all allineamento (o agli allineamenti) che minimizza tale distanza. Algoritmica 14/15 EDIT DISTANCE Il problema della edit distance (distanza di edizione, in una versione in italiano scarsamente usata) è alla base dei problemi di confronto fra sequenze perché il meccanismo

Dettagli

Appunti lezione Capitolo 13 Programmazione dinamica

Appunti lezione Capitolo 13 Programmazione dinamica Appunti lezione Capitolo 13 Programmazione dinamica Alberto Montresor 12 Novembre, 2015 1 Domanda: Fattore di crescita dei numeri catalani Vogliamo dimostrare che cresce almeno come 2 n. La nostra ipotesi

Dettagli

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 Algoritmi greedy Gli algoritmi che risolvono problemi di ottimizzazione devono in genere operare una sequenza di scelte per arrivare alla soluzione sono algoritmi basati sull idea di fare sempre scelte

Dettagli

ASD Laboratorio 08. Alessio Guerrieri/Lorenzo Ghiro 07/03/2018. Alessio Guerrieri/Lorenzo Ghiro ASD Laboratorio 08 07/03/ / 14

ASD Laboratorio 08. Alessio Guerrieri/Lorenzo Ghiro 07/03/2018. Alessio Guerrieri/Lorenzo Ghiro ASD Laboratorio 08 07/03/ / 14 ASD Laboratorio 08 Alessio Guerrieri/Lorenzo Ghiro 07/03/2018 Alessio Guerrieri/Lorenzo Ghiro ASD Laboratorio 08 07/03/2018 1 / 14 CALENDARIO 07/03 Dinamica 2 21/03 Progetto Dinamica 16/05 Approssimazione

Dettagli

Distanza di Edit. Speaker: Antinisca Di Marco Data:

Distanza di Edit. Speaker: Antinisca Di Marco Data: Distanza di Edit Speaker: Antinisca Di Marco Data: 14-04-2016 Confronto di sequenze Il confronto tra sequenze in biologia computazionale è la base per: misurare la similarità tra le sequenze allineamento

Dettagli

Note per la Lezione 6 Ugo Vaccaro

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,

Dettagli

ASD Laboratorio 08. Cristian Consonni/Alessio Guerrieri 02/12/2016. Cristian Consonni/Alessio Guerrieri ASD Laboratorio 08 02/12/ / 14

ASD Laboratorio 08. Cristian Consonni/Alessio Guerrieri 02/12/2016. Cristian Consonni/Alessio Guerrieri ASD Laboratorio 08 02/12/ / 14 ASD Laboratorio 08 Cristian Consonni/Alessio Guerrieri 02/12/2016 Cristian Consonni/Alessio Guerrieri ASD Laboratorio 08 02/12/2016 1 / 14 CALENDARIO (UPDATE) 25/11 Dinamica 1 02/12 Dinamica 2 09/12 No

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi Golosi (Greedy) Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino un algoritmo goloso correttezza Problema della selezione di attività

Dettagli

Tecniche Algoritmiche/3 Programmazione Dinamica

Tecniche Algoritmiche/3 Programmazione Dinamica Tecniche Algoritmiche/3 Programmazione Dinamica Ivan Lanese Dip. di Informatica Scienza e Ingegneria Università di Bologna Ivan.lanese@gmail.com http://www.cs.unibo.it/~lanese/ Programmazione Dinamica

Dettagli

Olimpiadi Italiane di Informatica

Olimpiadi Italiane di Informatica Olimpiadi Italiane di Informatica OII 2018 - Campobasso ITST G. Marconi 13-15 settembre 2018 Analisi di gara e spiegazione delle soluzioni Un po di statistiche numero di partecipanti 90 soluzioni inviate

Dettagli

Divide et impera. Divide et impera. Tecniche Algoritmiche. Algoritmi e Strutture Dati. at(n/b) + f(n) se n>1 1 se n=1. T(n) = ha soluzione:

Divide et impera. Divide et impera. Tecniche Algoritmiche. Algoritmi e Strutture Dati. at(n/b) + f(n) se n>1 1 se n=1. T(n) = ha soluzione: Algoritmi e Strutture Dati Tecniche Algoritmiche Divide et impera Basato su materiale di C. Demetrescu, I. Finocchi, G.F. Italiano 2 Divide et impera Teorema Master: un strumento generale per risolvere

Dettagli

Edit distance. v intner RIMDMDMMI wri t ers

Edit distance. v intner RIMDMDMMI wri t ers L'allineamento Edit distance Le operazioni permesse sono: I: insert (inserimento, inserzione) D: delete (cancellazione, delezione, rimozione) R: replacement (substition, sostituzione) M: match (corrispondenza,

Dettagli

Il problema dello zaino

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

Dettagli

Corso di Fondamenti di Programmazione canale E-O. Un esempio. Funzioni ricorsive. La ricorsione

Corso di Fondamenti di Programmazione canale E-O. Un esempio. Funzioni ricorsive. La ricorsione Corso di Fondamenti di Programmazione canale E-O Tiziana Calamoneri Ricorsione DD Cap. 5, pp. 160-184 KP Cap. 5, pp. 199-208 Un esempio Problema: prendere in input un intero e calcolarne il fattoriale

Dettagli

Programmazione dinamica Primi esempi

Programmazione dinamica Primi esempi Programmazione dinamica Primi esempi (20 ottobre 2009 e 9 novembre 2010) Programmazione dinamica e Divide et Impera Entrambe le tecniche dividono il problema in sottoproblemi: dalle soluzioni dei sottoproblemi

Dettagli

Matrici. Matrici.h Definizione dei tipi. Un po di esercizi sulle matrici Semplici. Media difficoltà. Difficili

Matrici. Matrici.h Definizione dei tipi. Un po di esercizi sulle matrici Semplici. Media difficoltà. Difficili Matrici Un po di esercizi sulle matrici Semplici Lettura e scrittura Calcolo della trasposta Media difficoltà Calcolo del determinante Difficili Soluzione di sistemi lineari È veramente difficile? 1 Matrici.h

Dettagli

Matrici Un po di esercizi sulle matrici Semplici Lettura e scrittura Calcolo della trasposta Media difficoltà Calcolo l del determinante t È Difficili

Matrici Un po di esercizi sulle matrici Semplici Lettura e scrittura Calcolo della trasposta Media difficoltà Calcolo l del determinante t È Difficili Matrici Un po di esercizi sulle matrici Semplici Lettura e scrittura Calcolo della trasposta Media difficoltà Calcolo l del determinante t È Difficili Soluzione di sistemi lineari È veramente difficile?

Dettagli

... b 2 X 2. . b N X N. a 11 a 12.. a 1N a 21 a 22.. a 2N A =. a N1... a NN

... b 2 X 2. . b N X N. a 11 a 12.. a 1N a 21 a 22.. a 2N A =. a N1... a NN Matrici Un po di esercizi sulle matrici Semplici Lettura e scrittura Calcolo della trasposta Media difficoltà Calcolo l del determinante t È veramente Difficili difficile? Soluzione di sistemi lineari

Dettagli

Supersequenza comune minimale

Supersequenza comune minimale Supersequenza comune minimale Una stringa P è una supersequenza di una stringa T se T è una sottosequenza di P. Scrivere un algoritmo che restituisce la lunghezza della supersequenza comune minimale di

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Cognome................................ Nome................................... Matricola............................... Algoritmi e Strutture Dati Prova scritta del 4 luglio 207 TEMPO DISPONIBILE: 2 ore

Dettagli

Matrici.h Definizione dei tipi #define MAXROWS 10 #define MAXCOLS 10 #define ELEMENT int #define ELEMENTFORMAT "%d" Tipo degli elementi della matrice

Matrici.h Definizione dei tipi #define MAXROWS 10 #define MAXCOLS 10 #define ELEMENT int #define ELEMENTFORMAT %d Tipo degli elementi della matrice Matrici Un po di esercizi sulle matrici Semplici Lettura e scrittura Calcolo della trasposta Media difficoltà Calcolo del determinante Difficili Soluzione di sistemi lineari È veramente difficile? 1 Matrici.h

Dettagli

Allenamento alle Olimpiadi di Informatica

Allenamento alle Olimpiadi di Informatica Giornata di allenamento alle Olimpiadi di Informatica Allenamento alle Olimpiadi di Informatica Obiettivi di questa sessione Illustrare alcuni siti per lo sviluppo di competenze informatiche, anche in

Dettagli

Sommario della lezione

Sommario della lezione Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2014/15 p. 1/27 Sommario della lezione Ancora altri esempi di applicazione della Programmazione Dinamica: Il Problema della

Dettagli

Esercizi su array di array

Esercizi su array di array Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa E10 C. Limongelli Gennaio 2010 1 Contenuti Fusione di due array ordinati, con eliminazione di duplicati Verifica array bidimensionale

Dettagli

Esercizio. 2 i=i*2) j=j*2)

Esercizio. 2 i=i*2) j=j*2) Esercizio 1 Esercizio 2 i=i*2) j=j*2) Soluzione Il frammento è composto da due parti quasi identiche. L unica differenza è il modo in cui crescono i contatori. Nella prima parte la crescita è lineare mentre

Dettagli

Problema del rappresentante o dei turisti

Problema del rappresentante o dei turisti Algoritmi greedy Filosofia utilizzata in pb. di ottimizzazione strategia euristica di cui è necessario valutare la bontà effettuano localmente una scelta ottima non ripensabile (definitivamente inclusa

Dettagli

3 CENNI DI TEORIA DELLA COMPLESSITA COMPUTAZIONALE. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1

3 CENNI DI TEORIA DELLA COMPLESSITA COMPUTAZIONALE. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1 3 CENNI DI TEORIA DELLA COMPLESSITA COMPUTAZIONALE E. Amaldi Fondamenti di R.O. Politecnico di Milano 1 Scopo: Stimare l onere computazionale per risolvere problemi di ottimizzazione e di altra natura

Dettagli

Definizioni. Soluzione ottima: migliore soluzione possibile Soluzione ottima localmente: soluzione ottima in un dominio contiguo. Il paradigma greedy

Definizioni. Soluzione ottima: migliore soluzione possibile Soluzione ottima localmente: soluzione ottima in un dominio contiguo. Il paradigma greedy Il paradigma greedy Paolo Camurati, Fulvio Corno, Matteo Sonza Reorda Dip. Automatica e Informatica Politecnico di Torino Definizioni Soluzione ottima: migliore soluzione possibile Soluzione ottima localmente:

Dettagli

Algoritmi e strutture dati

Algoritmi e strutture dati Algoritmi e Strutture Dati Cammini minimi Definizioni Sia G = (V,E) un grafo orientato pesato sugli archi. Il costo di un cammino π = è dato da: Un cammino minimo tra una coppia di

Dettagli

Note per la Lezione 7 Ugo Vaccaro

Note per la Lezione 7 Ugo Vaccaro Progettazione di Algoritmi Anno Accademico 2016 2017 Note per la Lezione 7 Ugo Vaccaro Sempre sulla tecnica Programmazione Dinamica Ricordiamo che lo sviluppo di algoritmi basati sulla Programmazione Dinamica

Dettagli

6.6 Sequence Alignment

6.6 Sequence Alignment 6.6 Sequence Alignment E capitato anche a voi? Di digitare sul computer una parola in maniera sbagliata (per esempio usando un dizionario sul Web): AGORITNI E sentirsi chiedere: «Forse cercavi ALGORITMI?»

Dettagli

Algoritmi su Matrici. int const R=40; int const C=8; int A[R][C]; int n=32; int m=5; Compito Studente N O

Algoritmi su Matrici. int const R=40; int const C=8; int A[R][C]; int n=32; int m=5; Compito Studente N O Algoritmi su Matrici Esempio: una classe di 32 studenti ha sostenuto durante l anno 5 compiti in classe. Supponiamo di voler scrivere un programma che stampi per ogni studente la somma e la media dei voti

Dettagli

Algoritmi e Strutture Dati. Luciano Gualà

Algoritmi e Strutture Dati. Luciano Gualà Algoritmi e Strutture Dati Luciano Gualà guala@mat.uniroma2.it www.mat.uniroma2.it/~guala Programmazione dinamica una tecnica di progettazione algoritmica molto potente Sommario La tecnica della programmazione

Dettagli

Il paradigma divide et impera. Paolo Camurati Dip. Automatica e Informatica Politecnico di Torino

Il paradigma divide et impera. Paolo Camurati Dip. Automatica e Informatica Politecnico di Torino Il paradigma divide et impera Paolo Camurati Dip. Automatica e Informatica Politecnico di Torino Paradigmi per il Problem Solving: Divide et Impera Divide da problema di dimensione n in a problemi indipendenti

Dettagli

Soluzioni della settima esercitazione di Algoritmi 1

Soluzioni della settima esercitazione di Algoritmi 1 Soluzioni della settima esercitazione di Algoritmi 1 Beniamino Accattoli 19 dicembre 2007 1 Grafi Un grafo è non orientato se descrivendo un arco come una coppia di vertici (i,j) l ordine è ininfluente

Dettagli

LE STRUTTURE DATI DINAMICHE: GLI ALBERI. Cosimo Laneve

LE STRUTTURE DATI DINAMICHE: GLI ALBERI. Cosimo Laneve LE STRUTTURE DATI DINAMICHE: GLI ALBERI Cosimo Laneve 1 argomenti 1. definizione di alberi e nozioni relative 2. implementazione degli alberi, creazione, visita 3. algoritmo di visita iterativa e sua implementazione

Dettagli

Alberi e alberi binari I Un albero è un caso particolare di grafo

Alberi e alberi binari I Un albero è un caso particolare di grafo Alberi e alberi binari I Un albero è un caso particolare di grafo I I I I È costituito da un insieme di nodi collegati tra di loro mediante archi Gli archi sono orientati (ogni arco esce da un nodo origine

Dettagli

LA RICORSIONE LA RICORSIONE LA RICORSIONE: ESEMPIO LA RICORSIONE: ESEMPIO LA RICORSIONE: ESEMPIO LA RICORSIONE: ESEMPIO

LA RICORSIONE LA RICORSIONE LA RICORSIONE: ESEMPIO LA RICORSIONE: ESEMPIO LA RICORSIONE: ESEMPIO LA RICORSIONE: ESEMPIO LA RICORSIONE Una funzione matematica è definita ricorsivamente quando nella sua definizione compare un riferimento a se stessa La ricorsione consiste nella possibilità di definire una funzione in termini

Dettagli

Programmazione dinamica

Programmazione dinamica Capitolo 6 Programmazione dinamica 6.4 Il problema della distanza di edit tra due stringhe x e y chiede di calcolare il minimo numero di operazioni su singoli caratteri (inserimento, cancellazione e sostituzione)

Dettagli

Alcuni Soluzioni. Fornire la specifica di un algoritmo risolutivo utilizzando lo pseudocodice visto a lezione.

Alcuni Soluzioni. Fornire la specifica di un algoritmo risolutivo utilizzando lo pseudocodice visto a lezione. Alcuni Soluzioni ESERCIZIO 1 Data una sequenza di interi di dimensione dim, determinare se esistono esattamente cont occorrenze del valore val, utilizzando per questo una variabile booleana check. Stato

Dettagli

Algoritmo basato su cancellazione di cicli

Algoritmo basato su cancellazione di cicli Algoritmo basato su cancellazione di cicli Dato un flusso ammissibile iniziale, si costruisce una sequenza di flussi ammissibili di costo decrescente. Ciascun flusso è ottenuto dal precedente flusso ammissibile

Dettagli

2.3.3 Cammini ottimi nei grafi senza circuiti

2.3.3 Cammini ottimi nei grafi senza circuiti .. Cammini ottimi nei grafi senza circuiti Sia un grafo G = (N, A) orientato senza circuiti e una funzione di costo che assegna un valore c ij R ad ogni arco (i, j) A circuito Proprietà I nodi di un grafo

Dettagli

Moltiplicazione veloce di interi

Moltiplicazione veloce di interi Moltiplicazione veloce di interi Ogni numero intero w di n cifre può essere scritto come 10 n/2 w s + w d w s indica il numero formato dalle n/2 cifre più significative di w w d denota il numero formato

Dettagli

PARTE

PARTE Programmazione CdS in Matematica Appello d esame 24 Settembre 2008 Nome.. Cognome... Matricola.. INDICARE SUBITO NOME, COGNOME, E MATRICOLA NON è permesso (pena espulsione) usare la calcolatrice e consultare

Dettagli

Funzioni e Ricorsione

Funzioni e Ricorsione Funzioni e Ricorsione La ricorsione consiste nella possibilità di definire una funzione in termini di se stessa Nel codice di una funzione ricorsiva compare una (o più di una) chiamata alla funzione stessa

Dettagli

ESERCIZI SULLA TECNICA BACKTRACKING e BRANCH & BOUND

ESERCIZI SULLA TECNICA BACKTRACKING e BRANCH & BOUND ESERCIZI SULLA TECNICA BACKTRACKING e BRANCH & BOUND 1. [ STRINGHE] Scrivere in pseudo-codice una procedura che, preso in input un intero n, stampi tutte le stringhe di lunghezza minore o uguale ad n sull

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi e Strutture Dati Modelli di calcolo e metodologie di analisi Domenico Fabio Savo 1 Notazione asintotica f(n) = tempo di esecuzione / occupazione di memoria di un algoritmo su input di dimensione

Dettagli

Allineamento multiplo di sequenze

Allineamento multiplo di sequenze Allineamento multiplo di sequenze Bioinformatica a.a. 2008/2009 Letterio Galletta Università di Pisa 22 Maggio 2009 Letterio Galletta (Università di Pisa) Allineamento multiplo di sequenze 22 Maggio 2009

Dettagli

Note per la Lezione 14 Ugo Vaccaro

Note per la Lezione 14 Ugo Vaccaro Progettazione di Algoritmi Anno Accademico 2018 2019 Note per la Lezione 14 Ugo Vaccaro Applichiamo la tecnica di Programmazione Dinamica al seguente problema. Input del problema: Supponiamo di avere un

Dettagli

Algoritmi Greedy. Tecniche Algoritmiche: tecnica greedy (o golosa) Un esempio

Algoritmi Greedy. Tecniche Algoritmiche: tecnica greedy (o golosa) Un esempio Algoritmi Greedy Tecniche Algoritmiche: tecnica greedy (o golosa) Idea: per trovare una soluzione globalmente ottima, scegli ripetutamente soluzioni ottime localmente Un esempio Input: lista di interi

Dettagli

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

Per regnare occorre tenere divisi i nemici e trarne vantaggio. fai ad ogni passo la scelta più conveniente Progetto di algoritmi sequenziali (un solo esecutore ) Divide et Impera Per regnare occorre tenere divisi i nemici e trarne vantaggio Greedy fai ad ogni passo la scelta più conveniente Buoni risultati

Dettagli

1. Si scriva una function Matlab che implementa il seguente metodo di punto fisso

1. Si scriva una function Matlab che implementa il seguente metodo di punto fisso Domanda 1 1. Si scriva una function Matlab che implementa il seguente metodo di punto fisso x n+1 = x n f(x n), n = 0, 1, 2,... K dove x 0 è il punto iniziale, f(x) = x 3 cos(x) e K è una costante assegnata.

Dettagli

Programmazione Lineare: problema del trasporto Ing. Valerio Lacagnina

Programmazione Lineare: problema del trasporto Ing. Valerio Lacagnina Problemi di trasporto Consideriamo un problema di programmazione lineare con una struttura matematica particolare. Si può utilizzare, per risolverlo, il metodo del simplesso ma è possibile realizzare una

Dettagli

Informatica 3. LEZIONE 16: Heap - Codifica di Huffmann. Modulo 1: Heap e code di priorità Modulo 2: Esempio applicativo: codifica di Huffmann

Informatica 3. LEZIONE 16: Heap - Codifica di Huffmann. Modulo 1: Heap e code di priorità Modulo 2: Esempio applicativo: codifica di Huffmann Informatica 3 LEZIONE 16: Heap - Codifica di Huffmann Modulo 1: Heap e code di priorità Modulo 2: Esempio applicativo: codifica di Huffmann Informatica 3 Lezione 16 - Modulo 1 Heap e code di priorità Introduzione

Dettagli

Alberi e alberi binari I Un albero è un caso particolare di grafo

Alberi e alberi binari I Un albero è un caso particolare di grafo Alberi e alberi binari Un albero è un caso particolare di grafo È costituito da un insieme di nodi collegati tra di loro mediante archi Gli archi sono orientati (ogni arco esce da un nodo origine ed entra

Dettagli

LA RICORSIONE! Una funzione matematica è definita ricorsivamente quando nella sua definizione compare un riferimento a se stessa

LA RICORSIONE! Una funzione matematica è definita ricorsivamente quando nella sua definizione compare un riferimento a se stessa LA RICORSIONE! Una funzione matematica è definita ricorsivamente quando nella sua definizione compare un riferimento a se stessa La ricorsione consiste nella possibilità di definire una funzione in termini

Dettagli

Laboratorio di Informatica L-A 1

Laboratorio di Informatica L-A 1 Funzioni e Ricorsione La ricorsione consiste nella possibilità di definire una funzione in termini di se stessa È basata sul principio di induzione matematica: se una proprietà P vale per n=n 0 e si può

Dettagli

TECNICA PROGRAMMAZIONE DINAMICA

TECNICA PROGRAMMAZIONE DINAMICA TECNICA PROGRAMMAZIONE DINAMICA 1. Introduzione Come il metodo divide et impera, la programmazione dinamica (DP) risolve problemi mettendo insieme le soluzioni di un certo numero di sottoproblemi. A differenza

Dettagli

Algoritmo del simplesso

Algoritmo del simplesso Algoritmo del simplesso Ipotesi : si parte da una S.A.B. e dal tableau A=b in forma canonica. Si aggiunge una riga costituita dagli r j, j =,., n e da -z (valore, cambiato di segno, della f.o. nella s.a.b.)

Dettagli

Laboratorio di Python

Laboratorio di Python Algoritmo, sulle liste Università di Bologna 3 e 5 aprile 2013 Sommario Correzione esercizi 1 Correzione esercizi 2 3 4 Correzione Correzione esercizi scrivere e documentare un programma con un menu dove:

Dettagli

Sommario. Tecniche di Decomposizione dei Problemi. Algoritmi: Costruzione. Tipi di problemi

Sommario. Tecniche di Decomposizione dei Problemi. Algoritmi: Costruzione. Tipi di problemi Sommario Tecniche di Decomposizione dei Problemi Costruzione di algoritmi Approccio alla soluzione di problemi complessi Sequenza; Selezione; Iterazione; Ricorsione Tecniche di Decomposizione dei Problemi

Dettagli

INFORMATICA A. Titolo presentazione sottotitolo. Laboratorio n 6 Dott. Michele Zanella Ing. Gian Enrico Conti

INFORMATICA A. Titolo presentazione sottotitolo. Laboratorio n 6 Dott. Michele Zanella Ing. Gian Enrico Conti INFORMATICA A Titolo presentazione sottotitolo A.A. 2018-19 Milano, XX mese 20XX Laboratorio n 6 Dott. Michele Zanella Ing. Gian Enrico Conti Ricorsione La ricorsione è un approccio per la risoluzione

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi Ricorsivi e Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino I conigli di Fibonacci Ricerca Binaria L isola dei conigli Leonardo da

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi Ricorsivi e Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino A.A. 2006/07 I conigli di Fibonacci Ricerca Binaria L isola dei conigli

Dettagli

Metodi iterativi per sistemi lineari

Metodi iterativi per sistemi lineari Generare una successione di vettori Metodi iterativi per sistemi lineari convergente alla soluzione del sistema Convergenza in norma Costruzione di un metodo iterativo Per una qualche norma vettoriale

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi Ricorsivi e Ricorrenze 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

Dettagli

Pile Le pile: specifiche e realizzazioni attraverso rappresentazioni sequenziali e collegate. Pile e procedure ricorsive

Pile Le pile: specifiche e realizzazioni attraverso rappresentazioni sequenziali e collegate. Pile e procedure ricorsive Pile Le pile: specifiche e realizzazioni attraverso rappresentazioni sequenziali e collegate. Pile e procedure ricorsive Algoritmi e Strutture Dati + Lab A.A. 14/15 Informatica Università degli Studi di

Dettagli

FUNZIONI. attribuire un nome ad un insieme di istruzioni parametrizzare l esecuzione del codice

FUNZIONI. attribuire un nome ad un insieme di istruzioni parametrizzare l esecuzione del codice Funzioni FUNZIONI Spesso può essere utile avere la possibilità di costruire nuove istruzioni che risolvono parti specifiche di un problema Una funzione permette di attribuire un nome ad un insieme di istruzioni

Dettagli

A-2 a PI. Esercizio 2. Domanda 3

A-2 a PI. Esercizio 2. Domanda 3 A-2 a PI Ricerca Operativa 1 Seconda prova intermedia È dato il problema di PL in figura. 1. Facendo uso delle condizioni di ortogonalità, dimostrare o confutare l ottimalità della soluzione x = 1; x =

Dettagli

Fondamenti di Informatica

Fondamenti di Informatica Vettori e matrici #1 Le variabili definite come coppie sono dette variabili scalari Fondamenti di Informatica 5. Algoritmi e pseudocodifica Una coppia è una variabile

Dettagli

Teoria dei Giochi Prova del 28 Settembre 2012

Teoria dei Giochi Prova del 28 Settembre 2012 Cognome, Nome, Numero di Matricola, email: Teoria dei Giochi Prova del 28 Settembre 2012 Esercizio 1. Considera il seguente gioco non cooperativo. È data una rete con insieme dei nodi V = {s,x 1,x 2,y,t}

Dettagli

Gestione della produzione e della supply chain Logistica distributiva

Gestione della produzione e della supply chain Logistica distributiva Gestione della produzione e della supply chain Logistica distributiva Paolo Detti Dipartimento di Ingegneria dell Informazione e Scienze Matematiche Università di Siena Convergenza dell algoritmo Se non

Dettagli

UNIVERSITÀ DEGLI STUDI ROMA TRE Collegio Didattico in Ingegneria Informatica corso di Ricerca operativa 2. Esercizi sul problema dell assegnamento

UNIVERSITÀ DEGLI STUDI ROMA TRE Collegio Didattico in Ingegneria Informatica corso di Ricerca operativa 2. Esercizi sul problema dell assegnamento UNIVERSITÀ DEGLI STUDI ROMA TRE Collegio Didattico in Ingegneria Informatica corso di Ricerca operativa Esercizi sul problema dell assegnamento Richiami di Teoria Ricordiamo che, dato un grafo G=(N,A),

Dettagli

La Programmazione Dinamica

La Programmazione Dinamica La Programmazione Dinamica Massimo Paolucci (paolucci@dist.unige.it) DIST Università di Genova 21/22 La Programmazione Dinamica 2 E un metodo di soluzione di problemi a stadi Ad ogni stadio corrisponde

Dettagli

Quinto appello 27/6/ = 4. B b B = 2 b N = 4

Quinto appello 27/6/ = 4. B b B = 2 b N = 4 Quinto appello // RICERCA OPERATIVA (a.a. /) Nome: Cognome: Matricola: ) Si risolva il problema di PL dato applicando l algoritmo del Simplesso Duale, per via algebrica, a partire dalla base B {, }. Per

Dettagli

3.3 Problemi di PLI facili

3.3 Problemi di PLI facili 3.3 Problemi di PLI facili Consideriamo un generico problema di PLI espresso in forma standard min{c t x : Ax = b, x Z n +} (1) dove A Z m n con n m, e b Z m. Supponiamo che A sia di rango pieno. Sia P

Dettagli

Tempo e spazio di calcolo (continua)

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

Dettagli

Problema del cammino minimo

Problema del cammino minimo Algoritmi e Strutture di Dati II Problema del cammino minimo Un viaggiatore vuole trovare la via più corta per andare da una città ad un altra. Possiamo rappresentare ogni città con un nodo e ogni collegamento

Dettagli

Pairwise Sequence Alignment BIOINFORMATICA. Corso di Laurea in Ingegneria Informatica e Biomedica. Università Magna Graecia Catanzaro

Pairwise Sequence Alignment BIOINFORMATICA. Corso di Laurea in Ingegneria Informatica e Biomedica. Università Magna Graecia Catanzaro Pairwise Sequence Alignment BIOINFORMATICA Corso di Laurea in Ingegneria Informatica e Biomedica Università Magna Graecia Catanzaro Outline Similarità Allineamento Omologia Allineamento Esatto di Coppie

Dettagli

1) Codici convoluzionali. 2) Circuito codificatore. 3) Diagramma a stati e a traliccio. 4) Distanza libera. 5) Algoritmo di Viterbi

1) Codici convoluzionali. 2) Circuito codificatore. 3) Diagramma a stati e a traliccio. 4) Distanza libera. 5) Algoritmo di Viterbi Argomenti della Lezione 1) Codici convoluzionali 2) Circuito codificatore 3) Diagramma a stati e a traliccio 4) Distanza libera 5) Algoritmo di Viterbi 1 Codici convoluzionali I codici convoluzionali sono

Dettagli

1) Hamming bound, coset, codici equivalenti

1) Hamming bound, coset, codici equivalenti Argomenti della Lezione ) Hamming bound, coset, codici equivalenti 2) Esercizi sui codici lineari a blocchi Osservazione () Per effettuare la decodifica a rivelazione di errore si può seguire una delle

Dettagli

Esercizi per il corso di. Logistica I. a.a Daniela Favaretto. Dipartimento di Matematica Applicata Università Ca Foscari di Venezia

Esercizi per il corso di. Logistica I. a.a Daniela Favaretto. Dipartimento di Matematica Applicata Università Ca Foscari di Venezia sercizi per il corso di Logistica I a.a. - aniela avaretto ipartimento di Matematica pplicata Università a oscari di Venezia sercizio Individuare un albero di supporto di lunghezza minima (SST) sul seguente

Dettagli

INTERPOLAZIONI CON SPLINE

INTERPOLAZIONI CON SPLINE INTERPOLAZIONI CON SPLINE Assegnati gli n +1valori che la funzione f assume nei nodi x i, si costruisce un interpolazione polinomiale a tratti. In ognuno degli intervalli [x i 1,x i ] il polinomio interpolatore

Dettagli

La MT come riconoscitore

La MT come riconoscitore La MT come riconoscitore Sia M =

Dettagli

Certificati dei problemi in NP

Certificati dei problemi in NP Certificati dei problemi in NP La stringa y viene in genere denominata un certificato Un Certificato è una informazione ausiliaria che può essere utilizzata per verificare in tempo polinomiale nella dimensione

Dettagli

LA RICORSIONE. Una funzione matematica è definita ricorsivamente quando nella sua definizione compare un riferimento a se stessa

LA RICORSIONE. Una funzione matematica è definita ricorsivamente quando nella sua definizione compare un riferimento a se stessa LA RICORSIONE Una funzione matematica è definita ricorsivamente quando nella sua definizione compare un riferimento a se stessa La ricorsione consiste nella possibilità di definire una funzione in termini

Dettagli

Linguaggio C++ 8. Matrici

Linguaggio C++ 8. Matrici 2009-2010 Ingegneria Aerospaziale Prof. A. Palomba - Elementi di Informatica (E-Z) Linguaggio C++ 8 Matrici Linguaggio C++ 8 1 Array a più dimensioni. Sintassi generale : tipo nome [dimensione 1][dimensione

Dettagli