PDF de programación - Análisis y Diseño de Algoritmos - Alineación de secuencias

Imágen de pdf Análisis y Diseño de Algoritmos - Alineación de secuencias

Análisis y Diseño de Algoritmos - Alineación de secuenciasgráfica de visualizaciones

Publicado el 16 de Abril del 2017
1.150 visualizaciones desde el 16 de Abril del 2017
697,5 KB
12 paginas
Creado hace 14a (17/12/2009)
Alineación de secuencias
Alineación de secuencias
Análisis y Diseño de Algoritmos
Análisis y Diseño de Algoritmos

Aplicaciones
Aplicaciones

Aplicaciones
Aplicaciones

 Bioinformática

Bioinformática: :
Alineación de secuencias de ADN
Alineación de secuencias
de ADN

Ingeniería del Software:
 Ingeniería del Software:
Detección de clones (fragmentos de código duplicado)
Detección de
clones (fragmentos de código duplicado)

 Procesamiento del lenguaje natural:
Procesamiento del lenguaje natural:
Reconocimiento de voz, correctores ortográficos…
Reconocimiento de voz, correctores ortográficos…

11

Alineación de secuencias
Alineación de secuencias

Problema
Problema

Dadas dos secuencias, X = (x1 x2 … xm) e Y = (y1 y2 … yn),
encontrar la forma de alinearlas con un coste mínimo.

¿Cómo medimos ese coste?
¿Cómo medimos ese coste?
 δδ [g[gap penalty],
ap penalty], cuando

cuando en en unauna cadena

cadena no no aparece

aparece un un

símbolo
símbolo queque sísí estáestá en la
 ααααααααpqpq [mismatch penalty],
símbolo p p peropero en la

el el símbolo

en la otraotra..

[mismatch penalty], cuando

cuando en la

cadena X X aparece
aparece

en la cadena

cadena Y Y aparece

en la cadena
aparece q.q.

Alineación de secuencias
Alineación de secuencias

Ejemplos
Ejemplos

C

C

T

G A C C T A C C T

T G A C T A C A T

C
αTC + αGT + αAG + 2αCA

- C

T G A C C T A C C T

C

C

T G A C

-

T A C A T

2δ + αCA

22

33

Alineación de secuencias
Alineación de secuencias

Formalización
Formalización

 UnaUna alineación

conjunto de pares (

alineación M M eses un un conjunto

cada
de los elementos
cada unouno de los
en un par y no se produce ningún
en un par y no se produce
en un par y no se produce
en un par y no se produce ningún
Los pares (xxii,y,yjj) y (
) y (xxi’i’,y,yjj’’) se
) se cruzan

de pares (xxii,y,yjj) ) taltal queque
elementos xxii e e yyjj aparece
como mucho
aparece como
mucho
ningún cruce
ningún cruce
cruce..
cruce..
cruzan sisi ii<<ii’ ’ peropero j>j’.
j>j’.

 Los pares (

 El El coste

coste de la

de la alineación

alineación M, M, porpor tanto

tanto, , viene

viene dado

dado porpor::

coste

(

M

=

)



α

M

+

j

yx
i

∑∑

+
δ

δ

,

)

(
yx
i
443442143421

Mx
i

My

j



j



errores

huecos

Alineación de secuencias
Alineación de secuencias

Ejemplo
Ejemplo
CTACCG vs. TACATG
CTACCG vs. TACATG

x2

x4

x3

x1
x6
C T A C C - G
C T A C C - G

x5

- T A C A T G
y6

y4

y1

y2

y3

y5

Alineación
Alineación M = { (x

M = { (x22,y,y11), (x

), (x33,y,y22), (x

), (x44,y,y33), (x

), (x55,y,y44), (x

), (x66,y,y66) }) }

Coste
Coste de la

de la alineación

alineación: : coste

coste(M) =

(M) = 22δδ + + ααCACA

44

55

Definición recursiva
Definición recursiva

OPT(i, j): Coste mínimo de alineación de las secuencias

Xi=(x1 x2 … xi) e Yj=(y1 y2 … yj).

 CasoCaso 1: 1: ((xxii,y,yjj) ) estáestá en la

en la mejormejor alineación

alineación MMOPTOPT

Hay que pagar el coste de emparejar xi con yj, a lo
Hay que pagar el coste de emparejar xi con yj, a lo
que habrá que añadir el coste de alinear las
secuencias Xi-1=(x1 x2 … xi-1) e Yj-1=(y1 y2 … yj-1).

 CasoCaso 2a:

2a: MMOPTOPT dejadeja xxii sin sin emparejar
emparejar

Hay que pagar una penalización δδ másmás el el coste
alinear
alinear laslas cadenas

cadenas Xi-1=( x1 x2 … xi-1) e Yj=(y1 y2 … yj).

coste de de

 CasoCaso 2b2b: M: MOPTOPT dejadeja yyjj sin sin emparejar
emparejar

Penalización δδ másmás el el coste
Xi=( x1 x2 … xi) e Yj-1=(y1 y2 … yj-1).

coste de de alinear

alinear laslas cadenas
cadenas

66

Definición recursiva
Definición recursiva

OPT(i, j): Coste mínimo de alineación de las secuencias

Xi=(x1 x2 … xi) e Yj=(y1 y2 … yj).

OPT

),(
ji

=












δj

α
α


δ

min

δ


i yx
+
+

δ
i

+
+

OPT

(
i




,1

j




)1

j

OPT

(
i



OPT

,(
ji

),1
j


)1

0i si

=

en

otro
caso


0j si

=

77

Implementación
Implementación

Algoritmo basado en programación dinámica

SequenceAlignmentDP
SequenceAlignmentDP ( X( X, Y,

, Y, δδδδδδδδ, , αααααααα) )

{{

}}

forfor ii = 0 to

= 0 to X.length
X.length

M[0, ii] = ] = ii**δδδδδδδδ;;
M[0, ii] = ] = ii**δδδδδδδδ;;
M[0,
M[0,

forfor j = 0 to

j = 0 to Y.length
Y.length

M[j, 0] = j*j*δδδδδδδδ;;
M[j, 0] =

forfor ii = 1 to

= 1 to X.length
X.length

forfor j = 1 to

M[M[ii, j] =

, j] = min (

Y.length
j = 1 to Y.length
min ( αααααααα[X[[X[ii]][Y[j]]
δδδδδδδδ + + M[iM[i--1][j1][j],],
δδδδδδδδ + + M[M[ii][j][j--1]);1]);

]][Y[j]] + + M[iM[i--1][j1][j--11],],

return
return M[M[X.length

X.length][][Y.length

Y.length];];

88

Implementación
Implementación

Algoritmo basado en programación dinámica

Eficiencia
Eficiencia
 Tiempo:
 Espacio:
 Espacio:

ΘΘ(|X||Y|)
ΘΘ(|X||Y|)
ΘΘ(|X||Y|)

Aplicaciones
Aplicaciones
 Reconocimiento de voz con DTW, |X|<10, |Y|<100, OK.
 Biología computacional: |X|=|Y|=100000

 1010 operaciones, OK
 Array con 1010 entradas > 10 GB !!!

99

Optimización
Optimización

¿Podemos evitar que nuestro algoritmo
sea cuadrático con respecto al espacio de
almacenamiento que requiere?

Es fácil si sólo nos interesa el coste de la alineación:

Calculamos
Calculamos el valor OPT(

el valor OPT(ii,·) a

,·) a partir

partir de OPT(i

de OPT(i--1,·).1,·).

Pero ya no podremos alinear las secuencias,
ya que no disponemos de la matriz M…

Optimización
Optimización

¿Podemos obtener la alineación óptima
de dos secuencias con un algoritmo de orden
cuadrático en tiempo pero lineal en espacio?

Sí, si combinamos nuestro algoritmo basado en
programación dinámica con la técnica “divide y
vencerás”. [[Hirschberg 1975

Hirschberg 1975].].

1010

1111

Alineación de secuencias
Alineación de secuencias

Sea f(i,j) el camino más corto de (0,0) a (i,j).
 Observación: f(i,j) = OPT(i,j), m=|X|, n=|Y|

ε

ε

0,0

x1

x2

x3

y1

y2

y3

y4

y5

y6

αxi y j


δ

δ

i,j

m,n

1212

Alineación de secuencias
Alineación de secuencias

“Forward alignment”: Podemos calcular f(·,j)
para cualquier j en tiempo O(mn) y espacio O(m+n).

ε

ε

0,0

x1

x2

x3

y1

y2

y3

j

y4

y5

y6

i,j

m,n

1313

Alineación de secuencias
Alineación de secuencias

Sea g(i,j) el camino más corto de (m,n) a (i,j):
Se puede calcular invirtiendo los arcos del grafo anterior…

ε

ε

0,0

x1

x2

x3

y1

y2

y3

y4

y5

y6

δ

αxi y j


i,j

δ

m,n

1414

Alineación de secuencias
Alineación de secuencias

Backward alignment: Podemos calcular g(·,j)
para cualquier j en tiempo O(mn) y espacio O(m+n).

ε

ε

0,0

x1

x2

x3

y1

y2

j

y3

y4

y5

y6

i,j

m,n

1515

Alineación de secuencias
Alineación de secuencias

El coste del camino mínimo
que pasa por (i,j) es f(i,j) + g(i,j)

ε

ε

0,0

x1

x2

x3

y1

y2

y3

y4

y5

y6

i,j

m,n

1616

Alineación de secuencias
Alineación de secuencias

Sea q el índice que minimiza f(qf(q, n/2) + g(q, n/2
El camino más corto de (0,0) a (m,n) pasa por (q,n/2).

, n/2) + g(q, n/2)):

ε

ε

0,0

x1

x2

x3

y1

y2

y3

y4

y5

y6

i,j

n/2

q

m,n

1717

Algoritmo “divide y vencerás”
Algoritmo “divide y vencerás”

1. Encontrar el índice q que minimiza f(f(q,nq,n/2)+g(
usando programación dinámica: Alinear xxqq con

con yynn/2/2

/2)+g(q,nq,n/2)/2)

ε

ε

0,0

x1

x2

x3

y1

y2

y3

y4

y5

y6

i,j

n/2

q

m,n

1818

Algoritmo “divide y vencerás”
Algoritmo “divide y vencerás”

2. Calcular recursivamente la mejor alineación de los

segmentos a la izquierda y a la derecha de xxqq e e yynn/2/2.

ε

ε

0,0

x1

x2

x3

y1

y2

y3

y4

y5

y6

i,j

n/2

q

m,n

1919

Algoritmo “divide y vencerás”
Algoritmo “divide y vencerás”

Eficiencia del algoritmo “divide y vencerás”

Sea T(m,n) el tiempo requerido por el algoritmo
para alinear dos secuencias de longitud m y n:

nmT

(2 ),

nmT

(

,



)2/

+

mnO

(

)



mnOnmT


),

(

(

log

n

)

Este análisis no es preciso porque

los subproblemas no son de tamaño (m,n/2),

sino de tamaño (q, n/2) y (m-q, n/2).

2020

Algoritmo “divide y vencerás”
Algoritmo “divide y vencerás”

Eficiencia del algoritmo “divide y vencerás”

En En realidad
 Tiempo

realidad, T(
Tiempo O(O(mnmn) en

, T(m,nm,n) ) eses O(O(mnmn))

) en calcular

calcular f(f( •, n/2) y g (

•, n/2) y g ( •, n/2)

•, n/2) parapara descubrir

descubrir q.q.

 T(q, n/2) + T(m
 T(q, n/2) + T(m

T(q, n/2) + T(m -- q, n/2)
T(q, n/2) + T(m -- q, n/2)

q, n/2) parapara laslas llamadas
q, n/2) parapara laslas llamadas

recursivas::
recursivas::
llamadas recursivas
llamadas recursivas

Demostración por inducción sobre n
 Casos

Casos base:
base:
m=2 ó n=2
m=2 ó n=2. .
Hipótesis inductiva
 Hipótesis
T(mT(m, n)

, n) ≤≤ 2cmn.
2cmn.

inductiva: :

T(m, 2) ≤ cm
T(2, n) ≤ cn
T(m, n) ≤ cmn + T (q, n /2) + T(m − q, n /2)


),
nmT

(



=
=

+

nqmT

(

,

nqT

,(

)2/
+

2

(22/
cqn
nqmc
+


cmn

cqn

)

cqn

cmn



+

)2/
+

2/

+

cmn

cmn

2121

2

cmn

Alineación de secuencias
Alineación de secuencias

Algoritmo

Tiempo

Espacio

Resultado

Programación

dinámica

Forward
alignment

Backward
alignment

Divide y
vencerás

O(mn)

O(mn)

Coste y alineación

O(mn)

O(m+n)

O(mn)

O(m+n)

Coste

Coste

O(mn)

O(m+n)

Coste y alineación

2222
  • Links de descarga
http://lwp-l.com/pdf3031

Comentarios de: Análisis y Diseño de Algoritmos - Alineación de secuencias (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad