Taller de Programación Dinámica

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Taller de Programación Dinámica"

Transcripción

1 Taller de Programación Dinámica Pablo Haramburu - Cristian Martinez Departamento de Computación Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires 14 de abril de 2014 Pablo Haramburu - Cristian Martinez (UBA) Programación Dinámica 14 de abril de / 25

2 Overview 1 Introducción 2 Template 3 Masaje de neuronas Masaje I: sub-soluciones Masaje II: función recursiva 4 The Rod-Cutting Problem Formalización del problema Estructura de una solución óptima Definición recursiva de una solución Computar valor óptimo a partir de la tabla Pablo Haramburu - Cristian Martinez (UBA) Programación Dinámica 14 de abril de / 25

3 Introducción Qué es Programación Dinámica? La esencia es Resolver problemas combinando soluciones de problemas del mismo tipo pero más chicos (sub-soluciones). Una tabla guarda tales soluciones para no recomputarlas. Pablo Haramburu - Cristian Martinez (UBA) Programación Dinámica 14 de abril de / 25

4 Introducción Soluciones más chicas... Pero por qué no usamos D&C? Pablo Haramburu - Cristian Martinez (UBA) Programación Dinámica 14 de abril de / 25

5 Introducción Soluciones más chicas... Pero por qué no usamos D&C? PD es útil en los casos en los que las sub-soluciones se solapan Pablo Haramburu - Cristian Martinez (UBA) Programación Dinámica 14 de abril de / 25

6 Introducción Soluciones más chicas... Pero por qué no usamos D&C? PD es útil en los casos en los que las sub-soluciones se solapan En este contexto D&C hace trabajo de más, computando una y otra vez la misma sub-solución Pablo Haramburu - Cristian Martinez (UBA) Programación Dinámica 14 de abril de / 25

7 Introducción Soluciones más chicas... Pero por qué no usamos D&C? PD es útil en los casos en los que las sub-soluciones se solapan En este contexto D&C hace trabajo de más, computando una y otra vez la misma sub-solución PD en cambio resuelve cada sub-problema una sola vez y usa memoria adicional para evitar tener que recomputar Pablo Haramburu - Cristian Martinez (UBA) Programación Dinámica 14 de abril de / 25

8 Introducción Soluciones más chicas... Pero por qué no usamos D&C? PD es útil en los casos en los que las sub-soluciones se solapan En este contexto D&C hace trabajo de más, computando una y otra vez la misma sub-solución PD en cambio resuelve cada sub-problema una sola vez y usa memoria adicional para evitar tener que recomputar Es un ejemplo de trade-off entre memoria y tiempo de procesamiento. Pablo Haramburu - Cristian Martinez (UBA) Programación Dinámica 14 de abril de / 25

9 Template Cómo resuelvo un problema con PD? Pablo Haramburu - Cristian Martinez (UBA) Programación Dinámica 14 de abril de / 25

10 Template Cómo resuelvo un problema con PD? Paso a paso! Pablo Haramburu - Cristian Martinez (UBA) Programación Dinámica 14 de abril de / 25

11 Template Cómo resuelvo un problema con PD? Paso a paso! 1 Formalizar el problema Pablo Haramburu - Cristian Martinez (UBA) Programación Dinámica 14 de abril de / 25

12 Template Cómo resuelvo un problema con PD? Paso a paso! 1 Formalizar el problema 2 Caracterizar la estructura de una solución óptima (optimal substructure) Pablo Haramburu - Cristian Martinez (UBA) Programación Dinámica 14 de abril de / 25

13 Template Cómo resuelvo un problema con PD? Paso a paso! 1 Formalizar el problema 2 Caracterizar la estructura de una solución óptima (optimal substructure) 3 Definir recursivamente el valor de una solución óptima Pablo Haramburu - Cristian Martinez (UBA) Programación Dinámica 14 de abril de / 25

14 Template Cómo resuelvo un problema con PD? Paso a paso! 1 Formalizar el problema 2 Caracterizar la estructura de una solución óptima (optimal substructure) 3 Definir recursivamente el valor de una solución óptima 4 Computar el valor de una solución óptima de abajo hacia arriba Pablo Haramburu - Cristian Martinez (UBA) Programación Dinámica 14 de abril de / 25

15 Template Cómo resuelvo un problema con PD? Paso a paso! 1 Formalizar el problema 2 Caracterizar la estructura de una solución óptima (optimal substructure) 3 Definir recursivamente el valor de una solución óptima 4 Computar el valor de una solución óptima de abajo hacia arriba 5 (opcional) (Re)construir una solución óptima a partir del cómputo anterior Pablo Haramburu - Cristian Martinez (UBA) Programación Dinámica 14 de abril de / 25

16 Intro Masaje de neuronas Masaje I: sub-soluciones Identificar estructura de sub-soluciones es la parte más difícil de PD. Pablo Haramburu - Cristian Martinez (UBA) Programación Dinámica 14 de abril de / 25

17 Intro Masaje de neuronas Masaje I: sub-soluciones Identificar estructura de sub-soluciones es la parte más difícil de PD. Para entrar en calor y favorecer elongación y flexibilidad: Pablo Haramburu - Cristian Martinez (UBA) Programación Dinámica 14 de abril de / 25

18 Intro Masaje de neuronas Masaje I: sub-soluciones Identificar estructura de sub-soluciones es la parte más difícil de PD. Para entrar en calor y favorecer elongación y flexibilidad: Problema Ordenar un array de enteros en orden creciente, in-place. Pablo Haramburu - Cristian Martinez (UBA) Programación Dinámica 14 de abril de / 25

19 Masaje de neuronas Trabajando... (completar la tabla) Masaje I: sub-soluciones Algoritmo Cómo divide procesa combina quicksort mergesort insertion s. selection s. heapsort Cuadro: Estrategias de división y combinación Pablo Haramburu - Cristian Martinez (UBA) Programación Dinámica 14 de abril de / 25

20 Resultado (posible) Masaje de neuronas Masaje I: sub-soluciones Algoritmo Cómo divide procesa combina quicksort menores, pivot, mayores ordena (nada) mergesort mitad, mitad ordena merge insertion s. prefijo ordenado, resto toma resto.front inserta selection s. menores ordenados, resto busca min(resto) anexa heapsort menores ordenados, resto toma min(resto) anexa Cuadro: Estrategias de división y combinación Pablo Haramburu - Cristian Martinez (UBA) Programación Dinámica 14 de abril de / 25

21 Intro Masaje de neuronas Masaje II: función recursiva En PD aparecen funciones recursivas. Pablo Haramburu - Cristian Martinez (UBA) Programación Dinámica 14 de abril de / 25

22 Intro Masaje de neuronas Masaje II: función recursiva En PD aparecen funciones recursivas. Un par de problemitas para refrescar ideas y entrar en calor (?). Pablo Haramburu - Cristian Martinez (UBA) Programación Dinámica 14 de abril de / 25

23 Masaje de neuronas Masaje II: función recursiva Problema 1 Problema 1 Dados n y k, calcular ( n k). Pablo Haramburu - Cristian Martinez (UBA) Programación Dinámica 14 de abril de / 25

24 Problema 1 (ayudas) Masaje de neuronas Masaje II: función recursiva ( ) n := k n! k!(n k)! si 0 k n... Pablo Haramburu - Cristian Martinez (UBA) Programación Dinámica 14 de abril de / 25

25 Problema 1 (ayudas) Masaje de neuronas Masaje II: función recursiva ( ) n n! := k ( ) n + 1 k + 1 k!(n k)! = si 0 k n... ( ) n n + 1 k k + 1 Pablo Haramburu - Cristian Martinez (UBA) Programación Dinámica 14 de abril de / 25

26 Problema 1 (ayudas) Masaje de neuronas Masaje II: función recursiva ( ) n n! := k k!(n k)! ( ) n + 1 = k + 1 ( ) n + 1 k + 1 = ( n k ( n k si 0 k n... ) n + 1 k + 1 ) + ( n k + 1 ) Pablo Haramburu - Cristian Martinez (UBA) Programación Dinámica 14 de abril de / 25

27 Masaje de neuronas Masaje II: función recursiva Problema 1b Problema 1b Dados n, k y m, calcular ( n k) mód m. Pablo Haramburu - Cristian Martinez (UBA) Programación Dinámica 14 de abril de / 25

28 Problema 2 Masaje de neuronas Masaje II: función recursiva Problema 2 De cuántas formas se puede cubrir un tablero de k n con dominós boca abajo? Pablo Haramburu - Cristian Martinez (UBA) Programación Dinámica 14 de abril de / 25

29 Tips Masaje de neuronas Masaje II: función recursiva Para tener en cuenta: Aprovechamos solapamiento. Pablo Haramburu - Cristian Martinez (UBA) Programación Dinámica 14 de abril de / 25

30 Masaje de neuronas Masaje II: función recursiva Tips Para tener en cuenta: Aprovechamos solapamiento. Tener un poco de cuidado con (y no olvidarse de) los casos base. Pablo Haramburu - Cristian Martinez (UBA) Programación Dinámica 14 de abril de / 25

31 Masaje de neuronas Masaje II: función recursiva Tips Para tener en cuenta: Aprovechamos solapamiento. Tener un poco de cuidado con (y no olvidarse de) los casos base. Buscar un esquema para calcular bottom-up. Por filas, columnas, diagonales, cuadrantes... Prefijos, sufijos, subcadenas, hacia adelante... Pablo Haramburu - Cristian Martinez (UBA) Programación Dinámica 14 de abril de / 25

32 Masaje de neuronas Masaje II: función recursiva Tips Para tener en cuenta: Aprovechamos solapamiento. Tener un poco de cuidado con (y no olvidarse de) los casos base. Buscar un esquema para calcular bottom-up. Por filas, columnas, diagonales, cuadrantes... Prefijos, sufijos, subcadenas, hacia adelante... Para el parcial: recuerden demostrar que calculan cada celda de la tabla antes de usarla (y no después ;-) ). Pablo Haramburu - Cristian Martinez (UBA) Programación Dinámica 14 de abril de / 25

33 The Rod-Cutting Problem The rod-cutting problem Enunciado Dada una varilla de cierta longitud (entera) y una tabla de precios para cada posible tamaño de corte, determinar la ganancia máxima que se puede obtener al cortar la varilla y vender las piezas. (Notar que una solución óptima podría no realizar ningún corte). Pablo Haramburu - Cristian Martinez (UBA) Programación Dinámica 14 de abril de / 25

34 The Rod-Cutting Problem Paso 1: Formalizar el problema Formalización del problema Empecemos por extraer del enunciado la definición formal del problema: Pablo Haramburu - Cristian Martinez (UBA) Programación Dinámica 14 de abril de / 25

35 The Rod-Cutting Problem Formalización del problema Paso 1: Formalizar el problema Empecemos por extraer del enunciado la definición formal del problema: Input longitud de la varilla: n N precio de los cortes: p i con i = 1,..., n Pablo Haramburu - Cristian Martinez (UBA) Programación Dinámica 14 de abril de / 25

36 The Rod-Cutting Problem Formalización del problema Paso 1: Formalizar el problema Empecemos por extraer del enunciado la definición formal del problema: Input longitud de la varilla: n N precio de los cortes: p i con i = 1,..., n Output cortes: n = v 1 + v 2 + v v k ganancia: g p,n = p v1 + p v2 + p v3 + + p vk Pablo Haramburu - Cristian Martinez (UBA) Programación Dinámica 14 de abril de / 25

37 The Rod-Cutting Problem Estructura de una solución óptima Paso 2: Estructura de una solución óptima Pablo Haramburu - Cristian Martinez (UBA) Programación Dinámica 14 de abril de / 25

38 The Rod-Cutting Problem Estructura de una solución óptima Paso 2: Estructura de una solución óptima Si una solución óptima corta la varilla en k piezas, entonces obtenemos la descomposición: v 1, v 2, v 3,..., v k cuya ganancia es: g p,n = p v1 + p v2 + p v3 + + p vk Pablo Haramburu - Cristian Martinez (UBA) Programación Dinámica 14 de abril de / 25

39 The Rod-Cutting Problem Estructura de una solución óptima Paso 2: Estructura de una solución óptima Si una solución óptima corta la varilla en k piezas, entonces obtenemos la descomposición: v 1, v 2, v 3,..., v k cuya ganancia es: g p,n = p v1 + p v2 + p v3 + + p vk Cuáles son las sub-soluciones?! Pablo Haramburu - Cristian Martinez (UBA) Programación Dinámica 14 de abril de / 25

40 The Rod-Cutting Problem Estructura de una solución óptima Paso 2: Estructura de una solución óptima Si una solución óptima corta la varilla en k piezas, entonces obtenemos la descomposición: v 1, v 2, v 3,..., v k cuya ganancia es: g p,n = p v1 + p v2 + p v3 + + p vk Cuáles son las sub-soluciones?! Es posible que una sub-solución no sea óptima? Pablo Haramburu - Cristian Martinez (UBA) Programación Dinámica 14 de abril de / 25

41 The Rod-Cutting Problem Paso 3: Función recursiva Definición recursiva de una solución Pablo Haramburu - Cristian Martinez (UBA) Programación Dinámica 14 de abril de / 25

42 The Rod-Cutting Problem Paso 3: Función recursiva Definición recursiva de una solución En el paso anterior verificamos que el problema cumple el principio de optimalidad: una solución óptima está compuesta de sub-soluciones óptimas. Pablo Haramburu - Cristian Martinez (UBA) Programación Dinámica 14 de abril de / 25

43 The Rod-Cutting Problem Paso 3: Función recursiva Definición recursiva de una solución En el paso anterior verificamos que el problema cumple el principio de optimalidad: una solución óptima está compuesta de sub-soluciones óptimas. Ahora, la supuesta función recursiva, cómo encuentra una solución óptima a partir de sub-soluciones óptimas?? Pablo Haramburu - Cristian Martinez (UBA) Programación Dinámica 14 de abril de / 25

44 The Rod-Cutting Problem Paso 3: Función recursiva Definición recursiva de una solución En el paso anterior verificamos que el problema cumple el principio de optimalidad: una solución óptima está compuesta de sub-soluciones óptimas. Ahora, la supuesta función recursiva, cómo encuentra una solución óptima a partir de sub-soluciones óptimas?? busca la solución óptima! Pablo Haramburu - Cristian Martinez (UBA) Programación Dinámica 14 de abril de / 25

45 The Rod-Cutting Problem El que busca encuentra Definición recursiva de una solución Cualquiera de las siguientes funciones recursivas construyen una solución óptima a partir de sub-soluciones óptimas. Pablo Haramburu - Cristian Martinez (UBA) Programación Dinámica 14 de abril de / 25

46 The Rod-Cutting Problem El que busca encuentra Definición recursiva de una solución Cualquiera de las siguientes funciones recursivas construyen una solución óptima a partir de sub-soluciones óptimas. versión 1 { 0 if n = 0 f n = max(p n, f 1 + f n 1, f 2 + f n 2,..., f n 1 + f 1 ) if n 0. Pablo Haramburu - Cristian Martinez (UBA) Programación Dinámica 14 de abril de / 25

47 The Rod-Cutting Problem El que busca encuentra Definición recursiva de una solución Cualquiera de las siguientes funciones recursivas construyen una solución óptima a partir de sub-soluciones óptimas. versión 1 { 0 if n = 0 f n = max(p n, f 1 + f n 1, f 2 + f n 2,..., f n 1 + f 1 ) if n 0. versión 2 (más simple) { 0 if n = 0 f n = max(p 1 + f n 1, p 2 + f n 2,..., p n + f 0 ) if n 0. Pablo Haramburu - Cristian Martinez (UBA) Programación Dinámica 14 de abril de / 25

48 The Rod-Cutting Problem Definición recursiva de una solución Solución - Pseudocódigo CUT-ROD(p, n) 1 if n == 0 2 return 0 3 q = 4 for i = 1 to n 5 q = max(q, p[i] + COT-ROD(p, n i)) 6 return q Pablo Haramburu - Cristian Martinez (UBA) Programación Dinámica 14 de abril de / 25

49 The Rod-Cutting Problem Se nos está escapando algo? Definición recursiva de una solución Que complejidad tiene ese algoritmo? 1 T (0) = 1 2 T (n) = 1 + n 1 j=0 T (j) Pablo Haramburu - Cristian Martinez (UBA) Programación Dinámica 14 de abril de / 25

50 The Rod-Cutting Problem Se nos está escapando algo? Definición recursiva de una solución Que complejidad tiene ese algoritmo? 1 T (0) = 1 2 T (n) = 1 + n 1 j=0 T (j) T (0) = 1 Pablo Haramburu - Cristian Martinez (UBA) Programación Dinámica 14 de abril de / 25

51 The Rod-Cutting Problem Se nos está escapando algo? Definición recursiva de una solución Que complejidad tiene ese algoritmo? 1 T (0) = 1 2 T (n) = 1 + n 1 j=0 T (j) T (0) = 1 T (1) = j=0 T (j) = 1 + T (0) = 2 Pablo Haramburu - Cristian Martinez (UBA) Programación Dinámica 14 de abril de / 25

52 The Rod-Cutting Problem Se nos está escapando algo? Definición recursiva de una solución Que complejidad tiene ese algoritmo? 1 T (0) = 1 2 T (n) = 1 + n 1 j=0 T (j) T (0) = 1 T (1) = j=0 T (j) = 1 + T (0) = 2 T (2) = j=0 T (j) = 1 + T (0) + T (1) = = 4 Pablo Haramburu - Cristian Martinez (UBA) Programación Dinámica 14 de abril de / 25

53 The Rod-Cutting Problem Se nos está escapando algo? Definición recursiva de una solución Que complejidad tiene ese algoritmo? 1 T (0) = 1 2 T (n) = 1 + n 1 j=0 T (j) T (0) = 1 T (1) = j=0 T (j) = 1 + T (0) = 2 T (2) = j=0 T (j) = 1 + T (0) + T (1) = = 4 T (3) = j=0 T (j) = 1 + T (0) + T (1) + T (2) = = 8... Pablo Haramburu - Cristian Martinez (UBA) Programación Dinámica 14 de abril de / 25

54 The Rod-Cutting Problem Se nos está escapando algo? Definición recursiva de una solución Que complejidad tiene ese algoritmo? 1 T (0) = 1 2 T (n) = 1 + n 1 j=0 T (j) T (0) = 1 T (1) = j=0 T (j) = 1 + T (0) = 2 T (2) = j=0 T (j) = 1 + T (0) + T (1) = = 4 T (3) = j=0 T (j) = 1 + T (0) + T (1) + T (2) = = 8... Podemos probar fácilmente por inducción que la complejidad es Θ(2 n ) Pablo Haramburu - Cristian Martinez (UBA) Programación Dinámica 14 de abril de / 25

55 Hay tabla! The Rod-Cutting Problem Definición recursiva de una solución Pablo Haramburu - Cristian Martinez (UBA) Programación Dinámica 14 de abril de / 25

56 Hay tabla! The Rod-Cutting Problem Definición recursiva de una solución Por supuesto, si vamos a implementar una solución con PD no debemos olvidar almacenar las sub-soluciones en una tabla! Pablo Haramburu - Cristian Martinez (UBA) Programación Dinámica 14 de abril de / 25

57 Paso 4: Bottom-up The Rod-Cutting Problem Computar valor óptimo a partir de la tabla Pablo Haramburu - Cristian Martinez (UBA) Programación Dinámica 14 de abril de / 25

58 Paso 4: Bottom-up The Rod-Cutting Problem Computar valor óptimo a partir de la tabla Manos a la obra! Pablo Haramburu - Cristian Martinez (UBA) Programación Dinámica 14 de abril de / 25

59 Bibliografía The Rod-Cutting Problem Computar valor óptimo a partir de la tabla Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein (2009) Introduction to Algorithms, Third Edition. Gilles Brassard, Paul Bratley (1995) Fundamentals of Algorithmics. Pablo Haramburu - Cristian Martinez (UBA) Programación Dinámica 14 de abril de / 25

60 The Rod-Cutting Problem Computar valor óptimo a partir de la tabla Fin Pablo Haramburu - Cristian Martinez (UBA) Programación Dinámica 14 de abril de / 25

Programación Dinámica

Programación Dinámica Programación Dinámica Agustín Santiago Gutiérrez Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires Septiembre 2014 Agustín Gutiérrez (UBA) Programación Dinámica Septiembre 2014 1 / 10

Más detalles

Programación dinámica

Programación dinámica 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

Más detalles

Resolviendo Recurrencias

Resolviendo Recurrencias Resolviendo Recurrencias Mauro Jaskelioff 16/03/2015 Análisis de Algoritmos Queremos poder evaluar la performance de algoritmos. Para esto utilizamos Notación Asintótica Modelo de Costo basado en Lenguaje

Más detalles

Programación dinámica: un último ejemplo

Programación dinámica: un último ejemplo Programación dinámica: un último ejemplo Dado: matrices A m n, B n r, C r s de números enteros Para calcular A m n B n r el algoritmo usual realiza m n r multiplicaciones de números enteros Cuántas multiplicaciones

Más detalles

Taller de Programación Dinámica. Definiciones. Caso base. Laboratorio de Algoritmos y Estructuras de Datos III. 10 de Septiembre de 2010

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

Más detalles

COMPUTABILIDAD Y COMPLEJIDAD

COMPUTABILIDAD Y COMPLEJIDAD COMPUTABILIDAD Y COMPLEJIDAD Año 2017 Carrera: Licenciatura en Informática Plan 2007-2012-2015 Año: 3 Duración: Semestral Profesor: Fernando G. Tinetti FUNDAMENTACION: Se presentan las ideas básicas de

Más detalles

COMPUTABILIDAD Y COMPLEJIDAD

COMPUTABILIDAD Y COMPLEJIDAD COMPUTABILIDAD Y COMPLEJIDAD Año 2015 Carrera: Licenciatura en Informática Plan 2003/07-2012-2015 Año: 3 Duración: Semestral Profesor: Fernando G. Tinetti FUNDAMENTACION: Se presentan las ideas básicas

Más detalles

Programación Dinámica 1

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

Más detalles

Lenguajes III Análisis y Diseño de Algoritmos

Lenguajes III Análisis y Diseño de Algoritmos Lenguajes III Análisis y Diseño de Algoritmos Andrés Becerra Sandoval Código: CC060 Créditos: 3 Prerequisitos: Desarrollo Formal de programas Naturaleza del Curso El curso argumenta la necesidad de considerar

Más detalles

Parte de Algoritmos de la asignatura de Programación Master de Bioinformática. Divide y vencerás

Parte de Algoritmos de la asignatura de Programación Master de Bioinformática. Divide y vencerás Parte de Algoritmos de la asignatura de Programación Master de Bioinformática Divide y vencerás Web asignatura: http://dis.um.es/~domingo/algbio.html E-mail profesor: domingo@um.es Transparencias preparadas

Más detalles

Algoritmos y Complejidad

Algoritmos y Complejidad Algoritmos y Complejidad Curso 2017 Pablo R. Fillottrani Depto. Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Primer Cuatrimestre 2017 Resumen Objetivos Cronograma Cursado Recursos

Más detalles

Programación Dinámica

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

Más detalles

Estructura de datos y de la información Boletín de problemas - Tema 9

Estructura de datos y de la información Boletín de problemas - Tema 9 Estructura de datos y de la información Boletín de problemas - Tema 9 1. Dada la siguiente función recursiva: void F(char c) { if (( A

Más detalles

Ordenamiento (Sorting)

Ordenamiento (Sorting) Ordenamiento (Sorting) El problema del ordenamiento Ordenar: arreglo[α] arreglo[α], donde α es un tipo tal que está definida la relación < α Uno de los problemas más clásicos, útiles y estudiados de la

Más detalles

ACTIVIDAD CURRICULAR DE FORMACIÓN

ACTIVIDAD CURRICULAR DE FORMACIÓN ACTIVIDAD CURRICULAR DE FORMACIÓN Facultad o Instituto : Ciencias de la Ingeniería Carrera : Ingeniería Civil Informática I. IDENTIFICACIÓN DE LA ACTIVIDAD CURRICULAR Nombre : Diseño y Análisis de Algoritmos

Más detalles

ESCUELA SUPERIOR POLITÉCNICA DEL LITORAL FACULTAD DE INGENIERÍA EN ELECTRICIDAD Y COMPUTACIÓN SYLLABUS DEL CURSO Análisis de Algoritmos

ESCUELA SUPERIOR POLITÉCNICA DEL LITORAL FACULTAD DE INGENIERÍA EN ELECTRICIDAD Y COMPUTACIÓN SYLLABUS DEL CURSO Análisis de Algoritmos 1. CÓDIGO Y NÚMERO DE CRÉDITOS ESCUELA SUPERIOR POLITÉCNICA DEL LITORAL FACULTAD DE INGENIERÍA EN ELECTRICIDAD Y COMPUTACIÓN SYLLABUS DEL CURSO Análisis de Algoritmos CÓDIGO FIEC04366 NÚMERO DE CRÉDITOS:

Más detalles

Multiplicación de matrices simétricas

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 =

Más detalles

Ordenamiento - Sorting - Sortin

Ordenamiento - Sorting - Sortin Ordenamiento - Sorting - Sortin Christian Russo Departamento de Computación, Facultad de Ciencias Exactas y Naturales, Universidad de Buenos Aires 13 de Mayo de 2016 Algunas aclaraciones Este tipo de ejercicios

Más detalles

DOCTORADO EN INGENIERÍA DEL LENGUAJE Y DEL CONOCIMIENTO. Área: Ingeniería del Lenguaje y del Conocimiento

DOCTORADO EN INGENIERÍA DEL LENGUAJE Y DEL CONOCIMIENTO. Área: Ingeniería del Lenguaje y del Conocimiento DOCTORADO EN INGENIERÍA DEL LENGUAJE Y DEL CONOCIMIENTO Área: Ingeniería del Lenguaje y del Conocimiento Programa de Asignatura: Introducción al Diseño de Algoritmos y sus Aplicaciones Código: DILC10200

Más detalles

Estructuras de Datos y Algoritmos. Curso 2009/2010. Tema 3: Divide y Vencerás

Estructuras de Datos y Algoritmos. Curso 2009/2010. Tema 3: Divide y Vencerás Estructuras de Datos y Algoritmos Facultad de Informática Universidad Politécnica de Valencia Curso 2009/2010 Tema 3: Divide y Vencerás FI UPV: Curso 2009/2010 TEMA 3. Divide y Vencerás Objetivos Estudio

Más detalles

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

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

Más detalles

Programación II Práctica 03: Recursividad Versión del 10/08/2016

Programación II Práctica 03: Recursividad Versión del 10/08/2016 Programación II Práctica 03: Recursividad Versión del 10/08/2016 Como vimos en clase un algoritmo recursivo es un algoritmo que expresa la solución de un problema en términos de una llamada a sí mismo.

Más detalles

Tema 9. Recursividad

Tema 9. Recursividad Tema 9. Recursividad http://aulavirtual.uji.es José M. Badía, Begoña Martínez, Antonio Morales y José M. Sanchiz {badia, bmartine, morales, sanchiz@icc.uji.es Estructuras de datos y de la información Universitat

Más detalles

Geometría. Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires. Training Camp 2012

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

Más detalles

Programación Dinámica

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

Más detalles

Algoritmos y Estructuras de Datos Curso 06/07. Ejercicios

Algoritmos y Estructuras de Datos Curso 06/07. Ejercicios 6.1.(Clase) Un programa que utiliza la técnica divide y vencerás, divide un problema de tamaño n en a subproblemas de tamaño n/b. El tiempo g(n) de la resolución directa (caso base) se considerará constante.

Más detalles

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

greedy (adj): avaricioso, voraz, ávido, codicioso, glotón Algoritmos Greedy Análisis y Diseño de Algoritmos Algoritmos Greedy Características generales Elementos de un algoritmo greedy Esquema de un algoritmo greedy s Almacenamiento óptimo en cintas Problema

Más detalles

MSC. Oscar Alberto Chávez Bosquez LIA. Ericsson Saldívar Correa Robles. Fecha de elaboración: 28 de Mayo de 2010 Fecha de última actualización:

MSC. Oscar Alberto Chávez Bosquez LIA. Ericsson Saldívar Correa Robles. Fecha de elaboración: 28 de Mayo de 2010 Fecha de última actualización: PROGRAMA DE ESTUDIO Algoritmos avanzados Universidad Juárez Autónoma de Tabasco Programa Educativo: Licenciatura en Informática Administrativa Área de Formación : Integral Profesional Horas teóricas: 2

Más detalles

Programa de teoría. Algoritmos y Estructuras de Datos II. 3. Algoritmos voraces. 1. Análisis de algoritmos 2. Divide y vencerás

Programa de teoría. Algoritmos y Estructuras de Datos II. 3. Algoritmos voraces. 1. Análisis de algoritmos 2. Divide y vencerás Programa de teoría Algoritmos y Estructuras de Datos II 1. Análisis de algoritmos 2. Divide y vencerás 3. Algoritmos voraces 4. Programación dinámica 5. Backtracking 6. Ramificación y poda A.E.D. II 1

Más detalles

Estructura de Datos Árboles Árboles 2-3

Estructura de Datos Árboles Árboles 2-3 Estructura de Datos Árboles 1-2-3 Árboles 2-3 Prof.: Mauricio Solar Prof.: Lorna Figueroa Primer Semestre, 2010 1 Arboles 1-2-3 Árbol n-ario ordenado de orden 3 Cada nodo tiene 1 ó 2 elementos 75 Nodo

Más detalles

TEMA 1: DIVIDE Y VENCERÁS

TEMA 1: DIVIDE Y VENCERÁS TEMA 1: DIVIDE Y VENCERÁS l OBJETIVOS: n Estudio de la estrategia de diseño de algoritmos (recursivos) Divide y Vencerás n Estudio de los algoritmos de Ordenación Rápida: MergeSort y QuickSort n Estudio

Más detalles

PARTE II: ALGORÍTMICA

PARTE II: ALGORÍTMICA Programa de teoría Parte I. Estructuras de Datos.. Abstracciones y especificaciones.. Conjuntos y diccionarios.. Representación de conjuntos mediante árboles. 4. Grafos. Parte II. Algorítmica.. Análisis

Más detalles

Algoritmos para strings. Bioinformática Elvira Mayordomo

Algoritmos para strings. Bioinformática Elvira Mayordomo Algoritmos para strings Bioinformática 12-2-16 Elvira Mayordomo Hoy Notación básica para strings El problema de string matching: String matching automata Boyer-Moore Árboles de sufijos (con otras aplicaciones)

Más detalles

Guía práctica de estudio 07. Estructuras de datos lineales: Lista simple y lista circular.

Guía práctica de estudio 07. Estructuras de datos lineales: Lista simple y lista circular. Guía práctica de estudio 07. Estructuras de datos lineales: Lista simple y lista circular. Elaborado por: M.C. Edgar E. García Cano Ing. Jorge A. Solano Gálvez Autorizado por: M.C. Alejandro Velázquez

Más detalles

Análisis y Diseño de Algoritmos

Análisis y Diseño de Algoritmos Análisis y Diseño de Algoritmos Ordenamiento en Tiempo Lineal DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE Ordenamiento por Comparación (Comparison Sorts) Tiempo de ejecución HeapSort y

Más detalles

Algoritmos de Ordenamiento

Algoritmos de Ordenamiento Algoritmos de Ordenamiento mat-151 Alonso Ramírez Manzanares Computación y Algoritmos 12.04 Algoritmos de ordenamiento Entrada: secuencia de números. Salida: permutación

Más detalles

Planificaciones Algoritmos y Programación II. Docente responsable: JUAREZ ANDRES ALBERTO. 1 de 9

Planificaciones Algoritmos y Programación II. Docente responsable: JUAREZ ANDRES ALBERTO. 1 de 9 Planificaciones 7541 - Algoritmos y Programación II Docente responsable: JUAREZ ANDRES ALBERTO 1 9 OBJETIVOS Introducir los conceptos POO, diseño algoritmos y estructuras datos, utilizando nociones eficiencia

Más detalles

IN34A - Optimización

IN34A - Optimización IN34A - Optimización Complejidad Leonardo López H. lelopez@ing.uchile.cl Primavera 2008 1 / 33 Contenidos Problemas y Procedimientos de solución Problemas de optimización v/s problemas de decisión Métodos,

Más detalles

UNIVERSIDAD AUTONOMA DE BAJA CALIFORNIA

UNIVERSIDAD AUTONOMA DE BAJA CALIFORNIA UNIVERSIDAD AUTONOMA DE BAJA CALIFORNIA COORDINACIÓN DE FORMACIÓN BÁSICA COORDINACIÓN DE FORMACIÓN PROFESINAL Y VINCULACIÓN UNIVERSITARIA PROGRAMA DE UNIDADES DE APRENDIZAJE POR COMPETENCIAS I. DATOS DE

Más detalles

Programación Dinámica

Programación Dinámica Leopoldo Taravilse Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires Training Camp 2012 Leopoldo Taravilse (UBA) TC 2012 1 / 34 Contenidos 1 Recursión Principio de Optimalidad Ejemplos

Más detalles

Análisis y Diseño de Algoritmos (AyDA) Isabel Besembel Carrera

Análisis y Diseño de Algoritmos (AyDA) Isabel Besembel Carrera Análisis y Diseño de Algoritmos (AyDA) Isabel Besembel Carrera RECURSIÓN La recursión es una técnica fundamental en el diseño de algoritmos, que está basada en la solución de versiones más pequeñas del

Más detalles

Teoría de Algoritmos 2 o curso de Ingeniería Informática

Teoría de Algoritmos 2 o curso de Ingeniería Informática Teoría de Algoritmos 2 o curso de Ingeniería Informática José Luis Verdegay Departamento de Ciencias de la Computación e Inteligencia Artificial http://decsai.ugr.es/ verdegay Horarios y duración de la

Más detalles

Análisis de Algoritmos

Análisis de Algoritmos Análisis de Algoritmos IIC1253 IIC1253 Análisis de Algoritmos 1 / 36 Complejidad de un algoritmo Un algoritmo A puede ser pensado como una función A : {0,1} {0,1} Qué tan general es esta representación?

Más detalles

Análisis de Algoritmos

Análisis de Algoritmos Análisis de Algoritmos IIC1253 IIC1253 Análisis de Algoritmos 1 / 36 Complejidad de un algoritmo Un algoritmo A puede ser pensado como una función A : {0,1} {0,1} Qué tan general es esta representación?

Más detalles

Tema: Programación Dinámica.

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

Más detalles

Análisis de algoritmos

Análisis de algoritmos Tema 09: Programación dinámica M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom 1 Contenido Introducción Programación dinámica Enfoques de

Más detalles

Programa de teoría. Algoritmos y Estructuras de Datos II. 2. Divide y vencerás. 1. Análisis de algoritmos

Programa de teoría. Algoritmos y Estructuras de Datos II. 2. Divide y vencerás. 1. Análisis de algoritmos Programa de teoría Algoritmos y Estructuras de Datos II 1. Análisis de algoritmos 2. Divide y vencerás 3. Algoritmos voraces 4. Programación dinámica 5. Backtracking 6. Ramificación y poda A.E.D. II 1

Más detalles

Esquema de Dividir y Vencer

Esquema de Dividir y Vencer Esquema de Dividir y Vencer Amalia Duch Barcelona, marzo de 2006 Índice 1. Esquema general 1 2. Búsqueda binaria (binary search) 2 3. Ordenación por fusión (merge sort) 2 4. Ordenación rápida (quick sort)

Más detalles

Programación dinámica

Programación dinámica Parte de Algoritmos de la asignatura de Programación Master de Bioinformática Programación dinámica Web asignatura: http://dis.um.es/~domingo/algbio.html E-mail profesor: domingo@um.es Transparencias preparadas

Más detalles

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

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,

Más detalles

Recurrencias y cómo resolverlas

Recurrencias y cómo resolverlas Recurrencias y cómo resolverlas Algoritmos y Estructuras de Datos II Departamento de Computación, Facultad de Ciencias Exactas y Naturales, Universidad de Buenos Aires 8 de septiembre de 2017 Algo2 (DC-FCEyN-UBA)

Más detalles

Practica 04: Soluciones Recursivas

Practica 04: Soluciones Recursivas M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom Estructuras de datos (Prof. Edgardo A. Franco) 1 Contenido Problema Descripción Observaciones

Más detalles

Benemérita Universidad Autónoma de Puebla Vicerrectoría de Docencia Dirección General de Educación Superior Facultad de Ciencias de la Computación.

Benemérita Universidad Autónoma de Puebla Vicerrectoría de Docencia Dirección General de Educación Superior Facultad de Ciencias de la Computación. PLAN DE ESTUDIOS (PE): Licenciatura en Ciencias de la Computación Ingeniería en Ciencias de la Computación ÁREA: Integración Disciplinaria ASIGNATURA: Análisis y Diseño de Algoritmos CÓDIGO: IDCO-202 CRÉDITOS:

Más detalles

UNIVERSIDAD NACIONAL AUTÓNOMA LICENCIADO EN CIENCIAS DE LA COMPUTACIÓN

UNIVERSIDAD NACIONAL AUTÓNOMA LICENCIADO EN CIENCIAS DE LA COMPUTACIÓN UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO LICENCIADO EN CIENCIAS DE LA COMPUTACIÓN Programa de la asignatura: Estructuras de Datos Clave: Semestre: Campo de conocimiento: Área de formación: * 2 Ciencias

Más detalles

Organización y Gestión de Archivos

Organización y Gestión de Archivos Organización y Gestión de Archivos Año académico: 2009-10 Estudios: Curso: 2 o Carácter: TRONCAL Descriptores: Profesor responsable: Area: Departamento: Centro: Escuela Politécnica Superior INGENIERÍA

Más detalles

Algoritmos de Búsqueda

Algoritmos de Búsqueda Introducción a la Computación Algoritmos de Búsqueda Esteban E. Mocskos (emocskos@dc.uba.ar) Facultad de Ciencias Exactas y Naturales, UBA CONICET 11/10/2017 E. Mocskos (UBA CONICET) Algoritmos de Búsqueda

Más detalles

Algoritmo de Euclides

Algoritmo de Euclides Algoritmo de Euclides Melanie Sclar Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires AED III Melanie Sclar (UBA) Algoritmo de Euclides AED III 1 / 21 Ejercicio 2.8 de la práctica Ejercicio

Más detalles

Introducción a las Ciencias de la Computación

Introducción a las Ciencias de la Computación Introducción a las Ciencias de la Computación Colaboratorio de Computación Avanzada (CNCA) 2015 1 / 22 Contenidos 1 Computación e Informática Caracterización Áreas relacionadas 2 Antecedentes Orígenes

Más detalles

Programación II. Mario Aldea Rivas Programación II 13/04/11 1. Mario Aldea Rivas Programación II 13/04/11 2

Programación II. Mario Aldea Rivas Programación II 13/04/11 1. Mario Aldea Rivas Programación II 13/04/11 2 Programación II Bloque temático 1. Lenguajes de programación Bloque temático 2. Metodología de programación Bloque temático 3. Esquemas algorítmicos Tema 4. Introducción a los Algoritmos Tema 5. Algoritmos

Más detalles

Práctica 2 - Ejercicio 2.8

Práctica 2 - Ejercicio 2.8 Algoritmos y Estructura de Datos III Facultad de Ciencias Exactas y Naturales, Universidad de Buenos Aires 27 de Marzo de 2013 2.8 - Euclides 2.8. a. Escribir el algoritmo de Euclides para calcular el

Más detalles

Programación recursiva en Prolog

Programación recursiva en Prolog Programación recursiva en Prolog Curso 2002/03, Fecha:14/12/2002 Enunciado 1 (naturales) El siguiente predicado define la suma de números naturales representados mediante la constante 0 y la función siguiente

Más detalles

Programación II. Mario Aldea Rivas Programación II 05/05/11 1

Programación II. Mario Aldea Rivas Programación II 05/05/11 1 Programación II Bloque temático 1. Lenguajes de programación Bloque temático 2. Metodología de programación Bloque temático 3. Esquemas algorítmicos Tema 4. Introducción a los Algoritmos Tema 5. Algoritmos

Más detalles

Algoritmos Iterativos de Búsqueda y Ordenación y sus tiempos

Algoritmos Iterativos de Búsqueda y Ordenación y sus tiempos Estructura de Datos y Algoritmos Algoritmos Iterativos de Búsqueda y Ordenación y sus tiempos 1. Algorimos de ordenación Discutiremos el problema de ordenar un array de elementos. A los efectos de simplificar

Más detalles

Guía práctica de estudio 3

Guía práctica de estudio 3 Guía práctica de estudio 3 Algoritmos de ordenamiento parte 3 Elaborado por: Revisión: Ing. Laura Sandoval Montaño Facultad de Ingeniería U.N.A.M. Guía práctica de estudio 3 Estructura de datos y Algoritmos

Más detalles

Análisis y Diseño de Algoritmos

Análisis y Diseño de Algoritmos Análisis y Diseño de Algoritmos Introducción: El Rol de los Algoritmos en Computación DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE Temario 2 1. Introducción 2. Notación Asintótica 3. Recurrencias

Más detalles

Tema: Programación Dinámica.

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

Más detalles

Análisis de Algoritmos Primer Problemario Prof. Miguel A. Pizaña 22 de Mayo de 2007

Análisis de Algoritmos Primer Problemario Prof. Miguel A. Pizaña 22 de Mayo de 2007 Análisis de Algoritmos Primer Problemario Prof. Miguel A. Pizaña 22 de Mayo de 2007 I Tareas 1. Dudar de todo, al menos una vez en la vida. 2. Que dice la paradoja de Zenón de Elea? Qué significa paradoja?

Más detalles

UNIVERSIDAD TECNOLOGICA DE PEREIRA FACULTAD DE INGENIERIAS

UNIVERSIDAD TECNOLOGICA DE PEREIRA FACULTAD DE INGENIERIAS Asignatura Código Estructura de Datos IS34 Créditos 4 Intensidad semanal Requisitos 6 Horas IS284 Justificación Objetivo general Objetivos Específicos El propósito es la continuación del estudio de los

Más detalles

Programación II Práctica 02a: Tipos Abstractos de Datos (TAD) Básicos

Programación II Práctica 02a: Tipos Abstractos de Datos (TAD) Básicos Introducción Programación II Práctica 02a: Tipos Abstractos de Datos (TAD) Básicos Versión del 01/08/2015 En las clases teóricas se estudiaron las ventajas que tienen los TADs. A continuación las repasamos:

Más detalles

Introducción a los Algoritmos

Introducción a los Algoritmos Introducción a los Algoritmos Andrés Becerra Sandoval 30 de julio de 2007 Resumen Haremos una introducción a los principales temas de todo el curso de una forma panorámica, es decir, sin hacer énfasis

Más detalles

Programación Dinámica

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

Más detalles

Backtracking: Esquema General

Backtracking: Esquema General Backtracking Idea: Técnica para recorrer sistemáticamente todas las posibles configuraciones de un espacio asociado a soluciones candidatos de un problema computacional. Se puede pensar este espacio tiene

Más detalles

ANÁLISIS Y DISEÑO DE ALGORITMOS. PRACTICAS

ANÁLISIS Y DISEÑO DE ALGORITMOS. PRACTICAS ANÁLISIS Y DISEÑO DE ALGORITMOS. PRACTICAS 2004-2005 PRACTICA 1: MEDICIÓN DEL TIEMPO. ALGORITMOS DE ORDENACIÓN Crear un conjunto de funciones que permitan la medición del tiempo de ejecución de los programas,

Más detalles

Análisis de algoritmos

Análisis de algoritmos Tema 02: Complejidad de los algoritmos M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom 1 Contenido Algoritmo Algoritmo vs. Proceso Computacional

Más detalles

Solución - práctico 10

Solución - práctico 10 Solución - práctico 10 Complejidad Ejercicio 1 a) Una implementación del algoritmo es la siguiente: /* Procedimiento que se encarga de realizar la unión de los dos conjuntos * ordenados der1 e izq1 son

Más detalles

Planificaciones Teoría de Algoritmos I. Docente responsable: BARRIOS FEDERICO LUIS. 1 de 5

Planificaciones Teoría de Algoritmos I. Docente responsable: BARRIOS FEDERICO LUIS. 1 de 5 Planificaciones 7529 - Teoría de Algoritmos I Docente responsable: BARRIOS FEDERICO LUIS 1 de 5 OBJETIVOS Que el alumno - adquiera las herramientas teóricas y prácticas para la evaluación del costo temporal

Más detalles

Análisis de algoritmos

Análisis de algoritmos Tema 08: Divide y vencerás (DyV) M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom 1 Contenido Introducción Divide y vencerás Observaciones

Más detalles

Tema 3. Análisis de costes

Tema 3. Análisis de costes Tema 3. Análisis de costes http://aulavirtual.uji.es José M. Badía, Begoña Martínez, Antonio Morales y José M. Sanchiz {badia, bmartine, morales, sanchiz}@icc.uji.es Estructuras de datos y de la información

Más detalles

Programación Dinámica

Programación Dinámica Programación Dinámica La técnica de programación dinámica se aplica en general a problemas de optimización. l igual que "dividir y conquistar", el problema es dividido en subproblemas de tamaños menores

Más detalles

Introducción al Análisis y Diseño de Algoritmos

Introducción al Análisis y Diseño de Algoritmos Dr. Eduardo A. RODRÍGUEZ TELLO CINVESTAV-Tamaulipas 10 de enero de 2018 Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Introducción al ADA 10 de enero de 2018 1 / 22 1 Introducción al Análisis y Diseño de Algoritmos

Más detalles

Guía práctica de estudio 08: Estructuras de datos lineales: Lista doblemente ligada y doblemente ligada circular.

Guía práctica de estudio 08: Estructuras de datos lineales: Lista doblemente ligada y doblemente ligada circular. Guía práctica de estudio 08: Estructuras de datos lineales: Lista doblemente ligada y doblemente ligada circular. Elaborado por: M.C. Edgar E. García Cano Ing. Jorge A. Solano Gálvez Autorizado por: M.C.

Más detalles

Planificaciones Teoría de Algoritmos I. Docente responsable: WACHENCHAUZER ROSA GRACIELA. 1 de 5

Planificaciones Teoría de Algoritmos I. Docente responsable: WACHENCHAUZER ROSA GRACIELA. 1 de 5 Planificaciones 7529 - Teoría de Algoritmos I Docente responsable: WACHENCHAUZER ROSA GRACIELA 1 de 5 OBJETIVOS Que el alumno - adquiera las herramientas teóricas y prácticas para la evaluación del costo

Más detalles

Guía práctica de estudio 4 Algoritmos de búsqueda parte 1

Guía práctica de estudio 4 Algoritmos de búsqueda parte 1 Guía práctica de estudio 4 Algoritmos de búsqueda parte 1 Elaborado por: Revisión: Ing. Laura Sandoval Montaño Facultad de Ingeniería U.N.A.M. Guía Práctica 4 Estructura de datos y Algoritmos II Algoritmos

Más detalles

Análisis de Algoritmos

Análisis de Algoritmos Parte de Algoritmos de la asignatura de Programación Master de Bioinformática Análisis de Algoritmos Web asignatura: http://dis.um.es/~domingo/algbio.html E-mail profesor: domingo@um.es Transparencias

Más detalles

PROGRAMA DE ASIGNATURA

PROGRAMA DE ASIGNATURA PROGRAMA DE ASIGNATURA ASIGNATURA: Algoritmos y Estructuras de Datos II AÑO: 2012 CARÁCTER: Obligatoria CARRERA: Licenciatura en Ciencias de la Computación RÉGIMEN: cuatrimestral CARGA HORARIA: 120 hs.

Más detalles

Sorting++ Herman Schinca. Clase 21. 10 de Junio de 2011

Sorting++ Herman Schinca. Clase 21. 10 de Junio de 2011 Sorting++ Herman Schinca Clase 21 10 de Junio de 2011 Recordando Ya vimos 3 algoritmos de ordenamiento basados en la comparación entre elementos: Selection, Insertion y Bubble. Los 3 en peor caso (cuando

Más detalles

PROGRAMA de Introducción a la Programación

PROGRAMA de Introducción a la Programación PROGRAMA Introducción a la Programación Carrera/s: Tecnicatura Universitaria en Programación Informática / Licenciatura en Informática Asignatura: Introducción a la Programación Núcleo al que pertenece:

Más detalles

Examen de Estructuras de Datos y Algoritmos. (Modelo 2)

Examen de Estructuras de Datos y Algoritmos. (Modelo 2) Examen de Estructuras de Datos y Algoritmos (Modelo 2) 17 de junio de 2009 1. Se dispone de una tabla hash de tamaño 12 con direccionamiento abierto y sondeo cuadrático. Utilizando como función hash la

Más detalles

Examen de Estructuras de Datos y Algoritmos. (Modelo 1)

Examen de Estructuras de Datos y Algoritmos. (Modelo 1) Examen de Estructuras de Datos y Algoritmos (Modelo 1) 17 de junio de 2009 1. Qué rotación se necesita para transformar el árbol de la figura en un árbol AVL? a) Rotación simple izquierda-izquierda b)

Más detalles

Divide-y-vencerás, backtracking y programación dinámica

Divide-y-vencerás, backtracking y programación dinámica Divide-y-vencerás, backtracking y programación dinámica Diseño y Análisis de Algoritmos Cátedra de Programación Carrera de Ingeniería de Sistemas Prof. Isabel Besembel Carrera Noviembre, 2012 Prof. Isabel

Más detalles

Apuntes de Teórico PROGRAMACIÓN 3

Apuntes de Teórico PROGRAMACIÓN 3 Apuntes de Teórico PROGRAACIÓN Programación Dinámica Versión. Índice Índice... Introducción... Principio de optimalidad...5 Ejemplo: Camino de menor costo...6 Ejemplo: problema de la mochila...6 Aplicación

Más detalles

Análisis de algoritmos

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 edfrancom@ipn.mx @edfrancom

Más detalles

Estructura de Datos. Árboles Binarios de Búsqueda ABB. Primer Semestre, 2010

Estructura de Datos. Árboles Binarios de Búsqueda ABB. Primer Semestre, 2010 Estructura de Datos Árboles Binarios de Búsqueda ABB Prof.: Mauricio Solar Prof.: Lorna Figueroa Primer Semestre, 20 1 Arboles de Búsqueda Binaria El árbol binario de búsqueda (ABB) toma su nombre del

Más detalles

Demostrando cotas inferiores: Arboles de decisión

Demostrando cotas inferiores: Arboles de decisión Demostrando cotas inferiores: Arboles de decisión De la misma forma que la técnica basada en la mejor estrategia del adversario, vamos a utilizar los árboles de decisión para establecer una cota inferior

Más detalles

SOLUCIONES COMENTADAS

SOLUCIONES COMENTADAS Departamento de Matemática Aplicada Curso 14-15 Facultad de Informática, UPM Matemática Discreta I (MI) Control 1 21-10-14 SOLUCIONES COMENTADAS Ejercicio 1. (1 punto) Se trazan 18 segmentos en el plano

Más detalles