Dra. Elisa SchaefferTécnicas de diseño de algoritmos Programación dinámica Dra. Elisa Schaeffer...

35
Técnicas de diseño de algoritmos Programación dinámica Dra. Elisa Schaeffer [email protected] PISIS / FIME / UANL Programaci´ on din´ amica– p. 1

Transcript of Dra. Elisa SchaefferTécnicas de diseño de algoritmos Programación dinámica Dra. Elisa Schaeffer...

Técnicas de diseño de algoritmos

Programación dinámica

Dra. Elisa Schaeffer

[email protected]

PISIS / FIME / UANL

Programacion dinamica– p. 1

Programación dinámica

En programacion dinamica, uno empieza a construir lasolución desde las soluciones de los subproblemas máspequeños, guardando las soluciones en una formasistemática para construir soluciones a problemasmayores.

Típicamente las soluciones parciales están guardadas enun arreglo para evitar a tener que solucionar unsubprobelma igual más tarde el la ejecución del algoritmo.

Programacion dinamica– p. 2

Problema de la mochila

El algoritmo pseudo-polinomial que vimos para elproblema de la mochila es esencialmente un algoritmo deprogramación dinámica (PD).

En general, la utilidad de PD está en problemas donde lasolución del problema completo contiene las soluciones delos subproblemas — una situación que ocurre en algunosproblemas de optimizacion.

Programacion dinamica– p. 3

Coeficientes binómicos

Si uno lo aplica de la manera dividir y conquistar , esnecesario volver a calcular varias vecesalgunoscoeficientes pequeños, llegando a la complejidadasintótica

Ω

((

n

k

))

= Ω

(

2n√n

)

Por guardar las soluciones parciales: O (nk).

Sin embargo, por guardarlas, la complejidad de espacio crece.

Programacion dinamica– p. 4

Triángulo de Pascal

k

n0 1 2 3 4 5 6 7 8

0 1

1 1 1

2 1 2 1

3 1 3 3 1

4 1 4 6 4 1

5 1 5 10 10 5 1

6 1 6 15 20 15 6 1

7 1 7 21 35 35 21 7 1

8 1 8 28 56 70 56 28 8 1

Programacion dinamica– p. 5

Triangulación

Dado: Un polígono convexo de n lados en formato de lalista de los n+ 1 puntos finales de sus lados en ladirección del reloj.

Pregunta: ¿Cuál división del polígono a triángulosminimiza la suma de los largos de los lados de lostriángulos?

Programacion dinamica– p. 6

Ejemplo con una solución factible

Programacion dinamica– p. 7

Observaciones

El número de los puntos es n+ 1

Programacion dinamica– p. 8

Observaciones

El número de los puntos es n+ 1

Cada uno de los n lados del polígono tiene n opcionesde asignación a triángulos, incluyendo un tri angulodegeneradoque consiste del lado sólo

Programacion dinamica– p. 8

Observaciones

El número de los puntos es n+ 1

Cada uno de los n lados del polígono tiene n opcionesde asignación a triángulos, incluyendo un tri angulodegeneradoque consiste del lado sólo

Uno de estos triángulos necesariamente pertenecea la triangulación óptima.

Programacion dinamica– p. 8

Observaciones

El número de los puntos es n+ 1

Cada uno de los n lados del polígono tiene n opcionesde asignación a triángulos, incluyendo un tri angulodegeneradoque consiste del lado sólo

Uno de estos triángulos necesariamente pertenecea la triangulación óptima.

Lo que queda es triangular el área o las áreas quequedan afuera del triángulo elegida.

Programacion dinamica– p. 8

Las opciones

Programacion dinamica– p. 9

Método de solución

Examinar cada triangulación de cada lado, empezando dellado entre el primero y el segundo punto, y continuandorecursivamente para los otros lados del polígono.

El “precio” de un triángulo degenerado es cero.

Programacion dinamica– p. 10

Precio de triangulación

Suponemos que estamos triangulizando el polígonoparcial definido por los puntos i− 1, i, . . . , j − 1, j.

El precio de la triangulación óptima es

Ti,j =

0, i = j

mıni≤k≤j−1

Ti,k + Tk+1,j + w(i− 1, k, j) , i 6= j

donde w(i− 1, k, j) es el costo del triángulo definido porlos tres puntos i− 1, k y j.

Programacion dinamica– p. 11

El algoritmo

Guardar en la tabla de los Ti,j cero ∀Ti,i, i = 1, . . . , n.

Programacion dinamica– p. 12

El algoritmo

Guardar en la tabla de los Ti,j cero ∀Ti,i, i = 1, . . . , n.

Completar la tabla diagonal por diagonal hasta llegaral elemento T1,n.

Programacion dinamica– p. 12

El algoritmo

Guardar en la tabla de los Ti,j cero ∀Ti,i, i = 1, . . . , n.

Completar la tabla diagonal por diagonal hasta llegaral elemento T1,n.

T1,n es el costo de la triangulación óptima de todo elpolígono.

Programacion dinamica– p. 12

El algoritmo

Guardar en la tabla de los Ti,j cero ∀Ti,i, i = 1, . . . , n.

Completar la tabla diagonal por diagonal hasta llegaral elemento T1,n.

T1,n es el costo de la triangulación óptima de todo elpolígono.

Hay que recordar cuáles w(i− 1, k, j) fueron utilizadospara saber de cuáles triángulos consiste latriangulación.

Programacion dinamica– p. 12

Análisis

Tiempo por elemento de la tabla: Θ(n).

Programacion dinamica– p. 13

Análisis

Tiempo por elemento de la tabla: Θ(n).

Son Θ(n2) elementos en total en la tabla.

Programacion dinamica– p. 13

Análisis

Tiempo por elemento de la tabla: Θ(n).

Son Θ(n2) elementos en total en la tabla.

=⇒ El algoritmo corre en tiempo Θ(n3).

Programacion dinamica– p. 13

Distancia de edición

La distancia de edicion (inglés: edit distance) es unamedida de similitud de sucesiones de símbolos (o sea,palabras formadas por un alfabeto).

Se define como el numero mınimo de operaciones deedicion que uno necesita aplicar a palabra P para llegar ala palabra Q.

dist (P,Q) = dist (Q,P )

dist (P, P ) = 0

Programacion dinamica– p. 14

Las operaciones

1. Insertar un símbolo en posición i.

2. Eliminar un símbolo de posición i.

3. Reemplazarel símbolo en posición i con otro.

Típicamente todas las operaciones tienen el mismo costo (seauno), aunque se puede dar diferentes costos a diferentesoperaciones.

Programacion dinamica– p. 15

Desigualdad de triángulo

dist (P,Q) ≤ dist (P,R) + dist (R,Q)

En el caso básico aplica, pero existen variaciones de lamedida que no lo cumplen.

Programacion dinamica– p. 16

DP: inicialización

procedimiento editdist(P = [p1, p2, . . . , pk], Q = [q1, q2, . . . , qℓ)

para i ∈ [0, k]

dist (i, 0) := i

para j ∈ [0, ℓ]

dist (0, j) := j

. . .

Programacion dinamica– p. 17

DP: Calculación

procedimiento editdist(P = [p1, p2, . . . , pk], Q = [q1, q1, . . . , qℓ)

. . .

para i ∈ [1, k]

para j ∈ [1, ℓ]

si pi = qj : c := 0;

en otro caso : c := 1;

del := dist (i− 1, j) + 1;

ins := dist (i, j − 1) + 1;

rep := dist (i− 1, j − 1) + c;

dist (i, j) := mın del, ins, rep;

devuelve dist (k, ℓ);

Programacion dinamica– p. 18

Ejemplo: k = 7, ℓ = 5

D I F I C I L

Programacion dinamica– p. 19

Ejemplo: k = 7, ℓ = 5

D I F I C I L

0 1 2 3 4 5 6 7

F 1

Programacion dinamica– p. 19

Ejemplo: k = 7, ℓ = 5

D I F I C I L

0 1 2 3 4 5 6 7

F 1 1 2 2 3 4 5 6

A 2 2

Programacion dinamica– p. 19

Ejemplo: k = 7, ℓ = 5

D I F I C I L

0 1 2 3 4 5 6 7

F 1 1 2 2 3 4 5 6

A 2 2 2 3 3 4 5 6

C 3 3 3

Programacion dinamica– p. 19

Ejemplo: k = 7, ℓ = 5

D I F I C I L

0 1 2 3 4 5 6 7

F 1 1 2 2 3 4 5 6

A 2 2 2 3 3 4 5 6

C 3 3 3 3 4 3 4 5

I 4 4 3 4

Programacion dinamica– p. 19

Ejemplo: k = 7, ℓ = 5

D I F I C I L

0 1 2 3 4 5 6 7

F 1 1 2 2 3 4 5 6

A 2 2 2 3 3 4 5 6

C 3 3 3 3 4 3 4 5

I 4 4 3 4 3 4 3 4

L 5 5 4 4 4

Programacion dinamica– p. 19

Ejemplo: k = 7, ℓ = 5

D I F I C I L

0 1 2 3 4 5 6 7

F 1 1 2 2 3 4 5 6

A 2 2 2 3 3 4 5 6

C 3 3 3 3 4 3 4 5

I 4 4 3 4 3 4 3 4

L 5 5 4 4 4 4 4 3

Programacion dinamica– p. 19

Ejemplo: k = 7, ℓ = 5

D I F I C I L

0 1 2 3 4 5 6 7

F 1 1 2 2 3 4 5 6

A 2 2 2 3 3 4 5 6

C 3 3 3 3 4 3 4 5

I 4 4 3 4 3 4 3 4

L 5 5 4 4 4 4 4 3

¿Cómo rastrear las operaciones?

Programacion dinamica– p. 19

PD estocástica

En PD tradicional, dado el estado actual y una decisiónhecha, el estado siguiente está fijo.

También hay aplicaciones de PD donde en vez de conocerlos dos, una solamente se conoce através de unadistribuci on de probabilidad.

Las aplicaciones de PD estocástico involucranincertidumbre de aspectos como ventas, apuestos,etcétera.

Programacion dinamica– p. 20