José Colbes
E-mail: jose.colbes.sanabria@gmail.com
6 de marzo de 2018
Contenido
• El algoritmo naive es ineficiente.
• Algoritmo de Knuth-Morris-Pratt (KMP)
• Algoritmo de Boyer-Moore
• Regla del caracter erróneo
• Regla del sufijo correcto
• Pre-procesamiento
• Algoritmos aproximados
2
Secuenciación de genomas
Reads
Reads
?
Genoma secuenciado
Knuth-Morris-Pratt
6
Algoritmo KMP
P: curso
T: Estoy cursando el curso de Bio
7
Algoritmo KMP
P: ATCGATCT
T: CCCCGTCATCGATCGATCTATGGC
CCCCGTCATCGATCGATCTATGGC
ATCGATCT
ATCGATCT
8
Algoritmo KMP P: nano
T: banananobano
0 1 2 3 4 5 6 7 8 9 10 11
T: b a n a n a n o b a n o
i=0:X
i=1: X
i=2: n a n X
i=3: X
i=4: n a n o
i=5: X
i=6: n X
i=7: X
i=8: X
i=9: n X
i=10: X
https://www.ics.uci.edu/~eppstein/161/960227.html
9
Prefijos y sufijos
El prefijo de una cadena 𝑆 es una sub-cadena que empieza al
comienzo de 𝑆
10
Caso a considerar: sufijo de un prefijo
P: ATCGATCT
ATCGATC
CCCCGTCATCGATCGATCTATGGC
ATCGATCT
ATCGATCT
Salto = max(1, #caracteres iguales – longitud máxima (pref=suf))
11
Arreglo auxiliar B 𝐵 = 𝑃
0 𝑖 𝑃
B … 𝑤 …
P A T C G A T C T
B -1 0 0 0 0 1 2 3
12
Aplicación del arreglo B
CCCCGTCATCGATCGATCTATGGC
ATCGATCT
ATCGATCT
P A T C G A T C T
B -1 0 0 0 0 1 2 3
13
El algoritmo principal
Cómo lo hacemos?
14
Cálculo del arreglo B
𝑋 𝑌
pos
P
B 𝑋
𝑋 𝑌
𝑋 pos
P
pos-1
𝑍
B 𝑋
𝑋 𝑌
𝑋 pos
P
pos-1
𝑍
B 𝑋
17
Si P[pos-1]!=P[ 𝑋 ]
𝑋 𝑌
𝑋 pos
P
pos-1
B 𝑀 𝑋
18
Si P[pos-1]!=P[ 𝑋 ]
𝑋
𝑀 𝑀
𝑋 = 𝑌 !!!
𝑌
𝑀 𝑀
19
Entonces…
𝑋 𝑌
𝑀
𝑋 pos
P 𝑀 𝑀 𝑀 𝑀
pos-1
B 𝑀 𝑋
21
Algoritmo de Boyer-Moore
Knuth-Morris-Pratt Boyer-Moore
22
Idea
𝑃: prensa
𝑇: La primera función fue solamente para la prensa
prensa
𝑃: prensa
𝑇: La primera función fue solamente para la prensa
prensa
Boyer, RS y Moore, JS. "A fast string searching algorithm.“ Communications of the ACM 20.10 (1977): 762-772. 24
Regla del carácter erróneo
Se aprende de las comparaciones de caracteres para evitar
alineamientos que no coincidirán.
Los alineamientos se prueban de izquierda a derecha, y los
caracteres se comparan de derecha a izquierda
Paso 1
Paso 2
Paso 3
Adaptación de slides de “Algorithms for DNA Sequencing”, Coursera. 25
Regla del sufijo correcto
Sea 𝑡 una sub-cadena coincidente, entonces se salta hasta que
(a) no existan diferencias entre 𝑃 y 𝑡, o (b) que 𝑃 pase a 𝑡.
Paso 1
Paso 2
Paso 3
Paso 1 𝑐𝑒 = 6, 𝑠𝑐 = 0
Caracter erróneo
Paso 2
𝑐𝑒 = 0, 𝑠𝑐 = 2
Sufijo correcto
Paso 3
𝑐𝑒 = 2, 𝑠𝑐 = 7
Sufijo correcto
Paso 4
...TGCAGCACGGGACAACTTGACGTTTTACGGCCTACTACATTAC…
ACTTGACGT
ACTAGACGT ?
ACTAGACCT ??
29
Algoritmo naive
(para lidiar con un número máximo de sustituciones)
31
Idea
𝑃
𝑢 𝑣
32
Emparejamiento aproximado
𝑃
𝑝1 𝑝2 𝑝3 𝑝4 … 𝑝𝑘+1
33
Ejemplo (𝑘 = 4)
𝑃
Caso 1 𝑋𝑋𝑋 𝑋
Caso 2 𝑋𝑋 𝑋 𝑋
Caso 3 𝑋 𝑋 𝑋 𝑋
34
Partición - Proceso
𝑃
𝑝1 𝑝2 𝑝3 𝑝4 𝑝5
Alineamiento Exacto
35
Partición - Proceso
𝑝2
Coincide
36
Partición - Proceso
𝑝1 𝑝2 𝑝3 𝑝4 𝑝5
Verificar Coincide Verificar Verificar Verificar
37
De exacto a aproximado…
Knuth-Morris-Pratt Boyer-Moore
38
Pre-procesamiento: Algoritmo sencillo
𝑃 𝑇
Resultados
𝑇
Tabla de
backtracking, Tablas
para las reglas de KMP, Boyer-Moore
caracter erróneo y
sufijos correctos
Resultados
𝑃 Y si pre-procesamos T?
Resultados
𝑇
¿Online u offline?
𝑃 • Algoritmo sencillo
• KMP
• Boyer-Moore
• Motor de búsqueda web
• Alineamiento de reads con
un genoma.