Programación dinámica p. 1

Documentos relacionados
Complejidad amortizada

Estructuras de datos Árboles B

Ejemplo: El problema de la mochila. Algoritmos golosos. Algoritmos y Estructuras de Datos III. Segundo cuatrimestre 2013

Programación Dinámica 1

Diagrama de Voronoi. Ejemplo de problemas geométricos:

Introducción a la Geometría Computacional. Análisis de Algoritmos

Departamento de Matemáticas, CCIR/ITESM. 9 de febrero de 2011

El método simplex 1. 1 Forma estándar y cambios en el modelo. 2 Definiciones. 3 Puntos extremos y soluciones factibles básicas. 4 El método simplex.

1 ÁLGEBRA DE MATRICES

MODELOS DE INVESTIGACION DE OPERACIONES

Tema 3: El Método Simplex. Algoritmo de las Dos Fases.

Universidad Nacional de Ingeniería Facultad de Ciencias. Física Computacional CC063. Algebra Lineal. Prof: J. Solano 2012-I

Dirección de operaciones. SESIÓN # 2: Programación lineal

CAPITULO 1: PERSPECTIVE GENERAL DE LA

LOS NUMEROS IRRACIONALES Y SU REPRESENTACIÓN EN LA RECTA NUMERICA

Conceptos básicos de Geometría

La eficiencia de los programas

Práctica N o 8 Desigualdades Válidas - Algoritmos de Planos de Corte - Algoritmos Branch & Cut

Matemáticas 2.º Bachillerato. Matemáticas 2.º Bachillerato. Matemáticas 2.º Bachillerato. Ejemplo:

MICROSOFT PROJECT 2010

Análisis de algoritmos

Universidad Tec Milenio: Profesional IO04001 Investigación de Operaciones I. Tema # 9

1. dejar a una lado de la igualdad la expresión que contenga una raíz.

Teoría de grafos y optimización en redes

APUNTADORES. Un apuntador es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable.

Determinantes. Primera definición. Consecuencias inmediatas de la definición

Notación Asintótica 2

NOTACIÓN O GRANDE. El análisis de algoritmos estima el consumo de recursos de un algoritmo.

Introducción a la programación lineal

Producto de matrices triangulares superiores

Algoritmos glotones. mat-151

Preparación para Álgebra 1 de Escuela Superior

Universidad Tec Milenio: Profesional HG04002 Análisis de Decisiones I

UNIDAD 8: SUCESIONES Y SERIES

Objetivos formativos de Álgebra

Problemas métricos. 1. Problemas afines y problemas métricos

TABLA DE CONTENIDOS MATEMÁTICAS QUINTO GRADO EDUCACIÓN PRIMARIA

Algebra lineal y conjuntos convexos

Tema 1: MATRICES. OPERACIONES CON MATRICES

Retículos y Álgebras de Boole

CAPÍTULO I. INTRODUCCIÓN. Cuando se requiere obtener información de una población, y se desean obtener los mejores

Matrices y determinantes

Sistemas de ecuaciones lineales

Formulación del problema de la ruta más corta en programación lineal

INVESTIGACIÓN OPERATIVA

VERÓNICA GRIMALDI HÉCTOR PONCE

POST-OPTIMIZACIÓN Y SENSIBILIDAD EN PROBLEMAS LINEALES.

Ensayo o prueba: es la realización concreta de un experimento aleatorio.

Números de Catalan Armando Alcalá Vallejo Instituto de Física y Mamtemáticas (953) Ext. 500

Jueves, 30 de abril. Ejemplo de recursión. Ejemplo de PD. Ejemplo de programación dinámica. Programación dinámica

Tema 2 Conceptos básicos de programación. Fundamentos de Informática

TEMA 1. MATRICES, DETERMINANTES Y APLICACIÓN DE LOS DETERMINANTES. CONCEPTO DE MATRIZ. LA MATRIZ COMO EXPRESIÓN DE TABLAS Y GRAFOS.

Teorema Central del Límite (1)

IN34A - Optimización

NOMBRE DEL CURSO: Excel 2010 Intermedio

Método de diferencias finitas para ecuaciones diferenciales parciales elípticas. (Parte II)

Se desea estudiar el comportamiento de una función a medida independiente x se aproxima a un valor específico.

Ruta más Corta con una sóla Fuente de Inicio (Single-Source Shortest Paths) DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE

Algoritmos para determinar Caminos Mínimos en Grafos

Infinito más un número Infinito más infinito. Infinito por infinito. OPERACIONES CON INFINITO Sumas con infinito. Productos con infinito

HOJA DE TRABAJO UNIDAD 3

Prof. Pérez Rivas Lisbeth Carolina

Complejidad de los Algoritmos

Descripciones de los niveles de logro modificados (ALD, siglas en inglés) de la prueba de evaluación MCA en matemáticas Grados 5 a 8

INTRODUCCIÓN AL ANÁLISIS DE DATOS ORIENTACIONES (TEMA Nº 7)

ALGORITMO MINIMAX. o Nodo: Representa una situación del juego. o Sucesores de un nodo: Situaciones del juego a las que se

INSTITUTO CHAPULTEPEC MIDDLE SCHOOL

Métodos directos para resolver sistemas de ecuaciones lineales

1. (F, +) es un grupo abeliano, denominado el grupo aditivo del campo.

Geometría combinatoria de cuadrados mágicos, latinos, sudokus y otras tablas curiosas

1.- Para cada uno de los siguientes problemas escribir el diagrama de flujo y el pseudocódigo de un programa que lo resuelva:

Problema 1. Para un planeta general del interior, la probabilidad de visita se calculará a partir de la probabilidad de los planetas anteriores. .

Expresiones Algebraicas en los Números Reales

Algoritmos y programas. Algoritmos y Estructuras de Datos I

UNIDAD 10: ECUACIONES DE SEGUNDO GRADO.

Generación de Variables Aleatorias. UCR ECCI CI-1453 Investigación de Operaciones Prof. M.Sc. Kryscia Daviana Ramírez Benavides

Traza de una Matriz Cuadrada

Ficha de Aprendizaje N 13

El curso está dividido en tres evaluaciones, de acuerdo con la programación general del Colegio, temporalizados así:

(d) Puede haber estrategias que funcionan mejor que Minimax si el contrincante es

Conectados con el pasado, proyectados hacia el futuro Plan Anual de Matemática II Año PAI VII Grado

Profr. Efraín Soto Apolinar. Polígonos

Análisis y Diseño de Algoritmos Tablas de Hash

MYP (MIDDLE YEARS PROGRAMME)

Definición: Dos matrices A y B son iguales si tienen el mismo orden y coinciden los elementos que ocupan el mismo lugar.

EJERCICIO DE MAXIMIZACION

(b) Cuál es la desventaja principal de una heurística con aprendizaje? es más informada que otra función heurística optimista h 2 *?

SISTEMAS INFORMÁTICOS PROGRAMACION I - Contenidos Analíticos Ing. Alejandro Guzmán M. TEMA 2. Diseño de Algoritmos

TEMA 3: APLICACIONES DE LAS DERIVADAS

UNIVERSIDAD DE LOS LLANOS Facultad de Ciencias Básicas e Ingeniería Programa Ingeniería de Sistemas

NOMBRE DE LA ASIGNATURA: MÉTODOS CUANTITATIVOS PARA ADMINISTRACIÓN. ESCUELA: DEPARTAMENTO: ADMINISTRACIÓN

UNIDAD DE APRENDIZAJE I

CI-6675 Algoritmos y Estructuras Optimizadas para Videojuegos

PROGRAMACIÓN LINEAL ENTERA

PRECALCULO INSTITUTO TECNOLÒGICO DE LAS AMÈRICAS CARRERA DE TECNÓLOGO EN MECATRONICA. Precálculo. Nombre de la asignatura: MAT-001

Acuerdo 286 Matemáticas

Unidad 1: Espacio de Probabilidad

Medidas de tendencia central

DEPARTAMENTO DE MATEMATICAS Y FISICA Matemáticas Discreta

Transcripción:

Técnicas de diseño de algoritmos Programación dinámica Dra. Elisa Schaeffer elisa.schaeffer@gmail.com PISIS / FIME / UANL Programación dinámica p. 1

Programación dinámica En programación dinámica, uno empieza a construir la solución desde las soluciones de los subproblemas más pequeños, guardando las soluciones en una forma sistemática para construir soluciones a problemas mayores. Típicamente las soluciones parciales están guardadas en un arreglo para evitar a tener que solucionar un subprobelma igual más tarde el la ejecución del algoritmo. Programación dinámica p. 2

Problema de la mochila El algoritmo pseudo-polinomial que vimos para el problema de la mochila es esencialmente un algoritmo de programación dinámica (PD). En general, la utilidad de PD está en problemas donde la solución del problema completo contiene las soluciones de los subproblemas una situación que ocurre en algunos problemas de optimización. Programación dinámica p. 3

Coeficientes binómicos Si uno lo aplica de la manera dividir y conquistar, es necesario volver a calcular varias veces algunos coeficientes pequeños, llegando a la complejidad asintótica Ω (( )) n k = Ω ( 2 n n ) Por guardar las soluciones parciales: O(nk). Sin embargo, por guardarlas, la complejidad de espacio crece. Programación dinámica p. 4

Triángulo de Pascal n k 0 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 Programación dinámica p. 5

Triangulación Dado: Un polígono convexo de n lados en formato de la lista de los n+1 puntos finales de sus lados en la dirección del reloj. Pregunta: Cuál división del polígono a triángulos minimiza la suma de los largos de los lados de los triángulos? Programación dinámica p. 6

Ejemplo con una solución factible Programación dinámica p. 7

Observaciones El número de los puntos es n+1 Programación dinámica p. 8

Observaciones El número de los puntos es n+1 Cada uno de los n lados del polígono tiene n opciones de asignación a triángulos, incluyendo un triángulo degenerado que consiste del lado sólo Programación dinámica p. 8

Observaciones El número de los puntos es n+1 Cada uno de los n lados del polígono tiene n opciones de asignación a triángulos, incluyendo un triángulo degenerado que consiste del lado sólo Uno de estos triángulos necesariamente pertenece a la triangulación óptima. Programación dinámica p. 8

Observaciones El número de los puntos es n+1 Cada uno de los n lados del polígono tiene n opciones de asignación a triángulos, incluyendo un triángulo degenerado que consiste del lado sólo Uno de estos triángulos necesariamente pertenece a la triangulación óptima. Lo que queda es triangular el área o las áreas que quedan afuera del triángulo elegida. Programación dinámica p. 8

Las opciones Programación dinámica p. 9

Método de solución Examinar cada triangulación de cada lado, empezando del lado entre el primero y el segundo punto, y continuando recursivamente para los otros lados del polígono. El precio de un triángulo degenerado es cero. Programación dinámica p. 10

Precio de triangulación Suponemos que estamos triangulizando el polígono parcial definido por los puntos i 1,i,...,j 1,j. El precio de la triangulación óptima es T i,j = { 0, i = j mín {T i,k +T k+1,j +w(i 1,k,j)}, i j i k j 1 donde w(i 1,k,j) es el costo del triángulo definido por los tres puntos i 1, k y j. Programación dinámica p. 11

El algoritmo Guardar en la tabla de los T i,j cero T i,i, i = 1,...,n. Programación dinámica p. 12

El algoritmo Guardar en la tabla de los T i,j cero T i,i, i = 1,...,n. Completar la tabla diagonal por diagonal hasta llegar al elemento T 1,n. Programación dinámica p. 12

El algoritmo Guardar en la tabla de los T i,j cero T i,i, i = 1,...,n. Completar la tabla diagonal por diagonal hasta llegar al elemento T 1,n. T 1,n es el costo de la triangulación óptima de todo el polígono. Programación dinámica p. 12

El algoritmo Guardar en la tabla de los T i,j cero T i,i, i = 1,...,n. Completar la tabla diagonal por diagonal hasta llegar al elemento T 1,n. T 1,n es el costo de la triangulación óptima de todo el polígono. Hay que recordar cuáles w(i 1,k,j) fueron utilizados para saber de cuáles triángulos consiste la triangulación. Programación dinámica p. 12

Análisis Tiempo por elemento de la tabla: Θ(n). Programación dinámica p. 13

Análisis Tiempo por elemento de la tabla: Θ(n). Son Θ(n 2 ) elementos en total en la tabla. Programación dinámica p. 13

Análisis Tiempo por elemento de la tabla: Θ(n). Son Θ(n 2 ) elementos en total en la tabla. = El algoritmo corre en tiempo Θ(n 3 ). Programación dinámica p. 13

Distancia de edición La distancia de edición (inglés: edit distance) es una medida de similitud de sucesiones de símbolos (o sea, palabras formadas por un alfabeto). Se define como el número mínimo de operaciones de edición que uno necesita aplicar a palabra P para llegar a la palabra Q. dist(p,q) = dist(q,p) dist(p,p) = 0 Programación dinámica p. 14

Las operaciones 1. Insertar un símbolo en posición i. 2. Eliminar un símbolo de posición i. 3. Reemplazar el símbolo en posición i con otro. Típicamente todas las operaciones tienen el mismo costo (sea uno), aunque se puede dar diferentes costos a diferentes operaciones. Programación dinámica 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 la medida que no lo cumplen. Programación dinámica p. 16

DP: inicialización procedimiento editdist(p = [p 1,p 2,...,p k ], Q = [q 1,q 2,...,q l ) para i [0,k] dist(i,0) := i para j [0,l] dist(0,j) := j... Programación dinámica p. 17

DP: Calculación procedimiento editdist(p = [p 1,p 2,...,p k ], Q = [q 1,q 1,...,q l )... para i [1,k] para j [1,l] si p i = q j : 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, l); Programación dinámica p. 18

Ejemplo: k = 7, l = 5 D I F I C I L Programación dinámica p. 19

Ejemplo: k = 7, l = 5 D I F I C I L 0 1 2 3 4 5 6 7 F 1 Programación dinámica p. 19

Ejemplo: k = 7, l = 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 Programación dinámica p. 19

Ejemplo: k = 7, l = 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 Programación dinámica p. 19

Ejemplo: k = 7, l = 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 Programación dinámica p. 19

Ejemplo: k = 7, l = 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 Programación dinámica p. 19

Ejemplo: k = 7, l = 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 Programación dinámica p. 19

Ejemplo: k = 7, l = 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? Programación dinámica p. 19

PD estocástica En PD tradicional, dado el estado actual y una decisión hecha, el estado siguiente está fijo. También hay aplicaciones de PD donde en vez de conocer los dos, una solamente se conoce através de una distribución de probabilidad. Las aplicaciones de PD estocástico involucran incertidumbre de aspectos como ventas, apuestos, etcétera. Programación dinámica p. 20