Title: Presentacin de PowerPoint
1Diseño y análisis de algoritmos
Técnica de diseño Programación Dinámica II
2Temario
- Técnica de diseño Programación Dinámica
- Introducción
- Aplicaciones
- Multiplicación de Matrices
- Caminos mas cortos en grafo
- Arboles de búsqueda óptimos
3Técnica de diseño Programación Dinámica Problema
multiplicación de matrices en secuencia
- Problema
- Se desea calcular el producto matricial
- Por cada par de matrices pxq y qxr, se reqieren
pqr multiplicaciones escalares - Al ser el producto asociativo, se tienen varias
fomas de realizar una multiplicación de una
cadena de matrices. - Ejemplo se quiere calcular el producto de ABCD,
de las matrices - Se pueden asociar de cinco formas distintas
El orden no es despreciable, pues el caso más
eficiente es casi 19 veces más rápido que el peor.
4Técnica de diseño Programación Dinámica Problema
multiplicación de matrices en secuencia
- Problema
- El problema consiste entonces
- Insertar los paréntesis de todas las formas
posibles - Calcular la cantidad de productos necesarios
- Obtener el menor entre todos ellos
- La cantidad de formas posibles T(n) de insertar
paréntesis para n matrices, se puede deducir - Cortando la secuencia en dos subsecuencias, entre
la i ava y la (i1)- ésima matriz - Entonces se tienen T(i)T(n-i)
formas distintas - Como i puede tomar valores entre 1 y n-1, la
cantidad está dada por la siguiente recurrencia
Números llamados de Catalán.
5Técnica de diseño Programación Dinámica Problema
multiplicación de matrices en secuencia
- Problema
- Los números de Catalán crecen exponencialmente
- De hecho puede demostrarse que
- Por ejemplo
- n 1 2 3 4 5 10
15 - T(n) 1 1 2 5 14 4862
2674440 - Aplicación del principio de optimalidad
- Si el mejor modo de realizar el producto exige
dividir inicialnente entre las - matrices i e (i1)-ésima, los productos
deberán ser realizados de forma óptima, para que
el total también sea óptimo.
6Técnica de diseño Programación Dinámica Problema
multiplicación de matrices en secuencia
- Método
- Construir una matriz , 1ltiltjltn,
(triangular superior) donde - corresponde a la mínima cantidad de productos
necesarios para la parte - del producto total. Por lo que la solución
viene dada en - Para construir la matriz, se deben guardar las
dimensiones de las Mi 1ltiltn en un arreglo d,
0..n, de forma que Mi tiene dimensiones - La diagonal s de contiene los
tales que j-is - Este último caso representa que para calcular
, se intentan todas
las posibilidades
y se
escoge la mejor.
7Técnica de diseño Programación Dinámica Problema
multiplicación de matrices en secuencia
- De forma más compacta si iltgtj y i ltj
- Para el ejemplo anterior
,d(13,5,89,3,34)
8Técnica de diseño Programación Dinámica Problema
multiplicación de matrices en secuencia
Funcion parentOpt(d0..nsalida
m1..n,1..n,mk1..n,1..n) m contiene el
número de multiplicaciones, mki,j guarda el
índice k para el que se alcanza el mínimo al
calcula mi,j Variables i,j,r,k,qentero Inicio
Para i 0 a n hacer mi,i0 Fin-Para Para
r 2 a n hacer Para i 1 a n-r1 hacer
jir-1 mi,jmax infinito
Para k i a j-1 hacer
qmi,kmk1,jdi-1dkdj si
qlt mi,j entonces mi,j q
mki,jk FIN-SI
FIN-para FIN-para FIN-para fin
9Técnica de diseño Programación Dinámica Problema
multiplicación de matrices en secuencia
- Solución en tiempo razonable , al menos
polinomial, aunque necesita tres loops anidados,
por lo que - Queda abierto el problema de hacer un nuevo
algoritmo, basado en la matriz mk, indicar en qué
orden se multiplican las matrices.
10Técnica de diseño Programación Dinámica Problema
caminos mínimos en un grafo
- Problema
- Calcular los caminos de costo mínimo o mínima
longitud entre todos los pares de nodos de un
grafo dirigido, sin ciclos y pesos positivos. - Principio de Optimalidad
- Si es un camino
de costo mínimo o largo mínimo del nodo - a , entonces
- es un camino de costo mínimo o
largo mínimo del nodo a - es un camino de costo mínimo o
largo mínimo del nodo a - Aplicación del Principio
- Si k es el nodo intermedio de mayor índice en el
camino óptimo de i a j, entonces el subcamino de
i a k es un camino óptimo, que además, sólo pasa
por nodos de índice menor que k . Lo mismo
sucede con el subcamino de k a j
11Técnica de diseño Programación Dinámica Problema
caminos mínimos en un grafo
- Sea C(i,j) el costo o largo de un arco (i,j) . Si
no existe, infinito. Sea C(i,i)0 - Sea Dk(i,j) la longitud o distancia del camino
más corto o de costo mínimo del nodo i al j que
no pasa por ningún nodo mayor que k - Sea Dk(i,j) la longitud del camino más corto de i
a j. Entonces
12Técnica de diseño Programación Dinámica Problema
caminos mínimos en un grafo
- En resumen
- Se tiene la siguiente ecuación recursiva que
define el método de PD.
25
0 5 -- 25 50 0 15 5 30 40 0 15 15 --
5 0
0 5 -- 25 50 0 15 5 30 35 0 15 15 20
5 0
0 5 20 10 50 0 15 5 30 35 0 15 15 20
5 0
1
4
15
5
15
5
5
50
30
15
2
3
0 5 20 10 45 0 15 5 30 35 0 15 15 20
5 0
0 5 15 10 20 0 10 5 30 35 0 15 15 20
5 0
40
13Técnica de diseño Programación Dinámica Problema
multiplicación de matrices en secuencia
- Implementación, algoritmo Foloyd, muy simple y
conocido
Funcion floyd(G1..n,1..n) 1..n,1..n Variables
i,j,kentero D1..n,1..n Inicio DG Para k
1 a n hacer Para i 1 a n hacer Para j
1 a n hacer Di,jmin(Di,j, Di,k
Dk,j) FIN-para FIN-para FIN-para
devolver D fin
14Técnica de diseño Programación Dinámica Problema
multiplicación de matrices en secuencia
- Solución en tiempo razonable , al menos
polinomial, aunque necesita tres loops anidados,
por lo que - El tiempo es comparable con n veces Dijsktra,
pero por simplicidad se prefiere Floyd. - Este algoritmo sólo encuentra las distancias
entre cada par de nodos. Para obtener los nodos
que implementen esa distancia, es necesario
recordar para cada (i,j) cuál es al k que proveyó
la mínima distancia. - Ejercicio, implementar una solución en base a una
matriz auxiliar P, que se modifica cada vez que
se modifica D - Cambiar línea min, por
- si Di,j gt Di,k Dk,j entonces
- Di,jDi,k Dk,j
- Pi,jk
- finSi
0 0 4 2 4 0 4 0 0 1 0 0 0 1
0 0
15Técnica de diseño Programación Dinámica Problema
Arboles binarios de búsqueda óptimos
- Problema
- Se usará un recorrido en orden del árbol para
realizar la búsqueda. La estructura cumple que
todo nodo tiene una clave mayor que los de su
subarbol izquierdo y menor que los de su subarbol
derecho. - Se tiene un conjunto de claves distintas
- Pueden ser claves alfanuméricas(orenadas
ascendentemente), almacenadas en un arbol binario
de búsqueda. - Se conoce la probabilidad
, con la que se pide buscar la clave y
su información asociada. - Se conoce también la probabilidad
, de búsqueda de una clave inexistente
situada entre y - Se tiene que
- Por lo que el problema radica en construir un
árbol binario de búsqueda para almacenar las
claves, que minimice el número medio de
comparaciones para encontrar una clave o
garantizar que no está.
16Técnica de diseño Programación Dinámica Problema
Arboles binarios de búsqueda óptimos
- Recordar que la profundidad de la raiz es 0, la
de sus hijos 1, ... - Si se construye un árbol donde la clave
está en un nodo de profundidad , 1ltiltn,
entonces se necesitan comparaciones
para encontrarla. - Si con probabilidad , 0ltiltn , se busca
una clave que no está en el árbol, pero que en
caso de estar , ocuparía un nodo de profundiadad
, entonces se necesitan para
asegirar que no está. - Por lo tanto el número medio de comparaciones
necesarias para encontrar una clave o garantizar
que no está (función a minimizar) es
17Técnica de diseño Programación Dinámica Problema
Arboles binarios de búsqueda óptimos
18Técnica de diseño Programación Dinámica Problema
Arboles binarios de búsqueda óptimos
- Solución de programación dinámica
- Principio de Optimalidad
- Todos los subárboles de un árbol óptimo
son óptimos con respecto a las claves que
continen. - Considerando un subárbol óptimo que contenga las
claves - La probabilidad de que una clave buscada esté o
debiera estar en ese subárbol es - Se denotará al número medio de
comparaciones efectuadas en un subárbol óptimo
que contiene las claves
durante la búsqueda de una clave en el
árbol principal (por convención ). - Supongamos ahora que ocupa la raíz de ese
subárbol. - Sea entonces el número medio de
comparaciones efectuadas en ese subárbol durante
la búsqueda de una clave en el árbol principal.
19Técnica de diseño Programación Dinámica Problema
Arboles binarios de búsqueda óptimos
- Entonces
- , es el número medio de comparaciones en
el subárbol izquierdo. - , es el número medio de comparaciones en
el subárbol derecho. - ,es el número medio de comparaciones con
la raiz. - Ahora se trata de escoger la raiz de manera que
se minimice
20Técnica de diseño Programación Dinámica Problema
Arboles binarios de búsqueda óptimos
21Técnica de diseño Programación Dinámica Problema
Arboles binarios de búsqueda óptimos
Tipos probP Arreglo 1..n real probQ
Arreglo 1..n real matCmatriz
0..n,0..,n real matSolmatriz
0..n,0..,n entero Funcion abbOPT(entrada p
probPq probQ salida CmatC rMatSol) C es la
matriz de comparaciones media. En cada componente
i , j de r se guarda el k para el que Ci,j
resulta mínimo Variables i,j,k,dentero
min,auxreal mMatc
Inicio Para i 0 a n hacer
Ci,i0 mi,iqi Para j i1
a n hacer mi,jmi,j-1pj qj
Fin-para Fin-para .....
22Técnica de diseño Programación Dinámica Problema
Arboles binarios de búsqueda óptimos
.... Para j 1 a n hacer
Cj-1,jmj-1, j rj-1, jj
Fin-para ya están determinados los árboles de 1
nodo Para d 2 a n hacer Para j d a n
hacer ij-d min100000000
Para k i1 a j hacer aux
Ci,k-1Ck, j si aux lt min
entonces minauxri, jk
fin-si Fin-para Ci,jmi,
jmin Fin-para Fin-para FIN.