Programación dinámica

Documentos relacionados
Programación Dinámica 1

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

Análisis de algoritmos

Algoritmo de Euclides

259. El número de combinaciones de m objetos entre un conjunto de n, denotado por n, para n 1 y 0 m n, se puede definir recursivamente por: m

4.2. El número de combinaciones de m objetos entre un conjunto de n, denotado por n, para n 1 y 0 m n, se puede definir recursivamente por: m

RSA: Implementación. Ya resolvimos (3), ahora vamos a resolver (2). IIC3242 Complejidad Probabiĺıstica 28 / 77

Algoritmos glotones. mat-151

Concepto de Recursión. Características de algoritmos recursivos. Ejemplos

greedy (adj): avaricioso, voraz, ávido, codicioso, glotón

ESTIMACIÓN DE TIEMPO Y COSTO DE PRODUCTOS SOFTWARE

Algoritmos y programas. Algoritmos y Estructuras de Datos I

Algoritmos para determinar Caminos Mínimos en Grafos

Estrategias de Diseño de Algoritmos

Álgebra Lineal Ma1010

Técnicas de diseño de algoritmos Programación dinámica

1. Programas y funciones computables

Problemas de flujo en redes: aplicación a redes de transporte urbano

Tema 2. Divide y vencerás.

Programación dinámica p. 1

EI MT1008 Programación II

Clases de complejidad computacional: P y NP

Capítulo 2: Inducción y recursión Clase 2: El principio de Inducción Fuerte

Tema 2 Conjuntos convexos

Generación de variables aleatorias continuas Método de rechazo

Funciones Tipos de funciones y Recursividad

UNIVERSIDAD MAYOR DE SAN SIMON FACULTAD DE CIENCIAS Y TECNOLOGÍA PLAN GLOBAL COMPUTACION I

Elección de estructuras

Inducción Matemática Conjuntos Funciones. Matemática Discreta. Agustín G. Bonifacio UNSL. Repaso de Inducción, Conjuntos y Funciones

Autómatas Mínimos. Encontrar el autómata mínimo. Universidad de Cantabria. Introducción Minimización de Autómatas Deterministas Resultados Algoritmo

Tema 6: Trigonometría.

Introducción a la indecidibilidad

ALGEBRA 1- GRUPO CIENCIAS- TURNO TARDE- Enteros

2007/ PROGRAMACIÓN. Tipo: TRO Curso: 1 Semestre: AB CREDITOS Totales TA TS AT AP PA OBJETIVOS. 1.-Introducción.

EXAMEN DE SEPTIEMBRE, MATEMÁTICAS I. 1. (2.5 ptos) Sean f y g funciones con derivadas primeras y segundas continuas de las que se sabe que

COMPLEMENTO DEL TEÓRICO

Operadores lógicos y de comparación en programación. Not, and, or Ejemplos. (CU00132A)

Sistemas de dos ecuaciones lineales de primer grado con dos incógnitas

Sistemas de Ecuaciones. Lineales II

Metaheurísticas y heurísticas. Algoritmos y Estructuras de Datos III

Números naturales y recursividad

Análisis y Diseño de Algoritmos

Observación: El método de Euler, es el método de Taylor de orden 1.

La segunda observación permite reformular el problema de una manera más simple:

Propiedades de números enteros (lista de problemas para examen)

TEORIA DE NUMEROS DIVISIBILIDAD Y NUMEROS PRIMOS. PRUEBAS DE PRIMALIDAD. LA CRIBA DE ERATOSTENES. ALGORITMOS. TEOREMA: EXISTENCIA DE INFINITOS PRIMOS.

Gustavo Rodríguez Gómez. Agosto Dicembre 2011

Ejercicios resueltos. Computación. Tema 3

NP-Completeness: Universidad Autónoma de Nuevo León Facultad de Ingeniería Mecánica y Eléctrica División de Posgrado en Ingeniería de Sistemas

Inducción Matemática. Departamento de Matemáticas. Inducción Matemática p. 1/31

Semana 14 [1/19] Polinomios. 8 de junio de Polinomios

Fundamentos de Programación. Flujo de Control I: Estructuras selectivas

Cuestiones de diagonalización de matrices

TEMA 1: ECONOMÍAS DE INTERCAMBIO October 6, 2015

Ecuaciones diferenciales homogéneas y no homogéneas lineales a coeficientes constantes. Búsqueda de la solución particular.

Tema: Funciones, Procedimientos y Recursividad en C#.

Lección 5: Ecuaciones con números naturales

Programación Dinámica

UNIVERSIDAD NACIONAL DE TRES DE FEBRERO. Análisis Matemático

Clase 9 Programación No Lineal

Problemas de VC para EDVC elaborados por C. Mora, Tema 4

Estadística y sus aplicaciones en Ciencias Sociales 5. Estimación. Facultad de Ciencias Sociales, UdelaR

Cubiertas convexas II

Colección de Problemas II. mín Z = 8x 1 + 9x 2 + 7x 3 s. a: x 1 + x 2 + x x 1 + 3x 2 + x x 1 + x 2 x 3 30

ECONOMETRÍA II Prof.: Begoña Álvarez TEMA 1 INTRODUCCIÓN. Estimación por máxima verosimilitud y conceptos de teoría asintótica

Definición 1.2. Sea (K, +, ) un dominio de integridad. Un polinomio de grado n sobre K es una expresión de la forma

Identidades Trigonométricas

UNIDAD 6: SISTEMAS DE ECUACIONES

Es claro que es una relación de equivalencia. Para ver que tener la misma cardinalidad y la cardinalidad están bien definidas queremos ver que

TEMA 4: Sistemas de ecuaciones lineales II

PROBLEMAS RESUELTOS DE PREPARACIÓN PARA OPOSICIONES. Problemas 02

un conjunto cuyos elementos denominaremos vectores y denotaremos por es un espacio vectorial si verifica las siguientes propiedades:

sobre un intervalo si para todo de se tiene que. Teorema 1 Sean y dos primitivas de la función en. Entonces,

Semana 09 [1/28] Sucesiones. 29 de abril de Sucesiones

TEMA 1: Algoritmos y programas

Teóricas de Análisis Matemático (28) Práctica 6 L Hospital. x x. lim

Generación de variables aleatorias continuas Método de la transformada inversa

Métodos que devuelven valor Dado el siguiente triángulo rectángulo:

Algoritmos aleatorizados

Algorítmica y Lenguajes de Programación. Ordenación (ii) En la lección anterior se vieron dos métodos de ordenación:

Nicolás Rivera. 23 de Junio de 2011

Unidad 5: Geometría analítica del plano.

1. Conceptos básicos sobre el problema en cuestión y cuestiones afines. 2. Formulación de los correspondientes algoritmos y su pseudocódigo.

TEMA 6: DIVISIÓN DE POLINOMIOS RAÍCES MATEMÁTICAS 3º ESO

Clase 1: Primalidad. Matemática Discreta - CC3101 Profesor: Pablo Barceló. P. Barceló Matemática Discreta - Cap. 5: Teoría de números 1 / 32

Capítulo II. Pruebas en Matemáticas

Entrenamiento ONMAPS Guanajuato. Primaria (Teoría de Números)

2º de Bachillerato Matemáticas Aplicadas a las Ciencias Sociales. Modalidad semipresencial. MATRICES Y SISTEMAS

Tema 2: Teorema de estructura de los grupos abelianos finitamente generados.

Métodos de factorización para resolver sistemas de ecuaciones lineales. 22 de agosto, 2012

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

Transcripción:

Algoritmos y Estructura de Datos III Facultad de Ciencias Exactas y Naturales, Universidad de Buenos Aires 03 de Abril de 2013

Repaso Aplica a problemas de optimización donde obtenemos una solución utilizando una serie de decisiones.

Repaso Aplica a problemas de optimización donde obtenemos una solución utilizando una serie de decisiones. A medida que tomamos decisiones, subproblemas con la misma forma van surgiendo

Repaso Aplica a problemas de optimización donde obtenemos una solución utilizando una serie de decisiones. A medida que tomamos decisiones, subproblemas con la misma forma van surgiendo La clave es guardar el resultado de cada subproblema, en caso de que reaparezca

Repaso Aplica a problemas de optimización donde obtenemos una solución utilizando una serie de decisiones. A medida que tomamos decisiones, subproblemas con la misma forma van surgiendo La clave es guardar el resultado de cada subproblema, en caso de que reaparezca Es una combinación entre algoritmos golosos y algoritmos de fuerza-bruta

Repaso Al igual que Dividir y Conquistar, resuelve un problema combinando la solución óptima de varios subproblemas

Repaso Al igual que Dividir y Conquistar, resuelve un problema combinando la solución óptima de varios subproblemas Los subproblemas tienen un solapamiento.

Repaso Al igual que Dividir y Conquistar, resuelve un problema combinando la solución óptima de varios subproblemas Los subproblemas tienen un solapamiento. Cada subproblema es independiente. Solo interesan los resultados.

Repaso Al igual que Dividir y Conquistar, resuelve un problema combinando la solución óptima de varios subproblemas Los subproblemas tienen un solapamiento. Cada subproblema es independiente. Solo interesan los resultados. Optimalidad: Una solución óptima esta conformada por subsoluciones óptimas.

Cambio mínimo Problema Dados los valores de las monedas V =< v 1, v 2,..., v k > y el monto a devolver, N. Quiero saber la mínima cantidad de monedas necesarias para devolver el cambio de manera exacta.

Cambio mínimo Problema Dados los valores de las monedas V =< v 1, v 2,..., v k > y el monto a devolver, N. Quiero saber la mínima cantidad de monedas necesarias para devolver el cambio de manera exacta. Ejemplo V =< 3, 4, 5, 7 > N = 10 S =< 7, 3 > S =< 5, 5 >

Caracterizar una solución Probar cualquier combinación de monedas.

Caracterizar una solución Probar cualquier combinación de monedas. Hasta cuantas veces uso cada moneda? Cuál sería la complejidad final?

Caracterizar una solución Probar cualquier combinación de monedas. Hasta cuantas veces uso cada moneda? Cuál sería la complejidad final? O(2... ). Feo de implementar, y costoso.

Pensar recursivamente Definamos la función Cambio(N, V )

Pensar recursivamente Definamos la función Cambio(N, V ) El V es estático, nunca cambia, lo podemos olvidar por un momento...

Pensar recursivamente Definamos la función Cambio(N, V ) El V es estático, nunca cambia, lo podemos olvidar por un momento... Ahora pensemos si se puede resolver Cambio(N) usando soluciones a instancias más chicas.

Pensar recursivamente Definamos la función Cambio(N, V ) El V es estático, nunca cambia, lo podemos olvidar por un momento... Ahora pensemos si se puede resolver Cambio(N) usando soluciones a instancias más chicas. Puedo resolver Cambio(N) sabiendo Cambio(i), i < N?

Pensar recursivamente Definamos la función Cambio(N, V ) El V es estático, nunca cambia, lo podemos olvidar por un momento... Ahora pensemos si se puede resolver Cambio(N) usando soluciones a instancias más chicas. Puedo resolver Cambio(N) sabiendo Cambio(i), i < N? La cantidad minima de monedas para devolver i esta relacionada con la cantidad minima para devolver i + 3?

Pensar recursivamente Definamos la función Cambio(N, V ) El V es estático, nunca cambia, lo podemos olvidar por un momento... Ahora pensemos si se puede resolver Cambio(N) usando soluciones a instancias más chicas. Puedo resolver Cambio(N) sabiendo Cambio(i), i < N? La cantidad minima de monedas para devolver i esta relacionada con la cantidad minima para devolver i + 3? Qué valores podría tener la última moneda usada?

Pensar recursivamente Teorema Sea S =< s 1,..., s m > el cambio mínimo para N. Luego, S i =< s 1,..., s i > es óptimo.

Pensar recursivamente Teorema Sea S =< s 1,..., s m > el cambio mínimo para N. Luego, S i =< s 1,..., s i > es óptimo. Prueba Supongamos que hay otra solución S mejor que S i : S = S i S < S i.

Pensar recursivamente Teorema Sea S =< s 1,..., s m > el cambio mínimo para N. Luego, S i =< s 1,..., s i > es óptimo. Prueba Supongamos que hay otra solución S mejor que S i : S = S i S < S i. Definimos S = S < s i+1,..., s m > (reemplazar S i por S ).

Pensar recursivamente Teorema Sea S =< s 1,..., s m > el cambio mínimo para N. Luego, S i =< s 1,..., s i > es óptimo. Prueba Supongamos que hay otra solución S mejor que S i : S = S i S < S i. Definimos S = S < s i+1,..., s m > (reemplazar S i por S ). S = S + < s i+1,..., s m >= S i + < s i+1,..., s m >= N

Pensar recursivamente Teorema Sea S =< s 1,..., s m > el cambio mínimo para N. Luego, S i =< s 1,..., s i > es óptimo. Prueba Supongamos que hay otra solución S mejor que S i : S = S i S < S i. Definimos S = S < s i+1,..., s m > (reemplazar S i por S ). S = S + < s i+1,..., s m >= S i + < s i+1,..., s m >= N S = S + < s i+1,..., s m > < S i + < s i+1,..., s m > = S

Pensar recursivamente Teorema Sea S =< s 1,..., s m > el cambio mínimo para N. Luego, S i =< s 1,..., s i > es óptimo. Prueba Supongamos que hay otra solución S mejor que S i : S = S i S < S i. Definimos S = S < s i+1,..., s m > (reemplazar S i por S ). S = S + < s i+1,..., s m >= S i + < s i+1,..., s m >= N S = S + < s i+1,..., s m > < S i + < s i+1,..., s m > = S Absurdo, pues S es mínimo por hipótesis.

Ejemplo 3 10 4 5 7 7 6 5 3 3 7 3 5 3 5 3 4 5 4 4 4 3 2 3 4 3 0 3 2 1 2 1 0 0 3 1 0 0 0

Ejemplo 3 10 4 5 7 7 6 5 3 3 7 3 5 3 5 3 4 5 4 4 4 3 2 3 4 3 0 3 2 1 2 1 0 0 3 1 0 0 0

Algoritmo-CambioMinimo (top-down) Algorithm 1: CambioMinimo Data: V =< v 1,..., v k >,N Result: S if N == 0 then return 0 if res[n] ya calculada then return res[n] res[n] = for i 1 to k do if N v i then res[n] = MIN(res[N], 1 + CambioMinimo(N v i )) ; return res[n]

Algoritmo-CambioMinimo (bottom-up) Algorithm 2: CambioMinimo Data: V =< v 1,..., v k >,N Result: S for i 1 to N do res[i] = ; res[0] = 0; for i 1 to N do for j 1 to k do res[i] = MIN(res[i], res[i v j ] + 1) return res[n]

Conclusiones Primero entender el problema, y pensar en la solución (aunque sea con algoritmos de fuerza-bruta)

Conclusiones Primero entender el problema, y pensar en la solución (aunque sea con algoritmos de fuerza-bruta) Pensar en funciones recursivas, y que parametros necesitarian.

Conclusiones Primero entender el problema, y pensar en la solución (aunque sea con algoritmos de fuerza-bruta) Pensar en funciones recursivas, y que parametros necesitarian. Demostrar correctitud del algoritmo.

Conclusiones Primero entender el problema, y pensar en la solución (aunque sea con algoritmos de fuerza-bruta) Pensar en funciones recursivas, y que parametros necesitarian. Demostrar correctitud del algoritmo. Hacer muchos ejercicios.