Programación Dinámica
|
|
|
- Belén Bustos Miranda
- hace 9 años
- Vistas:
Transcripción
1 Leopoldo Taravilse Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires Training Camp 2012 Leopoldo Taravilse (UBA) TC / 34
2 Contenidos 1 Recursión Principio de Optimalidad Ejemplos 2 Juegos El juego de las piedras Juegos Combinatorios Leopoldo Taravilse (UBA) TC / 34
3 Contenidos Recursión 1 Recursión Principio de Optimalidad Ejemplos 2 Juegos El juego de las piedras Juegos Combinatorios Leopoldo Taravilse (UBA) TC / 34
4 Sucesión de Fibonacci Recursión Sucesión de Fibonacci La sucesión de Fibonacci se define como f 0 = 1, f 1 = 1y f n+2 = f n + f n+1 para todo n 0 Leopoldo Taravilse (UBA) TC / 34
5 Sucesión de Fibonacci Recursión Sucesión de Fibonacci La sucesión de Fibonacci se define como f 0 = 1, f 1 = 1y f n+2 = f n + f n+1 para todo n 0 Cómo podemos computar el término 100 de la sucesión de Fibonacci? Leopoldo Taravilse (UBA) TC / 34
6 Sucesión de Fibonacci Recursión Sucesión de Fibonacci La sucesión de Fibonacci se define como f 0 = 1, f 1 = 1y f n+2 = f n + f n+1 para todo n 0 Cómo podemos computar el término 100 de la sucesión de Fibonacci? Cómo podemos hacerlo eficientemente? Leopoldo Taravilse (UBA) TC / 34
7 Algoritmos recursivos Recursión Definición Un algoritmo se dice recursivo si calcula instancias de un problema en función de otras instancias del mismo problema hasta llegar a un caso base, que suele ser una instancia pequeña del problema, cuya respuesta generalmente está dada en el algoritmo y no es necesario calcularla. Leopoldo Taravilse (UBA) TC / 34
8 Algoritmos recursivos Recursión Definición Un algoritmo se dice recursivo si calcula instancias de un problema en función de otras instancias del mismo problema hasta llegar a un caso base, que suele ser una instancia pequeña del problema, cuya respuesta generalmente está dada en el algoritmo y no es necesario calcularla. Ejemplo Para calcular el factorial de un número, un posible algoritmo es calcular Factorial(n) como Factorial(n 1) n si n 1 o 1 si n = 0 Leopoldo Taravilse (UBA) TC / 34
9 Algoritmos recursivos Recursión Definición Un algoritmo se dice recursivo si calcula instancias de un problema en función de otras instancias del mismo problema hasta llegar a un caso base, que suele ser una instancia pequeña del problema, cuya respuesta generalmente está dada en el algoritmo y no es necesario calcularla. Ejemplo Para calcular el factorial de un número, un posible algoritmo es calcular Factorial(n) como Factorial(n 1) n si n 1 o 1 si n = 0 Veamos como calcular el n-ésimo fibonacci con un algorimto recursivo Leopoldo Taravilse (UBA) TC / 34
10 Recursión Cálculo Recursivo de Fibonacci 1 int fibo(int n) 2 { 3 if(n<=1) 4 return 1; 5 else 6 return fibo(n 2)+fibo (n 1); 7 } Leopoldo Taravilse (UBA) TC / 34
11 Recursión Cálculo Recursivo de Fibonacci 1 int fibo(int n) 2 { 3 if(n<=1) 4 return 1; 5 else 6 return fibo(n 2)+fibo (n 1); 7 } Notemos que fibo(n) llama a fibo(n 2), pero después vuelve a llamar a fibo(n 2) para calcular fibo(n 1), y a medida que va decreciendo el parámetro que toma fibo son más las veces que se llama a la función fibo con ese parámetro. Leopoldo Taravilse (UBA) TC / 34
12 Problemas de la recursión Recursión La función que usamos para calcular Fibonacci tiene un problema. Leopoldo Taravilse (UBA) TC / 34
13 Problemas de la recursión Recursión La función que usamos para calcular Fibonacci tiene un problema. Llamamos muchas veces a la misma función con los mismos parámetros Leopoldo Taravilse (UBA) TC / 34
14 Problemas de la recursión Recursión La función que usamos para calcular Fibonacci tiene un problema. Llamamos muchas veces a la misma función con los mismos parámetros Podemos solucionar esto? Podemos hacer que la función sea llamada pocas veces para cada parámetro? Leopoldo Taravilse (UBA) TC / 34
15 Problemas de la recursión Recursión La función que usamos para calcular Fibonacci tiene un problema. Llamamos muchas veces a la misma función con los mismos parámetros Podemos solucionar esto? Podemos hacer que la función sea llamada pocas veces para cada parámetro? Para lograr resolver este problema, vamos a introducir el concepto de programación dinámica Leopoldo Taravilse (UBA) TC / 34
16 Contenidos 1 Recursión Principio de Optimalidad Ejemplos 2 Juegos El juego de las piedras Juegos Combinatorios Leopoldo Taravilse (UBA) TC / 34
17 Programación dinámica La programación dinámica es una técnica que consiste en: Leopoldo Taravilse (UBA) TC / 34
18 Programación dinámica La programación dinámica es una técnica que consiste en: Dividir un problema en dos o más subproblemas o reducirlo a una instancia más fácil de calcular del problema. Leopoldo Taravilse (UBA) TC / 34
19 Programación dinámica La programación dinámica es una técnica que consiste en: Dividir un problema en dos o más subproblemas o reducirlo a una instancia más fácil de calcular del problema. Resolver las instancias de cada subproblema de la misma manera (dividiendo en subproblemas o reduciendo a otra instancia) hasta llegar a un caso base. Leopoldo Taravilse (UBA) TC / 34
20 Programación dinámica La programación dinámica es una técnica que consiste en: Dividir un problema en dos o más subproblemas o reducirlo a una instancia más fácil de calcular del problema. Resolver las instancias de cada subproblema de la misma manera (dividiendo en subproblemas o reduciendo a otra instancia) hasta llegar a un caso base. Guardar el resultado de cada instancia del problema la primera vez que se calcula, para que cada vez que se vuelva a necesitar el valor de esa instancia ya esté almacenado, y no sea necesario calcularlo nuevamente. Leopoldo Taravilse (UBA) TC / 34
21 Programación dinámica La programación dinámica es una técnica que consiste en: Dividir un problema en dos o más subproblemas o reducirlo a una instancia más fácil de calcular del problema. Resolver las instancias de cada subproblema de la misma manera (dividiendo en subproblemas o reduciendo a otra instancia) hasta llegar a un caso base. Guardar el resultado de cada instancia del problema la primera vez que se calcula, para que cada vez que se vuelva a necesitar el valor de esa instancia ya esté almacenado, y no sea necesario calcularlo nuevamente. Cómo hacemos para calcular una sóla vez una función para cada parámetro, por ejemplo, en el caso de Fibonacci? Leopoldo Taravilse (UBA) TC / 34
22 Cálculo de Fibonacci mediante Programación Dinámica 1 int fibo[100]; 2 int calcfibo( int n) 3 { 4 if(fibo[n]!= 1) 5 return fibo[n]; 6 fibo[n] = calcfibo(n 2)+calcFibo(n 1); 7 return fibo[n]; 8 } 9 int main() 10 { 11 for( int i=0;i<100;i++) 12 fibo[ i ] = 1; 13 fibo[0] = 1; 14 fibo[1] = 1; 15 ínt fibo50 = calcfibo(50); 16 } Leopoldo Taravilse (UBA) TC / 34
23 Ventajas de la La función que vimos recién que usa programación dinámica tiene una ventaja con respecto a la versión recursiva que vimos anteriormente. Leopoldo Taravilse (UBA) TC / 34
24 Ventajas de la La función que vimos recién que usa programación dinámica tiene una ventaja con respecto a la versión recursiva que vimos anteriormente. Llama menos veces a cada función Leopoldo Taravilse (UBA) TC / 34
25 Ventajas de la La función que vimos recién que usa programación dinámica tiene una ventaja con respecto a la versión recursiva que vimos anteriormente. Llama menos veces a cada función Para calcular calcfibo(n-1) necesita calcular calcfibo(n-2), pero ya lo calculamos antes, por lo que no es necesario volver a llamar a calcfibo(n-3) y calcfibo(n-4) Leopoldo Taravilse (UBA) TC / 34
26 Ventajas de la La función que vimos recién que usa programación dinámica tiene una ventaja con respecto a la versión recursiva que vimos anteriormente. Llama menos veces a cada función Para calcular calcfibo(n-1) necesita calcular calcfibo(n-2), pero ya lo calculamos antes, por lo que no es necesario volver a llamar a calcfibo(n-3) y calcfibo(n-4) Así podemos calcular calcfibo(50) mucho más rápido ya que este algoritmo es lineal mientras que el anterior era exponencial. Leopoldo Taravilse (UBA) TC / 34
27 Contenidos Principio de Optimalidad 1 Recursión Principio de Optimalidad Ejemplos 2 Juegos El juego de las piedras Juegos Combinatorios Leopoldo Taravilse (UBA) TC / 34
28 Otro tipo de problemas Principio de Optimalidad Hasta ahora vimos problemas en los que hay que calcular un número de terminado. Leopoldo Taravilse (UBA) TC / 34
29 Otro tipo de problemas Principio de Optimalidad Hasta ahora vimos problemas en los que hay que calcular un número de terminado. En algunos casos lo que tenemos que calcular es el menor o el mayor número que cumple con cierta propiedad. Leopoldo Taravilse (UBA) TC / 34
30 Otro tipo de problemas Principio de Optimalidad Hasta ahora vimos problemas en los que hay que calcular un número de terminado. En algunos casos lo que tenemos que calcular es el menor o el mayor número que cumple con cierta propiedad. En estos casos para poder usar programación dinámica necesitamos asegurarnos que la solución de los subproblemas es parte de la solución de la instancia original del problema. Leopoldo Taravilse (UBA) TC / 34
31 Principio de optimalidad Principio de Optimalidad Definición El principio de optimalidad de Bellman dice que la solución óptima de un subproblema es parte de una solución óptima del problema original. Leopoldo Taravilse (UBA) TC / 34
32 Principio de optimalidad Principio de Optimalidad Definición El principio de optimalidad de Bellman dice que la solución óptima de un subproblema es parte de una solución óptima del problema original. Bellman (quien descubrió la programación dinámica en 1953) afirmó que siempre que se cumple el principio de optimalidad se puede aplicar programación dinámica. Leopoldo Taravilse (UBA) TC / 34
33 ! Problema El camino más corto unidireccional Archivo: camino (.c,.cpp,.pas) Problemas que requieren determinar el camino más corto aparecen en diversas áreas de ciencias de la computación. Por ejemplo, una de las restricciones en problema de ruteo en VLSI (very large scale integration) es minimizar el largo de los cables. El problema del vendedor viajero, es decir, indicar si un vendedor viajero puede realizar una ruta que visite una sola vez todas las ciudades con un límite de tiempo especificado, es uno de los problemas clásicos de las ciencias de la computación. El problema que se presenta ahora consiste en encontrar un camino mínimo que pase por los puntos de una grilla mientras se viaja sólo de izquierda a derecha. Dada una m x n matriz de enteros, se le pide escribir un programa que determine el camino con peso mínimo. Un camino comienza en cualquier fila de la primera columna (columna 1), y consiste en una secuencia de pasos terminando en la última columna (columna n). Un paso consiste en pasar de una columna i a una columna i+1 en una fila adyacente (horizontal o diagonal). La primera y última filas (filas 1 y m) de la matriz son consideradas adyacentes, i.e., la matriz se cierra de manera que representa un cilindro horizontal. El peso de un camino es la suma de enteros en cada una de las n celdas de la matriz que son visitadas. Por ejemplo, una pequeña variación da caminos diferentes como muestra la figura siguiente El camino mínimo es ilustrado para cada matriz. Note que el camino para la matriz a la derecha toma ventaja de la propiedad de adyacencia de la primera y última fila.!"#$%$%&'()%$*+",$-#-(-+(./%0+10$2%( 3$4"0/5+,6(
34 ! Entrada La entrada consiste de una secuencia de especificación de matriz. Cada especificación consiste de las dimensiones de filas y columnas, seguidas por m x n enteros donde m es el número de filas y n es el número de columnas. Los enteros aparecen en la entrada en el orden de mayor orden de filas, es decir, los primeros n enteros son de la primera fila de la matriz, luego los siguientes n enteros son de la segunda fila, y sucesivamente. Los enteros en una línea serán separados de otros enteros por uno o más espacios. Notar que los enteros pueden ser negativos. Puede haber más de una especificación de matriz en un archivo de entrada. La entrada termina con el fin de archivo. Por cada especificación, los número de fila van de 1 a 10 inclusive, los números de columnas van de 1 a 100 inclusivo. Ninguno de los pesos del camino excederá valores de enteros representados usando 30 bits. Salida Dos líneas deberían ser la salida por cada especificación de matrices en el archivo de entrada, la primera representa un camino de peso mínimo, y la segunda línea es el costo del camino mínimo. El camino consiste de una secuencia de n enteros (separados por uno o más espacios) representando las filas que constituye el camino mínimo. Si hay más de un camino de peso mínimo, el camino que sea el menor lexicográficamente será el escogido. Puntuación 30 puntos. Se probarán un número de casos con matrices de una dimensión menor a 5 x puntos. Se probarán un número de casos con matrices de una dimensión menor a 10 x puntos. Se probarán un número de casos con matrices de una dimensión menor a 10 x 100. Entrada Salida para la entrada de ejemplo !"#$%$%&'()%$*+",$-#-(-+(./%0+10$2%( 3$4"0/5+,6(
35 Final Nacional 2013 Problema D Montaña archivo: montana{.c,.cpp,.pas} Ema y Camilo disfrutan de pasear por las montañas, sin embargo, la cordillera tiene tantos cerros distintos que generalmente para moverse de un punto a otro deben subir y bajar repetidamente. Ellos están cansados de esta situación y les gustaría encontrar un camino que los lleve de un punto a otro tal que, o bien sólo suba, o bien sólo baje. También pueden mantenerse por ciertos tramos a la misma altura, ya que esto realmente no les molesta, pero si en su camino alguna vez tuvieron que bajar, quieren nunca tener que volver a subir. Similarmente, si en el caminotuvieronquesubir,quierennunca tener que volver a bajar. Camilo está seguro que siempre podrá encontrar un camino que cumpla sus requisitos, pero Ema no está tan segura. Ellos se han enterado de tu participación en las olimpiadas de informática y les gustaría tener tu ayuda para encontrar talcamino(siesqueexiste). Ema y Camilo tienen un mapa que indica la altura del terreno en cada punto. Estos puntos forman una grilla equiespaciada en el terreno. Para evitar perderse EmayCamiloquisieranquelesentregaras instrucciones muy simples. Debes indicarles cómo moverse desde el punto de partida hasta el final. Los posibles movimientos son (N)orte, (S)ur, (E)ste y (O)este (como se indica a la izquierda de la figura). Obviamente, Ema y Camilo quieren recorrer lo menos posible, por lo que tu programa deberá ser capaz de encontrar la ruta con la menor cantidad de movimeintos. En la figura (centro) se muestra un ejemplo de un posible mapa del terreno con indicaciones de alturas. El puntodepartidaeseldestacadoenla parte superior y el de llegada el destacado en la parte inferior. El dibujo en la derecha muestra dos rutas posibles con el mínimo número de pasos, 6 en este caso, ysoncaminosdesubida. O N S E La ruta de flechas punteadas en el dibujo estaría dada por los movimientos SOSSEE, y la ruta de flechas sólidas estaría dada por los movimientos EESSSO. Entrada Cada caso de prueba contiene en la primera linea 7 números enteros, W, H, x ini, y ini, x fin, y fin, C, todos separados por un espacio en blanco. W y H corresponden al ancho y alto del mapa, respectivamente, (x ini,y ini )sonlascoordenadasdelpuntodepartida,(x fin,y fin )lascoordenadasdelpuntofinal,yc el tipo de consulta que se hará. Los valores son tales que 1 W 2000, 1 H 2000, 0 x ini <W, 0 y ini <H,0 x fin <W,0 y fin <H,yC es igual a 0 o 1. Las coordenadas en el mapa crecen en el eje x de izquierda a derecha, y en el eje y de arriba hacia abajo, ambas partiendo desde 0. Las siguientes H lineas de la entrada contienen cada una W enteros separados por un espacio, correspondientes a la altura en cada punto del mapa.
Programación Dinámica
Programación Dinámica Agustín Santiago Gutiérrez, Juan Cruz Piñero Facultad de Ciencias Exactas y Naturales - Universidad de Buenos Aires Facultad de Informática - Universidad Nacional del Comahue Training
Geometría. Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires. Training Camp 2012
Geometría Leopoldo Taravilse Francisco Roslán Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires Training Camp 2012 Leopoldo Taravilse, Francisco Roslán (UBA) Geometría TC 2012 1 / 30
Análisis de algoritmos. Recursividad
Análisis de algoritmos Recursividad 1 Matrushka La Matrushka es una artesanía tradicional rusa. Es una muñeca de madera que contiene otra muñeca más pequeña dentro de sí. Ésta muñeca, también contiene
Programación Dinámica
Programación Dinámica Adaptado de Algorithm Design Goodrich and Tamassia Programación Dinámica 1 Calculando la serie de Fibonacci 1,1,2,3,5,8,13,21,. fib(n) = 1 si n = 0,1 fib(n 1) + fib(n 2) o.c. Programación
Divide & Conquer. Herman Schinca. Clase de Junio de 2011
Divide & Conquer Herman Schinca Clase 20 7 de Junio de 2011 Divide y vencerás Idea aplicable a muchas situaciones de la vida. Origen histórico atribuído a Julio César en relación a sus estrategias militares.
Recursividad Definición
Recursividad Definición Un procedimiento o función se dice recursivo si durante su ejecución se invoca directa o indirectamente a sí mismo. Esta invocación depende al menos de una condición que actúa como
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
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 Diseño de algoritmos recursivos 1. Dado un vector de enteros de longitud N,
Tema: Programación Dinámica.
Programación IV. Guía No. 12 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación IV Tema: Programación Dinámica. Objetivos Específicos Definir el concepto de programación dinámica. Interpretar
Programación I Recursividad.
Programación I Recursividad http://proguno.unsl.edu.ar [email protected] Recursividad Técnica de resolución de problemas particulares. La definición de un concepto es recursiva si el concepto es definido
Recursión. Capítulo 4
Recursión Capítulo 4 Introducción La recursión o recursividad es un concepto amplio, con muchas variantes, y difícil de precisar con pocas palabras.. Actividades Cotidianas; fotografía donde se observa
Funciones recursivas
Introducción a la Computación Funciones recursivas Esteban E. Mocskos ([email protected]) Facultad de Ciencias Exactas y Naturales, UBA CONICET 13/09/2017 E. Mocskos (UBA CONICET) Funciones Recursivas
Tema: Programación Dinámica.
Programación IV. Guía 11 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación IV Tema: Programación Dinámica. Objetivos Específicos Definir el concepto de programación dinámica. Interpretar
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
258. Aplicar el algoritmo de programación dinámica para el problema del cambio de monedas sobre el siguiente ejemplo: n = 3, P = 9, c = (1, 3, 4). Qué ocurre si multiplicamos P y c por un valor constante,
Programación Dinámica
Programación Dinámica Es aplicada típicamente a problemas de optimización, donde puede haber muchas soluciones, cada una tiene un valor asociado y prentendemos obtener la solución con valor óptimo. Al
Aritmética en Haskell
Aritmética en Haskell Taller de Álgebra I Primer cuatrimestre de 2014 Algoritmo de división Para obtener el cociente y resto entre dos números enteros, tenemos las funciones div y mod, respectivamente.
Análisis de algoritmos
Tema 09: Programación dinámica Solicitado: Ejercicios 06: Programación dinámica de Fibonacci y Coeficientes Binomiales M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com [email protected] @edfrancom
Tema 7: Recursividad
Tema 7: Recursividad Objetivos: en este tema estudiaremos funciones recursivas; esto es, funciones que se invocan a sí mismas. Estas funciones son equivalentes a estructuras tipo bucle pero permiten especificar
Trabajo Práctico 5 Estructura Repetitiva
Trabajo Práctico 5 Estructura Repetitiva Los ejercicios para resolver y enviar por los alumnos son los que están con letra negrita los mismos deben ser enviados en un archivo zip por medio de la página
Programación II Recursividad Dr. Mario Rossainz López
5. RECURSIVIDAD 5.1. Introducción La recursividad es una técnica en la que una función o método se hace llamadas a sí misma en el proceso de la realización de sus tareas. La recursividad da al programador
Tema 7: Problemas clásicos de Programación Lineal
Tema 7: Problemas clásicos de Programación Lineal 1.- Características generales de un problema de transporte y asignación Surgen con frecuencia en diferentes contextos de la vida real. Requieren un número
Multiplicación de matrices simétricas
Multiplicación de matrices simétricas La traspuesta de una matriz A n n es definida como una matriz A T n n tal que A T [i, j] =A[j, i] paracadai, j 2{1,...,n} Además, una matriz A es simétrica si A =
Complejidad de algoritmos recursivos
Tema 3. Complejidad de algoritmos recursivos 1. INTRODUCCIÓN... 1 CLASIFICACIÓN DE FUNCIONES RECURSIVAS... 1 DISEÑO DE FUNCIONES RECURSIVAS... 2 2. VENTAJAS E INCONVENIENTES DE LA RECURSIVIDAD... 4 3.
UNIVERSIDAD DE LOS ANDES NUCLEO UNIVERSITARIO RAFAEL RANGEL (NURR) DEPARTAMENTO DE FISICA Y MATEMATICA AREA COMPUTACION TRUJILLO EDO.
UNIVERSIDAD DE LOS ANDES NUCLEO UNIVERSITARIO RAFAEL RANGEL (NURR) DEPARTAMENTO DE FISICA Y MATEMATICA AREA COMPUTACION TRUJILLO EDO. TRUJILLO Recursividad: La recursividad es una técnica de programación
Programa-Me 2013 Regional on line Problemas
First, solve the problem. Then, write the code John Johnson. Programa-Me 2013 Regional on line Problemas 6 de marzo de 2013 Universidad Complutense de Madrid I.E.S. Antonio de Nebrija (Móstoles) http://www.programa-me.com
Listas y Recursión. Taller de Álgebra I. Primer Cuatrimestre de 2015
Listas y Recursión Taller de Álgebra I Primer Cuatrimestre de 2015 Un nuevo tipo: Listas Tipo Lista Las listas pueden contener elementos de cualquier tipo (incluso listas) [1] :: [Integer] [1, 2] :: [Integer]
Para las ecuaciones diferenciales ordinarias no lineales no existen métodos generales.
Unidad IV: Sistemas continuos (continuación) Objetivo específico: Entender ampliamente el fenómeno del comportamiento de los modelos matemáticos para la resolución de problemas enfocados a las ecuaciones
Tema: Funciones, Procedimientos y Recursividad en C#.
Tema: Funciones, Procedimientos y Recursividad en C#. Objetivos Programación I, Guía 6 1 Utilizar la sintaxis de las funciones definidas por el usuario (programador) para resolver problemas. Identificar
Tema: Funciones, Procedimientos y Recursividad en C#.
Programación I, Guía 6 1 Tema: Funciones, Procedimientos y Recursividad en C#. Objetivos Utilizar la sintaxis de las funciones definidas por el usuario (programador) para resolver problemas. Identificar
Ejemplo: El problema de la mochila. Algoritmos golosos. Algoritmos y Estructuras de Datos III. Segundo cuatrimestre 2013
Técnicas de diseño de algoritmos Algoritmos y Estructuras de Datos III Segundo cuatrimestre 2013 Técnicas de diseño de algoritmos Algoritmos golosos Backtracking (búsqueda con retroceso) Divide and conquer
Taller de Programación Dinámica. Definiciones. Caso base. Laboratorio de Algoritmos y Estructuras de Datos III. 10 de Septiembre de 2010
Menú del día Taller de 1 Definiciones Laboratorio de Algoritmos y Estructuras de Datos III Departamento de Computación Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires 10 de Septiembre
Programa-Me 2013 Regional on line Problemas
First, solve the problem. Then, write the code John Johnson. Programa-Me 2013 Regional on line Problemas 6 de marzo de 2013 Universidad Complutense de Madrid I.E.S. Antonio de Nebrija (Móstoles) http://www.programa-me.com
Diseño de algoritmos
Diseño de algoritmos Programación Dinámica Jesús Bermúdez de Andrés Universidad del País Vasco/Euskal Herriko Unibertsitatea (UPV/EHU) Curso 2008-09 1 Programación Dinámica Definición de la técnica Funciones
Tema 06: Recursividad
Tema 06: Recursividad M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com [email protected] @edfrancom edgardoadrianfrancom (Prof. Edgardo A. Franco) 1 Contenido Recursión Recursividad Programación
Grafos. Leopoldo Taravilse. Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires. Training Camp 2012
Grafos Leopoldo Taravilse Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires Training Camp 2012 Leopoldo Taravilse (UBA) Grafos TC 2012 1 / 78 Contenidos 1 Definiciones básicas Algoritmos
TEORÍA DE DIVISIBILIDAD
TEORÍA DE DIVISIBILIDAD MÚLTIPLOS Y DIVISORES.- Dados dos números naturales a y b, con a b, se dice que a es divisible por b o que a es múltiplo de b o que b es divisor de a, si la división de a : b es
RECURSIVIDAD. Prof. Ing. M.Sc. Fulbia Torres
ESTRUCTURAS DE DATOS 2006 Prof. UNIDAD II ESTRUCTURAS DE DATOS RECURSIVIDAD Definición. Estado base. Estado general. Ejemplos. Ejercicios. DEFINICIÓN Es una técnica de programación muy potente que permite
Programación Estructurada. Complementos de Informática Tema 2: Programación Estructurada y Programación Modular. Números Amigos
Programación Estructurada Complementos de Informática Tema 2: Programación Estructurada y Programación Modular Álo Romero Jiménez Departamento de Ciencias de la Computación e Inteligencia Artificial Universidad
Modelado con grafos. Melanie Sclar. Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires. 26 de abril de 2015
Modelado con grafos Melanie Sclar Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires 26 de abril de 2015 Melanie Sclar (UBA) Modelado con grafos 26 de abril de 2015 1 / 24 Contenidos
Fila: Es un conjunto de varias celdas dispuestas en sentido horizontal.
Que Es Excel? Excel es un programa que permite la manipulación de libros y hojas de calculo. En Excel, un libro es el archivo en que se trabaja y donde se almacenan los datos. Como cada libro puede contener
PROGRAMACION DE REDES. MODELOS DE TRANSPORTE
PROGRAMACION DE REDES. MODELOS DE TRANSPORTE El modelo de transporte o modelo de distribución es un ejemplo de un problema de optimización de redes. Se aplican para resolver ciertos tipos de problemas
Para entender la recursividad primero tenemos que entender la recursividad
Para entender la recursividad primero tenemos que entender la recursividad Funcional Clase 1 Matias Reparaz, Agustín Nieto Departamento de Computación, FCEyN,Universidad de Buenos Aires. 20 de Septiembre
Cátedra I Informática Autor I Carlos Bartó
FCEFyN Departamento de Computación Informática Examen - 07-07-2008 Apellido y Nombres: Matrícula: Carrera: PROBLEMAS: 1) Especifique en el lenguaje C++ una función denominada calc_fecha() que tenga como
Diseño y Análisis de Algoritmos
1. Recursividad 2. "Dividir para Reinar" 3. Recursividad y Tabulación (Programación Dinámica) 4. Métodos Matemáticos Funciones discretas Notación O Ecuaciones de recurrencia 5. Casos de Estudio Breve descripción
Cuadrado Mágico de RENATO
SOLUCION DEL CUADRADO MAGICO DE RENATO PARTE II Autor: Luis R. Morera González. El cuadrado mágico de RENATO esta formado por 20 filas y 20 columnas. El número mágico de este cuadrado mágico es 4,010 la
Programación Dinámica 1
Programación Dinámica 1 El método de programación dinámica sirve para resolver problemas combinando las soluciones de subproblemas. Normalmente es usada para resolver problemas de optimización. Al construir
Ejercicios sobre recursividad
Ejercicios sobre recursividad 11 de febrero de 2003 1. Implementa una función recursiva que devuelva la suma de los dígitos de un número natural, que se le pasa por parámetro. 2. Implementa una función
Lenguaje de programación S (Davis/Sigal/Weyuker) Lógica y Computabilidad. Ejemplo 1. Ejemplo 2
Lógica y Computabilidad Verano 2011 Departamento de Computación - FCEyN - UBA Computabilidad - clase 4 Lenguaje S, estado, descripción instantánea, cómputo, funciones parciales computables, minimización
Del mismo modo, si el coche empieza a descender por una colina, todavía se puede determinar la pendiente.
FUNCIÓN AFÍN. PENDIENTE DE UNA RECTA Suponga que tiene un avión de juguete sobre el despegue, que se eleva 5 pies por cada 6 metros que recorre a lo largo de la horizontal. Cuál sería la pendiente de su
CAPÍTULO 6 PROGRAMACIÓN DINÁMICA. Programación Dinámica
CAPÍTULO 6 PROGRAMACIÓN DINÁMICA Programación Dinámica Programación Dinámica En muchos casos las decisiones del pasado afectan los escenarios del futuro. En estos casos se pueden tomar 2 opciones: asumir
Clases e instancias. Algoritmos y Estructuras de Datos I. Clases e instancias. memoria dinámica.
Algoritmos Estructuras de Datos I Primer cuatrimestre de 2014 Departamento de Computación - FCEN - UBA Programación imperativa - clase 10 Memoria dinámica listas enlazadas Clases e instancias El paquete
Tema: Programación Dinámica.
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
Estrategias de pivoteo
Estrategias de pivoteo Objetivos. Resolver sistemas de ecuaciones lineales aplicando varias técnicas de pivoteo; programar estos algoritmos. Requisitos. Operaciones elementales, experiencia de resolver
Lista de problemas: ciclos y funciones en el lenguaje MATLAB
Lista de problemas: ciclos y funciones en el lenguaje MATLAB Esta lista de problemas está compuesta para probar si el estudiante tiene ciertas habilidades básicas de programación con arreglos, funciones
Grafos. AMD Grado en Ingeniería Informática. AMD Grado en Ingeniería Informática (UM) Grafos 1 / 30
Grafos AMD Grado en Ingeniería Informática AMD Grado en Ingeniería Informática (UM) Grafos / 0 Objetivos Al finalizar este tema tendréis que: Conocer la terminología básica de la teoría de grafos. Pasar
INTRODUCCIÓN a DERIVE 6. PANTALLA DE EXPRESIONES ALGEBRAICAS
INTRODUCCIÓN a DERIVE 6. Existen tres clases de pantallas: La pantalla de Álgebra (para expresiones algebraicas) y las pantallas gráficas que permiten representar gráficas en dos dimensiones (ventana 2D)
IN34A - Optimización
IN34A - Optimización Complejidad Leonardo López H. [email protected] Primavera 2008 1 / 33 Contenidos Problemas y Procedimientos de solución Problemas de optimización v/s problemas de decisión Métodos,
La recursividad forma parte del repertorio para resolver problemas en Computación y es de los métodos más poderosos y usados.
RECURSIVIDAD La recursividad forma parte del repertorio para resolver problemas en Computación y es de los métodos más poderosos y usados. Los algoritmos recursivos ofrecen soluciones estructuradas, modulares
Microsoft Excel Tabla dinámica
Microsoft Excel 2003 Tabla dinámica Una tabla dinámica es una hoja de cálculo interactiva que resume rápidamente grandes cantidades de datos usando el formato y los métodos de cálculo que se elijan. En
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
4.1. Aplicar el algoritmo de programación dinámica para el problema del cambio de monedas sobre el siguiente ejemplo: n = 3, P = 9, c = (1, 3, 4). Qué ocurre si multiplicamos P y c por un valor constante,
TEMA 5: Subprogramas, programación modular
TEMA 5: Subprogramas, programación modular 5.1.-Definición de módulo. Programación modular La programación modular está basada en la técnica de diseño descendente, que como ya vimos consiste en dividir
INVESTIGACIÓN OPERATIVA
FACULTAD DE INGENIERÍA Y ARQUITECTURA ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMAS INVESTIGACIÓN OPERATIVA Mg Jessica Pérez Rivera PROBLEMAS DE TRANSPORTE Y ASIGNACIÓN Las aplicaciones de la programación
Subrutinas. Subrutinas. Erwin Meza Vega
Subrutinas Erwin Meza Vega Outline 1 Introducción 2 Especicación de subrutinas 3 Funciones booleanas 4 Parámetros 5 Recursividad 6 Ejercicios Introducción Programación divide y vencerás Cuando la solución
UNIDAD Creación del Árbol Octal de un objeto sólido vía la definición CSG
UNIDAD 3 3 Creación de Árbol Octal vía la definición CSG 3.1 Creación del Árbol Octal de un objeto sólido vía la definición CSG Un árbol CSG hace uso de un conjunto de primitivas sólidas, estas primitivas
Prácticas de SAGE (caldum) 19 de Enero de 2012
Prácticas de SAGE (caldum) 19 de Enero de 2012 1. Introducción En este ejercicio vamos a ver las posibilidades de programación de SAGE haciendo una implementación del algoritmo de reducción de Gauss de
Programa de Acceso Inclusivo, Equidad y Permanencia. PAIEP, Universidad de Santiago
Guía dinámica. En general, los problemas de dinámica se resuelven aplicando 3 pasos: 1º Dibuje un diagrama de cuerpo libre para cada cuerpo involucrado en el sistema. Es decir, identifique todas las fuerzas
Nos muestra el contenido de la celda activa, es decir, la casilla donde estamos situados.
La barra de fórmulas Nos muestra el contenido de la celda activa, es decir, la casilla donde estamos situados. La barra de etiquetas Permite movernos por las distintas hojas del libro de trabajo. Las barras
MATE Método Simplex maximización estándar
MATE 3012 Método Simplex maximización estándar Problema de maximización estándar Un problema de maximización de programación lineal está en la forma estándar, si la función objetiva w = c 1 x 1 + c 2 x
LibreOffice Calc II INTRODUCCIÓN A LAS TECNOLOGÍAS INFORMÁTICAS
LibreOffice Calc II INTRODUCCIÓN A LAS TECNOLOGÍAS INFORMÁTICAS Contenido Fijar celdas Dividir la ventana Nombrar celdas Piloto de datos(tablas dinámicas) Macros Solver Escenarios Base de datos 2 Fijar
Estrategias de Diseño de Algoritmos
Estrategias de Diseño de Algoritmos Introducción A través de los años, los científicos de la computación han identificado diversas técnicas generales que a menudo producen algorit mos eficientes para la
INTRODUCCIÓN DEL TEMA 2 ESPACIOS VECTORIALES
INTRODUCCIÓN DEL TEMA 2 ESPACIOS VECTORIALES Vamos a construir una serie de objetos sobre el plano z = 0. Al principio solamente tenemos dicho plano (en verde) Antes de empezar a construir algo, empezamos
Tipos algebraicos y abstractos. Algoritmos y Estructuras de Datos I. Tipos algebraicos
Algoritmos y Estructuras de Datos I 1 cuatrimestre de 009 Departamento de Computación - FCEyN - UBA Programación funcional - clase Tipos algebraicos Tipos algebraicos y abstractos ya vimos los tipos básicos
MICROSOFT WORD. Más opciones de edición de documentos
MICROSOFT WORD Más opciones de edición de documentos Listas de viñetas Son listas no numeradas de elementos. En Word 2003 están en el menú Formato > Numeración y viñetas En Word 2010 están en la ficha
Examen escrito de Programación 1
Examen escrito de Programación 1 Escuela de Ingeniería y Arquitectura Departamento de Informática e Ingeniería de Sistemas 31 de agosto de 2012 Disponer sobre la mesa en lugar visible un documento de identificación
Programación Dinámica
, Algoritmos y Programación 6 de Abril de 2010 Alejandro Deymonnaz Definiciones Divide and Conquer Deiniciones previas Problema recursivo Un problema recursivo es un problema que se puede resolver en base
Descripción del problema:
PROBLEMA DEL AGENTE VIAJERO USANDO BÚSQUEDA TABU PROYECTO FINAL PROGRAMACIÓN CIENTIFICA ANGELES BAEZ OLVERA 4 JUNIO 2009 Descripción del problema: El problema del agente viajero o TSP como se le conoce
Materia: Matemática de Tercer Año Tema: Pendiente
Materia: Matemática de Tercer Año Tema: Pendiente Suponga que tiene un avión de juguete sobre el despegue, que se eleva 5 pies por cada 6 metros que recorre a lo largo de la horizontal. Cuál sería la pendiente
Diagramas. En computación existen básicamente dos tipos de diagramas: diagramas de entradaproceso salida
Existen varias formas de representar una serie de pasos para realizar algún proceso. La forma más común es una lista numerada como lo haces con los algoritmos; pero esos pasos también se pueden representar
Algoritmos y programas. Algoritmos y Estructuras de Datos I
Algoritmos y programas Algoritmos y Estructuras de Datos I Primer cuatrimestre de 2012 Departamento de Computación - FCEyN - UBA Programación funcional - clase 1 Funciones Simples - Recursión - Tipos de
Configuración de página e Impresión. Excel 2007
Configuración de página e Impresión Excel 2007 Configuración de página - Impresión Establecer área de impresión Un paso previo a la configuración de la página y su posterior impresión es indicarle a Excel
UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLÓGICOS ESCUELA DE COMPUTACION
UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLÓGICOS ESCUELA DE COMPUTACION CICLO: 01/ 2012 Nombre de la Practica: Lugar de Ejecución: Tiempo Estimado: MATERIA: GUIA DE LABORATORIO #10 Programación
Figura 1: Esquema de las tablas simplex de inicio y general.
RELACIONES PRIMAL-DUAL Los cambios que se hacen en el modelo original de programación lineal afectan a los elementos de la tabla óptima actual el que se tenga en el momento, que a su vez puede afectar
Carlos A. Rivera-Morales. Precálculo 2
y Carlos A. Rivera-Morales Precálculo 2 Introducción a y Notación d Tabla de Contenido 1 Definición Sumas Parciales Introducción a y Notación d Tabla de Contenido 1 Definición Sumas Parciales 2 Introducción
Recursividad... un análisis posterior. Aurelio Sanabria Introducción a la programación
Recursividad... un análisis posterior Aurelio Sanabria Introducción a la programación II semestre, 2016 Construyendo Programas Buscar soluciones a problemas (pensar en un algoritmo) requiere de una etapa
Capitulo 2. Programación Modular
Capitulo 2. Programación Modular Consiste en dividir un programa en módulos o subprogramas con el fin de hacerlo más legible y manejable. Se presenta históricamente como una evolución de la programación
Método de diferencias finitas para ecuaciones diferenciales parciales elípticas. (Parte II)
Método de diferencias finitas para ecuaciones diferenciales parciales elípticas (Parte II) Métodos numéricos para sistemas lineales Solución numérica de EDPs requiere resolver sistemas de ecuaciones lineales
El determinante de una matriz se escribe como. Para una matriz, el valor se calcula como:
Materia: Matemática de 5to Tema: Definición de Determinantes Marco Teórico Un factor determinante es un número calculado a partir de las entradas de una matriz cuadrada. Tiene muchas propiedades e interpretaciones
UNIDAD 2. writer USANDO TABLAS. CURSO: LibreOffice
UNIDAD 2 USANDO TABLAS CURSO: LibreOffice writer 1 Introducción Las tablas son muy útiles para presentar y organizar datos en informes, presentar información sobre conjuntos o crear calendarios u horarios.
TEMA 1: Algoritmos y programas
TEMA 1: Algoritmos y programas 1.1.-Introducción La razón principal para utilizar un ordenador es para resolver problemas (en el sentido más general de la palabra), o en otras palabras, procesar información
1. Para los siguientes ejercicios haga una prueba de escritorio de los fragmentos de código y responda las preguntas cuál es la salida?
1. Para los siguientes ejercicios haga una prueba de escritorio de los fragmentos de código y responda las preguntas. 1.1. cuál es la salida? 1.1.1. 1.1.2. 1.1.3. 1.1.4. 1.1.5. 1.2. Completa el cuadro
