Algoritmos glotones. mat-151
|
|
|
- Andrea Rojo Serrano
- hace 9 años
- Vistas:
Transcripción
1 Algoritmos glotones (greedy) mat-151 Alonso Ramirez Manzanares Computación y Algoritmos
2 Algoritmos glotones Algoritmos utilizados en problemas de optimización. Estos algoritmos siguen típicamente una secuencia de pasos con un conjunto de opciones en cada paso. Un algoritmo glotón siempre toma la decisión que parece mejor en ese instante. Esto es, toma la solución localmente óptima esperando que le lleve a la solución globalmente óptima. Los algoritmos glotones no siempre llevan a la solución óptima pero para muchos problemas es la solución óptima se encuentra de manera más eficiente que con programación dinámica. Alonso Ramirez Manzanares Computación y Algoritmos
3 Planificación de actividades que compiten por el mismo recurso. Meta: seleccionar el conjunto de mayor tamaño de tareas. Conjunto de n actividades propuestas S = {a1,a2,...an} que quieren usar el mismo recurso. Cada actividad ai tiene un tiempo de inicio si y un tiempo final fi donde: 0 si fi < inf. Si es seleccionada, la actividad ai tiene lugar en el intervalo semi-abierto [si,fi). Las actividades ai y aj son si los intervalos [si,fi) y [sj,fj) no se translapan ( si si fj o si sj fi ). Alonso Ramirez Manzanares Computación y Algoritmos
4 El problema de selección de actividades es el seleccionar el subconjunto de tamaño máximo de actividades mutuamente. i si fi Alonso Ramirez Manzanares Computación y Algoritmos
5 Solución utilizando programación dinámica: combinar las soluciones óptimas a dos subproblemas para construir una solución óptima al problema original. Paso 1: subestructura óptima del problema de selección de actividades. i Alonso Ramirez Manzanares Computación y Algoritmos
6 Si ordenamos las actividades en orden creciente respecto a sus tiempos de finalización, tenemos que: y podemos decir que Para encontrar la subestructura optima consideramos un subproblema novacío y suponemos que una solución a este subproblema incluye una actividad ak tal que: La actividad ak nos genera dos subproblemas, Sik y Skj, donde cada una consiste en un subconjunto de las actividades presentes en Sij. Alonso Ramirez Manzanares Computación y Algoritmos
7 La estructura subóptima de este problema es la siguiente: supongamos que una solución óptima Aij para Sij incluye la actividad ak. entonces las soluciones Aik a Sik y Akj a Skj utilizadas en esa solución óptima de Sij son óptimas también. se puede entonces encontrar un subconjunto de tamaño máximo de actividades en Sij separando el problema en dos subproblemas y uniendo sus soluciones: Alonso Ramirez Manzanares Computación y Algoritmos
8 Paso 2: solución recursiva Sea c[i,j] el numero de actividades en un subconjunto de actividades de tamaño máximo en Sij. tenemos que c[i,j]=0 cuando Sij= ; en particular c[i,j]=0 para i j. en un Sij utilizamos los subproblemas Sik y Skj obteniendo la recurrencia: c[i,j] = c[i,k] + c[k,j] +1 pero no conocemos el valor de k y tenemos hasta j-i-1 valores posibles, k=i+1,...,j-1. Hay que recorrerlos para encontrar el mejor. Alonso Ramirez Manzanares Computación y Algoritmos
9 Para convertir el algoritmo de programación dinámica en un algoritmo glotón nos basamos en dos observaciones principales: Considerando cualquier subproblema no-vacío Sij, y sea am la actividad en Sij que termina más rápido: Entonces 1. La actividad am es usada en un subconjunto máximo de actividades en Sij.(Prueba: formar otro conjunto maximo sin a m y substituir la primera actividad por a m, y tiene el mismo número de elementos) 2. El subproblema Sim está vacío, de tal manera que eligiendo am deja al subproblema Smj como el único no-vacío. (Prueba: esto implicaría que existe una a k tal que f i <=s k <=f k <=s m <f m y entonces f k <f m lo cual es una contradicción) Alonso Ramirez Manzanares Computación y Algoritmos
10 Según vimos en las clases de programación dinámica la estructura subóptima varía de acuerdo a: cuántos sub-problemas se utilizan en la solución óptima. el número de elecciones se tienen para determinar cada sub-problema. La solución con programación dinámica propone 2 subproblemas y j-i-1 elecciones por sub-problema. La solución glotona disminuye el número de sub-problemas (1 subproblema) y este subproblema tiene solo 1 elección: calcular la actividad con el tiempo de finalización más rápido. Alonso Ramirez Manzanares Computación y Algoritmos
11 Para resolver el subproblema Sij: elegimos la actividad am en Sij que termina más rápido y sumamos esta solución al conjunto de actividades usando la solución del problema Smj. Se observa un patrón en los problemas resueltos: el problema original es S0,n+1. Elegimos la actividad am1 como actividad en S0,n+1 que se termina más rápido. El siguiente subproblema es Sm1,n+1. Elegimos am2 como actividad, Notamos que cada subproblema es de la forma Smi,n+1 para una actividad mi. El algoritmo glotón deja la mayor oportunidad para programar las actividades que quedan: maximiza la cantidad de tiempo restante sin programar. Alonso Ramirez Manzanares Computación y Algoritmos
12 Algoritmo glotón recursivo (top-down) Entradas: conjuntos de tiempos de inicio s y fin f (ordenadas incrementalmente). i y n que definen el subproblema Si,n+1 a resolver. Salida: conjunto más grande de actividades en Si,n+1. Alonso Ramirez Manzanares Computación y Algoritmos
13 RECURSIVE-ACTIVITY-SELECTOR(s,f,i,n) m i while m n y s m < ff i i do m m if if m n then return {a {a m } U RECURSIVE-ACTIVITY-SELECTOR(s,f,m,n) 6. else return NULL. Alonso Ramirez Manzanares Computación y Algoritmos
14 Alonso Ramirez Manzanares Computación y Algoritmos
15 Alonso Ramirez Manzanares Computación y Algoritmos
16 Suponiendo que las actividades han sido ordenadas respecto a su tiempo final, el tiempo de ejecución de la llamada RECURSIVE-ACTIVITY- SELECTOR(s,f,0,n) es de Θ(n). En las llamadas recursivas cada actividad ak se examina una sola vez en el ciclo while de la linea 2. Se puede escribir la versión iterativa (hacer de tarea!) Alonso Ramirez Manzanares Computación y Algoritmos
17 Algoritmos glotones: elementos Los algoritmos glotones obtienen una solución óptima realizando una secuencia de elecciones. En cada punto del algoritmo se toma la mejor solución en ese momento. Para el ejemplo anterior seguimos los pasos: Determinar la estructura subóptima del problema. Desarrollar una solución recursiva. Probar que, en cualquier punto de la recursión, una de las elecciones óptimas es la opción glotona. Mostrar que todos excepto uno de los subproblemas inducidos por hacer la elección glotona están vacíos. Alonso Ramirez Manzanares Computación y Algoritmos
18 Algoritmos glotones: elementos Desarrollar un algoritmo recursivo que implemente la estrategia glotona. Convertir el algoritmo recursivo en uno iterativo. Alonso Ramirez Manzanares Computación y Algoritmos
19 Algoritmos glotones: elementos Generalmente se diseña un algoritmo glotón con la opción glotona en mente siguiendo los pasos: Especificar el problema de manera que al hacer una elección quede solo un subproblema por resolver. Probar que siempre hay una solución optima al problema original tomando la opción glotona. Demostrar que, una vez tomada la opción glotona, lo que resulta es un subproblema con la propiedad que si se combinan las solución óptima del subproblema con la elección glotona se puede llegar a la solución óptima del problema original. La elección glotona no depende de la resolución del subproblema. Alonso Ramirez Manzanares Computación y Algoritmos
20 Algoritmos glotones: elementos No hay una forma general para decir si la solución glotona es optima pero los ingredientes principales son: Propiedad de la opción glotona: Una solución optima globalmente se puede alcanzar realizando la elección optima localmente. Subestructura optima Alonso Ramirez Manzanares Computación y Algoritmos
Análisis y Diseño de Algoritmos
Análisis y Diseño de Algoritmos Algoritmos Voraces DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE Introducción Siempre toman la mejor opción en cada momento (punto de decisión del algoritmo)
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
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 =
Estructuras de Datos y Algoritmos
Estructuras de Datos y Algoritmos Práctico 2: Evaluación de Algoritmos (Finalización: 03/09) Ingeniería en Computación - Ingeniería en Informática Año 2015 Ejercicio 1: Dados los siguientes vectores, correspondientes
Universidad de Valladolid. Departamento de informática. Campus de Segovia. Estructura de datos Tema 1: Recursividad. Prof. Montserrat Serrano Montero
Universidad de Valladolid Departamento de informática Campus de Segovia Estructura de datos Tema 1: Recursividad Prof. Montserrat Serrano Montero ÍNDICE Conceptos básicos Ejemplos recursivos Recursividad
Complejidad computacional. Algoritmos y Estructuras de Datos I. Complejidad computacional. Notación O grande
Complejidad computacional Algoritmos y Estructuras de Datos I Segundo cuatrimestre de 2014 Departamento de Computación - FCEyN - UBA Algoritmos - clase 10 Introducción a la complejidad computacional y
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
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
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,
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
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
Algoritmos glotones 2 (código de Huffman) mat-151
Algoritmos glotones 2 (código de Huffman) mat-151 Alonso Ramírez Manzanares Computación y Algoritmos 05.06.2009 Son técnicas muy efectivas para comprimir datos. Alcanzan una compresión de entre 20% y 90%
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.
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
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
Apuntes de Teórico de Programación 3. Apuntes de Teórico PROGRAMACIÓN 3. Greedy. Versión 1.1
Apuntes de Teórico PROGRAMACIÓN 3 Greedy Versión 1.1 1 Índice Índice... Introducción... 3 Ejemplo 1 (problema de las monedas)... 3 Ejemplo (problema de la mochila)... 4 Aplicaciones del método Greedy a
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
Parte de Algoritmos de la asignatura de Programación Master de Bioinformática. Avance rápido
Parte de Algoritmos de la asignatura de Programación Master de Bioinformática Avance rápido Web asignatura: http://dis.um.es/~domingo/algbio.html E-mail profesor: [email protected] Transparencias preparadas
Estructuras de Control
Algorítmica y Lenguajes de Programación Estructuras de Control Estructuras de Control. Introducción Hasta ahora algoritmos han consistido en simples secuencias de instrucciones Existen tareas más complejas
Introducción al análisis de algoritmos
Estructura de Datos y Algoritmos Introducción al análisis de algoritmos 1. Eficiencia en tiempo de Ejecución Cuando resolvemos un problema nos vemos frecuentemente enfrentando una elección de programas,
Notación Asintótica 2
Notación Asintótica 2 mat-151 1 Éxamen Rápido (6 minutos) Cada operación fundamental usa c milisegundos, cuánto tiempo toma contar hasta 1,000,000? Cuál es el valor de N? Cuál es el órden de complejidad
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
Universidad de Santiago de Chile Facultad de Ciencia Departamento de Matemática y Ciencias de la Computación
Universidad de Santiago de Chile Facultad de Ciencia Departamento de Matemática y Ciencias de la Computación EJERCICIOS RESUELTOS DE ECUACIONES NO LINEALES Profesor: Jaime Álvarez Maldonado Ayudante: Rodrigo
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
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
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
Alonso Ramirez Manzanares Computación y Algoritmos 03.05
Tablas de hash (2) mat-151 Alonso Ramirez Manzanares Computación y Algoritmos 03.05 Tablas de hash: resolviendo colisiones por encadenamiento cuando el número de elementos en total es proporcional al número
Generación de variables aleatorias discretas Método de la Transformada Inversa
Generación de variables aleatorias discretas Método de la Transformada Inversa Patricia Kisbye FaMAF 30 de marzo, 2010 Generación de v.a. discretas Existen diversos métodos para generar v.a. discretas:
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 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, [email protected] Estructuras de datos y de la información Universitat
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
Introducción. Algoritmos y Complejidad. Algoritmos y Algoritmia. Introducción. Problemas e instancias. Pablo R. Fillottrani
Introducción Introducción Pablo R. Fillottrani Depto. Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Algoritmos y Algoritmia Problemas e instancias Primer Cuatrimestre 2014 Algoritmos
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.
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,
1. Defina el problema de particionamiento. Escriba un ejemplo de este tipo de problema, junto con su formulación general en AMPL.
DEPARTAMENTO DE ESTADÍSTICA E INVESTIGACIÓN OPERATIVA o. DIPLOMATURA DE ESTADÍSTICA Ampliación de la Investigación Operativa. Curso 00/0 a Prueba de Evaluación Continua. Fecha: 6-6-0. Defina el problema
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
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,
Verificación de programas. Algoritmos y Estructuras de Datos I. Semánticas formales: Primer cuatrimestre de 2016
Verificación de programas Algoritmos y Estructuras de Datos I Primer cuatrimestre de 2016 Departamento de Computación - FCEyN - UBA Programación imperativa - clase 14 Verificación automática de programas
Análisis de algoritmos
Tema 08: Divide y vencerás (DyV) M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com [email protected] @edfrancom edgardoadrianfrancom 1 Contenido Introducción Divide y vencerás Observaciones
Algorítmica y Complejidad. Tema 5 Divide y Vencerás.
Algorítmica y Complejidad Tema Divide y Vencerás. . Método.. Un ejemplo sencillo.. Complejidad del método.. Ejemplo: El máximo subarray.. Ejemplo: Multiplicación de enteros. . Método.. Un ejemplo sencillo..
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
Fundamentos de Programación. Flujo de Control I: Estructuras selectivas
Fundamentos de Programación Flujo de Control I: Estructuras selectivas El Flujo de Control de un Programa Un algoritmo puede ser construido utilizando combinaciones de tres estructuras de control de flujo
Jueves, 30 de abril. Ejemplo de recursión. Ejemplo de PD. Ejemplo de programación dinámica. Programación dinámica
.0 Jueves, 0 de abril Programación dinámica. Recursión. Principio de optimalidad. Entregas: material de clase. Programación dinámica Transforma un problema de optimización complejo en una secuencia problemas
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
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
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)
Análisis de Algoritmos
Análisis de Algoritmos Amalia Duch Barcelona, marzo de 2007 Índice 1. Costes en tiempo y en espacio 1 2. Coste en los casos mejor, promedio y peor 3 3. Notación asintótica 4 4. Coste de los algoritmos
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
Programación (PRG) PRÁCTICA 10. Algoritmos de búsqueda
Programación (PRG) Facultad de Informática Departamento de Sistemas Informáticos y Computación Universidad Politécnica de Valencia 1. Introducción El objetivo de esta práctica es estudiar el comportamiento
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
Arreglos. Algoritmos y Estructuras de Datos I. Arreglos en C++ Arreglos y listas
Arreglos Algoritmos y Estructuras de Datos I Primer cuatrimestre 2007 Teórica de imperativo 3 Algoritmos de búsqueda secuencias de una cantidad fija de variables del mismo tipo se declaran con un nombre,,
Programación imperativa. Algoritmos y Estructuras de Datos I. Ciclos
Programación imperativa Algoritmos y Estructuras de Datos I Segundo cuatrimestre de 2014 Departamento de Computación - FCEyN - UBA Programación imperativa - clase 6 Ciclos y arreglos Entidad fundamental:
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
Ordenamiento de un arreglo. Algoritmos y Estructuras de Datos I. Algoritmo downsort. Upsort vs downsort
Ordenamiento de un arreglo Algoritmos y Estructuras de Datos I Primer cuatrimestre de 2014 Departamento de Computación - FCEyN - UBA Programación imperativa - clase 8 Algoritmos de ordenamiento II Tenemos
Ejercicio 2 Considere la representación para Lista de Naturales y Árbol Binario de Naturales de la Figura 1.
Ejercicios Resueltos del Práctico 4 Ejercicio 2 Considere la representación para Lista de Naturales y Árbol Binario de Naturales de la Figura 1. 1 2 struct NodoLista { 3 int elem ; 4 NodoLista * sig ;
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
Estructuras de control
Estructuras de control Introducción Los algoritmos vistos hasta el momento han consistido en simples secuencias de instrucciones; sin embargo, existen tareas más complejas que no pueden ser resueltas empleando
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
Curso de Programación 1
Curso de Programación 1 Plan 97 Búsqueda y Ordenación Métodos de búsqueda Existen aplicaciones en las cuales es necesario consultar si un elemento se encuentra dentro de un array. A continuación veremos
Tema 5- Diseño Recursivo y. Objetivos Principales. Bibliografía Básica
Tema 5- Diseño Recursivo y Eficiente Tema 5- Diseño Recursivo y Eficiente Germán Moltó Escuela Técnica Superior de Ingeniería Informática Universidad Politécnica de Valencia Índice general: 1. Introducción
Muchas de las ecuaciones de recurrencia que vamos a usar en este curso tienen la siguiente forma: ( c n =0 T (n) = a T (b n b.
El Teorema Maestro Muchas de las ecuaciones de recurrencia que vamos a usar en este curso tienen la siguiente forma: ( c n =0 T (n) = a T (b n b c)+f (n) n 1 donde a, b y c son constantes, y f (n) es una
Terminaremos el capítulo con una breve referencia a la teoría de cardinales.
TEMA 5. CARDINALES 241 Tema 5. Cardinales Terminaremos el capítulo con una breve referencia a la teoría de cardinales. Definición A.5.1. Diremos que el conjunto X tiene el mismo cardinal que el conjunto
UNIDAD 7 Recursividad Concepto. Algoritmos recursivos. Seguimiento de la recursión. Algunos métodos recursivos de búsqueda y ordenación: M-Sort y
Recursividad Concepto. Algoritmos recursivos. Seguimiento de la recursión. Algunos métodos recursivos de búsqueda y ordenación: M-Sort y Q-Sort. Comparación de eficiencia en métodos Iterativos vs recursivos
Tema 01: Fundamentos del Análisis Asintótico de Algoritmos
Tema 01: Fundamentos del Análisis Asintótico de Algoritmos Noviembre, 2003 CS0218: Algoritmos y Programación II Introducción En Ciencias de la Computación se presenta con frecuencia la situación de analizar
Departamento de Informática Universidad de Valladolid Campus de Segovia TEMA 1: RECURSIÓN
Departamento de Informática Universidad de Valladolid Campus de Segovia TEMA 1: RECURSIÓN ÍNDICE Definición Conceptos básicos Ejemplos recursivos Recursión mútua Recursión e iteración DEFINICIÓN Técnica
1. Recuerdo del algoritmo de KRUSKAL
MA3705. Algoritmos Combinatoriales. 014. Profesor: José Soto Escriba(s): Manuel Cáceres, Camilo Gómez y Sebastián Muñoz. Fecha: 11 de Agosto 014. Cátedra 5 1. Recuerdo del algoritmo de KRUSKAL La clase
Alineamiento múltiple de secuencias
Dr. Eduardo A. RODRÍGUEZ TELLO CINVESTAV-Tamaulipas 11 de junio del 2013 Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Alineamiento múltiple de secuencias 11 de junio del 2013 1 / 39 1 Alineamiento múltiple de
Tema 2. Fundamentos Teóricos de la. programación dinámica Teorema de Optimalidad de Mitten
Tema 2 Fundamentos Teóricos de la Programación Dinámica 2.1. Teorema de Optimalidad de Mitten El objetivo básico en la programación dinámica consiste en descomponer un problema de optimización en k variables
Problema ejemplo. El Arte de la Programación Rápida. Backtracking
El Arte de la Programación Rápida Backtracking Problema ejemplo Vamos a analizar la técnica de backtracking a través de un ejemplo. El problema de las 8 reinas Cómo ubicar 8 reinas en un tablero sin que
Métodos de Conteo y Principio del Palomar. Matemática Discreta. Agustín G. Bonifacio UNSL
UNSL Métodos de Conteo y s (a) Cuántas cadenas de longitud 4 se pueden formar usando las letras A,B,C,D y E si no se aceptan repeticiones? 5. 4. 3. 2 = 120. (b) Cuántas cadenas del inciso (a) comienzan
Lógica - Conjuntos inductivos
Lógica - Conjuntos inductivos Matemática discreta y Lógica I Mayo de 2017 Las transparencias son tomadas del curso de Lógica del instituto de computación de Facultad de Ingeniería. Inducción - Plan Conjuntos
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
Análisis de algoritmos
Tema 10: Algoritmos ávidos M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com [email protected] @edfrancom edgardoadrianfrancom 1 Contenido Introducción Algoritmos ávidos Forma general de un
ESTRUCTURA DE DATOS: Tema 3. Recursividad
ESTRUCTURA DE DATOS: Tema 3. Recursividad Presenta: David Martínez Torres Universidad Tecnológica de la Mixteca Instituto de Computación Oficina No. 37 [email protected] Contenido 1. Directa e indirecta
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
Son una clase particular de los algoritmos evolutivos.
Algoritmos Genéticos (AGs) Los AGs son técnicas de resolución para problemas de Búsqueda Optimización Aprendizaje en máquinas Son una clase particular de los algoritmos evolutivos. Los AGs intentan resolver
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
Semana 07[1/21] Sumatorias. 12 de abril de Sumatorias
Semana 07[/] de abril de 007 Semana 07[/] Progresiones aritméticas Progresión aritmética Es una sumatoria del tipo (A + d) es decir, donde a A + d, para valores A, d Ê. Utilizando las propiedades de sumatoria,
Planificación con prioridades
dit UPM Planificación con prioridades Juan Antonio de la Puente DIT/UPM Copyright 2007, Juan Antonio de la Puente Planificación El objetivo de los métodos de planificación (scheduling) es repartir el tiempo
ESTRUCTURAS DE CONTROL
ESTRUCTURAS DE CONTROL En lenguajes de programación, las estructuras de control permiten modificar el flujo de ejecución de las instrucciones de un programa. Con las estructuras de control se puede: De
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
Control de Flujo. Estructuras de Control! Experiencia Educativa de Algorítmica CONTROL DE FLUJO
Control de Flujo Estructuras de Control Experiencia Educativa de Algorítmica 1 Introducción El estilo de como escribimos y analizamos un algoritmo se convierte en una de las principales características
Búsqueda Informada. Algoritmos primero el mejor Algoritmos de búsqueda local
Búsqueda Informada Algoritmos primero el mejor Algoritmos de búsqueda local Algoritmos primero el mejor Búsqueda primero el mejor Búsqueda Voraz A* Algoritmos primero el mejor Familia de algoritmos de
Aplicación de la Inducción Matemática Programación Funcional. Julio Ariel Hurtado Alegría Departamento de Sistemas Universidad del Cauca
Aplicación de la Inducción Matemática Programación Funcional Julio Ariel Hurtado Alegría Departamento de Sistemas Universidad del Cauca Motivación Programación Imperativa Declarativa Procedimental Ejemplo:
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
Retículos y Álgebras de Boole
Retículos y Álgebras de Boole Laboratorio de Matemática Discreta Jesús Martínez Mateo [email protected] Práctica 1. Ordenación topológica A. Herramientas necesarias Para la práctica que vamos a realizar
Control de Flujo. Estructuras de Control! Experiencia Educativa de Algorítmica CONTROL DE FLUJO
Control de Flujo Estructuras de Control Experiencia Educativa de Algorítmica 1 Introducción El estilo de como escribimos y analizamos un algoritmo se convierte en una de las principales características
UNIDAD ACADÉMICA PROFESIONAL TIANGUISTENCO
UNIDAD ACADÉMICA PROFESIONAL TIANGUISTENCO LICENCIATURA EN PRODUCCIÓN INDUSTRIAL. UNIDAD DE APRENDIZAJE: PROGRAMACIÓN Créditos institucionales de la UA: 6 Material visual: Diapositivas Unidad de competencia
Repetición Condicional
Repetición Condicional InCo - FING Programación 1 InCo - FING Repetición Condicional Programación 1 1 / 20 La instrucción while InCo - FING Repetición Condicional Programación 1 2 / 20 Ejemplo Leer números
ESTIMACIÓN DE TIEMPO Y COSTO DE PRODUCTOS SOFTWARE
Análisis y costo de algoritmos Algoritmos Un algoritmo es un conjunto de pasos claramente definidos que a partir de un cierta entrada (input) produce una determinada salida (output) Algoritmos y programas
Introducción Supongamos un subconjunto de n elementos X = {e 1,,e n de un conjunto referencial Y, X Y. Dentro de Y se define una relación de orden tot
Algoritmos de ordenación Análisis y Diseño de Algoritmos Algoritmos de ordenación Algoritmos básicos: Θ(n 2 ) Ordenación por inserción Ordenación por selección Ordenación por intercambio directo (burbuja)
Métodos Constructivos. Empiezan desde una solución vacía (a veces pequeña)
Métodos Constructivos Empiezan desde una solución vacía (a veces pequeña) En repetidas ocasiones, extienden la solución actual hasta que una solución completa se construye. Utiliza una heurística para
