Upload
burke-wilder
View
43
Download
0
Embed Size (px)
DESCRIPTION
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: - PowerPoint PPT Presentation
Citation preview
UNIVERSITA’ DI MILANO-BICOCCAUNIVERSITA’ DI MILANO-BICOCCALAUREA MAGISTRALE IN LAUREA MAGISTRALE IN
BIOINFORMATICABIOINFORMATICA
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
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
EsempioGATTOGETTO
BARDOBRRDOBRODO
una sostituzione
due sostituzioni o un’inversione e una sostituzione
COLORETOLORETILORETINORETINTRETINTAETINTA cinque sostituzioni e una cancellazione
AGACCC complemento inversoTGACCC TCACCC TCTCCC TCTGCC TCTGGC TCTGGG GGGTCT
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
INPUTINPUT:
due sequenze S1 e S2 definite su un alfabeto
OUTPUTOUTPUT:
distanza di edit tra S1 e S2 e edit transcript ottimale che fornisce la trasformazione da S1 a S2
TECNICA UTILIZZATA: Programmazione Dinamica (PD)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
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
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(2)
FIB(4)
FIB(1)
FIB(3)
FIB(2)
FIB(2)
FIB(4)
FIB(1)
FIB(1)
FIB(0)
FIB(3)
FIB(2)
FIB(2)
FIB(4)
FIB(1)
FIB(0)
FIB(1)
FIB(1)
FIB(0)NB: nella chiamata FIB(4), il numero diFibonacci per n=2 viene calcolato 2 volte
NB: nella chiamata FIB(4), il numero diFibonacci per n=2 viene calcolato 2 volte
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
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+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
Il risultato cercato sarà:
D(n,m) = distanza tra a1 a2 ... an e b1 b2 ...bm
13
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
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
Calcolo della distanza di edit
t(ai,bj)=1 se ai diverso da bj,altrimenti t(ai,bj)=0
14
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
a1 a2 ... ai-1 ai ai+1 ... an
b1 b2 ...... bj-1 bj ... bm
a1 a2 ... ai-1 ai ai+1 ... an
b1 b2 ...... bj-1 bj ... bm
D(i-1,j-1)
D(i-1,j)
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
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 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 (D(i,0)=i)
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)
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(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 r s
w
n
t
i
e
r
Si costruisca lamatrice D di n+1(6+1) righe e m+1(7+1) colonne
Si costruisca lamatrice D di n+1(6+1) righe e m+1(7+1) colonne
Si riempiano lecelle D(0,j) e D(i,0)con i rispettivivalori dei casi basej e i
Si riempiano lecelle D(0,j) e D(i,0)con i rispettivivalori dei casi basej e i
0 1 2 3 4 5 6 7
1
2
3
4
5
6
La cella (1,1) avràvalore D(1,1) datodal minimo tra:- D(0,0)+t(w,w)=0- D(0,1)+1=2- D(1,0)+1=2Quindi:D(1,1)=0
La cella (1,1) avràvalore D(1,1) datodal minimo tra:- D(0,0)+t(w,w)=0- D(0,1)+1=2- D(1,0)+1=2Quindi:D(1,1)=0
0La cella (1,2) avràvalore D(1,2) datodal minimo tra:- D(0,1)+t(w,r)=2- D(0,2)+1=3- D(1,1)+1=1Quindi:D(1,2)=1
La cella (1,2) avràvalore D(1,2) datodal minimo tra:- D(0,1)+t(w,r)=2- D(0,2)+1=3- D(1,1)+1=1Quindi:D(1,2)=1
1
…e così di seguito
…e così di seguito
2 3 4 5 6
1 1 1 2 3 4 5
2 2 2 2 3 4 5
3 3 3 2 3 4 5
4 4 4 3 2 3 4
5 4 5 4 3 2 3
Nella cella D(6,7)è memorizzatala distanza di edittra S1 e S2
Nella cella D(6,7)è memorizzatala distanza di edittra S1 e S2
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 seD(i,j)=D(i-1,j-1)+t(ai,bj)
cancellazione del carattere ai seD(i,j)=D(i-1,j)+1
inserimento del carattere bj seD(i,j)=D(i,j-1)+1
Se ai è uguale a bj, l’operazionedi sostituzione è nulla
NB: può esistere più di una trasformazionerelativa alla cella (i,j)
NB: può esistere più di una trasformazionerelativa 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 r s
w
n
t
i
e
r
0 1 2 3 4 5 6 7
1
2
3
4
5
6
0 1 2 3 4 5 6
1 1 1 2 3 4 5
2 2 2 2 3 4 5
3 3 3 2 3 4 5
4 4 4 3 2 3 4
5 4 5 4 3 2 33
La cella (6,7) è stataprodotta a partiredalla cella (6,6)
La cella (6,7) è stataprodotta a partiredalla cella (6,6)
winter
2
winters
2
La cella (6,6) è stataprodotta a partiredalla cella (5,5)
La cella (6,6) è stataprodotta a partiredalla cella (5,5)
winters
2
…e così di seguito…e così di seguito
winters 2winters1
wiiters
0
writers
0
writers
Operazioni: ?- inserimento di s
Operazioni:
- sostituzione n i- sostituzione i r