La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

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

Presentazioni simili


Presentazione sul tema: "UNIVERSITA DI MILANO-BICOCCA LAUREA MAGISTRALE IN BIOINFORMATICA Corso di BIOINFORMATICA: TECNICHE DI BASE Prof. Giancarlo Mauri Lezione 4 Distanza di."— Transcript della presentazione:

1 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

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

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

4 4 Distanza tra due sequenze 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 GATTO GETTO BARDOBRRDOBRODO una sostituzione due sostituzioni o uninversione e una sostituzione COLORETOLORETILORETINORETINTRETINTAE TINTA cinque sostituzioni e una cancellazione AGACCC complemento inverso TGACCCTCACCCTCTCCCTCTGCCTCTGGCTCTGGGGGGTCT

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

6 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 7 Programmazione Dinamica Perché si usa la Programmazione Dinamica? Per rendere efficiente limplementazione 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

8 8 Programmazione Dinamica 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) Quali sono le procedure ricorsive da sostituire con un algoritmo di PD? Quelle in cui si presentano sottoproblemi ripetuti

9 9 Programmazione Dinamica Esempio: procedura ricorsiva per il calcolo dei numeri di Fibonacci 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 Esempio di chiamata FIB(4) FIB(3) FIB(2) FIB(4) FIB(3) FIB(2) FIB(4) FIB(1) FIB(3) FIB(2) FIB(4) FIB(1) FIB(0) FIB(3) FIB(2) FIB(4) FIB(1) FIB(0) FIB(1) FIB(0) NB: nella chiamata FIB(4), il numero di Fibonacci per n=2 viene calcolato 2 volte NB: nella chiamata FIB(4), il numero di Fibonacci per n=2 viene calcolato 2 volte

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

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

12 12 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 larray: 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

13 13 Si hanno tre possibilità per calcolare D(i,j), noto D(k,l) per k

14 14 Calcolo della distanza di edit 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)

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

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

17 17 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 …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)

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

19 19 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 lultima operazione per ottenere S 2 da S 1 Allora D(i,j) = D(i,j-1) Sia C lultima 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)}

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

21 21 Calcolo della distanza di edit La trasformazione da S 1 a S 2 relativa alla cella (i,j) è di sostituzione del carattere a i con il carattere b j se D(i,j)=D(i-1,j-1)+t(a i,b j ) cancellazione del carattere a i se D(i,j)=D(i-1,j)+1 inserimento del carattere b j se D(i,j)=D(i,j-1)+1 Se a i è uguale a b j, loperazione 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)

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

23 23 Calcolo della distanza di edit La complessità in tempo dellalgoritmo è 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


Scaricare ppt "UNIVERSITA DI MILANO-BICOCCA LAUREA MAGISTRALE IN BIOINFORMATICA Corso di BIOINFORMATICA: TECNICHE DI BASE Prof. Giancarlo Mauri Lezione 4 Distanza di."

Presentazioni simili


Annunci Google