UNIVERSITA’ DI MILANO-BICOCCA CdL IN INFORMATICA Corso di ALGORITMI COMPLEMENTI Prof. Giancarlo Mauri Distanza di edit e programmazione dinamica.

Slides:



Advertisements
Presentazioni simili
UNIVERSITA’ DI MILANO-BICOCCA LAUREA MAGISTRALE IN BIOINFORMATICA
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.
Capitolo 8 Sistemi lineari.
Vettori e matrici algebrici
UNIVERSITA DI MILANO-BICOCCA CdL IN INFORMATICA Corso di Algoritmi e Ricerca Operativa Prof. Giancarlo Mauri LEZIONE 2.
Lez. 91 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Alberi di ricerca.
Programmazione dinamica
Algebra delle Matrici.
Capitolo 10 Tecniche algoritmiche Algoritmi e Strutture Dati.
Capitolo 10 Tecniche algoritmiche Algoritmi e Strutture Dati.
Esercizi di esonero (a.a. 2007/2008) Compito C, terzo esercizio Data una sequenza di caratteri s1 ed una stringa s2 diciamo che s1 è contenuta in s2 se.
Algoritmi Politecnico di Milano
Algoritmi Politecnico di Milano C Primi programmi Politecnico di Milano.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 3: 24 Ottobre 2011 Sadegh Astaneh – Marco D. Santambrogio –
RICHIAMI ELEMENTARI DI ALGEBRA MATRICIALE
ANALISI DEI GRUPPI seconda parte
Capitolo 10 Tecniche algoritmiche Algoritmi e Strutture Dati.
Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.
Algoritmi e Strutture Dati (Mod. B)
Algoritmi e Strutture Dati (Mod. B)
Algoritmi e Strutture Dati (Mod. B)
Algoritmi e Strutture Dati (Mod. B)
Trovare il percorso minimo da b ad ogni altro vertice
Sistemi di equazioni lineari
APPUNTI SUL LINGUAGGIO C
Fogli di Calcolo Elettronici Corso di Informatica Generale per SMID a.a. 2002/03 docente: Giorgio Delzanno (DISI)
Biologia computazionale A.A semestre II U NIVERSITÀ DEGLI STUDI DI MILANO Docente: Giorgio Valentini Istruttore: Matteo Re p5p5 UPGMA C.d.l.
Introduzione alla Ricorsione
La Programmazione Ricorsiva
Algoritmi e diagrammi di flusso
Allineamento Metodo bioinformatico che date due o più sequenze ne mette in evidenza similarità/diversità, supponendo che le sequenze analizzate abbiano.
MATRICI classe 3 A inf (a.s ).
Algoritmi di String Matching
Definizione di determinante
Lezioni di Ricerca Operativa Corso di Laurea in Informatica
Passo 3: calcolo del costo minimo
Prof. Cerulli – Dott.ssa Gentili
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Prof. Cerulli – Dott.ssa Gentili
Milano, 17 Dicembre 2013 Informatica B Informatica B Matlab Laboratorio del 14/01/2014 Responsabili di laboratorio: Gianluca Durelli:
Array (ordinamento) CORDA – Informatica A. Ferrari.
Word: gli strumenti di formattazione

Università di Torino – Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a prof. Viviana Bono Blocco 7 – Array.
Fondamenti di Informatica II Ingegneria Informatica (A-I) Prof. M.T. PAZIENZA a.a – 3° ciclo.
4/19/2015E. Giovannetti -- OI09.1 Olimpiadi di Informatica 2010 Giornate preparatorie Dipartimento di Informatica Università di Torino marzo –
Fondamenti di Informatica II Ingegneria Informatica Prof. M.T. PAZIENZA a.a – 3° ciclo.
Capitolo 10 Tecniche algoritmiche Algoritmi e Strutture Dati.
Capitolo 10 Tecniche algoritmiche Algoritmi e Strutture Dati.
UNIVERSITA’ DI MILANO-BICOCCA LAUREA MAGISTRALE IN BIOINFORMATICA Corso di BIOINFORMATICA: TECNICHE DI BASE Prof. Giancarlo Mauri Lezione 3 Mappe genetiche.
1 Strutture dati. 2 Astrazione Non vogliamo sapere l’organizzazione fisica dei dati  indirizzi e celle di memoria Ci interessa solo la loro organizzazione.
UNIVERSITA’ DI MILANO-BICOCCA LAUREA MAGISTRALE IN BIOINFORMATICA Corso di BIOINFORMATICA: TECNICHE DI BASE Prof. Giancarlo Mauri Lezione 11 Distanza genomica.
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.
Capitolo 10 Tecniche algoritmiche Algoritmi e Strutture Dati.
Corso integrato di Matematica, Informatica e Statistica Informatica di base Linea 1 Daniela Besozzi Dipartimento di Informatica e Comunicazione Università.
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 4 – Info B Marco D. Santambrogio – Matteo Ferroni –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 4 – Info B Marco D. Santambrogio – Matteo Ferroni –
Suggerimenti [1d5] SE la prima lettera della matrice (in alto a sinistra, matrice[0,0]) è diversa dalla prima lettera della parola (parola[0]) ALLORA siamo.
MASSIMO COMUNE DENOMINATORE (M.C.D)
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array n-dimensionali e tipi di dati strutturati Marco D. Santambrogio – Ver. aggiornata.
Algoritmi e Strutture Dati Luciano Gualà
Informatica Problemi e algoritmi. una situazione che pone delle domande cui si devono dare risposte. Col termine problema o situazione problematica s’indica.
DIPENDENZA STATISTICA TRA DUE CARATTERI Per una stessa collettività può essere interessante studiare più caratteri presenti contemporaneamente in ogni.
Sistemi di equazioni lineari. Sistemi di primo grado di due equazioni a due incognite Risolvere un sistema significa trovare la coppia di valori x e y.
Lezioni di Ricerca Operativa Corso di Laurea in Informatica
Prof. Cerulli – Dott. Carrabs
Transcript della presentazione:

UNIVERSITA’ DI MILANO-BICOCCA CdL IN INFORMATICA Corso di ALGORITMI COMPLEMENTI Prof. Giancarlo Mauri Distanza di edit e programmazione dinamica

2 Confronto di sequenze Il confronto tra sequenze è fondamentale in campi come la biologia computazionale, l’analisi dei testi e molti altri. Possibili obiettivi: 4 misurare la “similarità” tra le sequenze  allineamento 4 misurare la “diversità” tra le sequenze  distanza di edit 4 trovare parti comuni alle sequenze  pattern discovery  allineamento locale

3 Distanza tra due sequenze Come si misura la similarità ? Bisogna capire da dove possono nascere le differenze: errori di trascrizione, mutazioni, inserimento, cancellazione o sostituzione di basi... Misuriamo la diversità Distanza di edit tra due sequenze S 1 e S 2 (Levenshtein 66): numero minimo di operazioni di “modifica” necessarie per trasformare S 1 in S 2

4 ESEMPIO GATTO GETTO BARDOBRRDOBRODO una sostituzione due sostituzioni o un’inversione e una sostituzione COLORETOLORETILORETINORETINTRETINTAE TINTA cinque sostituzioni e una cancellazione AGACCC complemento inverso TGACCCTCACCCTCTCCCTCTGCCTCTGGCTCTGGGGGGTCT

5 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

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

7 Calcolo della distanza di edit Si considerino le sequenze : S 1 = a 1 a 2... a i-1 a i a i+1... a n S 2 = b 1 b b j-1 b j b j+1... b m Costruiamo l’array: D(i,j) = distanza tra il prefisso a 1 a 2 …a i e il prefisso b 1 b 2 …b j Il risultato cercato sarà: D(n,m) = distanza tra a 1 a 2... a n e b 1 b 2...b m

8 Si hanno tre possibilità per calcolare D(i,j), noto D(k,l) per k<i e l<j: 4 il carattere a i va sostituito con il b j e quindi: D(i,j) = distanza di edit tra i prefissi a 1 a 2 …a i-1 e b 1 b 2 …b j-1 + una operazione di sostituzione 4 il carattere a i va cancellato e quindi: D(i,j) = distanza di edit tra i prefissi a 1 a 2 …a i-1 e b 1 b 2 …b j + una operazione di cancellazione 4 il carattere b j va inserito e quindi: D(i,j) = distanza di edit tra i prefissi a 1 a 2 …a i e b 1 b 2 …b j-1 + una operazione di inserimento Si hanno tre possibilità per calcolare D(i,j), noto D(k,l) per k<i e l<j: 4 il carattere a i va sostituito con il carattere b j e quindi: D(i,j) = D(i-1,j-1)+t(a i,b j ) 4 il carattere a i va cancellato e quindi: D(i,j) = D(i-1,j)+1 4 il carattere b j va inserito e quindi: D(i,j) = D(i,j-1)+1 Calcolo della distanza di edit t( a i,b j )=1 se a i diverso da b j, altrimenti t(a i,b j )=0

9 Calcolo della distanza di edit 4 Si richiama quindi il calcolo di: a 1 a 2... a i-1 a i a i+1... a n b 1 b b j-1 b j... b m a 1 a 2... a i-1 a i a i+1... a n b 1 b b j-1 b j... b m a 1 a 2... a i-1 a i a i+1... a n b 1 b b j-1 b j... b m D(i-1,j-1) D(i-1,j) D(i,j-1)

10 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(a i,b j ) D(i-1,j)+1 D(i,j-1)+1 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)

11 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) = iD(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 a i ≠ b j 0 altrimenti

12 Calcolo della distanza di edit In particolare: 4 per i=n e j=m, si ottiene la distanza di edit D(n,m) tra le sequenze S 1 e S 2  per i=0 e j>0, si ottiene la distanza di edit D(0,j) tra la sequenza nulla  e il prefisso b 1 b 2 …b j (D(0,j)=j)  per i>0 e j=0, si ottiene la distanza di edit D(i,0) tra il prefisso a 1 a 2 …a i e la sequenza nulla  (D(i,0)=i)

13 Calcolo della distanza di edit I casi base, per i quali il valore di D è calcolabile immediatamente, sono: 4 D(0,0) = 0 4 D(i,0) = i (i cancellazioni) 4 D(0,j) = j (j cancellazioni)

14 Calcolo della distanza di edit Correttezza 1. D(i,j) = D(i-1,j)+1, D(i,j-1)+1 oppure D(i-1,j-1)+t(a i,b j ) Non ci sono altre possibilità Sia I l’ultima operazione per ottenere S 2 da S 1 Allora D(i,j) = D(i,j-1) Sia C l’ultima operazione per ottenere S 2 da S 1 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)}

15 Calcolo della distanza di edit Esempio: calcolo della distanza di edit per S 1 =“winter” (n=6) e S 2 =“writers” (m=7) writers w n t i e r Si costruisca la matrice D di n+1 (6+1) righe e m+1 (7+1) colonne Si costruisca la matrice D di n+1 (6+1) righe e m+1 (7+1) colonne Si riempiano le celle D(0,j) e D(i,0) con i rispettivi valori dei casi base j e i Si riempiano le celle D(0,j) e D(i,0) con i rispettivi valori dei casi base j e i 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,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 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 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 1 …e così di seguito …e così di seguito Nella cella D(6,7) è memorizzata la distanza di edit tra S 1 e S 2 Nella cella D(6,7) è memorizzata la distanza di edit tra S 1 e S 2 3  

16 Calcolo della distanza di edit La trasformazione da S 1 a S 2 relativa alla cella (i,j) è di 4 sostituzione del carattere a i con il carattere b j se D(i,j)=D(i-1,j-1)+t(a i,b j ) 4 cancellazione del carattere a i se D(i,j)=D(i-1,j)+1 4 inserimento del carattere b j se D(i,j)=D(i,j-1)+1 Se a i è uguale a b j, l’operazione di sostituzione è nulla NB: può esistere più di una trasformazione relativa alla cella (i,j) NB: può esistere più di una trasformazione relativa alla cella (i,j)

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

18 Calcolo della distanza di edit La complessità in tempo dell’algoritmo è 4 O(nm) per il riempimento della matrice di calcolo della distanza di edit 4 O(n+m) per la ricostruzione della trasformazione da S 1 a S 2