Presentacin de PowerPoint - PowerPoint PPT Presentation

About This Presentation
Title:

Presentacin de PowerPoint

Description:

Al ser el producto asociativo, se tienen varias fomas de realizar una ... se quiere calcular el producto de ABCD, de ... Obtener el menor entre todos ellos ... – PowerPoint PPT presentation

Number of Views:51
Avg rating:3.0/5.0
Slides: 23
Provided by: erida
Category:

less

Transcript and Presenter's Notes

Title: Presentacin de PowerPoint


1
Diseño y análisis de algoritmos
Técnica de diseño Programación Dinámica II
2
Temario
  • 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

3
Té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.
4
Té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.
5
Té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.
6
Té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.

7
Té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)

8
Técnica de diseño Programación Dinámica Problema
multiplicación de matrices en secuencia
  • Implementación

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
9
Té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.

10
Té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

11
Té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

12
Té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.
  • Ejemplo

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
13
Té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
14
Té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
15
Té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á.

16
Té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

17
Técnica de diseño Programación Dinámica Problema
Arboles binarios de búsqueda óptimos
  • Para el ejemplo

18
Té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.

19
Té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

20
Técnica de diseño Programación Dinámica Problema
Arboles binarios de búsqueda óptimos
21
Técnica de diseño Programación Dinámica Problema
Arboles binarios de búsqueda óptimos
  • Implementación

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 .....
22
Té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.
Write a Comment
User Comments (0)
About PowerShow.com