Está en la página 1de 40

El algoritmo de programacin dinmica

El algoritmo de programacin dinmica


Programacin dinmica (1)
El problema de la optimizacin surge cuando hay
muchas soluciones para un determinado problema
y slo una, o unas pocas, son las mejores
Descrito por primera vez en la dcada de 1950 por Richard
Bellman, de la Universidad de Princeton como una
tcnica general para resolver problemas de optimizacin
La mejor solucin se encuentra descomponiendo el
problema original en subproblemas ms sencillos (divide
y vencers). Las soluciones de los subproblemas estn
concatenadas: el cuarto subproblema slo se resuelve
con la solucin del tercero, el tercero slo se resuelve
con la solucin del segundo, y as sucesivamente.
La solucin del problema original incluye
la solucin de los diversos subproblemas.
El algoritmo de programacin dinmica
Programacin dinmica (2)
La estructura del
subproblema es idntica a
la del problema original
El algoritmo de programacin dinmica
Divide y vencers
1
2
3
4
5
6
7
8
9
10
11
12
1- 2 - 3 - 4
1- 9 - 11 - 4
1- 9 - 12 - 8
5- 6 - 7 - 8
5- 10 - 11 - 4
5- 10 - 12 - 8
Fuerza bruta: 6 6
DP: 6 + 6
El algoritmo de programacin dinmica
O (m n)
Alineamientos globales
El algoritmo de programacin dinmica
J . Mol. Biol. (1970) 48, 443-453
El algoritmo de programacin dinmica
- Hace falta encontrar una frmula recurrente
(algoritmo) que vaya encontrando la solucin de los
subproblemas
- Se comienza resolviendo el subproblema ms trivial.
La solucin de cada subproblema se va guardando en
la memoria del ordenador. Al final, daremos con la
solucin del problema global
- El algoritmo trata de maximizar la puntuacin final
del alineamiento haciendo coincidir el mayor nmero
posible de emparejamientos de valor elevado y
minimizando el nmero de gaps y de emparejamientos
de poco valor
Programacin dinmica (3)
El algoritmo de programacin dinmica
Estructura del subproblema
El algoritmo de programacin dinmica
F (i, j)
F (i, j-1)
F (i-1, j) F (i-1, j-1)
s(x
i
,y
j
)
d
d

d j i F
d j i F
y x s j i F
j i F
j i
) 1 , (
) , 1 (
) , ( ) 1 , 1 (
max ) , (
Algoritmo de Needleman & Wunsch (NW)
G
G


El algoritmo de programacin dinmica
- Garantiza el alineamiento ptimo
- Se necesitan 2 secuencias y un sistema de
puntuacin
- Se lleva a cabo en tres etapas:
Inicializacin
Rellenado de la matriz
Retroceso
- Es costoso en trminos de tiempo de computacin y
de memoria de ordenador
El algoritmo
El algoritmo de programacin dinmica
El sistema de puntuacin
- El sistema de puntuacin 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 algoritmo de programacin dinmica
Inicializacin
En este ejemplo, la penalizacin por
introducir un hueco es - 4
Match = + 5
Mismatch= 3
Indel = 4
El algoritmo de programacin dinmica
Rellenado de la matriz (1)
Casilla (1,1): la mxima puntuacin se
alcanza haciendo coincidir las dos G (+ 5)
Match = + 5
Mismatch= 3
Indel = 4
El algoritmo de programacin dinmica
Rellenado de la matriz (2)
Casilla (1,2): la mxima puntuacin se
alcanza introduciendo un hueco (- 4)
Match = + 5
Mismatch= 3
Indel = 4
El algoritmo de programacin dinmica
Rellenado de la matriz (3)
- Se van llenando todas las casillas de la matriz
- En cada casilla, adems de la puntuacin se pone
una flecha que indica de dnde procede el valor
Match = + 5
Mismatch= 3
Indel = 4
El algoritmo de programacin dinmica
Rellenado de la matriz (4)
En la casilla inferior izquierda de la matriz aparece
la puntuacin mxima del alineamiento: 11
El algoritmo de programacin dinmica
Retroceso (Backtracking)
No hay huecos (Coincidencia o Diferencia)
Hueco en la secuencia de la izquierda
Hueco en la secuencia superior
El algoritmo de programacin dinmica
Alineamiento global ptimo
- Se obtiene el alineamiento ptimo
- Es posible que no tenga ningn sentido biolgico
El algoritmo de programacin dinmica
Secuencia 1: P A W H E A E

Secuencia 2: H E A G A W G H E E

Matriz de puntuacin: BLOSUM 50

Penalizacin por hueco: - 8 (Lineal)

Ejemplo
Elementos de partida
El algoritmo de programacin dinmica
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 -3 -3 15 -3 -3 -3 -3
H 10 0 -2 -2 -2 -3 -2 10 0 0
E 0 6 -1 -3 -1 -3 -3 0 6 6
A -2 -1 5 0 5 -3 0 -2 -1 -1
E 0 6 -1 -3 -1 -3 -3 0 6 6
Matriz de puntuacin: BLOSUM 50
El algoritmo de programacin dinmica
H E A G A W G H E E
0 -8 -16 -24 -32 -40 -48 -56 -64 -72 -80

P -8

A -16

W -24

H -32

E -40

A -48

E -56
Inicializacin y llenado de la matriz
-2
-10
-9
-3
F(i, j) = F(i-1, j-1) + s(x
i
,y
j
)
F(i, j) = max F(i, j) = F(i-1, j) - d
F(i, j) = F(i, j-1) - d
F(0,0) + s(x
i
,y
j
) = 0 -2 = -2
F(1,1) = max F(0,1) - d = -8 -8= -16 = -2
F(1,0) - d = -8 -8= -16
F(0,1) + s(x
i
,y
j
) = -8 -1 = -9
F(1,2) = max F(1,1) - d = -2 -8 = -10 = -9
F(0,2) - d = -16 -8= -24
-8 -2 = -10
F(2,1) = max -16 -8 = -24 = -10
-2 -8 = -10
-2 -1 = -3
F(2,2) = max -10 -8 = -18 = -3
-9 -8 = -17
P-H=-2
E-P=-1
H-A=-2
E-A=-1
El algoritmo de programacin dinmica
H E A G A W G H E E
0 -8 -16 -24 -32 -40 -48 -56 -64 -72 -80

P -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 -12 -20 -13 -6

E -56 -40 -27 -15 -9 -16 -14 -14 -12 -15 -8
-13
-8
-
A
E
E
H
H
G
-
W
W
A
A
G
-
A
P
E
-
H
-
0
-25
-10
-21
-18
-10
-5
-8 -16
-17
Alineamiento global ptimo:
E
E
Llenado de la matriz, retroceso y alineamiento
El algoritmo de programacin dinmica
En resumen
El algoritmo de programacin dinmica
Alineamientos locales
El algoritmo de programacin dinmica
J . Mol. Biol. (1981) 147, 195-197
El algoritmo de programacin dinmica
Introduce tres modificaciones en relacin
al algoritomo de Needleman-Wunsch:
2.- Cuando un valor de la matriz de puntuacin
se hace negativo, se pone un 0. Es como si se
comenzara un nuevo alineamiento.
3.- La mxima puntuacin puede estar en cualquier
lugar de la tabla. El retroceso comienza en la
casilla con la puntuacin ms elevada y prosigue
hasta alcanzar un 0.
Algoritmo de Smith & Waterman (SW)
1.- La penalizacin por introducir un hueco
al comienzo del alineamiento es 0
El algoritmo de programacin dinmica
- Garantiza el alineamiento ptimo
- Se necesitan 2 secuencias y un sistema de
puntuacin
- Se lleva a cabo en tres etapas:
Inicializacin
Rellenado de la matriz
Retroceso
- Es costoso en trminos de tiempo de computacin y
de memoria de ordenador
Caractersticas del algoritmo
El algoritmo de programacin dinmica

d j i F
d j i F
y x s j i F
j i F
j i
) 1 , (
) , 1 (
) , ( ) 1 , 1 (
0
max ) , (
Algoritmo de Smith & Waterman (SW)
F (i, j)
F (i, j-1)
F (i-1, j) F (i-1, j-1)
s(x
i
,y
j
)
d
d


G
G
El algoritmo de programacin dinmica
El sistema de puntuacin
- En este ejemplo, el sistema de puntuacin
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 algoritmo de programacin dinmica
1.- Inicializacin
La penalizacin por introducir un
hueco al inicio del alineamiento es 0
Match = + 5
Mismatch= 3
Indel = 4
El algoritmo de programacin dinmica
2.- Rellenado de la matriz
Casilla (1,1): la mxima puntuacin se
alcanza haciendo coincidir las dos G (+ 5)
Match = +5
Mismatch= 3
Indel = 4
El algoritmo de programacin dinmica
2.- Rellenado de la matriz (2)
Casilla (1,2): la mxima puntuacin se
alcanza introduciendo un hueco (- 4)
Match = +5
Mismatch= 3
Indel = 4
El algoritmo de programacin dinmica
2.- Rellenado de la matriz (3)
Casilla (1,3): como todas las posibilidades dan
valores negativos, se coloca un 0
Match = +5
Mismatch= 3
Indel = 4
El algoritmo de programacin dinmica
2.- Rellenado de la matriz (4)
La puntuacin mxima puede aparecer
en cualquier casilla de la matriz
El algoritmo de programacin dinmica
3.- Retroceso (Backtracking)
No hay huecos (Coincidencia o Diferencia)
Hueco en la secuencia de la izquierda
Hueco en la secuencia superior
El algoritmo de programacin dinmica
Secuencia 1: P A W H E A E
Secuencia 2: H E A G A W G H E E

Matriz de puntuacin: BLOSUM 50

Penalizacin por hueco: - 8 (Lineal)

Otro ejemplo
Elementos de partida
El algoritmo de programacin dinmica
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 -3 -3 15 -3 -3 -3 -3
H 10 0 -2 -2 -2 -3 -2 10 0 0
E 0 6 -1 -3 -1 -3 -3 0 6 6
A -2 -1 5 0 5 -3 0 -2 -1 -1
E 0 6 -1 -3 -1 -3 -3 0 6 6
Matriz de puntuacin: BLOSUM 50
El algoritmo de programacin dinmica
H E A G A W G H E E
0 0 0 0 0 0 0 0 0 0 0

P 0 0 0 0 0 0 0 0 0

A 0 0 0 5 0 0 0 0 0 0

W 0 0 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 0

0

5

20 12 4

12 18 22 14 6

4 10 18 28 20

4 10 20 27

4 16 26
Inicializacin y rellenado de la matriz
El algoritmo de programacin dinmica
H E A G A W G H E E
0 0 0 0 0 0 0 0 0 0 0

P 0 0 0 0 0 0 0 0 0 0 0

A 0 0 0 5 0 5 0 0 0 0 0

W 0 0 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
A
G
-
E
E
H
H
W
W
28
0
5
20 12
22
Retroceso: Alineamiento ptimo
El algoritmo de programacin dinmica
H E A G A W G H E E
0 0 0 0 0 0 0 0 0 0 0

P 0 0 0 0 0 0 0 0 0 0

A 0 0 0 5 0 0 0 0 0 0

W 0 0 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 0
Segundo mejor alineamiento local:
0
21
10
16
H
H
E
E
A
A
Retroceso: Otro alineamiento

También podría gustarte