UNIVERSITA’ DI MILANO-BICOCCA LAUREA MAGISTRALE IN BIOINFORMATICA

Slides:



Advertisements
Presentazioni simili
UNIVERSITA’ DI MILANO-BICOCCA LAUREA MAGISTRALE IN BIOINFORMATICA
Advertisements

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.
Programmazione dinamica: problema della sottosequenza più lunga
UNIVERSITA’ DI MILANO-BICOCCA LAUREA MAGISTRALE IN BIOINFORMATICA
Ricorsione Procedure e funzioni ricorsive. Definizioni Un oggetto si dice ricorsivo se è definito totalmente o parzialmente in termini di sé stesso La.
Dipartimento di Matematica
Algoritmi e Programmazione
UNIVERSITA’ DI MILANO-BICOCCA LAUREA MAGISTRALE IN BIOINFORMATICA
UNIVERSITA DI MILANO-BICOCCA CdL IN INFORMATICA Corso di Algoritmi e Ricerca Operativa Prof. Giancarlo Mauri LEZIONE 2.
Fondamenti di Informatica
Lez. 91 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Alberi di ricerca.
Lez. 41 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Programmazione.
Programmazione dinamica
Master Bioinformatica 2002: Progetto di Algoritmi1 Programmazione Dinamica (PD) Altra tecnica per risolvere problemi di ottimizzazione, piu generale degli.
Introduzione agli algoritmi. Definizione Sistema di regole e procedure di calcolo ben definite che portano alla soluzione di un problema con un numero.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Usa la tecnica del.
Capitolo 1 Unintroduzione informale agli algoritmi Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Ordinamenti ottimi.
Capitolo 1 Unintroduzione informale agli algoritmi Algoritmi e Strutture Dati.
Capitolo 1 Unintroduzione informale agli algoritmi Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Algoritmi e Strutture Dati
Capitolo 10 Tecniche algoritmiche Algoritmi e Strutture Dati.
Capitolo 1 Unintroduzione informale agli algoritmi Algoritmi e Strutture Dati.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
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.
Algoritmi Politecnico di Milano C Primi programmi Politecnico di Milano.
Informatica di base A.A. 2003/2004 Algoritmi e programmi
Capitolo 10 Tecniche algoritmiche Algoritmi e Strutture Dati.
Università degli studi di LAquila Anno Accademico 2007/2008 Corso Integrato di Algoritmi e Strutture Dati con Laboratorio Modulo da 6 CFU di Algoritmi.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Problemi e algoritmi Anno Accademico 2009/2010.
Algoritmi e Strutture Dati (Mod. B)
Algoritmi e Strutture Dati (Mod. B)
APPUNTI SUL LINGUAGGIO C
LdL - LP1 - ver. 6 - lez aa Linguaggi di programmazione I La ricorsione Prof. Luigi Di Lascio Lezione 10.
ITERAZIONE e RICORSIONE (eseguire uno stesso calcolo ripetutamente) ITERAZIONE: ripetere piu volte una sequenza di operazioni istruzioni: for, while, do.
ITERAZIONE e RICORSIONE (eseguire uno stesso calcolo ripetutamente)
Procedure e funzioni nei linguaggi di alto livello Lab Programmazione - turno /2006.
Biologia computazionale A.A semestre II U NIVERSITÀ DEGLI STUDI DI MILANO Docente: Giorgio Valentini Istruttore: Matteo Re p5p5 UPGMA C.d.l.
Algoritmo SelectSort Invariante di ciclo: ad ogni passo
Esercitazioni sui File Nicola Fanizzi - DIB Corso (B) di Programmazione CdL in Informatica – I livello A.A. 2003/2004.
Algoritmi su Tipi Semplici
Introduzione alla Ricorsione
La Programmazione Ricorsiva
Fondamenti di Informatica Algoritmi
Passo 3: calcolo del costo minimo
Massimo Comun Divisore
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Introduzione agli algoritmi e strutture dati 3/ed T. H. Cormen, C. E. Leiserson, R. L. Rivest, C. Stein Copyright © 2010 – The McGraw-Hill Companies srl.
ND-partizione (A) n   A  somma  0 M  1/2 (  a i ) for i  1 to n do S[i]  choice ({true, false}) if S[i] then somma  somma + a i if somma > M then.
Sistemi e Tecnologie Informatiche Ricorsione Umberto Ferraro Petrillo.
Array (ordinamento) CORDA – Informatica A. Ferrari.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE La Ricorsione Marco D. Santambrogio – Ver. aggiornata al 21 Maggio 2014.
Didattica e Fondamenti degli Algoritmi e della Calcolabilità Quarta giornata Risolvere efficientemente un problema in P: la sequenza di Fibonacci Guido.
Allievi Elettrici - AA Le funzioni ricorsive in C
Capitolo 13 Cammini minimi: Algoritmo di Floyd e Warshall Algoritmi e Strutture Dati.
Paola Disisto, Erika Griffini, Yris Noriega.  Insieme ordinato di operazioni non ambigue ed effettivamente computabili che, quando eseguito, produce.
4/25/2015E. Giovannetti -- OI09.1 Olimpiadi di Informatica 2010 Giornate preparatorie Dipartimento di Informatica Università di Torino marzo –
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 1 Università degli.
UNIVERSITA’ DI MILANO-BICOCCA LAUREA MAGISTRALE IN BIOINFORMATICA Corso di BIOINFORMATICA: TECNICHE DI BASE Prof. Giancarlo Mauri Lezione 11 Distanza genomica.
UNIVERSITA’ DI MILANO-BICOCCA CdL IN INFORMATICA Corso di ALGORITMI COMPLEMENTI Prof. Giancarlo Mauri Distanza di edit e programmazione dinamica.
Espressioni regolari (1)
1 Informatica Generale Marzia Buscemi Ricevimento: Giovedì ore , Dipartimento di Informatica, stanza 306-PS o per posta.
Problemi risolvibili con la programmazione dinamica Abbiamo usato la programmazione dinamica per risolvere due problemi. Cerchiamo ora di capire quali.
Capitolo 10 Tecniche algoritmiche Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati Luciano Gualà
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi Interconnessione tramite reti Lezione n°6.
Transcript della presentazione:

UNIVERSITA’ DI MILANO-BICOCCA LAUREA MAGISTRALE IN BIOINFORMATICA Corso di BIOINFORMATICA: TECNICHE DI BASE Prof. Giancarlo Mauri Lezione 4 Distanza di edit e programmazione dinamica

Confronto di sequenze Il confronto tra sequenze in biologia computazionale è la base per: misurare la “similarità” tra le sequenze allineamento misurare la “diversità” tra le sequenze distanza di edit trovare parti comuni alle sequenze pattern discovery allineamento locale

Capire da dove possono nascere le differenze: Confronto di sequenze Perché si confrontano sequenze in biologia? Capire da dove possono nascere le differenze: errori di trascrizione mutazioni inserimento cancellazione sostituzione di basi

Distanza tra due sequenze Distanza tra due sequenze S1 e S2 (Levenshtein 66): numero minimo di “operazioni di modifica” necessarie per trasformare S1 in S2 Esempio GETTO GATTO una sostituzione BRODO BRRDO BARDO due sostituzioni o un’inversione e una sostituzione TINTA TINTRE TINTAE TINORE COLORE TOLORE TILORE cinque sostituzioni e una cancellazione TCTGGC TCTGCC TCTGGG GGGTCT TGACCC AGACCC TCACCC TCTCCC complemento inverso

Edit transcript I = inserisci C = cancella S = sostituisci N = lascia invariato SINCNCNNI v intner wri t ers Rappresenta una particolare trasformazione di una stringa in un’altra

Distanza di edit: il problema INPUT: due sequenze S1 e S2 definite su un alfabeto S OUTPUT: distanza di edit tra S1 e S2 e edit transcript ottimale che fornisce la trasformazione da S1 a S2 TECNICA UTILIZZATA: Programmazione Dinamica (PD)

Programmazione Dinamica Perché si usa la Programmazione Dinamica? Per rendere efficiente l’implementazione di procedure ricorsive Esempio: procedura ricorsiva per il calcolo della somma dei numeri da 1 a n Procedura SOMMA(n) begin if n=1 then somma:=n; else somma:=SOMMA(n-1)+n; return somma; end Esempio di chiamata SOMMA(4) SOMMA(4) SOMMA(3) +4 SOMMA(2) +3 SOMMA(1) +2

Programmazione Dinamica Quali sono le procedure ricorsive da sostituire con un algoritmo di PD? Quelle in cui si presentano sottoproblemi ripetuti Esempio: i numeri di Fibonacci Obiettivo dare un modello matematico della crescita di una popolazione di conigli Assunzioni: Si parte (tempo 0) con una coppia di conigli neonati Ogni coppia genera una nuova coppia ad ogni unità di tempo, a partire dalla seconda unità dopo la nascita I conigli non muoiono mai Modello matematico per calcolare il numero di coppie al tempo n: F(n) := se (n=0) o (n=1), allora 1 altrimenti F(n-1)+F(n-2)

Programmazione Dinamica Esempio di chiamata FIB(4) Esempio: procedura ricorsiva per il calcolo dei numeri di Fibonacci FIB(3) FIB(2) FIB(4) FIB(1) FIB(0) FIB(3) FIB(2) FIB(4) FIB(1) FIB(0) FIB(3) FIB(2) FIB(4) FIB(3) FIB(2) FIB(4) FIB(1) NB: nella chiamata FIB(4), il numero di Fibonacci per n=2 viene calcolato 2 volte Procedura FIB(n) begin if n=0 or n=1 then return 1; a:=n-1;b:=n-2; f1:=FIBONACCI(a); f2:=FIBONACCI(b); return f1+f2; end

Programmazione Dinamica Algoritmo alternativo a FIB(n) Procedura FIB2(n) begin F:=(); i:=0; for i=0 to n do if i=0 then F[i]:=0; else if i=1 then F[i]:=1; F[i]:=F[i-1]+F[i-2]; end return F(n); NB: nella chiamata FIB2(4), il valore F[2] viene sfruttato 2 volte ma calcolato 1 volta

Programmazione Dinamica Passi fondamentali della Programmazione Dinamica Riduzione del problema in sottoproblemi Risoluzione di tutti i sottoproblemi possibili Risoluzione del problema originale tramite l’utilizzo delle soluzioni dei suoi sottoproblemi

Calcolo della distanza di edit Si considerino le sequenze : S1 = a1 a2 ... ai-1 ai ai+1 ... an S2 = b1 b2 ...... bj-1 bj bj+1... bm Costruiamo l’array: D(i,j) = distanza tra il prefisso a1a2…ai e il prefisso b1b2…bj Calcoliamo D(n,m) risolvendo il problema più generale di calcolare D(i,j) per qualunque combinazione di valori di i e j. La progr din ha tre componenti: relaz di ricorrenza, calcolo tabulare, risalita. Il risultato cercato sarà: D(n,m) = distanza tra a1 a2 ... an e b1 b2 ...bm

Calcolo della distanza di edit Si hanno tre possibilità per calcolare D(i,j), noto D(k,l) per k<i e l<j: il carattere ai va sostituito con il carattere bj e quindi: D(i,j) = D(i-1,j-1)+t(ai,bj) il carattere ai va cancellato e quindi: D(i,j) = D(i-1,j)+1 il carattere bj va inserito e quindi: D(i,j) = D(i,j-1)+1 Si hanno tre possibilità per calcolare D(i,j), noto D(k,l) per k<i e l<j: il carattere ai va sostituito con il bj e quindi: D(i,j) = distanza di edit tra i prefissi a1a2…ai-1 e b1b2…bj-1 + una operazione di sostituzione il carattere ai va cancellato e quindi: D(i,j) = distanza di edit tra i prefissi a1a2…ai-1 e b1b2…bj + una operazione di cancellazione il carattere bj va inserito e quindi: D(i,j) = distanza di edit tra i prefissi a1a2…ai e b1b2…bj-1 + una operazione di inserimento t(ai,bj)=1 se ai diverso da bj, altrimenti t(ai,bj)=0 Calcoliamo D(n,m) risolvendo il problema più generale di calcolare D(i,j) per qualunque combinazione di valori di i e j. La progr din ha tre componenti: relaz di ricorrenza, calcolo tabulare, risalita.

Calcolo della distanza di edit Si richiama quindi il calcolo di: a1 a2 ... ai-1 ai ai+1 ... an b1 b2 ...... bj-1 bj ... bm D(i-1,j-1) a1 a2 ... ai-1 ai ai+1 ... an b1 b2 ...... bj-1 bj ... bm D(i-1,j) a1 a2 ... ai-1 ai ai+1 ... an b1 b2 ...... bj-1 bj ... bm D(i,j-1)

Calcolo della distanza di edit Dal momento che si vuole un valore minimo, si ottiene la ricorrenza D(i,j) = MIN D(i-1,j-1)+t(ai,bj) D(i-1,j)+1 D(i,j-1)+1 Calcoliamo D(n,m) risolvendo il problema più generale di calcolare D(i,j) per qualunque combinazione di valori di i e j. La progr din ha tre componenti: relaz di ricorrenza, calcolo tabulare, risalita. che stabilisce un legame tra il generico sottoproblema D(i,j) e i sottoproblemi D(i-1,j-1), D(i-1,j) e D(i,j-1)

Calcolo della distanza di edit Ricorrenza: stabilisce un legame ricorsivo tra il valore di D(i,j) e i valori per indici più piccoli, fino a un valore base. BASE: D(i,0) = i D(0,j) = j PASSO: D(i,j) = min{D(i-1,j)+1; D(i,j-1)+1; D(i-1,j-1)+t(i,j)} con t(i,j) = 1 se ai ≠ bj 0 altrimenti

Calcolo della distanza di edit In particolare: per i=n e j=m, si ottiene la distanza di edit D(n,m) tra le sequenze S1 e S2 per i=0 e j>0, si ottiene la distanza di edit D(0,j) tra la sequenza nulla e e il prefisso b1b2…bj (D(0,j)=j) per i>0 e j=0, si ottiene la distanza di edit D(i,0) tra il prefisso a1a2…ai e la sequenza nulla e (D(i,0)=i) Calcoliamo D(n,m) risolvendo il problema più generale di calcolare D(i,j) per qualunque combinazione di valori di i e j. La progr din ha tre componenti: relaz di ricorrenza, calcolo tabulare, risalita.

Calcolo della distanza di edit I casi base, per i quali il valore di D è calcolabile immediatamente, sono: D(0,0) = 0 D(i,0) = i (i cancellazioni) D(0,j) = j (j cancellazioni) Calcoliamo D(n,m) risolvendo il problema più generale di calcolare D(i,j) per qualunque combinazione di valori di i e j. La progr din ha tre componenti: relaz di ricorrenza, calcolo tabulare, risalita.

Calcolo della distanza di edit Correttezza D(i,j) = D(i-1,j)+1, D(i,j-1)+1 oppure D(i-1,j-1)+t(ai,bj) Non ci sono altre possibilità 1.1 - Sia I l’ultima operazione per ottenere S2 da S1 Allora D(i,j) = D(i,j-1)+1 1.2 - Sia C l’ultima operazione per ottenere S2 da S1 Allora D(i,j) = D(i-1,j)+1 …… 2. D(i,j) ≤ min {D(i-1,j)+1, D(i,j-1)+1, D(i-1,j-1)+t(i,j)}

Calcolo della distanza di edit Esempio: calcolo della distanza di edit per S1=“winter” (n=6) e S2=“writers” (m=7) w r i t e s n  Si costruisca la matrice D di n+1 (6+1) righe e m+1 (7+1) colonne La cella (1,1) avrà valore D(1,1) dato dal minimo tra: - D(0,0)+t(w,w)=0 - D(0,1)+1=2 - D(1,0)+1=2 Quindi: D(1,1)=0 La cella (1,2) avrà valore D(1,2) dato dal minimo tra: - D(0,1)+t(w,r)=2 - D(0,2)+1=3 - D(1,1)+1=1 Quindi: D(1,2)=1 …e così di seguito Si riempiano le celle D(0,j) e D(i,0) con i rispettivi valori dei casi base j e i Nella cella D(6,7) è memorizzata la distanza di edit tra S1 e S2  1 2 3 4 5 6 7 1 1 2 3 4 5 6 2 1 1 1 2 3 4 5 3 2 2 2 2 3 4 5 4 3 3 3 2 3 4 5 5 4 4 4 3 2 3 4 6 5 4 5 4 3 2 3 3

Calcolo della distanza di edit La trasformazione da S1 a S2 relativa alla cella (i,j) è di sostituzione del carattere ai con il carattere bj se D(i,j)=D(i-1,j-1)+t(ai,bj) cancellazione del carattere ai se D(i,j)=D(i-1,j)+1 inserimento del carattere bj se D(i,j)=D(i,j-1)+1 Se ai è uguale a bj, l’operazione di sostituzione è nulla Calcoliamo D(n,m) risolvendo il problema più generale di calcolare D(i,j) per qualunque combinazione di valori di i e j. La progr din ha tre componenti: relaz di ricorrenza, calcolo tabulare, risalita. NB: può esistere più di una trasformazione relativa alla cella (i,j)

Calcolo della distanza di edit Esempio: ricostruzione della trasformazione da S1=“winter” a S2=“writers” w r i t e s n 1 2 3 4 5 6 7 …e così di seguito La cella (6,6) è stata prodotta a partire dalla cella (5,5) La cella (6,7) è stata prodotta a partire dalla cella (6,6) 1 writers writers winters wiiters winters winters winter winters 2 Operazioni: Operazioni: ? 2 - inserimento di s 2 - sostituzione n  i - sostituzione i  r 2

Calcolo della distanza di edit La complessità in tempo dell’algoritmo è O(nm) per il riempimento della matrice di calcolo della distanza di edit O(n+m) per la ricostruzione della trasformazione da S1 a S2 Calcoliamo D(n,m) risolvendo il problema più generale di calcolare D(i,j) per qualunque combinazione di valori di i e j. La progr din ha tre componenti: relaz di ricorrenza, calcolo tabulare, risalita.