El algoritmo de programacin dinmica El algoritmo de
- Slides: 40
El algoritmo de programación dinámica
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 problema original Programación dinámica (2)
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 J. Mol. Biol. (1970) 48, 443 -453
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 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 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 = − 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 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 = − 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 = − 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 = − 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 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 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 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 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 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 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 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 Alineamientos locales
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: 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 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) 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 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 = − 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 = − 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 = − 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 = − 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 la matriz 2. - Rellenado de la matriz (4)
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 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 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 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 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 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
- Programacin
- Dinmica
- Dinmica
- Dinmica
- Objetivo de la dinámica
- Algoritmo als
- Algoritmo finito
- Algoritmo de jacobi
- Algoritmo minimax
- Z
- Diagrama de flujo decision multiple
- Algoritmo de viterbi
- Algoritmi elementari
- Algoritmo de maekawa
- Algoritmo de prim pseudocodigo
- Cifrado vigenere en java
- Algoritmo del simplesso
- Topologico
- Selection sort algoritmo
- Algoritmo als
- Algoritmos introduccion
- Algoritmo nru
- Algoritmo de bully
- Algoritmos genéticos ejemplos resueltos python
- ¿cuáles son datos de tipo entero en algoritmos
- 170 + 56
- Algoritmo de karch e lasagna
- Algoritmo als 2020
- Ramnificar
- Busqueda de costo uniforme
- Hill climbing algoritmo
- Algoritmo calculadora
- Algoritmo robusto
- Algoritmo de planificación sjf
- Algoritmo
- Algoritmo lll
- Notação big-o
- Algoritmo abcde
- Algoritmo johnson
- Algoritmo de floyd
- Que es un algoritmo y caracteristicas