Académique Documents
Professionnel Documents
Culture Documents
Un alfabeto A que tiene los smbolos que forman las secuencias a alinear. Por ejemplo, el alfabeto
podra ser A={'A','G','C','T'} si se trabaja con cadenas de ADN, o podra ser
A={'0','1','2','3','4','5','6','7','8','9'} si se trabaja con nmeros.
Dos cadenas de texto S y T de tamao n y m respectivamente, que representan las dos secuencias
a alinear. En detalle:
Sea S[1..n] la primera cadena a alinear, que tiene n caracteres (S[1] sera el primer
caracter de la cadena S y S[n] sera el ltimo caracter de la cadena S).
Sea T[1..m] la segunda cadena a alinear, que tiene m caracteres (T[1] sera el primer
caracter de la cadena T y T[m] sera el ltimo caracter de la cadena T).
Una funcin U(c,d) que dadas dos letras c y d del alfabeto A da como resultado el puntaje de
similitud de la letra c con la letra d, o sea, qu tanto se parecen las letras c y d.
Un valor V que indica el puntaje dado a la operacin de no emparejar una letra de una de las
secuencias.
Respuesta dada por el algoritmo Needleman-Wunsch dados los insumos de entrada:
'A'
'B'
'C'
'A'
-8
-7
'B'
-8
-9
'C'
-7
-9
Sea V=-2 el puntaje de no emparejar letra. Sean S ="BCAB" y T="ABAB" las dos
secuencias a emparejar. Bajo estas circunstancias, el siguiente
emparejamiento da el puntaje mximo:
-BCAB
AB-AB
Cada uno de los '-' coincide con una letra no emparejada y da un puntaje de V.
El puntaje total de este emparejamiento es V+U('B','B')+V+U('A','A')
+U('B','B')=(-2)+(5)+(-2)+(3)+(5)=9.
Obviamente hay muchos ms emparejamientos, pero ninguno con mayor
puntaje. Por ejemplo, el emparejamiento
BCAB
ABAB
da un puntaje de U('B','A')+U('C','B')+U('A','A')+U('B','B')=(-8)+(-9)+(3)+(5)=-9.
Considere el alfabeto A={'A','B','C'} y la siguiente funcin U de similaridad de las
letras del alfabeto:
'A'
'B'
'C'
'A'
'B'
-6
'C'
-6
Sea V=-2 el puntaje de no emparejar letra. Sean S="BCAB" y T="ABAB" las dos
Cada uno de los '-' coincide con una letra no emparejada y da un puntaje de V. El
puntaje total de este emparejamiento es V+U('B','B')+U('C','A')+V+U('B','B')=(2)+(5)+(4)+(-2)+(5)=10.
Obviamente hay muchos ms emparejamientos, pero ninguno con mayor puntaje. Por
ejemplo, el emparejamiento
-BCAB
AB-AB
da un puntaje de V+U('B','B')+V+U('A','A')+U('B','B')=(-2)+(5)+(-2)+(1)+(5)=7.
Considere el alfabeto A={'A','B','C'} y la siguiente funcin U de similaridad de las
letras del alfabeto:
'A'
'B'
'C'
'A'
-2
'B'
'C'
-2
Sea V=-2 el puntaje de no emparejar letra. Sean S="BCAB" y T="ABAB" las dos
secuencias a emparejar. Bajo estas circunstancias, el siguiente emparejamiento da el
puntaje mximo:
BCAB
ABAB
Cada uno de los '-' coincide con una letra no emparejada y da un puntaje de V. El
puntaje total de este emparejamiento es U('B','A')+U('C','B')+U('A','A')
+U('B','B')=(3)+(4)+(5)+(7)=19.
Obviamente hay muchos ms emparejamientos, pero ninguno con mayor puntaje. Por
ejemplo, el emparejamiento
-BCAB
AB-AB
da un puntaje de V+U('B','B')+V+U('A','A')+U('B','B')=(-2)+(7)+(-2)+(5)+(7)=15.
Considere el alfabeto A={'A','B','C'} y la siguiente funcin U de similaridad de las
letras del alfabeto:
'A'
'B'
'C'
'A'
-3
-5
-7
'B'
-5
-9
-8
'C'
-7
-8
-6
Sea V=-2 el puntaje de no emparejar letra. Sean S="BCAB" y T="ABAB" las dos
secuencias a emparejar. Bajo estas circunstancias, el siguiente emparejamiento da el
puntaje mximo:
BCA---B
--ABAB-
Cada uno de los '-' coincide con una letra no emparejada y da un puntaje de V. El
puntaje total de este emparejamiento es V+V+U('A','A')+V+V+V+V=(-2)+(-2)+(-3)+
(-2)+(-2)+(-2)+(-2)=-15.
Obviamente hay muchos ms emparejamientos, pero ninguno con mayor puntaje. Por
ejemplo, el emparejamiento
-BCAB
AB-AB
da un puntaje de V+U('B','B')+V+U('A','A')+U('B','B')=(-2)+(-9)+(-2)+(-3)+(-9)=-25,
y el emparejamiento.
B-C-A-B-A-B-A-B
da un puntaje de V+V+V+V+V+V+V+V=(-2)+(-2)+(-2)+(-2)+(-2)+(-2)+(-2)+(-2)=16.
Sea f(i,j) el mximo puntaje que se logra alineando los primeros icaracteres de la cadena S contra
los primeros j caracteres de la cadenaT, para todo i entre 0 y n y para todo j entre 0 y m.
Se define f recursivamente con programacin dinmica as:
El puntaje mximo se encuentra calculando f(n,m), que revisa todos losn caracteres de la
cadena S contra todos los m caracteres de la cadenaT.
Calculando todos los posibles valores de la funcin f usando una matriz de tamaon+1 por m+1 podemos
reconstruir el alineamiento que da el puntaje mximo.
Pseudocdigo para hallar el mximo puntaje que se logra alineando las cadenas S yT:
Inicialice i en n y j en m.
De
lo
contrario,
si i=0 y j>0:
concatene
el
caracter - al
principio
de alineamientoS, concatene el caracter T[j] al principio de alineamientoT, y decrezca j en
uno.
De
lo
contrario,
si i>0 y j>0 y f[i][j]=f[i-1][j]+V:
concatene
el
caracter S[i] al
principio
de alineamientoS,
concatene
el
caracter - al
principio
de alineamientoT, y decrezca i en uno.
El algoritmo mostrado usa una matriz de tamao n*m donde n es el tamao de la secuencia S y m es el
tamao de la secuencia B, dando una complejidad en tiempo de ejecucin de O(n*m) (complejidad
temporal) y en memoria usada de O(n*m)(complejidad espacial). Existe una implementacin que usa poco
espacio O(n+m)(complejidad espacial), pero cuyo costo en tiempo de ejecucin sigue siendoO(n*m). En
conclusin el algoritmo tendra complejidad temporal O(n*m) en ambas implementaciones.