Master Bioinformatica 2002: Progetto di Algoritmi1 Programmazione Dinamica (PD) Altra tecnica per risolvere problemi di ottimizzazione, piu generale degli.

Slides:



Advertisements
Presentazioni simili
Problemi di ottimizzazione
Advertisements

UNIVERSITA’ DI MILANO-BICOCCA LAUREA MAGISTRALE IN BIOINFORMATICA
Master Bioinformatica 2002: Grafi Problema: cammini minimi da tutti i vertici a tutti i vertici Dato un grafo pesato G =(V,E,w), trovare un cammino minimo.
Algoritmi e Strutture Dati 2
Programmazione dinamica: problema della sottosequenza più lunga
                      Insertion-Sort
ALGORITMI Luglio 2004 Luglio 2004 Algoritmi.
Scomposizione funzionale
Lez. 31 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Programmazione.
Programmazione dinamica
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Usa la tecnica del.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Stesso approccio.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Ordinamenti ottimi.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Usa la tecnica del.
Capitolo 10 Tecniche algoritmiche Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Stesso approccio.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Usa la tecnica del.
Capitolo 10 Tecniche algoritmiche Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Stesso approccio.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 4 Ordinamento:
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 4 Ordinamento:
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 4 Ordinamento: Heapsort Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati
Capitolo 10 Tecniche algoritmiche Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Usa la tecnica del.
CORSO DI PROGRAMMAZIONE II Introduzione alla ricorsione
Algoritmi e Strutture Dati (Mod. A)
Algoritmi e Strutture Dati Valutazione del tempo di esecuzione degli algoritmi.
Algoritmi e Strutture Dati (Mod. B)
Algoritmi e Strutture Dati (Mod. B)
Algoritmi e Strutture Dati (Mod. B)
Progetto di algoritmi: metodologia "Divide et Impera"
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Lalgoritmo MergeSort Applica la strategia del divide et impera Divide: suddivide la sequenza di n elementi data in due sottosequenze di n/2 elementi Impera:
QuickSort Quick-Sort(A,s,d) IF s < d THEN q = Partiziona(A,s,d) Quick-Sort(A,s,q-1) Quick-Sort(A,q + 1,d)
Fondamenti di Informatica Algoritmi
Elementi di Informatica di base
Radix-Sort(A,d) // A[i] = cd...c2c1
Algoritmi e Strutture Dati
Studieremo alcune tecniche per il progetto di algoritmi e di strutture dati: Programmazione dinamica Algoritmi golosi Analisi ammortizzata Vedremo poi.
Passo 3: calcolo del costo minimo
Terzo passo: lunghezza di una LCS LCS-Length(X, Y, m, n) for i = 0 to m c[i, 0] = 0 for j = 1 to n c[0, j] = 0 for j = 1 to n for i = 1 to m if x i ==
Algoritmi e Strutture Dati
Sistemi e Tecnologie Informatiche Requisiti per la realizzazione di un buon programma.
Algoritmi e Strutture Dati
Teoria degli algoritmi e della computabilità Terza giornata: Ricerca e ordinamento ottimi. P vs NP, algoritmi di approssimazione, e il potere della randomizzazione.
Algoritmi CHE COS’è UN ALGORITMO di ORDINAMENTO?
Array (ordinamento) CORDA – Informatica A. Ferrari.
Gli Algoritmi L’algoritmo è un insieme ordinato di operazioni non ambigue ed effettivamente computabili che, quando eseguito, produce un risultato e si.
Ricorsione CORDA – Informatica A. Ferrari Testi da Alessandro Bugatti
TECNICA DIVIDE ET IMPERA
Capitolo 13 Cammini minimi: Algoritmo di Floyd e Warshall Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati
Paola Disisto, Erika Griffini, Yris Noriega.  Insieme ordinato di operazioni non ambigue ed effettivamente computabili che, quando eseguito, produce.
Capitolo 8 Code con priorità Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Capitolo 10 Tecniche algoritmiche Algoritmi e Strutture Dati.
Capitolo 10 Tecniche algoritmiche Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 4 Ordinamento:
Master Bioinformatica 2002: Visite di Grafi La struttura dati D è una PILA (STACK) Visita in profondità o Depth-First-Search (DFS)
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 4 Ordinamento: Heapsort Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Progettare algoritmi.
Programmazione dinamica Algoritmi golosi Analisi ammortizzata
Problemi risolvibili con la programmazione dinamica Abbiamo usato la programmazione dinamica per risolvere due problemi. Cerchiamo ora di capire quali.
Algoritmi golosi Tecniche di soluzione dei problemi viste finora:
Algoritmi e Strutture Dati (Mod. B) Algoritmi Greedy (parte III)
Università degli Studi di Cagliari FACOLTA’ DI INGEGNERIA
Algoritmi e Strutture Dati Università di Camerino Corso di Laurea in Informatica (12 CFU) I periodo didattico Emanuela Merelli
Algoritmi e Strutture Dati Luciano Gualà
L’algoritmo MergeSort
Transcript della presentazione:

Master Bioinformatica 2002: Progetto di Algoritmi1 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 dei sottoproblemi

Master Bioinformatica 2002: Progetto di Algoritmi2 Caratteristiche della programmazione dinamica Risolve i problemi in modo bottom-up: si parte da problemi piccoli e se ne compongono le soluzioni per trovare soluzioni di problemi di dimensioni più grandi. Si applica nei casi in cui un problema ha la proprieta della sottostruttura ottima.

Master Bioinformatica 2002: Progetto di Algoritmi3 Differenza con i metodi divide et impera I metodi divide et impera (esempio: ordinamento con mergesort) procedono top-down: la scomposizione produce problemi che vengono risolti in modo indipendente. Nei problemi a cui si applica la PD la scomposizione produce sottoproblemi che non sono indipendenti: la soluzione di alcuni sottoproblemi richiede di risolvere i medesimi sottoproblemi.

Master Bioinformatica 2002: Progetto di Algoritmi4 PD versus divide et impera (segue) I metodi divide et impera si applicano quando la scomposizione in sottoproblemi produce problemi tutti distinti. La PD si applica quando la scomposizione in sottoproblemi produce piu volte gli stessi sottoproblemi. Per evitare di risolvere piu volte gli stessi sottoproblemi, si memorizzano le soluzioni dei sottoproblemi in una tabella.

Master Bioinformatica 2002: Progetto di Algoritmi5 PD versus metodi greedy Programmazione dinamica e metodi greedy si applicano entrambi a problemi di ottimizzazione in cui vale la proprieta della sottostruttura ottima. Nei metodi greedy, le scelte ad ogni passo dipendono da un criterio esterno (appetibilità) ogni scelta determina un sottoproblema Nella PD le scelte dipendono dalla soluzione dei sottoproblemi

Master Bioinformatica 2002: Progetto di Algoritmi6 PD versus metodi greedy (segue) I metodi greedy agiscono in modo top-down: riducono progressivamente un problema a sottoproblemi di dimensioni decrescenti. I metodi basati sulla PD procedono bottom-up risolvendo per primi i problemi più piccoli. I metodi greedy sono molto piu efficienti di quelli basati sulla programmazione dinamica che devono provare tutte le alternative per fare una scelta ottima. La PD ha unapplicabilita maggiore rispetto ai metodi greedy.

Master Bioinformatica 2002: Progetto di Algoritmi7 Sviluppo di un algoritmo di programmazione dinamica Caratterizzazione della struttura di una soluzione ottima definizione ricorsiva del valore di una soluzione ottima. Calcolo iterativo del valore di una soluzione ottima mediante una strategia bottom-up Costruzione di una soluzione ottima a partire dal valore calcolato

Master Bioinformatica 2002: Progetto di Algoritmi8 Esempio: zaino0-1 La programmazione dinamica permette di risolvere il problema dello zaino 0-1, che non ammette una soluzione con i metodi greedy

Master Bioinformatica 2002: Progetto di Algoritmi9 Struttura di una soluzione ottima: Possiamo definire: M[i,j] = il massimo valore trasportabile con un peso j e potendo selezionare gli oggetti 1,…i.

Master Bioinformatica 2002: Progetto di Algoritmi10 Struttura di una soluzione ottima: Considera una soluzione ottima in cui si hanno a disposizione gli articoli 1,…,i e un carico j se i non e incluso nella soluzione ottima M[i, j] = M[i-1,j] se i e incluso nella soluzione ottima M[i,j] = M[i-1, j - w i ] + v i, dove j w i

Master Bioinformatica 2002: Progetto di Algoritmi11 Condizioni limite –M[i,0] = 0 per ogni i –M[0,j] = 0 per ogni j Posso calcolare in modo iterativo (bottom-up) i valori di M[i,j] a partire da M[0,0] per valori crescenti di i e j. Se ho n articoli e un peso W il valore di una selezione ottima sarà dato alla fine da M[n,W]

Master Bioinformatica 2002: Progetto di Algoritmi12 Definizione ricorsiva del valore di una soluzione M[0,j] = 0 M[i,0] = 0 M[i,j] = M[i-1,j] se j < w i M[i,j] = max {M[i-1,j], v i + M[i-1,j- w i ]} se j w i

Master Bioinformatica 2002: Progetto di Algoritmi13 Calcolo iterativo del valore di una soluzione ottima DynamicKnapsack0-1(W, w,v) for j = 0 to W M [0,j] 0 for i = 0 to n M [i,0] 0 for i = 1 to n for j = 1 to W if (j w i ) then M[i,j] max {M[i-1, j], v i +M[i-1, j- w i ]} else M[i,j] M [i-1,j];

Master Bioinformatica 2002: Progetto di Algoritmi14 Rivedendo lesempio

Master Bioinformatica 2002: Progetto di Algoritmi15 Esempio precedente j0<10< 20< 30< 40< 50 i

Master Bioinformatica 2002: Progetto di Algoritmi16 Calcolo di M[i,j] M[1,j] = 0j = 0,…9 nulla = 60 j = 10,…50{1} M[2,j] = 0j = 0,…,9 nulla = 60 j = 10,…,19 {1} = 100j = 20,…, 29 {2} = 160j = 30,…, 50 {1,2}

Master Bioinformatica 2002: Progetto di Algoritmi17 Calcolo di M[i,j] (segue) M[3,j] = 0j = 0,…,9 nulla = 60 j = 10,…,19{1} = 100j = 20,…, 29{2} = 160j = 30,…, 39{1,2} = 180j = 40,…,49{1,3} = 220j = 50{2,3}

Master Bioinformatica 2002: Progetto di Algoritmi18 Complessità dellalgoritmo La complessità dellalgoritmo di programmazione dinamica per lo zaino 0-1 è O(nW) dove n è il numero degli articoli e W è il peso dello zaino. Notare che W può essere arbitrariamente grande rispetto a n (ad esempio può essere W = 2 n )