Está en la página 1de 62

[width=14pt,height=12pt]beamericonbookbeamericonbook [width=14pt,height=12pt]beamericonbookshadedbeamericonbook.20 beamericonbook.!20opaquebeamericonbookshaded beamericonbook.!15opaquebeamericonbookshaded beamericonbook.!10opaquebeamericonbookshaded beamericonbook.!5opaquebeamericonbookshaded beamericonbook.!2opaquebeamericonbookshaded [width=11pt,height=14pt]beamericonarticlebeamericonarticle [width=11pt,height=14pt]beamericonarticleshadedbeamericonarticle.20 beamericonarticle.!20opaquebeamericonarticleshaded beamericonarticle.!15opaquebeamericonarticleshaded beamericonarticle.!10opaquebeamericonarticleshaded beamericonarticle.!5opaquebeamericonarticleshaded beamericonarticle.!

2opaquebeamericonarticleshaded shapes,plot

Programacin Dinmica o a

Programacin Dinmica o a

Es aplicada t picamente a problemas de optimizacin, donde o puede haber muchas soluciones, cada una tiene un valor asociado y prentendemos obtener la solucin con valor o o ptimo. Al igual que dividir y conquistar, el problema es dividido en subproblemas de tamanos menores que son ms n a fciles de resolver. Una vez resueltos estos subproblemas, se a combinan las soluciones obtenidas para generar la solucin del o problemas original.

Principio de optimalidad

Principio de optimalidad: Un problema de optimizacin satisface el principio de optimalidad o de Bellman si en una sucesin ptima de decisiones o elecciones, o o cada subsucesin es a su vez ptima. Es decir, si miramos una o o subsolucin de la solucin ptima, debe ser solucin del o o o o subproblema asociado a esa subsolucin. o

Ejemplos donde se cumple o no el principio de optimalidad

Camino m nimo

Ejemplos donde se cumple o no el principio de optimalidad

Camino m nimo Camino mximo a

Programacin Dinmica: ejemplos o a

Coecientes binomiales Producto de matrices

n k

Subsecuencia creciente mxima a Comparacin de secuencias de ADN o etc.

Coecientes binomiales

n k

n1 k1

n1 k

Funcin recursiva (dividir y conquistar) o complejidad

Coecientes binomiales

n k

n1 k1

n1 k

Funcin recursiva (dividir y conquistar) o complejidad n ( k ) Programacin dinmica. o a La misma funcin recursiva pero SIN repetir los calculos. o

Coecientes binomiales

n k

n1 k1

n1 k

Funcin recursiva (dividir y conquistar) o complejidad n ( k ) Programacin dinmica. o a La misma funcin recursiva pero SIN repetir los calculos. o Hay que guardar toda la matriz ? cunta memoria requiere ? a qu complejidad tiene ? e

Coecientes binomiales

n k

n1 k1

n1 k

Funcin recursiva (dividir y conquistar) o complejidad n ( k ) Programacin dinmica. o a La misma funcin recursiva pero SIN repetir los calculos. o Hay que guardar toda la matriz ? cunta memoria requiere ? a qu complejidad tiene ? e Complejidad O(nk)

Multiplicacin de n matrices o
M = M1 M2 . . . Mn Debido a la propiedad asociativa del producto de matrices, puede hacer la multiplicacin de muchas formas. Queremos determinar la o que minimiza el nmero de operaciones necesarias. Por ejemplo: las u dimensiones de A es de 13 5, B de 5 89, C de 89 3 y D de 3 34. Tenemos

Multiplicacin de n matrices o
M = M1 M2 . . . Mn Debido a la propiedad asociativa del producto de matrices, puede hacer la multiplicacin de muchas formas. Queremos determinar la o que minimiza el nmero de operaciones necesarias. Por ejemplo: las u dimensiones de A es de 13 5, B de 5 89, C de 89 3 y D de 3 34. Tenemos ((AB)C )D requiere 10582 multiplicaciones.

Multiplicacin de n matrices o
M = M1 M2 . . . Mn Debido a la propiedad asociativa del producto de matrices, puede hacer la multiplicacin de muchas formas. Queremos determinar la o que minimiza el nmero de operaciones necesarias. Por ejemplo: las u dimensiones de A es de 13 5, B de 5 89, C de 89 3 y D de 3 34. Tenemos ((AB)C )D requiere 10582 multiplicaciones. 13 5 89 + 13 89 3 + 13 3 34 = 5785 + 3471 + 1326

Multiplicacin de n matrices o
M = M1 M2 . . . Mn Debido a la propiedad asociativa del producto de matrices, puede hacer la multiplicacin de muchas formas. Queremos determinar la o que minimiza el nmero de operaciones necesarias. Por ejemplo: las u dimensiones de A es de 13 5, B de 5 89, C de 89 3 y D de 3 34. Tenemos ((AB)C )D requiere 10582 multiplicaciones. 13 5 89 + 13 89 3 + 13 3 34 = 5785 + 3471 + 1326 (AB)(CD) requiere 54201 multiplicaciones.

Multiplicacin de n matrices o
M = M1 M2 . . . Mn Debido a la propiedad asociativa del producto de matrices, puede hacer la multiplicacin de muchas formas. Queremos determinar la o que minimiza el nmero de operaciones necesarias. Por ejemplo: las u dimensiones de A es de 13 5, B de 5 89, C de 89 3 y D de 3 34. Tenemos ((AB)C )D requiere 10582 multiplicaciones. 13 5 89 + 13 89 3 + 13 3 34 = 5785 + 3471 + 1326 (AB)(CD) requiere 54201 multiplicaciones. 13 5 89 + 89 3 34 + 13 89 34 = 5785 + 9078 + 39338 (A(BC ))D requiere 2856 multiplicaciones. A((BC )D) requiere 4055 multiplicaciones. A(B(CD)) requiere 26418 multiplicaciones.

Principio de optimalidad
M = M1 M2 . . . Mn

(A(BC ))D

Principio de optimalidad
M = M1 M2 . . . Mn

(A(BC ))D

(A(BC)) D El subproblema es: multiplicar las matrices ABC de la mejor manera posible.

Principio de optimalidad
M = M1 M2 . . . Mn

(A(BC ))D

(A(BC)) D El subproblema es: multiplicar las matrices ABC de la mejor manera posible. Subsolucin ?: o

Principio de optimalidad
M = M1 M2 . . . Mn

(A(BC ))D

(A(BC)) D El subproblema es: multiplicar las matrices ABC de la mejor manera posible. Subsolucin ?: (A(BC )). Es ptima para el subproblema? o o

Principio de optimalidad
M = M1 M2 . . . Mn

(A(BC ))D

(A(BC)) D El subproblema es: multiplicar las matrices ABC de la mejor manera posible. Subsolucin ?: (A(BC )). Es ptima para el subproblema? o o Vale el principio de optimalidad?

Programacion dinmica a
Sea T (i) la cantidad de formas de poner los parntesis en el e lado derecho y T (n i) en el lado izquierdo. Entonces para cada i hay T (i)T (n i) formas de poner los parntesis para e toda la expresin o

Programacion dinmica a
Sea T (i) la cantidad de formas de poner los parntesis en el e lado derecho y T (n i) en el lado izquierdo. Entonces para cada i hay T (i)T (n i) formas de poner los parntesis para e toda la expresin o (4n /n).

Programacion dinmica a
Sea T (i) la cantidad de formas de poner los parntesis en el e lado derecho y T (n i) en el lado izquierdo. Entonces para cada i hay T (i)T (n i) formas de poner los parntesis para e toda la expresin o (4n /n). Sea M = ((M1 M2 )((M3 M4 )(M5 Mi )))(Mi+1 Mi+2 ( Mn ))

Programacion dinmica a
Sea T (i) la cantidad de formas de poner los parntesis en el e lado derecho y T (n i) en el lado izquierdo. Entonces para cada i hay T (i)T (n i) formas de poner los parntesis para e toda la expresin o (4n /n). Sea M = ((M1 M2 )((M3 M4 )(M5 Mi )))(Mi+1 Mi+2 ( Mn )) Sea M = ((M1 M2 )((M3 M4 )(M5 Mi )))(Mi+1 Mi+2 ( Mn ))

Programacion dinmica a
Sea T (i) la cantidad de formas de poner los parntesis en el e lado derecho y T (n i) en el lado izquierdo. Entonces para cada i hay T (i)T (n i) formas de poner los parntesis para e toda la expresin o (4n /n). Sea M = ((M1 M2 )((M3 M4 )(M5 Mi )))(Mi+1 Mi+2 ( Mn )) Sea M = ((M1 M2 )((M3 M4 )(M5 Mi )))(Mi+1 Mi+2 ( Mn )) Funcin: o mij es la cantidad m nima de multiplicaciones necesaria para calcular Mi Mi+1 Mi+2 Mj .

Suponemos que las dimensiones de la matriz Mi estn dadas por a un vector di , 0 i n, donde la matriz Mi tiene di1 las y di columnas. Funcion de prog. dinmica: a

Suponemos que las dimensiones de la matriz Mi estn dadas por a un vector di , 0 i n, donde la matriz Mi tiene di1 las y di columnas. Funcion de prog. dinmica: a Para cada 2 s n 1 , para i = 1, 2, n s mi i+s = =miniki+s1 { mik + m(k+1)(i+s) + di1 dk di+s }

Suponemos que las dimensiones de la matriz Mi estn dadas por a un vector di , 0 i n, donde la matriz Mi tiene di1 las y di columnas. Funcion de prog. dinmica: a Para cada 2 s n 1 , para i = 1, 2, n s mi i+s = =miniki+s1 { mik + m(k+1)(i+s) + di1 dk di+s } La solucion al problema es: m1n

Suponemos que las dimensiones de la matriz Mi estn dadas por a un vector di , 0 i n, donde la matriz Mi tiene di1 las y di columnas. Funcion de prog. dinmica: a Para cada 2 s n 1 , para i = 1, 2, n s mi i+s = =miniki+s1 { mik + m(k+1)(i+s) + di1 dk di+s } La solucion al problema es: m1n

Llenado de la matriz:

Llenado de la matriz: Por cada diagonal s, s = 0, ..., n 1 mii = 0 , (s = 0), Para i = 1 n mi i+1 , (s = 1) i = 1 n 1 Complejidad:

Llenado de la matriz: Por cada diagonal s, s = 0, ..., n 1 mii = 0 , (s = 0), Para i = 1 n mi i+1 , (s = 1) i = 1 n 1 Complejidad: en cada diagonal s hay que calcular n s elementos y para cada uno de ellos hay que elegir entre s posibilidades, entonces la cantidad de operaciones del algoritmo es del orden de: (n s)s = n s s 2 = n2 (n 1)/2 n(n 1)(2n 1)/6 = (n3 n)/6 Es decir, O(n3 )

Subsecuencia creciente ms larga a

Determinar la subsecuencia creciente ms larga de una sucesin de a o nmeros. u Ejemplo: S = {9, 5, 2, 8, 7, 9, 3, 1, 6, 4}

Subsecuencia creciente ms larga a

Determinar la subsecuencia creciente ms larga de una sucesin de a o nmeros. u Ejemplo: S = {9, 5, 2, 8, 7, 9, 3, 1, 6, 4} Las subsecuencias ms largas son {2, 3, 4} o {2, 3, 6} {5, 7, 9} a

Subsecuencia creciente ms larga a

Determinar la subsecuencia creciente ms larga de una sucesin de a o nmeros. u Ejemplo: S = {9, 5, 2, 8, 7, 9, 3, 1, 6, 4} Las subsecuencias ms largas son {2, 3, 4} o {2, 3, 6} {5, 7, 9} a Vale el ppio de optimalidad?

Subsecuencia creciente ms larga a

Para construir un algoritmo de programacin dinmica o a denimos otro problema relacionado: li = longitud de la secuencia creciente mas larga que termina con si

Subsecuencia creciente ms larga a

Para construir un algoritmo de programacin dinmica o a denimos otro problema relacionado: li = longitud de la secuencia creciente mas larga que termina con si Funcin: o l0 = 0 li = maxji1 {lj + 1} para los j tales que sj si1 Solucin: Mximo li o a

Subsecuencia creciente ms larga a

Demostremos que esa funcion calcula efectivamente lo que queremos: Li : longitud de la secuencia creciente ms larga que termina con si a pi = predecesor de si en la secuencia creciente ms larga que a termina con si Queremos ver que Li = li

Subsecuencia creciente ms larga a

Complejidad temporal y espacial

Subsecuencia creciente ms larga a

Complejidad temporal y espacial Como hacemos para tener tambien la sucesin y no solo la o longitud?.

Comparacin de secuencias de ADN o

Supongamos que tenemos dos secuencias de ADN GACGGATTAG y GATCGGAATAG Queremos decidir si son parecidas o no. Para qu se usa esto? e

Comparacin de secuencias de ADN o

Supongamos que tenemos dos secuencias de ADN GACGGATTAG y GATCGGAATAG Queremos decidir si son parecidas o no. Para qu se usa esto? e Alineamiento GA- CGGATTAG GATCGGAATAG Objetivo: construir un algoritmo que determine la mejor alineacin global entre dos secuencias (que pueden tener o distinta longitud).

Comparacin de secuencias de ADN o

Asignamos valores a las coincidencias, a las diferencias y a los gaps. Ejemplo GA -CGGATTAG GATCGGAATAG

Comparacin de secuencias de ADN o

Asignamos valores a las coincidencias, a las diferencias y a los gaps. Ejemplo GA -CGGATTAG GATCGGAATAG coincidencia = +1 diferencia = -1 gap = -2 Puntaje(T, S) = 9 1 + 1 (-1) + 1 (-2) = 6

Comparacin de secuencias de ADN o

Principio de optimalidad ?

Comparacin de secuencias de ADN o

Principio de optimalidad ?
GACGGATTAG XXXXXXXXXX

Comparacin de secuencias de ADN o

Principio de optimalidad ?
GACGGATTAG XXXXXXXXXX GACGGATTAG XXXXXXXXX -

Comparacin de secuencias de ADN o

Principio de optimalidad ?
GACGGATTAG XXXXXXXXXX GACGGATTAG XXXXXXXXX GACGGATTAG GACGGATTAG

XXXXXXXXX X o XXXXXXXXXG

Comparacin de secuencias de ADN o

Se quiere alinear las secuencias S y T . Sea n el tamao de S y m el de T . ------------n ----------------m F (i, j): mejor similitud entre las subsecuencias S[1...i] y T [1...j]. Sol: F (n, m)

Comparacin de secuencias de ADN o

F (i, j) =

Comparacin de secuencias de ADN o

F (i, j) = F (i, j 1) + pg F (i 1, j) + pg Max F (i 1, j 1) + pd (o F (i 1, j 1) + pc ) Donde, pg , pc , pd son los puntos por Gap, coicidencia, y diferencia, resp.

Comparacin de secuencias de ADN o

F (i, j) = F (i, j 1) + pg F (i 1, j) + pg Max F (i 1, j 1) + pd (o F (i 1, j 1) + pc ) Donde, pg , pc , pd son los puntos por Gap, coicidencia, y diferencia, resp. Llenado de la matriz: Una matriz de (n + 1) (m + 1) F (i, 0) = pg i F (0, j) = pg j

Comparacin de secuencias de ADN o

Rearmar la solucin o Complejidad Temporal:

Comparacin de secuencias de ADN o

Rearmar la solucin o Complejidad Temporal: O(mn) en armar la matriz O(m + n) en buscar en la matriz (recorrer la secuencia resultante, que a lo sumo tiene n + m elementos). Complejidad Espacial:O(mn) por el espacio necesario para la matriz

Problema de la mochila

Problema M(n, k): Sea k un entero, y n items, cada uno de peso pi . Encontrar un subconjunto de items tal que su peso sume exctamente k, si existe. a Es decir, j pj xj , xj {0, 1} Principio de optimalidad:

Problema de la mochila

Problema M(n, k): Sea k un entero, y n items, cada uno de peso pi . Encontrar un subconjunto de items tal que su peso sume exctamente k, si existe. a Es decir, j pj xj , xj {0, 1} Principio de optimalidad: dada una solucin del problema, o ai1 , ais entonces ai1 , . . . ais1 .....

Problema de la mochila

P(i, j): Vale 1 si existe una solucin entre los primeros i o elementos, que sumen j y 0 en caso contrario

Problema de la mochila

P(i, j): Vale 1 si existe una solucin entre los primeros i o elementos, que sumen j y 0 en caso contrario Funcin: M(i, j) = Max{M(i 1, j), M(i 1, j ai )} o

Problema de la mochila

P(i, j): Vale 1 si existe una solucin entre los primeros i o elementos, que sumen j y 0 en caso contrario Funcin: M(i, j) = Max{M(i 1, j), M(i 1, j ai )} o Llenado de la matriz

Problema de la mochila

P(i, j): Vale 1 si existe una solucin entre los primeros i o elementos, que sumen j y 0 en caso contrario Funcin: M(i, j) = Max{M(i 1, j), M(i 1, j ai )} o Llenado de la matriz M(1, j) = {a1 = j} M(i, 1) = Max{M(i 1, 1), {ai = 1}}

Problema de la mochila

P(i, j): Vale 1 si existe una solucin entre los primeros i o elementos, que sumen j y 0 en caso contrario Funcin: M(i, j) = Max{M(i 1, j), M(i 1, j ai )} o Llenado de la matriz M(1, j) = {a1 = j} M(i, 1) = Max{M(i 1, 1), {ai = 1}} Complejidad

Problema de la mochila

Ejercicio: Pensar un algoritmo de programacion dinamica con ideas similares a este para el problema de la mochila mas general: Max j cj xj sujeto a que j aj xj k xj {0, 1}

También podría gustarte