Barbara Martina Rodeker Universidad Nacional del Centro de la Pcia. de Buenos Aires...

Post on 28-Jan-2016

215 views 0 download

Transcript of Barbara Martina Rodeker Universidad Nacional del Centro de la Pcia. de Buenos Aires...

Barbara Martina RodekerUniversidad Nacional del Centro de la Pcia. de Buenos Aires

brodeker@alumnos.exa.unicen.edu.ar

El problema del viajanteUna implementación del esquema de

aproximaciónpropuesto 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 “

C2c3

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étricola distancia de A a Bes la misma que de B a A

Asimétricola distancia de A a B no es la misma que de B a A

c1

c2

c3

c4

c1

c2

c3

c4

Casos especialesCasos especiales

Desigualdad TriangularDesigualdad Triangular

TSP EuclídeoTSP Euclídeo(PTAS (PTAS

Arora)Arora)

AA

BB

CC

d(a,b) <= d(a,c) + d(c,b)

d(a,b) = ( a2 + b2 ) 1/2

Soluciones aproximadas

HEURÍSTICAS

•Soluciones cercanas a la óptima•Obtenidas en menor tiempo•Varían en su distancia al óptimo

Nearest Neighbour GreedyAlgoritmos genéticosAlgoritmos de colonia de hormigasEsquemas de aproximación

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

http://www.cs.princeton.edu/~arora/

• Profesor de Cs. De la Computaciónde 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 2K 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ámicaApareos

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

Estructurade las celdas

 Complejidad

Número de Cuadrantes = Nc <= 4log2L , 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- http://www.tsp.gatech.edu/

•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 segundoa 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

http://www.ing.unlp.edu.ar/cetad/mos/TSPBIB_home.html