Diseño y análisis de algoritmos

Slides:



Advertisements
Presentaciones similares
Arreglos Unidimensionales y Bidimensionales ESTRUCTURAS DE DATOS I
Advertisements

¿Por que estudiar búsquedas?
Representación del conocimiento
Diseño y análisis de algoritmos
Diseño y análisis de algoritmos
Diseño y análisis de algoritmos
Investigación de Operaciones
Búsqueda con retroceso
Razonamiento Explícito y Experimentación en la Algoritmia
Tema 1: Programación dinámica
Son problemas secuenciales: El problema se puede dividir en etapas. Definición: Método que permite determinar de manera eficiente las decisiones que optimizan.
UNIVERSIDAD LATINA (UNILA) IV. IMPLANTACION DE ALGORITMOS.
Curso de Programación I Parte III
Casos de estudio Estudiaremos tres problemas
Aplicaciones de la derivada Resuelve problemas de optimización aplicando las ideas básicas relacionadas con extremos de funciones de una variable Bloque.
2- SIMPLEX.
Analisis y Diseño de Algoritmos Tema: Grafos 3ra Parte
ESCUELA POLITECNICA DEL EJERCITO COMPUTACIÒN AVANZADA NOMBRES:
 La resolución de problemas algorítmicos no solamente implica que los informáticos sepan programar sino necesitan de otras habilidades como tener una.
Universidad de los Andes-CODENSA
Programación en Matlab
Optimización Combinatoria usando Algoritmos Evolucionistas Problemas de Optimización. Idea: Encontrar una solución "factible" y "óptima" de acuerdo a algún.
Universidad de los Andes-CODENSA
PROGRAMACION DINAMICA
Optimización, Búsqueda Heurística
Problemas de Decisión y Optimización

TEMA Nº 1 Conjuntos numéricos.
Introducción a Funciones de una variable
Algoritmos.

Diseño y análisis de algoritmos
Programación dinámica: Introducción
Clase 10: Estructuras de datos y arreglos.
CC3001 Algoritmos y Estructuras de Datos
Diseño y análisis de algoritmos
ALGORITMOS APROXIMADOS
Diseño y análisis de algoritmos
Teoría de Probabilidad
(Organización y Manejo de Archivos)
Parte II. Algorítmica. 3. Algoritmos voraces.
Programación Dinámica
Diseño y análisis de algoritmos
Backtracking 1. Método general. 2. Análisis de tiempos de ejecución.
1 Algoritmos Avaros (Greedy Algorithms) Agustín J. González ELO-320: Estructura de Datos y Algoritmos 1er. Sem
Parte II. Algorítmica. 5. Backtracking. 1. Análisis de algoritmos.
Diseño y análisis de algoritmos
CONCEPTOS BÁSICOS FUNDACIÓN UNIVERSITARIA LOS LIBERTADORES Fredys Alberto Simanca Herrera Programación Estructurada Semana Bogotá, D.C
Parte II. Algorítmica. 4. Programación dinámica.
Parte I. Estructuras de Datos.
I. Complejidad de Problemas
Análisis y Diseño de Algoritmos
SIG. LAURA VELAZQUEZ MORELOS. Hace referencia a un refrán que implica resolver un problema difícil, dividiéndolo en partes más simples tantas veces como.
Métodos de diseño de Algoritmos
Tema 11: Programación dinámica
Parte I. Estructuras de Datos.
Tema 10: Algoritmos voraces
Diseño y análisis de algoritmos
Instituto Tecnológico De Villahermosa Alumno: Lázaro García Hernández.
ALGORITMO QUE ES ??.
DISEÑAR Y ELABORAR ALGORITMOS Nombre: anayeli hernandez peralta Grado y grupo: 1 “3” Materia: Informática y computación Maestro: Ángel Buendía Turno: Vespertino.
Julio César Casaverde Vegas
Conalep Coacalco Algoritmos Recursivos
Introducción a los TADs
Unidad IV. Métodos de optimización con restricciones
Hernández Camacho Víctor Jesus Islas Sánchez Karla Vanessa
Ing. Haydeli del Rosario Roa Lopez
La programación modular es un paradigma de programación que consiste en dividir un programa en módulos o subprogramas con el fin de hacerlo más legible.
Problema Dual INVESTIGACIÓN DE OPERACIONES. Problema Dual.
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) IV. IMPLANTACION DE ALGORITMOS.
Transcripción de la presentación:

Diseño y análisis de algoritmos Técnica de diseño Programación Dinámica I

Temario Técnica de diseño Programación Dinámica Introducción Aplicaciones Problema de la mochila, valores enteros Camino más corto en grafo por etapas

Técnica de diseño Programación Dinámica Introducción Estos algoritmos se usan típicamente en problemas de optimización, donde hay que encontrar un máximo o un mínimo. Al igual que los algoritmos greedy, permite resolver problemas, tomando una secuencia de decisiones. A diferencia de esquema greedy que toma localmente la decisión, en forma prematura, PD, produce varias secuencias de decisiones y sólo al final, se sabe cuál es la mejor de ellas. Ejemplos: Dado un conjunto dado de monedas de distinta denominación, ¿cuál es la Mínima cantidad de monedas necesarias para pagar x pesos? Problema de la mochila, con valores enteros. Encontrar el camino más corto en un grafo. Multiplicación de una secuencia de matrices. Arboles de búsqueda óptimos.

Técnica de diseño Programación Dinámica Introducción Es similar al esquema dividir y conquistar en cuanto a que PD determina la solución óptima de un problema de n variables descomponiéndola en n etapas o subproblemas. Está basada en el principio de optimalidad de Bellman: “Cualquier subsecuencia de decisiones de una secuencia óptima de decisiones que resualeve un problema, también debe ser óptima respecto del subproblema que resuelve.” Suponienedo que un problema se resuelve, tras tomar una secuencia de d1, d2, .. dn de decisiones. Si hay d opciones posibles, para cada una de las decisiones, una técnica de “fuerza bruta”, debería explorar secuencias posibles de decisiones. (explosión combinatoria) La técnica de PD, evita explorar , todas las secuencias posibles , por medio de la resolución de subproblemas de tamaño creciente y el almacenamiento en una tabla de soluciones óptimas de esos subproblemas, facilitando la solución de los problemas más grandes. Usa un enfoque Bottom UP.

Técnica de diseño Programación Dinámica Introducción Debido a que la naturaleza de los subproblemas depende de cada problema de optimización , los detalles de la resolución deben ser adecuados a cada problema, sin embargo se pueden definir los pasos generales a seguir: Sea Eo , el estado inicial del problema. Sea , el conjunto de valores de decisión posibles para la decisión d1. Sea el estado del problema tras la elección del valor Sea una secuencia óptima de decisiones respecto al estado Principio de Optimalidad: Una secuencia óptima de desiciones respecto a Eo es la mejor de las secuencias de decisión Generlizando, se puede aplicar el mismo procdimiento, a cualquier subsecuencia de decisiones , partiendo como estado inicial Ek-1. Una solución dinámica para este problema, simbolizado como (k,l) , debe expresarse en términos de los valores de decisión existentes, para la decisión dk y el subproblema (k+1,l) ,resultante de aplicar cada valor de decisión.

Técnica de diseño Programación Dinámica Problema de la mochila valores 0-1 Recordando, problema: Se tienen n objetos y una mochila (cada objeto i tiene un peso y un valor ;la mochila tiene una capacidad W). Se pretende encontrar la manera de cargar la mochila de forma que maximice el valor de lo transportado, respetando su capacidad máxima. Esta vez, los objetos x van completos o no van. Es decir encontrar valores tal que, se maximice sujeto a la restricción Los pesos y la capacidad son enteros positivos. Los beneficios , pueden ser reales positivos. Ejemplo: n=3 y W=15, Tomando la estrategia greedy del mayor beneficio/peso. Se obtiene la solución , con beneficio 64. Sin embargo, la mejor solución es ,con beneficio 78 La estrategia greedy no encuentra la solución óptima para el problema de la mochila 0-1

Técnica de diseño Programación Dinámica Problema de la mochila valores 0-1 El nuevo problema es mochila (k,l,W) Encontrar valores tal que, se maximice sujeto a la restricción con El problema de la mochila 0-1 es mochila(1,n,W) Principio de optimalidad: Sea una secuencia óptima de valores 0-1 para Si entonces forman una secuencia óptima para el problema mochila(2,n,W). problema mochila(2,n,W- ).

Técnica de diseño Programación Dinámica Problema de la mochila valores 0-1 Principio de optimalidad, lo mismo se cumple: Si una secuencia óptima del problema mochila(1,n,W), entonces para todo : Si es la secuencia óptima de Si es la secuencia óptima de

Técnica de diseño Programación Dinámica Problema de la mochila valores 0-1 Ecuación recursiva hacia “adelante” Si es el beneficio o la ganancia total de una solución óptima de mochila(j,n,W), entonces , Dependiendo de que el objeto j-ésimo entre o no en la solución (nótese que sólo puede entrar si ). Además, para cualquier capacidad W. Notar que aunque la ecuación recursiva es hacia adelente, el cálculo se realiza hacia atrás. Ecuación recursiva hacia “atrás” mochila(1,j,W), entonces , capacidad W. Notar que aunque la ecuación recursiva es hacia atrás, el cálculo se realiza hacia adelante.

Técnica de diseño Programación Dinámica Problema de la mochila valores 0-1 Ambas ecuaciones permiten calcular , que es el valor de una solución óptima de mochila(1,n,W), entonces , tanto la recurencia hacia delante como hacia atrás permitenescribir un algoritmo recursivo de forma inmediata: Funcion mochila1(w,v:[1..n];W:entero):entero Inicio g(n,W) Fin; Funcion g(j,c:entero):entero; si j= 0 entonces devuelve 0 sino si c < w[j] entonces devuelve g(j-1,c) sino si g(j-1,c)>= g(j-1,c-w[j])+v[j] entonces devuelve g(j-1,c) SINO devuelve g(j-1,c-w[j])+v[j] FIN-SI fin

Técnica de diseño Programación Dinámica Problema de la mochila valores 0-1 Complejidad del algoritmo Un problema de tamaño n es reducido a dos subproblemas de tamaño n-1 Cada uno de los subproblemas se reduce a otros dos, y así sucesivamente. Recordando la recurrencia Se tiene un alogoitmo eponenecial, por lo que no se ha ganado nada, con respecto a la solución de búsqueda exhaustiva o “fuerza bruta”. Sin embargo, el número total de subproblemas a resolver no es tan grande: La función tiene dos parámetros: el primero puede tomar n valores distintos el segundo, W valores Luego a lo más hat nxW subproblemas diferentes Por lo tanto , la solución recursiva está generando y resolviendo el mismo problema muchas veces.

Técnica de diseño Programación Dinámica Problema de la mochila valores 0-1 Solución en tiempo razonable Para evitar la repetición de cálculos, las soluciones de los subproblemas se deben almacenar en una tabla. Se ocupa una matriz nxW, cuyo elemento (j,w), almacena Para el ejemplo anterior n=3 y W=15 w w1=9 w2=6 w3=5

Técnica de diseño Programación Dinámica Problema de la mochila valores 0-1 Implementación no recursiva: Funcion mochila2(w,v:[1..n];W:entero):[1..n,1..W] Variables c,j:entero;g:[1..n,1..W] Inicio Para c:= 0 a W hacer g[0,c]:=0; Para j:= 0 a n hacer g[j,0]:=0; Para c:= 1 a W hacer Para j:= 1 a n hacer si c < w[j] entonces g[j,c]:= g[j-1,c] sino si g[j-1,c]>= g[j-1,c-w[j]]+v[j] entonces SINO g[j,c]:= g[j-1,c-w[j]]+v[j] FIN-SI FIN-para devuelve g fin

Técnica de diseño Programación Dinámica Problema de la mochila valores 0-1 Solución en tiempo razonable Para W no muy grandes Puesto que se llena ocupa una matriz nxW, hay dos ciclos anidados, el algoritmo Queda abierto el problema de,que al generar la tabla o hacer un nuevo algoritmo, indicar qué objetos van incluidos en la mochila. Esta solución funciona si W y los pesos de los objetos son enteros.

Técnica de diseño Programación Dinámica Problema costo mínimo de caminos en un grafo multietapa Grafo multietapa: Es un caso especial de grafo G(V,A), es un grafo dirigido en el que se puede hacer una partición del conjunto V de vérices en k (k>=2)conjuntos distintos Vi , 1<=i<=k tal que todo arco del grafo (u,v) cumple que y para algún i, 1<=i<=k . Los conjuntos V1 y Vk tienen un solo vérice que se llama vértice orígen o y vértice destino d, respectivamente. Se considerarán grafos etiquetados, en sus arcos, los cuales pueden representar costos, distancias , etc. Notación: c(u,v), es el “costo” del arco (u,v)

Técnica de diseño Programación Dinámica Problema costo mínimo de caminos en un grafo multietapa Grafo multietapa: El problema es encontarar un camino de costo mínimo, entre o y d Todo camino de o a d tiene exactamente un vértice en cada etapa Vi , por eso se dice que cada Vi define una etapa del grafo. Usando proramación dinámica: Cada camino entre o y d es una secuencia de k-2 decisiones La decisión i-ésima: determinar, a partir de un vértice vi de Vi, un arco que tenga vi como origen y algún nodo de Vi+1 como destino. Principio de optimalidad: El camino de costo mínimo debe contener subcaminos de costo mínimo entre otros nodos.

Técnica de diseño Programación Dinámica Problema costo mínimo de caminos en un grafo multietapa Ecuación recursiva hacia “adelante” Sea s(i,j) un camino de costo mínimo C*(i,j) desde el vérice j del conjunto Vi hasta el vétice de destino d. Entonces: Si En otro caso

Técnica de diseño Programación Dinámica Problema costo mínimo de caminos en un grafo multietapa Ya se obtuvo el costo o distancia más corta entre o y d , falta almacenar las decisiones hechas en cada etapa : Sea D(i,j) el valor de l que minimiza Entonces el camino de mínimo costo o distancia es:

Técnica de diseño Programación Dinámica Problema costo mínimo de caminos en un grafo multietapa Implementación : Funcion multietapa(G[1..n,1..n];n,k:entero):[1..k] {salida es el camino de k etapas} {Los nodos etán numerados, de manera asecendente en relación a cada etapa El primer índice de C* y D que identifican la etapa se han suprimido} Variables C arreglo [1..n] real {costos};P arrgelo [1..k] entero;D arreglo [1..n] entero;j,r:entero Inicio C[n]:=0.0; {calculo de C* y D} Para j:= n-1 descendiendo hasta 1 hacer r:= nodo tal que arco (j,r) exista y G[j,r]+ C[r] es mínimo; C[j]:= G[j,r]+ C[r] C[j]:= r FIN-para P[1]=1;P[k]:=n; {construcción del camino} Para c:= 2 a k-1 hacer P[j]:=D[P[j-1]] devuelve P fin

Técnica de diseño Programación Dinámica Problema costo mínimo de caminos en un grafo multietapa Si G está representado por una matriz, la búsqueda del arco mínimo se convierte en un recorrido completo, es decir otro for por lo que el algoritmo es Sin embargo si se aprovecha la característica de que es multietapa y se implementa con una lista de adyacencia, el primer ciclo es proporcional al grado del vértice j, que se podría estandarizr en a, por lo que el algoritmo quedaría Como ejercicio propuesto, queda expresar la solución recursiva hacia atrás y su algoritmo.