Técnicas Algorítmicas

Slides:



Advertisements
Presentaciones similares
Introducción a la Investigación de Operaciones
Advertisements

Diseño y análisis de algoritmos
Diseño y análisis de algoritmos
Problemas del método de Newton
Alumno: José Luis Segura Velázquez
Investigación de Operaciones
Complejidad de Algoritmos
TÉCNICA DE DISEÑO BACKTRACKING
ALGORITMOS DE ORDENAMIENTO
Inteligencia artificial
Razonamiento Explícito y Experimentación en la Algoritmia
Mauricio Granada Echeverri Universidad Tecnológica de Pereira
1.5 Algoritmos, Pseudocódigo y Diagramas de Flujo
Telekom Solutions.
Investigación Algorítmica
INFORMATICA I Funciones CLASE 13.
Metaheurística ACO Aplicada a Problemas de Planificación en Entornos Dinámicos de San Pedro M., Pandolfi D., Lasso M., Villagra A. Laboratorio de Tecnologías.
Sistemas Inteligentes Algoritmos Evolutivos
Introducción a las Metaheurísticas
El algoritmo primal-dual
Analisis y Diseño de Algoritmos Tema: Grafos 3ra Parte
ESCUELA POLITECNICA DEL EJERCITO COMPUTACIÒN AVANZADA NOMBRES:
Relajación y Procesamiento híbrido de restricciones Diferentes técnicas de relajación Algunas técnicas híbridas populares.
EXPANSIÓN DE SISTEMAS ELÉCTRICOS DE Universidad Tecnológica de Pereira
Clase 2, Parte 2: Métodos Tradicionales de Optimización y Búesqueda
Ordenamiento, Heapsort y Colas de prioridad
Complejidad Programación II de febrero de 2009.
Ordenación y Búsquedas1UVM Ordenación y Búsqueda.
Programación dinámica: Introducción
CC3001 Algoritmos y Estructuras de Datos

Complejidad de los problemas de decisión
Parte II. Algorítmica. 3. Algoritmos voraces.
COMPUTACION EVOLUTIVA Introducción. Computación Evolutiva: Computación Evolutiva: Enfoque alternativo para abordar problemas complejos de: Enfoque alternativo.
Análisis de algoritmos
Surge cuando se necesita un modelo costo-efectividad que permita transportar ciertos bienes desde un lugar de origen a un destino que necesita aquellos.
METODOS DE BUSQUEDA INFORMADOS CAPITULO 5
“A hybrid VNS/Tabu search Algorithm for apportioning the European Parliament” Villa, Lozano, Racero, Canca, LNCS 3906, Problema: Como distribuir.
1 Algoritmos Avaros (Greedy Algorithms) Agustín J. González ELO-320: Estructura de Datos y Algoritmos 1er. Sem
Parte II. Algorítmica. 5. Backtracking. 1. Análisis de algoritmos.
Relajación y procesamiento híbrido de restricciones Diferentes técnicas de relajación Algunas técnicas híbridas populares.
METAHEURISTICAS Ideas, Mitos, Soluciones
Parte II. Algorítmica. 4. Programación dinámica.
Parte I. Estructuras de Datos.
Una introducción a la computación evolutiva
Investigación Operativa Introducción Unidad 1
1 Ordenamiento en tiempo lineal y Estadísticas de orden Agustín J. González ELO320: Estructura de Datos y Algoritmos 1er. Sem 2002.
Programación Matemática
Propuesta del algoritmo
Métodos de diseño de Algoritmos
Tema 11: Programación dinámica
Parte I. Estructuras de Datos.
Estructuras de control Resolución de problemas y algoritmos.
A GRASP for graph planarization. Resende, Ribeiro Meta heurísticas Agustín Pecorari.
ELO3201 Análisis de Algoritmos (cont.) Agustín J. González ELO320 1º sem 2002.
Oscar F. Bedoya L. Fundamentos de análisis y diseño de algoritmos.
Oscar Bedoya. Edificio 331, 2º piso, E.I.S.C. Estructuras de datos y algoritmos.
INTELIGENCIA DE NEGOCIOS Agosto 2010 UNIVERSIDAD NACIONAL AUTONOMA DE MEXICO.
Optimización Combinatoria y Grafos Búsqueda Tabú
Ing. Betty Suárez Torres
DISEÑAR Y ELABORAR ALGORITMOS Nombre: anayeli hernandez peralta Grado y grupo: 1 “3” Materia: Informática y computación Maestro: Ángel Buendía Turno: Vespertino.
DISEÑAR Y ELABORAR ALGORITMOS NOMBRE: LAURA PAEZ GARCIA GRADO Y GRUPO: 1 “3” MATERIA: INFORMÁTICA Y COMPUTACIÓN MAESTRO: ÁNGEL BUENDÍA TURNO: VESPERTINO.
VILLAHERMOSA, TAB. A 11 OCTUBRE DEL 2011 ING. SISTEMAS MATERIA: INVESTIGACION DE OPERACIONES CATEDRATICO: I.I ZINATH JAVIER GERONIMO TEMA: ANÁLISIS DE.
Introducción a los TADs
Heurística. Los procesos que se llevan a cabo en el cerebro pueden ser analizados, a un nivel de abstacción dado, como procesos computacionales de algún.
1.2 CONCEPTOS Y TÉCNICAS (Estado del Arte)
La Programación Lineal es un procedimiento o algoritmo matemático mediante el cual se resuelve un problema indeterminado, formulado a través de ecuaciones.
INS-204 Fundamentos de Programacion notas de clase, objetivo, programar en Python con nivel medio de destreza.
Solución a Ecuaciones de Recurrencia Dr. Rogelio Dávila Pérez División de Posgrado Universidad Autónoma de Guadalajara
Modelos de Ruteo de Vehículos
Transcripción de la presentación:

Técnicas Algorítmicas Gonzalo Sainz-Trápaga (GomoX) Charlas PC++ 2008 www.pcmasmas.com 26 de Julio de 2008

Problemas Técnicas exactas Técnicas aproximadas Temas Problemas Técnicas exactas Técnicas aproximadas

Problemas

De decisión ¿183287 es primo? ¿Cuál es el mínimo de la secuencia [7,8,32]?

Elegir o proponer una solución. De optimización Hallar el camino más corto entre Buenos Aires y Beijing Ordenar la secuencia: [1,9,34,-2,6,28] Elegir o proponer una solución.

Técnicas Exactas

Fuerza Bruta Probar todas las opciones.

Fuerza Bruta Se recorre todo el universo de soluciones posibles. for cand in generarCandidatos(): if esSolucion(cand): return cand

Ordenar por fuerza bruta: for p in permutaciones(secuencia): if estaOrdenado(p): return p

Fuerza Bruta Limitaciones Usos reales

Backtracking Probar todas las opciones, de forma más inteligente.

Backtracking Orden!

Ordenar la secuencia [3,1,2]: Backtracking Ordenar la secuencia [3,1,2]:

Backtracking Podas Recursión

Backtracking Limitaciones Usos reales

Divide & Conquer “Vamos por partes” - Jack el destripador

Divide & Conquer “Dividir” “Conquistar” “Combinar”

Divide & Conquer Merge sort: def mergesort(l): m1 = l[0:len(l)/2] m2 = l[len(l)/2:len(l)] return combinar(mergesort(m1), mergesort(m2))

Divide & Conquer Recursión Paralelismo

Divide & Conquer Usos reales Limitaciones

Programación Dinámica “Usar COBOL arruina el cerebro” - Edsger Dijkstra

Programación Dinámica Subestructura Óptima Recursión

Programación Dinámica Fibonacci: def fibo(n): if n == 1 or n == 2: return 1 else: return fibo(n-1) + fibo(n-2)

fibo(n) = fibo(n-1) + fibo(n-2) Programación Dinámica fibo(n) = fibo(n-1) + fibo(n-2) fibo(n-2) + fibo(n-3) fibo(n-3) + fibo(n-4) fibo(n-4) + fibo(n-5)

Programación Dinámica Solapamiento A B

Programación Dinámica “Top-down” “Bottom-up”

Programación Dinámica Fibonacci (top down): tabla = {} def fibo(n): if n == 1 or n == 2: return 1 else: if n in tabla: return tabla[n] res = fibo(n-1) + fibo(n-2) tabla[n] = res return res

Programación Dinámica Fibonacci (bottom up): tabla = {} def fibo(n): if n == 1 or n == 2: return 1 else: tabla[1] = fibo(1) tabla[2] = fibo(2) for i in 3…n-1: tabla[i] = tabla[i-1] + tabla[i-2] return tabla[n-1] + tabla[n-2]

Programación Dinámica Fibonacci (bottom up 2.0): def fibo(n): if n == 1 or n == 2: return 1 else: t1 = fibo(1) t2 = fibo(2) for i in 3…n-1: tmp = t2 t2 = t1 + t2 t1 = tmp return t1 + t2

Programación Dinámica Usos reales Limitaciones

Programación Lineal

Programación Lineal Ecuaciones lineales SIMPLEX Programación entera

Técnicas Aproximadas

"La mayor deficiencia de la raza humana es nuestra incapacidad para comprender la función exponencial." - Albert Bartlett

Heurísticas

Metaheurísticas

Algoritmos Golosos

Algoritmos golosos Usos Limitaciones

Taboo Search

Algoritmos Genéticos - Charles Darwin

Algoritmos Genéticos Algoritmo genético: generacion = 0 poblacion = generarIndividuosAleatorios() while(generacion < 5000): padres = poblacion.tomarAlgunos() poblacion.agregar(padres.procrear()) poblacion.mutarAlgunos() poblacion.matarAlgunos() generacion++ poblacion.sort(aptitud) machoAlfa = poblacion[0] return machoAlfa

Algoritmos Genéticos Usos Parametrización

Otras metaheurísticas GRASP Colonias de hormigas Redes neuronales

Problemas de las Metaheurísticas Confiabilidad Parametrización

Más opciones! Algoritmos aproximados Algoritmos híbridos

Esta charla fue traída a ustedes por cortesía de Lotux Neon.

¿Preguntas?

Fin.