La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

UNIVERSITA’ DI MILANO-BICOCCA LAUREA MAGISTRALE IN BIOINFORMATICA

Presentazioni simili


Presentazione sul tema: "UNIVERSITA’ DI MILANO-BICOCCA LAUREA MAGISTRALE IN BIOINFORMATICA"— 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 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 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

4 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

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

7 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

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

9 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

10 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

11 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

12 Calcolo della distanza di edit
Si considerino le sequenze : S1 = a1 a2 ... ai-1 ai ai an S2 = b1 b 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

13 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.

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

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

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

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

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

19 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)}

20 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

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

22 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

23 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.


Scaricare ppt "UNIVERSITA’ DI MILANO-BICOCCA LAUREA MAGISTRALE IN BIOINFORMATICA"

Presentazioni simili


Annunci Google