Tema: Programación Dinámica.

Documentos relacionados
Tema: Algoritmos para la ruta más corta en un Grafo.

Tema: Métodos de Ordenamiento. Parte 1.

GUIA 2: Repaso sobre uso de C#. Funciones, métodos y arreglos.

Tema: Autómata de Pila

Tema: Repaso sobre el uso del IDE de Microsoft Visual C#.

CAPÍTULO 6 PROGRAMACIÓN DINÁMICA. Programación Dinámica

Tema: Funciones, Procedimientos y Recursividad en C#.

Procesos de Fabricación I. Guía 1 SISTEMAS DE CONTROL HIDRÁULICO Y NEUMÁTICO

Tema: Punteros a Objetos. Puntero this.

Procesos de Fabricación I. Guía 1 1 ESTUDIO DEL TRABAJO INDUSTRIAL

Tema: Análisis Sintáctico

Tema: Herramientas UML, Análisis y diseño UML

Tema: Herramientas UML, Análisis y diseño UML

Tema: Autómatas de Estado Finitos

Tema: Configuración de red AD-HOC

Escuela de Ingeniería en Informática Empresarial SYLLABUS

Análisis de algoritmos

DIPLOMADO. Evaluación de la Calidad de la práctica docente para la implementación del Nuevo Modelo Educativo en Escuelas de Ingeniería del I.P.N.

Para las ecuaciones diferenciales ordinarias no lineales no existen métodos generales.

Tema: Configuración de Access Point

Java Avanzado. Guía 1. Java Avanzado Facultad de Ingeniería. Escuela de computación.

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

LIBRO GUIA: INVESTIGACIÓN DE OPERACIONES Hamdy A. Taha. Editorial Pearson Prentice Hall, 2004

Tema: Clases y Objetos en C++.

UNIVERSIDAD DE LOS ANDES NUCLEO UNIVERSITARIO RAFAEL RANGEL (NURR) DEPARTAMENTO DE FISICA Y MATEMATICA AREA COMPUTACION TRUJILLO EDO.

TÉCNICO SUPERIOR UNIVERSITARIO EN TECNOLOGÍAS DE LA INFORMACIÓN Y COMUNICACIÓN

Tema: Configuración de Redes PAN

UNIVERSIDAD DON BOSCO DEPARTAMENTO DE CIENCIAS BÁSICAS LABORATORIO DE FÍSICA ASIGNATURA: ELECTRICIDAD Y MAGNETISMO

Procesos de Fabricación I. Guía 1 1 SISTEMAS HIDRÁULICOS Y NEUMÁTICOS.

Tema: Tabla de Símbolos

Recursión. Capítulo 4

UNIVERSIDAD PEDAGÓGICA Y TECNOLÓGICA DE COLOMBIA FACULTAD DE CIENCIAS PROGRAMA DE MATEMÁTICAS PLAN DE ESTUDIOS

Tema: Fuente de Alimentación de Rayos X

Área: INFORMÁTICA. Saber- Saber: Identificar DFD como herramienta para escribir los algoritmos de forma lógica.

Procesos de Fabricación II. Guía 1 1 PROCESOS DE FABRICACIÓN II

Tema 7: Recursividad

Tema: S7-200, Escalado de Valores analógicos

Tema: Configuración de Router Inalámbrico

UNIVERSIDAD NACIONAL DE SAN ANTONIO ABAD DEL CUSCO

Tema: S7-1200, Valores Analógicos.

Estructuras de Datos y de la Información Ingeniería Técnica en Informática de Gestión. Curso 2007/2008 Ejercicios del Tema 2

Tema: Perdidas en Cableado Coaxial

Tema: Estructuras de Selección en C#.

RECORDAR TIPOS DE DATOS

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA GUÍA DE ACTIVIDADES DEL PROYECTO FINAL CURSO

Procesos de Fabricación I. Guía 1 1 MANUFACTURA INTEGRADA POR COMPUTADORA

TÉCNICO SUPERIOR UNIVERSITARIO EN MECATRÓNICA ÁREA AUTOMATIZACIÓN

4.1 CONGRUENCIA ENTRE LOS OBJETIVOS DEL PLAN DE ESTUDIOS Y EL PERFIL DE EGRESO CON LAS LGAC:

PROGRAMACIÓN PLAN 2008

Árboles balanceados (AVL) Tablas de dispersión (Hash) Colas de prioridad (Heap)

Tema: Desarrollo de aplicaciones con Visual Studio.net Parte II

Programación Dinámica

Electrónica II. Guía 4

Tema 6. Reutilización de código. Programación Programación - Tema 6: Reutilización de código

Formato para prácticas de laboratorio

Carlos A. Rivera-Morales. Precálculo 2

FACULTAD DE INGENIERÍA

Prueba N o 1. Programación II

Tema: Repaso sobre uso de Funciones, Arreglos y Punteros en C++.

PROGRAMACIÓN UNIDADES

Amplificador inversor y no inversor

SERVICIO NACIONAL DE APRENDIZAJE SENA

Procesos de Fabricación I. Guía 1 1 SISTEMAS HIDRÁULICOS Y NEUMÁTICOS.

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

Tema: Materiales y equipos para la manipulación de fibra óptica.

Java Avanzado Facultad de Ingeniería. Escuela de computación.

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

Tema: Introducción al IDE de Microsoft Visual C#.

Universidad de Managua

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

UNIVERSIDAD NACIONAL DE SAN ANTONIO ABAD DEL CUSCO

la solución a una ecuación cuadrática solicitando al usuario los términos de dicha ecuación.

I.- DATOS DE IDENTIFICACIÓN Nombre de la asignatura Métodos Numéricos (465)

Estructura de datos. Carrera: SCC Participantes

UNIVERSIDAD CENTRAL DE VENEZUELA FACULTAD DE INGENIERÍA ESCUELA DE INGENIERÍA CIVIL DEPARTAMENTO DE INGENIERÍA ESTRUCTURAL

TÉCNICO SUPERIOR UNIVERSITARIO EN MECATRÓNICA ÁREA AUTOMATIZACIÓN EN COMPETENCIAS PROFESIONALES ASIGNATURA DE LENGUAJE DE PROGRAMACIÓN

Nombre de la asignatura: Programación Básica. Créditos: Objetivo de aprendizaje

PROGRAMA: COMPUTACION I

INGENIERÍA PROFESIONAL EN INOCUIDAD ALIMENTARIA EN COMPETENCIAS PROFESIONALES ASIGNATURA DE ROBÓTICA

Tema: Arreglos de Objetos en C++.

Tema: Clases y Objetos en C#. Parte II.

Servicio Nacional de Aprendizaje REGIONAL VALLE DEL CAUCA CENTRO DE ELECTRICIDAD Y AUTOMATIZACION INDUSTRIAL C.E.A.I. GUIA DE APRENDIZAJE

UNIVERSIDAD NACIONAL EXPERIMENTAL DE GUAYANA VICERRECTORADO ACADÉMICO COORDINACION DE PRE-GRADO PROYECTO DE CARRERA DE INGENIERIA INDUSTRIAL

Universidad Nacional Autónoma de Nicaragua UNAN-Managua. Curso de Investigación de Operaciones

Procesos de Fabricación II. Guía 1 1 PROCESOS DE FABRICACIÓN II

Procesos de Fabricación I. Guía 1 1 SISTEMAS DE CONTROL HIDRÁULICO Y NEUMÁTICO

Transcripción:

1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación IV Tema: Programación Dinámica. Objetivos Específicos Definir brevemente el concepto de programación dinámica. Interpretar un algoritmo y pasarlo a sintaxis de C#. Aplicar Recursividad al ejemplo de la práctica. Materiales y Equipo Guía Número 6. Computadora con programa Microsoft Visual C#. Introducción Teórica Para que un problema pueda ser resuelto con la técnica de programación dinámica, debe cumplir con ciertas características: El problema puede ser dividido en etapas. Cada etapa tiene un número de estados asociados a ella. La decisión óptima de cada etapa depende solo del estado actual y no de las decisiones anteriores. La decisión tomada en una etapa determina cual será el estado de la etapa siguiente. Para resolver un problema de programación dinámica debemos al menos: Identificación de etapas, estados y variable de decisión: Cada etapa debe tener asociado una o más decisiones, cuya dependencia de las decisiones anteriores está dada exclusivamente por las variables de estado. Cada estado debe contener toda la información relevante para la toma de decisión asociada al período.

2 Programación IV, Guía 6 Las variables de decisión son aquellas sobre las cuales debemos definir su valor y modificar el estado de la próxima etapa. Descripción de ecuaciones: Nos deben indicar como se acumula la función (función objetivo) y como varían las funciones de estado de una etapa a otra. Para el caso del diseño de un algoritmo de Programación Dinámica debemos seguir 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 sucesiva de la solución (función objetivo). 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 (evitar funciones recursivas). 4. Construcción de la solución óptima haciendo uso de la información contenida en la tabla anterior. Como ejemplo, una solución en programación dinámica para la secuencia fibonacci. En esta, la sucesión se puede expresarse de manera recursiva. Pero con esto perdería mucho potencial dado que la forma recursiva repite cálculos innecesariamente, la estructura matemática es la siguiente: En esta se tienen tres estados posibles: El primero es cuando n = 0, se toma la decisión que se guardará 1 en la secuencia. En el segundo, cuando n = 1, se decide guardar 1 en la secuencia. En el tercero, cuando n > 1, se decide guardar la suma de los dos últimos valores de la secuencia. Con esta descripción se tiene el siguiente algoritmo de programación dinámica: FUNCION Fibonacci (N: ENTERO): ARREGLO [N] DE ENTEROS

3 VARIABLES secuencia: ARREGLO [N] DE ENTEROS i: ENTERO INICIO PARA i = 0 HASTA n HACER SI i <= 1 ENTONCES secuencia[i] = 1 SINO secuencia[i] = secuencia[i-1] + secuencia[i-2] FINSI FINPARA retornar secuencia[n] FIN Como puede verse: Se basa en una tabla de resultados. Se tiene una sucesión de etapas. Cada etapa tiene un estado asociado. A partir de ese estado se toma una decisión la cual afectará o no al siguiente estado. Se evita hacer cálculos innecesarios (recursividad). Procedimiento Ejemplo 1. Adaptando a C# el algoritmo de la secuencia fibonacci con programación dinamica, quedaria como sigue: public static int[ ] fibonacci(int n) { int[ ] secuencia = new int[n]; for(int I = 0; I < n; i++) { if(i <= 1) { secuencia[i] = 1; //se engloban dos estados else

4 Programación IV, Guía 6 { secuencia[i] = secuencia[i-1] + secuencia[i-2]; //tercer estado return secuencia; Análisis de resultados Realice un programa en C# para implementar la función de la secuencia fibonacci en una interfaz gráfica de formulario (Windows Forms). Haga también una implementación con funciones recursivas en una interfaz gráfica de formulario (Windows Forms). Deduzca el porqué su implementación con arreglos tiene un mejor desempeño que la forma recursiva. Investigación Complementaria Para la siguiente semana: Investigue el problema del cambio de moneda (este es implementado en cajeros automáticos), y realice su solución con programación dinámica implementado con Visual C# en una interfaz gráfica de formulario (Windows Forms).

5 Guía 6: Programación Dinámica Hoja de cotejo: 6 Alumno: Máquina No: Docente: GL: Fecha: EVALUACIÓN % 1-4 5-7 8-10 Nota CONOCIMIENTO Del 20 al 30% deficiente de los y explicación incompleta de los completo y explicación clara de los APLICACIÓN DEL CONOCIMIENTO Del 40% al 60% ACTITUD Del 15% al 30% No tiene actitud proactiva. Actitud propositiva y con propuestas no aplicables al contenido de la guía. Tiene actitud proactiva y sus propuestas son concretas. TOTAL 100%