Barbara Martina Rodeker Universidad Nacional del Centro de la Pcia. de Buenos Aires El problema del viajante Una implementación.

Slides:



Advertisements
Presentaciones similares
Diseño y análisis de algoritmos
Advertisements

Diseño y análisis de algoritmos
GRAFOS Presentado por: Oscar Leonardo Ramírez John Freddy Sandoval
Metodología de la Investigación Científica
Investigación de Operaciones
Informática Aplicada a la Gestión de Empresas (IAGE) Parte III Excel e Internet Tema 2.
Métodos de Minimización
La maquina de Turing La máquina de Turing es una caja negra (tan simple como una máquina de escribir y tan compleja como un ser humano) capaz no sólo de.
Diseño e Implementación de Proyectos de Tecnología Educativa
Grupo 4 Matías Melgar Pablo Carbonell
La regla de la esquina noroeste
Investigación de Operaciones II
Investigación de Operaciones II
PROGRAMACION DE ESTRUCTURAS DE DATOS
Métodos Programación dinámica Función Costo Ponderación
Búsqueda Informada Heurísticas.
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.
Introducción a las Metaheurísticas
ANÁLISIS DE CORRESPONDENCIAS SIMPLE
Modelos de Programación Entera - Heurísticas
FUNDAMENTOS DE DATA MINING Y SUS APLICACIONES N. QUEIPO, S. PINTOS COPYRIGHT 2000 CLASIFICACIÓN NO SUPERVISADA.
Problemes de Viatjants
INFOMATICA EMPRESARIAL Principales Contenidos: Clase 26 de Mayo de 2012 Alejandra Meliza Caro Profesor.
ARQUITECTURAS SIMD TIPOS
Temas importantes para el desarrollo de la segunda parte del TPE
Inteligencia Artificial
ANALISIS DE DATOS CON EXCEL
Capítulo 4 BUSQUEDA INFORMADA.

Diseño y análisis de algoritmos
Diseño y análisis de algoritmos
Tablas de Hash.
Diplomado en Logística de Negocios
ALGORITMOS APROXIMADOS
Diseño y análisis de algoritmos
(Organización y Manejo de Archivos)
Parte II. Algorítmica. 3. Algoritmos voraces.
complejidad de un problema.
Surge cuando se necesita un modelo costo-efectividad que permita transportar ciertos bienes desde un lugar de origen a un destino que necesita aquellos.
MÉTODO DE PIXELES DE BORDE
Estadística La Estadística tiene por objeto recolectar, organizar, resumir, presentar y analizar datos relativos a un conjunto de objetos, personas, procesos,
APROXIMACIÓN POLIGONAL ÓPTIMA DE CURVAS DIGITALES
1 Introducción a la Computación para Biólogos, Bioquímicos, Médicos, etc.
Parte II. Algorítmica. 4. Programación dinámica.
Universidad Americana Medidas de tendencia central Resumen elaborado por: Lic. Maryan Balmaceda V Economista - Consultor.
Parte I. Estructuras de Datos.
CARPLATE Reconocimiento del marco de la matrícula de un coche
Una introducción a la computación evolutiva
TPE 1 - Sistemas de Producción: Rolling Cubes Sistemas de Inteligencia Artifcial Bergez, Brasca y García.
Parte I. Estructuras de Datos.
DISEÑO DE UNA ESTRUCTURA DE INDEXACION DE DATOS TOPOLOGICAMENTE CONTENIDO.
SUBSECRETARÍA DE EDUCACIÓN BÁSICA
Incorporando Búsqueda Local a un Algoritmo ACO para el Problema de Scheduling de Tardanza Ponderada Lasso M., de San Pedro M Laboratorio de Tecnologías.
PC BD Alexandra Buri H José Rivera De La Cruz.
Trabajo final ARTURO RUVALCABA ZAVALA 21 / Junio / 2013.
El Poder de la Sonrisa.
ALGORITMO QUE ES ??.
UNIDAD 2 Grafos Árboles abarcadores mínimos Caminos más cortos.
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.
Simón Esneider Herrera Álvarez Media Técnica Casd 10-2
Introducción a los TADs
Pixelación de imágenes avanzada usando el algoritmo slic
Inteligencia Artificial

Hernández Camacho Víctor Jesus Islas Sánchez Karla Vanessa
Capitulo 1 Análisis descriptivo
DISTRIBUCION DE LA PLANTA
Algoritmos voraces Códigos de Huffman. Descripción del problema Tenemos un archivo de entrada. Asumiremos que el archivo está compuesto de bytes (enteros.
UNIVERSIDAD TECNOLÓGICA DE PANAMÁ Facultad de Ingeniería de Sistemas Computacionales Programa de Lic. en Informática Educativa Computación.
Excel 2013 Informática en los negocios lci. Excel 2013  ¿Qué es un RANGO en Excel?  Es un conjunto de celdas contiguas que pueden ser seleccionadas.
Transcripción de la presentación:

Barbara Martina Rodeker Universidad Nacional del Centro de la Pcia. de Buenos Aires El problema del viajante Una implementación del esquema de aproximación propuesto por Sanjeev Arora

Formulación del problema “ Sean N ciudades de un territorio. El objetivo es encontrar un camino que, comenzando y terminando en una ciudad concreta, pase una sola vez por cada una de las ciudades minimizando la distancia recorrida por el viajante “ C2 c3 c4 c6 c5 c1

Consideraciones del problema C2 c1 Se conocen las ciudades Se conoce la distancia entre ellas A todo camino se le asocia un costo que es la suma de las distancias recorridas costoC12

Breve clasificación Simétrico la distancia de A a B es la misma que de B a A Asimétrico la distancia de A a B no es la misma que de B a A c1 c2 c3 c4 c1 c2 c3 c4

Casos especiales Desigualdad Triangular TSP Euclídeo (PTAS Arora) A A B B C C d(a,b) <= d(a,c) + d(c,b) d(a,b) = ( a 2 + b 2 ) 1/2

Soluciones aproximadas HEURÍSTICAS Soluciones cercanas a la óptima Obtenidas en menor tiempo Varían en su distancia al óptimo Nearest Neighbour Greedy Algoritmos genéticos Algoritmos de colonia de hormigas Esquemas de aproximación

Conjunto de algoritmos trabajando juntos El procesamiento se divide en varias etapas La salida de una de las etapas sirve de base para la siguiente

Sanjeev Arora Profesor de Cs. De la Computación de la Universidad de Princeton Trabaja en el área teórica de Cs. De la Computación. Sus intereses de investigación incluyen áreas como complejidad computacional, soluciones aproximadas a problemas NP, pruebas probabilísticas.

Pasos del esquema PERTURBACIÓN QUADTREE PORTALIZACIÓN PROGRAMACIÓN DINÁMICA TRIMMING

Perturbación Se realiza una grilla sobre el plano donde están los nodos. Cada nodo se ubica en el punto más cercano de esa grilla El objetivo es modificar las coordenadas de los nodos para un posterior procesamiento

Se seleccionó como modificación del algoritmo original la menor distancia entre nodos en ambos ejes

Regrillado Con el objetivo de que la mínima distancia entre nodos sea 2, cada una de las coordenadas de los nodos se multiplica por 2c Shift de coordenadas Corrimiento en una unidad de cada uno de los nodos Las coordenadas de los mismos serán impares No chocarán con las líneas de división del Quadtree

Complejidad Leer los nodos desde archivo O ( N ) con N #nodos. Perturbación O ( N ) con N #nodos. Cualquiera de métodos en este paso del algoritmo implica un recorrido de los n nodos de entrada, de

Quadtree El plano se va dividiendo en cuatro partes iguales ( Cuadrantes ) Se avanza en la división hasta que dentro de un cuadrante queda solo un nodo ( Hoja ) Así tenemos registradas las hojas donde se ubican los nodos Esta estructura de datos permite recorrer espacios del plano

Enclosing Box Es el cuadrado más pequeño posible, de dimensiones 2 K que contenga a todos los nodos Desde él se construye el Quadtree

Portalización Se necesita que cada cuadrante pueda comunicarse con sus vecinos Un portal es lo que permite la comunicación Se ubican en los bordes de los cuadrantes Son la base para construir la tabla de soluciones

Originalmente se tomaba un conjunto de m-portales distribuidos uniformemente

Programación dinámica Apareos Cuadrantes Subsolución Se construye una tabla de tamaño cuadrantes x apareos Un apareo es una asociación entre dos portales La solución se construye desde las hojas Se prosigue de forma bottom-up hasta la raíz

Estructura de las celdas

Complejidad Número de Cuadrantes = Nc <= 4 log2L, con L = largo del Enclosing Box Número de Apareos = Na #portales x #portales Tamaño de la Tabla = Nc x Na Costo Programación Dinámica O ( Nc x Na x c )

Trimming Se reconstruye el camino Se sigue el camino indicado por la tabla resultado de la programación dinámica Se van mapeando los nodos encontrados con los nodos originales

Datos útiles Concorde: - programa que implementa varias heurísticas - útil para comparaciones de resultados - Tiempos de ejecución C++: LARGE_INTEGER frecuencia; QueryPerformanceFrequency(&frecuencia); unsigned __int64 frec=frecuencia.QuadPart; LARGE_INTEGER x; LARGE_INTEGER z; QueryPerformanceCounter(&x); p=new Perturbacion(&archivoOpen,c); QueryPerformanceCounter(&z); unsigned __int64 dif=z.QuadPart-x.QuadPart; tiempoPert=(long double)dif/(long double)frec;

QueryPerformanceFrequency(LARGE_INTEGER *n) da como resultado la cantidad de ciclos por segundo a la que funciona el procesador QueryPerformanceCounter(LARGE_INTEGER *n) informa la cantidad de ciclos que han transcurrido desde que se inicio el sistema Más información sobre TSP