UNIVERSITA DI MILANOBICOCCA LAUREA MAGISTRALE IN BIOINFORMATICA Corso
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 2
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 3
Distanza tra due sequenze S 1 e S 2 (Levenshtein 66): numero minimo di “operazioni di modifica” necessarie per trasformare S 1 in S 2 Esempio GETTO GATTO BRODO BRRDO BARDO TINTAE TINTRE TINORE TILORE TOLORE COLORE AGACCC GGGTCT TCTGGG TCTGGC TCTGCC TCTCCC TCACCC TGACCC una sostituzione due sostituzioni o un’inversione e una sostituzione cinque sostituzioni e una cancellazione complemento inverso 4
Edit transcript I = inserisci C = cancella S = sostituisci N = lascia invariato SINCNCNNI Rappresenta una particolare trasformazione di una stringa in un’altra v intner 5
Distanza di edit: il problema INPUT: INPUT due sequenze S 1 e S 2 definite su un alfabeto S 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) 6
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) Esempio di chiamata SOMMA(4) begin if n=1 then somma: =n; else SOMMA(3) +4 SOMMA(2) +3 SOMMA(1) +2 somma: =SOMMA(n-1)+n; 7
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 8
Programmazione Dinamica Esempio di chiamata FIB(4) Esempio: procedura ricorsiva per il. FIB(4) calcolo dei numeri di Fibonacci FIB(3) FIB(2) Procedura FIB(n) begin FIB(1) FIB(0) if n=0 or n=1 then return 1; a: =n-1; b: =n-2; f 1: =FIBONACCI(a); NB: nella chiamata FIB(4), il numero di f 2: =FIBONACCI(b); Fibonacci per n=2 viene calcolato 2 volte return f 1+f 2; FIB(1) FIB(2) FIB(1) FIB(0) 9
Programmazione Dinamica Algoritmo alternativo a FIB(n) Procedura FIB 2(n) begin F: =(); i: =0; for i=0 to n do begin if i=0 then F[i]: =0; else if i=1 NB: thennella chiamata FIB 2(4), il valore F[2] viene sfruttato 2 volte ma calcolato 1 volta F[i]: =1; else 10
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 11
Calcolo della distanza di edit Si considerino le sequenze : S 1 = a 1 a 2. . . ai-1 ai ai+1. . . an S 2 = b 1 b 2. . . bj-1 bj bj+1. . . bm Costruiamo l’array: D(i, j) = distanza tra il prefisso a 1 a 2…ai e il prefisso b 1 b 2…bj Il risultato cercato sarà: D(n, m) = distanza tra a 1 a 2. . . an e b 1 b 2. . . bm 12
Calcolo della distanza di edit Si. Sihannotre trepossibilitàper percalcolare. D(i, j), noto. D(k, l) per. D(k, l) k<i e l<j: per k<i e l<j: t(ai, bj)=1 se ai diverso da bj, üüililcarattere con altrimenti t(a , bjquindi: )=0 j ie carattereaai va vasostituito conililb carattere b i j e D(i, j) = distanza di edit tra i prefissi a 1 a 2…ai-1 e b 1 b 2…bj-1 quindi: + una operazione di sostituzione D(i, j) = D(i-1, j-1)+t(ai, bj) ü il carattere ai va cancellato e quindi: D(i, j) = distanza di edit tra i prefissi a 1 a 2…ai-1 e b 1 b 2…bj + una operazione di cancellazione D(i, j) = D(i-1, j)+1 ü il carattere bj va inserito e quindi: D(i, j) = distanza di edit tra i prefissi a 1 a 2…ai e b 1 b 2…bj-1 + una operazione di inserimento D(i, j) = D(i, j-1)+1 13
Calcolo della distanza di edit ü Si richiama quindi il calcolo di: D(i-1, j-1) a 1 a 2. . . ai-1 ai ai+1. . . an b 1 b 2. . . bj-1 bj. . . bm D(i-1, j) a 1 a 2. . . ai-1 ai ai+1. . . an b 1 b 2. . . bj-1 bj. . . bm D(i, j-1) a 1 a 2. . . ai-1 ai ai+1. . . an b 1 b 2. . . bj-1 bj. . . bm 14
Calcolo della distanza di edit Dal momento che si vuole un valore minimo, si ottiene la ricorrenza D(i-1, j-1)+t(ai, bj) D(i, j) = MIN 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) 15
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 16
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 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…bj (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…ai e la sequenza nulla (D(i, 0)=i) 17
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) 18
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(ai, bj) Non ci sono altre possibilità 1. 1 - Sia I l’ultima operazione per ottenere S 2 da S 1 Allora D(i, j) = D(i, j-1)+1 1. 2 - 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)} 19
Calcolo della distanza di edit Esempio: calcolo della distanza di edit per S 1=“winter” (n=6) e S 2=“writers” (m=7) w r La cella (1, 2) (1, 1) avrà valore D(1, 2) D(1, 1) dato dal minimo Nella cella D(6, 7) tra: Si riempiano le costruisca la -Si. D(0, 1)+t(w, r)=2 è D(0, 0)+t(w, w)=0 memorizzata cellecosì …e D(0, j) di seguito e D(i, 0) D didin+1 -matrice la D(0, 1)+1=2 D(0, 2)+1=3 distanza edit con i rispettivi -(6+1) tra D(1, 0)+1=2 D(1, 1)+1=1 S righe e S e m+1 valori 1 dei 2 casi base (7+1) colonne Quindi: jei D(1, 1)=0 D(1, 2)=1 i t e r s 0 1 2 3 4 5 6 7 w 1 0 1 2 3 4 5 6 i 2 1 1 1 2 3 4 5 n 3 2 2 3 4 5 t 4 3 3 3 2 3 4 5 e 5 4 4 4 3 2 3 4 r 6 5 4 3 20
Calcolo della distanza di edit La trasformazione da S 1 a S 2 relativa alla cella (i, j) è di Se ai è uguale a bj, l’operazione di sostituzione è nulla ü 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 NB: può esistere più di una trasformazione relativa alla cella (i, j) ü inserimento del carattere bj se D(i, j)=D(i, j-1)+1 21
Calcolo della distanza di edit Esempio: ricostruzione della trasformazione da S 1=“winter” a S 2=“writers” w (6, 6) è stata La cella (6, 7) prodotta …e così di a partire seguito (5, 5) dalla cella (6, 6) r i t e r s 0 1 2 3 4 5 6 7 w 1 0 1 2 3 4 5 6 winters wiiters writers winter i 2 1 1 1 2 3 4 5 n 3 2 2 3 4 5 Operazioni: ? t - inserimento di s - sostituzione n i - sostituzione i r e 4 3 3 3 2 3 4 5 5 4 4 4 3 2 3 4 r 6 5 4 3 22
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 S 1 a S 2 23
- Slides: 23