programación dinámica

14
PROGRAMACION DIMANICA Estrategias de Diseño Daniel Gomez Jaramillo. Por:

Upload: daniel-gomez-jaramillo

Post on 12-Jan-2017

27 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Programación dinámica

PROGRAMACION DIMANICAEstrategias de Diseño

Daniel Gomez Jaramillo.Por:

Page 2: Programación dinámica

CONTENIDO

1. Introducción

2. Descripción de la programación dinámica

I. Ventajas y desventajas.

II. Metodología

III. Aplicaciones

3. Conclusiones

4. Bibliografía.

Page 3: Programación dinámica

INTRODUCCIÓN DE LA ESTRATEGIA DE DISEÑO

La programación dinámica a evolucionado hasta convertirse en un importante paradigma del diseño de algoritmos. Fue acuñado por Richard Bellman para describir un tipo de problema de control optimo. Originalmente el nombre describía mas el problema mas que la técnica para resolverlo.

La programación dinámica nos permite resolver problemas complejos caracterizados por decisiones que se deben tomar en forma secuencial y las cuales influyen en las decisiones de estas secuencias.

Una característica importante de este método es que sustituye un calculo en tiempo exponencial en tiempo polinomico.

Page 4: Programación dinámica

DESCRIPCIÓN DEL MÉTODO

Características

Divide el problema en

etapas

Es un método capaz de resolver un

problema eficientemente

Resuelve los sub problemas una

sola ves

El tiempo de ejecución pude

mejorarse substancialment

e

Page 5: Programación dinámica

DESCRIPCIÓN DEL MÉTODO

Una subestructura óptima significa que se pueden usar soluciones óptimas de subproblemas para encontrar la solución óptima del problema en su conjunto.

En grandes líneas, el diseño de un algoritmo de Programación Dinámica consta de los siguientes pasos:

1. Planteamiento de la solución como una sucesión de decisiones y verificación de que ésta cumple el principio de óptimo.

2. Definición recursiva de la solución.

3. Cálculo del valor de la solución óptima mediante una tabla en donde se almacenan soluciones a problemas parciales para reutilizar los cálculos.

4. Construcción de la solución óptima haciendo uso de la información contenida en la tabla anterior.

Page 6: Programación dinámica

VENTAJAS Y DESVENTAJAS

VENTAJAS-Eficaz para resolver problemas de gran complejidad al dividirlo y secuenciarlo.-Resuelve cada sub problema una sola vez.-Los cálculos de cada etapa se organizan y se guardan de manera eficiente, facilitando su consulta para posteriores análisis. DESVENTAJAS

-Si la red es muy grande se vuelve laborioso.

- No aplicable a todo tipo de problemas.

- Si hay un error en alguna tabla afecta a todo el problema.

Page 7: Programación dinámica

METODOLOGIA DE LA PROGRAMACION DINAMICA

Problemas que se puede dividir en problemas mas pequeños, y esos a su vez en problemas mas pequeños.

Se puede aplicar cuando métodos mas especializados fallan (al costo de la eficiencia).

¿Cuáles son los sub-problemas?

Es una técnica poderosa para resolver tipos de problemas en particular.

Se resuelve de abajo para arriba, sub problemas-problema, “bottom-up”.

Problema

Su-problema

básico

básico

básico

Sub problema

básico

básico

básico

Sub problema

básico

básico

básico

¿Cualquier problema usa cualquier sub-problema?

Page 8: Programación dinámica

SERIE DE FIBONACCI

fibonacci_1(n)= O(2^n)

1. Por recursividad dado un numero n sumando (n-1)+(n-2)

f(6)=8

f(5)=5

f(4)=3

f(4)=3

f(3)=2

f(3)=2

f(2)=1

f(2)=1

f(1)=1

f(3)=2

f(2)=1

f(2)=1

f(1)=1

Page 9: Programación dinámica

SERIE DE FIBONACCI

2. Construir un vector que permita ir almacenando los cálculos realizados anteriormente hasta llegar al número

fibonacci_2(n) = O(n)

0 1 2 3 4 5 6

N i arreglo(i-1)

arreglo(i-2)

6 2 arreglo(1) arreglo(0)

3 arreglo(2) arreglo(1)

4 arreglo(3) arreglo(2)

5 arreglo(4) arreglo(3)

6 arreglo(5) arreglo(4)

0 1 1 2 3 5 8

Page 10: Programación dinámica

SERIE DE FIBONACCI

3. Eliminar el vector y quedarnos solamente con dos variables para almacenar los dos últimos términos N i x y suma

6 1 1

2 2 1 2

3 3 2 3

4 5 3 5

5 8 5 8

Page 11: Programación dinámica

GRAFO DE COSTOS ENTRE CIUDADES DEL ECUADOR

Azuay

Cañar

Guayas

Chimborazo

Los Ríos

Bolívar

Pichincha

Cotopaxi

8

5

9

2

3

1

10

4

2

• Azuay – Cañar – Guayas - Los Ríos - Pichincha15

• Azuay – Cañar – Bolívar - Cotopaxi -Pichincha17

• Azuay – Cañar - Chimborazo – Cotopaxi - Pichincha

16

Page 12: Programación dinámica

CONCLUSIONES FINALES

• La Programación Dinámica es para cierto tipo de problemas, aquellos que pueden seguirse dividiendo en sub-problemas mas pequeños.

• En la Programación Dinámica resuelve principalmente los problemas mas pequeños y simples, donde los guarda en una tabla, un arreglo, etc.

Proc1

SubP1

SubP2

SubP3

SubP1.1SubP1.2SubP2.1SubP2.1SubP3.1SubP3.1

• Este se aplica cuando métodos mas especializados FALLAN, pero puede llegar a ser MENOS eficiente.

Problema de la Serie de Fibonacci

Camino del coste mínimo entre dos nodos de un grafo.

Page 13: Programación dinámica

REFERENCIAS BIBLIOGRÁFICAS

S. Dasgupta, C.H. Papadimitriou, U. V. Vazirani, Algorithms, McGraw-Hill, Donnelley Crawfordsville IN, Julio 2006.

Baase, S. Van Gelder, A.(2002). Algoritmos Computacionales. Mexico: PEARSON EDUCATION

Arbones, E(1989). Programacion de Recursos. Barcelona, España: marcombo

Page 14: Programación dinámica

Estructura de Datos y Análisis de Algoritmos

¡¡ GRACIAS !!