El algoritmo de programacin dinmica El algoritmo de

  • Slides: 40
Download presentation
El algoritmo de programación dinámica

El algoritmo de programación dinámica

El algoritmo de programación dinámica Descrito por primera vez en la década de 1950

El algoritmo de programación dinámica Descrito por primera vez en la década de 1950 por Richard Bellman, de la Universidad de Princeton como una técnica general para resolver problemas de optimización El problema de la optimización surge cuando hay muchas soluciones para un determinado problema y sólo una, o unas pocas, son las mejores La mejor solución se encuentra descomponiendo el problema original en subproblemas más sencillos (divide y vencerás). Las soluciones de los subproblemas están concatenadas: el cuarto subproblema sólo se resuelve con la solución del tercero, el tercero sólo se resuelve con la solución del segundo, y así sucesivamente. La solución del problema original incluye la solución de los diversos subproblemas. Programación dinámica (1)

El algoritmo de programación dinámica La estructura del subproblema es idéntica a la del

El algoritmo de programación dinámica La estructura del subproblema es idéntica a la del problema original Programación dinámica (2)

El algoritmo de programación dinámica Fuerza bruta: 6 6 DP: 6 + 6 1

El algoritmo de programación dinámica Fuerza bruta: 6 6 DP: 6 + 6 1 - 2 - 3 - 4 1 - 9 - 11 - 4 1 - 9 - 12 - 8 2 3 1 11 9 5 5 - 6 - 7 - 8 5 - 10 - 11 - 4 5 - 10 - 12 - 8 4 12 10 6 8 7 Divide y vencerás

El algoritmo de programación dinámica O (m × n) Alineamientos globales

El algoritmo de programación dinámica O (m × n) Alineamientos globales

El algoritmo de programación dinámica J. Mol. Biol. (1970) 48, 443 -453

El algoritmo de programación dinámica J. Mol. Biol. (1970) 48, 443 -453

El algoritmo de programación dinámica - Hace falta encontrar una fórmula recurrente (algoritmo) que

El algoritmo de programación dinámica - Hace falta encontrar una fórmula recurrente (algoritmo) que vaya encontrando la solución de los subproblemas - Se comienza resolviendo el subproblema más trivial. La solución de cada subproblema se va guardando en la memoria del ordenador. Al final, daremos con la solución del problema global - El algoritmo trata de maximizar la puntuación final del alineamiento haciendo coincidir el mayor número posible de emparejamientos de valor elevado y minimizando el número de gaps y de emparejamientos de poco valor Programación dinámica

El algoritmo de programación dinámica - Se necesitan 2 secuencias y un sistema de

El algoritmo de programación dinámica - Se necesitan 2 secuencias y un sistema de puntuación - Garantiza el alineamiento óptimo - Se lleva a cabo en tres etapas: • Inicialización • Rellenado de la matriz • Retroceso - Es costoso en términos de tiempo de computación y de memoria de ordenador El algoritmo

El algoritmo de programación dinámica - El sistema de puntuación asigna un valor a

El algoritmo de programación dinámica - El sistema de puntuación asigna un valor a cada uno de los posibles casos que podemos encontrar al comparar dos residuos pertenecientes a secuencias distintas: * Coincidencias (matches): + 5 * Diferencias (mismatches): - 3 * Huecos (gaps, indels): - 4 El sistema de puntuación

El algoritmo de programación dinámica Match = + 5 Mismatch= − 3 Indel =

El algoritmo de programación dinámica Match = + 5 Mismatch= − 3 Indel = − 4 En este ejemplo, la penalización por introducir un hueco es - 4 Inicialización

El algoritmo de programación dinámica Estructura del subproblema

El algoritmo de programación dinámica Estructura del subproblema

El algoritmo de programación dinámica Match Mismatch Gap arriba Gap abajo ─ ─ G

El algoritmo de programación dinámica Match Mismatch Gap arriba Gap abajo ─ ─ G G F (i-1, j-1) F (i-1, j) s(xi, yj) F (i, j-1) – d d G F (i, j) G G G – G C Algoritmo de Needleman & Wunsch (NW)

El algoritmo de programación dinámica Match = + 5 Mismatch= − 3 Indel =

El algoritmo de programación dinámica Match = + 5 Mismatch= − 3 Indel = − 4 Casilla (1, 1): la máxima puntuación se alcanza haciendo coincidir las dos G (+ 5) Rellenado de la matriz (1)

El algoritmo de programación dinámica Match = + 5 Mismatch= − 3 Indel =

El algoritmo de programación dinámica Match = + 5 Mismatch= − 3 Indel = − 4 Casilla (1, 2): la máxima puntuación se alcanza introduciendo un hueco (- 4) Rellenado de la matriz (2)

El algoritmo de programación dinámica Match = + 5 Mismatch= − 3 Indel =

El algoritmo de programación dinámica Match = + 5 Mismatch= − 3 Indel = − 4 - Se van llenando todas las casillas de la matriz - En cada casilla, además de la puntuación se pone una flecha que indica de dónde procede el valor Rellenado de la matriz (3)

El algoritmo de programación dinámica En la casilla inferior izquierda de la matriz aparece

El algoritmo de programación dinámica En la casilla inferior izquierda de la matriz aparece la puntuación máxima del alineamiento: 11 Rellenado de la matriz (4)

El algoritmo de programación dinámica No hay huecos (Coincidencia o Diferencia) Hueco en la

El algoritmo de programación dinámica No hay huecos (Coincidencia o Diferencia) Hueco en la secuencia de la izquierda Hueco en la secuencia superior Retroceso (Backtracking)

El algoritmo de programación dinámica - Se obtiene el alineamiento óptimo - Es posible

El algoritmo de programación dinámica - Se obtiene el alineamiento óptimo - Es posible que no tenga ningún sentido biológico Alineamiento global óptimo

El algoritmo de programación dinámica Elementos de partida Secuencia 1: PAWHEAE Secuencia 2: HEAGAWGHEE

El algoritmo de programación dinámica Elementos de partida Secuencia 1: PAWHEAE Secuencia 2: HEAGAWGHEE Matriz de puntuación: BLOSUM 50 Penalización por hueco: - 8 (Lineal) Ejemplo

El algoritmo de programación dinámica H E A G A W G H E

El algoritmo de programación dinámica H E A G A W G H E E P -2 -1 -1 -2 -1 -4 -2 -2 -1 -1 A -2 -1 5 0 5 -3 0 -2 -1 -1 W -3 -3 -3 15 -3 -3 H 10 0 -2 -2 -2 -3 -2 10 0 0 E 0 6 -1 -3 -3 0 6 6 A -2 -1 5 0 5 -3 0 -2 -1 -1 E 0 6 -1 -3 -3 0 6 6 Matriz de puntuación: BLOSUM 50

El algoritmo de programación dinámica 0 P A W -8 -16 -24 H -32

El algoritmo de programación dinámica 0 P A W -8 -16 -24 H -32 E -40 A -48 E -56 H -8 -2 -10 E -16 -9 A -24 G -32 A -40 W -48 G -56 H -64 E -72 F(i, j) = F(i-1, j-1) + s(xi , yj) F(i, j) = max P-H=-2 F(i, j) = F(i-1, j) - d E-P=-1 F(i, j) = F(i, j-1) - d -3 H-A=-2 F(0, 0) + s(xi , yj) = 0 -2 = -2 F(1, 1) = max F(0, 1) - d = -8 -8= -16 F(1, 0) - d = -8 -8= -16 = -2 F(0, 1) + s(xi , yj) = -8 -1 = -9 F(1, 2) = max F(1, 1) - d = -2 -8 = -10 F(0, 2) - d = -16 -8= -24 F(2, 1) = max -16 -8 = -24 = -10 -2 -8 = -10 = -9 -2 -1 = -3 -8 -2 = -10 F(2, 2) = max -10 -8 = -18 E -80 = -3 -9 -8 = -17 Inicialización y llenado de la matriz E-A=-1

El algoritmo de programación dinámica 0 H -8 E -16 A -24 G -32

El algoritmo de programación dinámica 0 H -8 E -16 A -24 G -32 A -40 W -48 G -56 H -64 E -72 E -80 -8 -2 -9 -17 -25 -33 -41 -49 -57 -65 -73 A -16 -10 -3 -5 -13 -21 -29 -37 -45 -53 -61 W -24 -18 -11 -6 -7 -15 -10 -18 -26 -34 -42 H -32 -16 -18 -13 -8 -9 -17 -12 -10 -18 -26 E -40 -24 -11 -19 -15 -9 -12 -19 -12 -5 -13 A -48 -32 -19 -7 -15 -11 -12 -20 -13 -6 E -56 -40 -27 -15 -9 -16 -14 -12 HEAGAWGHE-E --P-AW-HEAE -15 -8 P Alineamiento global óptimo: Llenado de la matriz, retroceso y alineamiento

El algoritmo de programación dinámica En resumen

El algoritmo de programación dinámica En resumen

El algoritmo de programación dinámica Alineamientos locales

El algoritmo de programación dinámica Alineamientos locales

El algoritmo de programación dinámica J. Mol. Biol. (1981) 147, 195 -197

El algoritmo de programación dinámica J. Mol. Biol. (1981) 147, 195 -197

El algoritmo de programación dinámica Introduce tres modificaciones en relación al algoritomo de Needleman-Wunsch:

El algoritmo de programación dinámica Introduce tres modificaciones en relación al algoritomo de Needleman-Wunsch: 1. - La penalización por introducir un hueco al comienzo del alineamiento es 0 2. - Cuando un valor de la matriz de puntuación se hace negativo, se pone un 0. Es como si se comenzara un nuevo alineamiento. 3. - La máxima puntuación puede estar en cualquier lugar de la tabla. El retroceso comienza en la casilla con la puntuación más elevada y prosigue hasta alcanzar un 0. Algoritmo de Smith & Waterman (SW)

El algoritmo de programación dinámica - Se necesitan 2 secuencias y un sistema de

El algoritmo de programación dinámica - Se necesitan 2 secuencias y un sistema de puntuación - Garantiza el alineamiento óptimo - Se lleva a cabo en tres etapas: • Inicialización • Rellenado de la matriz • Retroceso - Es costoso en términos de tiempo de computación y de memoria de ordenador Características del algoritmo

El algoritmo de programación dinámica ─ ─ F (i-1, j-1) G F (i, j-1)

El algoritmo de programación dinámica ─ ─ F (i-1, j-1) G F (i, j-1) s(xi, yj) G F (i-1, j) d d F (i, j) Algoritmo de Smith & Waterman (SW)

El algoritmo de programación dinámica - En este ejemplo, el sistema de puntuación asigna

El algoritmo de programación dinámica - En este ejemplo, el sistema de puntuación asigna un valor a cada uno de los posibles casos que podemos encontrar al comparar dos residuos pertenecientes a secuencias distintas: * Coincidencias (matches): + 5 * Diferencias (mismatches): - 3 * Huecos (gaps, indels): - 4 El sistema de puntuación

El algoritmo de programación dinámica Match = + 5 Mismatch= − 3 Indel =

El algoritmo de programación dinámica Match = + 5 Mismatch= − 3 Indel = − 4 La penalización por introducir un hueco al inicio del alineamiento es 0 1. - Inicialización

El algoritmo de programación dinámica Match = +5 Mismatch= − 3 Indel = −

El algoritmo de programación dinámica Match = +5 Mismatch= − 3 Indel = − 4 Casilla (1, 1): la máxima puntuación se alcanza haciendo coincidir las dos G (+ 5) 2. - Rellenado de la matriz

El algoritmo de programación dinámica Match = +5 Mismatch= − 3 Indel = −

El algoritmo de programación dinámica Match = +5 Mismatch= − 3 Indel = − 4 Casilla (1, 2): la máxima puntuación se alcanza introduciendo un hueco (- 4) 2. - Rellenado de la matriz (2)

El algoritmo de programación dinámica Match = +5 Mismatch= − 3 Indel = −

El algoritmo de programación dinámica Match = +5 Mismatch= − 3 Indel = − 4 Casilla (1, 3): como todas las posibilidades dan valores negativos, se coloca un 0 2. - Rellenado de la matriz (3)

El algoritmo de programación dinámica La puntuación máxima puede aparecer en cualquier casilla de

El algoritmo de programación dinámica La puntuación máxima puede aparecer en cualquier casilla de la matriz 2. - Rellenado de la matriz (4)

El algoritmo de programación dinámica No hay huecos (Coincidencia o Diferencia) Hueco en la

El algoritmo de programación dinámica No hay huecos (Coincidencia o Diferencia) Hueco en la secuencia de la izquierda Hueco en la secuencia superior 3. - Retroceso (Backtracking)

El algoritmo de programación dinámica Elementos de partida Secuencia 1: Secuencia 2: PAWHEAE HEAGAWGHEE

El algoritmo de programación dinámica Elementos de partida Secuencia 1: Secuencia 2: PAWHEAE HEAGAWGHEE Matriz de puntuación: BLOSUM 50 Penalización por hueco: - 8 (Lineal) Otro ejemplo

El algoritmo de programación dinámica H E A G A W G H E

El algoritmo de programación dinámica H E A G A W G H E E P -2 -1 -1 -2 -1 -4 -2 -2 -1 -1 A -2 -1 5 0 5 -3 0 -2 -1 -1 W -3 -3 -3 15 -3 -3 H 10 0 -2 -2 -2 -3 -2 10 0 0 E 0 6 -1 -3 -3 0 6 6 A -2 -1 5 0 5 -3 0 -2 -1 -1 E 0 6 -1 -3 -3 0 6 6 Matriz de puntuación: BLOSUM 50

El algoritmo de programación dinámica 0 H 0 E 0 A 0 G 0

El algoritmo de programación dinámica 0 H 0 E 0 A 0 G 0 A 0 W 0 G 0 H 0 E 0 P 0 0 0 0 0 A 0 0 0 5 0 0 0 W 0 0 2 0 20 12 4 0 0 H 0 10 2 0 0 0 12 18 22 14 6 E 0 2 16 8 0 0 4 10 18 28 20 A 0 0 8 21 13 5 0 4 10 20 27 E 0 0 6 13 18 12 4 0 4 16 26 Inicialización y rellenado de la matriz E 0

El algoritmo de programación dinámica 0 H 0 E 0 A 0 G 0

El algoritmo de programación dinámica 0 H 0 E 0 A 0 G 0 A 0 W 0 G 0 H 0 E 0 P 0 0 0 A 0 0 0 5 0 0 0 W 0 0 2 0 20 12 4 0 0 H 0 10 2 0 0 0 12 18 22 14 6 E 0 2 16 8 0 0 4 10 18 28 20 A 0 0 8 21 13 5 0 4 10 20 27 E 0 0 6 13 18 12 4 0 4 16 26 Alineamiento local óptimo: A WGH E A W-H E Retroceso: Alineamiento óptimo

El algoritmo de programación dinámica 0 H 0 E 0 A 0 G 0

El algoritmo de programación dinámica 0 H 0 E 0 A 0 G 0 A 0 W 0 G 0 H 0 E 0 P 0 0 0 0 0 A 0 0 0 5 0 0 0 W 0 0 2 0 0 0 H 0 10 2 0 0 0 E 0 2 16 8 0 0 A 0 0 8 21 13 5 0 E 0 0 6 13 18 12 4 Segundo mejor alineamiento local: 0 H EA Retroceso: Otro alineamiento