DR. JOSÉ MARTÍNEZ CARRANZA CIENCIAS COMPUTACIONALES …

38
DR. JOSÉ MARTÍNEZ CARRANZA CIENCIAS COMPUTACIONALES INAOE Análisis y Diseño de Algoritmos Programación Dinámica

Transcript of DR. JOSÉ MARTÍNEZ CARRANZA CIENCIAS COMPUTACIONALES …

Page 1: DR. JOSÉ MARTÍNEZ CARRANZA CIENCIAS COMPUTACIONALES …

DR. JOSÉ MARTÍNEZ CARRANZA

CIENCIAS COMPUTACIONALESINAOE

Análisis y Diseño de AlgoritmosProgramación Dinámica

Page 2: DR. JOSÉ MARTÍNEZ CARRANZA CIENCIAS COMPUTACIONALES …

2

Introducción a Programación Dinámica

Parecido a divide y conquista Resuelve problemas combinando soluciones Programación se refiere a resolver problemas en forma tabular Programación dinámica aplica cuando los subproblemas no son

independientes Comparten subproblemas

Resuelve cada subproblema sólo una vez, guarda la solución, ahorra tiempo

Generalmente utilizada en problemas de optimización

2

Page 3: DR. JOSÉ MARTÍNEZ CARRANZA CIENCIAS COMPUTACIONALES …

3

Introducción a Programación Dinámica

Cuatro pasos1. Caracterizar la estructura de una solución óptima

2. Recursivamente definir el valor de una solución óptima

3. Calcular el valor de una solución óptima de un modo bottom-up

4. Construir una solución óptima a partir de la información calculada

3

Page 4: DR. JOSÉ MARTÍNEZ CARRANZA CIENCIAS COMPUTACIONALES …

44

Multiplicación de Matrices

Dadas 2 matrices: Apxq * Bqxr = Cpxr , A2x3 * B3x2 = C2x2 Se requieren p x q x r multiplicaciones

4

Page 5: DR. JOSÉ MARTÍNEZ CARRANZA CIENCIAS COMPUTACIONALES …

5

Multiplicación de Matrices en Cadena

Entrada: una cadena de n matrices <A1, A2, …, An>Salida: el producto de las matrices A1A2…An.Algoritmo

Acomodar los paréntesis a manera de minimizar el número de productos escalares al multiplicar las matrices

A1A2A3 se puede agrupar como: (A1A2)A3, ó como A1 (A2A3)

5

Page 6: DR. JOSÉ MARTÍNEZ CARRANZA CIENCIAS COMPUTACIONALES …

6

Ejemplo

Si A1 es de 10 x 100, A2 de 100 x 5 y A3 de 5 x 50 A1 (A2A3) 100x5x50 + 10x100x50 = 25,000 + 50,000 = 75,000

multiplicaciones, (A2A3 es una matriz de 100x50)

(A1A2)A3 10x100x5 + 10x5x 50 = 5,000 + 2,500 = 7,500 multiplicaciones (A1A2 es una matriz de 10x5)

Page 7: DR. JOSÉ MARTÍNEZ CARRANZA CIENCIAS COMPUTACIONALES …

Solución por Fuerza Bruta

Intentamos resolver el problema probando todas las maneras de agrupar con paréntesis

No es una solución eficiente Sea P(n) el número de formas diferentes de acomodar los paréntesis en una secuencia

de n matrices Tenemos la recurrencia:

(la secuencia de los números de catalán) P(n) = C(n-1), donde:

El número de soluciones es exponencial en n Resolver por programación dinámica

7

Page 8: DR. JOSÉ MARTÍNEZ CARRANZA CIENCIAS COMPUTACIONALES …

Paso 1: Caracterizar la Estructura de la Solución Óptima(La estructura para agrupar los paréntesis)

Sea Ai..j la matriz resultante del producto AiAi+1…Aj donde i<j

Si se divide el producto entre Ak y Ak+1 para i k j

Se calcula por separado Ai..k y Ak+1..j

La solución a cada subproblema debe ser óptima para que la solución de A1..An sea óptima

Costo = Costo(Ai..k) + Costo(Ak+1..j) + Costo de multiplicar ambas matrices

Si hubiera otra forma de agrupar que nos de mejor costo entonces la anterior no sería la óptima

8

Page 9: DR. JOSÉ MARTÍNEZ CARRANZA CIENCIAS COMPUTACIONALES …

Paso 1: Caracterizar la Estructura de la Solución Óptima(La estructura para agrupar los paréntesis)

9

Subestructura óptima: Construir soluciones óptimas para todos los subproblemas

(así trabaja programación dinámica) Por eso se llama subestructura óptima

Page 10: DR. JOSÉ MARTÍNEZ CARRANZA CIENCIAS COMPUTACIONALES …

Paso 2. Definir una Solución Recursiva

10

Definimos costo de una solución óptima recursivamente en términos de la solución óptima a subproblemas

Subproblemas Problema de determinar el costo mínimo de agrupar las matrices con

paréntesis para AiAi+1…Aj para 1 i j n

Sea m[i,j] el número mínimo de multiplicaciones escaleres para calcular Ai..j

El costo total para obtener A1..n sería m[1,n]

Page 11: DR. JOSÉ MARTÍNEZ CARRANZA CIENCIAS COMPUTACIONALES …

Paso 2. Definir una Solución Recursiva11

Definimos m[i,j] Si i = j, m[i,j] = 0 (problema trivial, una sóla matriz, no son necesarias

multiplicaciones de escalares) Si i < j, asumimos una división óptima entre Ak y Ak+1 (i k<j)

m[i,j] = costo de calcular Ai..k + costo de calcular Ak+1..j + costo de calcular Ai..kAk+1..j

=m[i,k] + m[k+1,j]+pi-1pkpj

Sin embargo, no conocemos el valor de k e intentaremos todas las j-i posibilidades La definición recursiva para el mínimo costo de agrupar los paréntesis del producto

AiAi+1…Aj es:

Page 12: DR. JOSÉ MARTÍNEZ CARRANZA CIENCIAS COMPUTACIONALES …

Paso 3: Calculando los Costos Óptimos12

Podemos utilizar la recurrencia anterior para calcular el costo mínimo de m[1,n] para multiplicar A1A2…An

Pero el algoritmo todavía es exponencial (no mejor que fuerza bruta) Algo bueno es que tenemos relativamente pocos subproblemas

Uno para cada elección de i y j donde 1 i j n, ó

El algoritmo puede encontrar subproblemas repetidos Traslape (Overlapping) Utilizamos método bottom-up tabular paso 3

Page 13: DR. JOSÉ MARTÍNEZ CARRANZA CIENCIAS COMPUTACIONALES …

Paso 3: Calculando los Costos Óptimos13

Método bottom-up Resolvemos subproblemas pequeños primero y los más

grandes serán más fáciles de resolver

Definimos 2 arreglos m[1..n, 1..n], para almacenar costos mínimos s[1..n, 1..n], para almacenar las divisiones óptimas, índice de

k Para construir la solución óptima

Page 14: DR. JOSÉ MARTÍNEZ CARRANZA CIENCIAS COMPUTACIONALES …

Paso 3: Calculando los Costos Óptimos14

Tiempo de ejecución de O(n3) y requiere (n2) memoria para almacenar m y s.

Page 15: DR. JOSÉ MARTÍNEZ CARRANZA CIENCIAS COMPUTACIONALES …

Paso 3: Calculando los Costos Óptimos15

Page 16: DR. JOSÉ MARTÍNEZ CARRANZA CIENCIAS COMPUTACIONALES …

Paso 3: Calculando los Costos Óptimos16

Page 17: DR. JOSÉ MARTÍNEZ CARRANZA CIENCIAS COMPUTACIONALES …

Paso 4. Construyendo la Solución Óptima17

MATRIX-CHAIN-ORDER encuentra el número óptimo de multiplicaciones escalares

Construimos la solución óptima con la información en s[1..n, 1..n]

Page 18: DR. JOSÉ MARTÍNEZ CARRANZA CIENCIAS COMPUTACIONALES …

Elementos de la Programación Dinámica18

Subestructura óptima

Un problema con solución óptima que tiene subproblemas con soluciones óptimas

Si se presenta esta propiedad, podría aplicar (probablemente) programación dinámica

Problemas traslapados

El espacio de subproblemas debe ser pequeño

Un alg. recursivo los resolvería muchas veces, en lugar de generar problemas nuevos

Generalmente el número de subproblemas diferentes es polinomial en tamaño de la entrada

Divide y conquista genera nuevos problemas cada paso de la recursión

Page 19: DR. JOSÉ MARTÍNEZ CARRANZA CIENCIAS COMPUTACIONALES …

Traslape en Multiplicación en Cadena de Matrices19

Page 20: DR. JOSÉ MARTÍNEZ CARRANZA CIENCIAS COMPUTACIONALES …

Algoritmo Recursivo para Multiplicación de Matrices en Cadena

20

Page 21: DR. JOSÉ MARTÍNEZ CARRANZA CIENCIAS COMPUTACIONALES …

Análisis de la Solución Recursiva21

Page 22: DR. JOSÉ MARTÍNEZ CARRANZA CIENCIAS COMPUTACIONALES …

Análisis de la Solución Recursiva

Por el método de substitución, probando que T(n)=(2n)

Mostrar: T(n) = (2n) c2n

Asumiendo: T(k) c2k para k < n

Si 4c-(n) 0, ó c (n)/4

(valor largo de n)

Entonces, T(n) = (2n)

T(n) sigue siendo exponencial!

22

Page 23: DR. JOSÉ MARTÍNEZ CARRANZA CIENCIAS COMPUTACIONALES …

Memoization

Variación de programación dinámica

Estrategia top-down, con el algoritmo recursivo

Utiliza una tabla con soluciones de subproblemas

23

Page 24: DR. JOSÉ MARTÍNEZ CARRANZA CIENCIAS COMPUTACIONALES …

Memoization para Multiplicación de Matrices en Cadena

Tiempo:

O(n3)

Mejor que (2n)

Memoria:

O(n2)

24

Page 25: DR. JOSÉ MARTÍNEZ CARRANZA CIENCIAS COMPUTACIONALES …

Subsecuencia Común más LargaLongest Common Subsequence (LCS)

Una subsecuencia de otra secuencia es la misma secuencia quitándole cero o más elementos.

Dada la secuencia X = <x1, x2, …, xm>, otra secuencia Z = <z1, z2, …, zk> es una subsecuencia de X si existe una secuencia creciente <i1, i2, …, ik> (no necesariamente contiguos) de índices de X tal que para cada j = 1,2, …, k, tenemos que xij = zj.

25

Page 26: DR. JOSÉ MARTÍNEZ CARRANZA CIENCIAS COMPUTACIONALES …

Ejemplos de Subsecuencias Comunes

Z = <B, C, D, B> es subsecuencia de X = <A, B, C, B, D, A, B>, con la secuencia de índices <2, 3, 5, 7>

Dadas las secuencias X y Y, Z es una secuencia común de X e Y si Z es una subsecuencia de ambas. X = <A, B, C, B, D, A, B>, Y = <B, D, C, A, B, A>, la secuencia <B, C, A>

es una subsecuencia común de X e Y. La secuencia <B, C, B, A> es una LCS de X e Y, igual que <B, D, A, B>

26

Page 27: DR. JOSÉ MARTÍNEZ CARRANZA CIENCIAS COMPUTACIONALES …

Problema LCS

Dadas dos secuencias X e Y, encontramos la subsecuencia común máxima de X e Y.

27

Page 28: DR. JOSÉ MARTÍNEZ CARRANZA CIENCIAS COMPUTACIONALES …

LCS con Programación Dinámica

Subestructura óptima Definir

Dado X = <x1, …, xm>, el iésimo prefijo de X, i = 0, …, m, es Xi = <x1, …, xi>. X0 está vacío.

Teorema 16.1

Sean X = <x1, …, xm> y Y = <y1, …, yn> secuencias y Z = <z1, …, zk> sea cualquier LCS de X y Y.

1. Si xm = yn, entonces zk = xm = yn y Zk-1 es una LCS de Xm-1 y Yn-1

2. Si xm ≠ yn, entonces zk ≠ xm implica que Z es una LCS de Xm-1 y Y.

3. Si xm ≠ yn, entonces zk ≠ ym implica que Z es una LCS de X y Yn-1

Por tanto, el problema de LCS tiene subestructura óptima

28

Page 29: DR. JOSÉ MARTÍNEZ CARRANZA CIENCIAS COMPUTACIONALES …

Problema LCS

Solución por fuerza bruta 2m subsecuencias de X a buscar en Y

Cada secuencia es un conjunto de índices {1, 2, …, m} Tiempo exponencial No práctico para secuencias largas

29

Page 30: DR. JOSÉ MARTÍNEZ CARRANZA CIENCIAS COMPUTACIONALES …

LCS con Programación Dinámica

Traslape de subproblemas Sea c[i,j] la longitud de una LCS en las secuencias Xi y Yj

La subestructura óptima del problema LCS nos lleva a la sig. fórmula recursiva

30

LCS(X,Y)

LCS(X,Yn-1) LCS(Xm-1,Y) LCS(Xm-1,Yn-1)

LCS(X,Yn-2) LCS(Xm-1,Yn-1) LCS(Xm-1,Yn-2) LCS(Xm-1,Yn-1) LCS(Xm-2,Y) LCS(Xm-2,Yn-1)

Page 31: DR. JOSÉ MARTÍNEZ CARRANZA CIENCIAS COMPUTACIONALES …

LCS con Programación Dinámica

Algoritmo recursivo exponencial para calcular longitud de una LCS de dos secuencias Pero sólo hay m*n subproblemas distintos

Solución Utilizar programación dinámica

Procedimiento bottom up En c[i,j] guardamos la longitud del arreglo En b[i,j] guardamos el caso relacionando xi, yj, y zk

31

Page 32: DR. JOSÉ MARTÍNEZ CARRANZA CIENCIAS COMPUTACIONALES …

Pseudocódigo32

LCS-LENGTH tiene un orden de O(mn)

Page 33: DR. JOSÉ MARTÍNEZ CARRANZA CIENCIAS COMPUTACIONALES …

Construcción de una LCS33

PRINT-LCS tiene un orden de O(m + n)

Page 34: DR. JOSÉ MARTÍNEZ CARRANZA CIENCIAS COMPUTACIONALES …

Triangulación Óptima de PolígonoOptimal Polygon Triangulation

Un polígono se define como P = <v0, v1, …, vn-1>

34

v0

v1

v2

v3 v4

v5

v6

v0

v1

v2

v3 v4

v5

v6

Page 35: DR. JOSÉ MARTÍNEZ CARRANZA CIENCIAS COMPUTACIONALES …

Triangulación Óptima de PolígonoOptimal Polygon Triangulation

Un polígono es convexo si un segmento de línea entre dos puntos cae ya sea en sus bordes o en su interior.

35

Polígono no-convexo

Page 36: DR. JOSÉ MARTÍNEZ CARRANZA CIENCIAS COMPUTACIONALES …

Triangulación Óptima de PolígonoOptimal Polygon Triangulation

Si vi y vj no son adyacentes, entonces el segmento vivj es una cuerda

Una triangulación es un conjunto de cuerdas T que divide P en triángulos disjuntos Las cuerdas no se intersectan T es maximal (cada cuerda T intersecta una cuerda T)

36

Page 37: DR. JOSÉ MARTÍNEZ CARRANZA CIENCIAS COMPUTACIONALES …

Triangulación Óptima de PolígonoOptimal Polygon Triangulation

Problema Dados

P =<vo, v1, …, vn-1> Una función de pesos w sobre triángulos formada por P y T

Encontrar T que minimice la suma de pesos Example: w(vivjvk) = |vivj| + |vjvk| + |vkvi| (dist. Euclidiana) Este problema se puede reducir al problema de

multiplicación de matrices en cadena

37

Page 38: DR. JOSÉ MARTÍNEZ CARRANZA CIENCIAS COMPUTACIONALES …

Triangulación Óptima de PolígonoOptimal Polygon Triangulation

Subestructura óptima T tiene v0vkvn

w(T) = w(v0vkvn) + m[0,k] + m[k + 1, n] Las dos soluciones a los subproblemas deben ser óptimas o

w(T) no lo sería. El algoritmo requiere (n3) en tiempo y (n2) en memoria

38