Está en la página 1de 16

PROBLEMA DEL

AGENTE VIAJERO
Fuerza bruta

■ En el problema del agente viajero la solución más directa puede ser, intentar todas las
permutaciones y ver cuál de estas es la menor.
■ El tiempo de ejecución es un factor polinómico del orden O(n!), el factorial del número
de ciudades, esta solución es impracticable para dado solamente 20 ciudades por
ejemplo. 2,432,902,008,000,000,000 permutaciones
En general, se pueden resolver problemas con subestructuras óptimas siguiendo estos tres pasos:
■ Paso 1: Generar una permutación con cada vecino hasta llegar al destino.
■ Paso 2: Guardar la posible ruta y calcular el costo
■ Paso 3: Repetir paso 1 y 2
■ Paso 4: Comparar todas las iteraciones, la ruta mínima es el resultado óptimo.
Para generar las permutaciones se usó una clase predeterminada de java llamada nextPermutation,
que aplica el algoritmo de Jhonson Trotter.
■  Johnson Trotter(n)
■  //Input: Un entero positive n
■  initialize the first permutation with: <0, <1, <2
■  //(Todos los elementos apuntando hacia la izquierda)
■  while ( //La ultima permutacion tenga un element movil)
■  // k ← el elemento movil k mas grande
■  //Intercambiar K con el elemento que lo apunta
■  //Invertir la direccion de todos los elementos > K
■  //Agregar la permutacion a la lista
Al tener las iteraciones realizadas, podemos tomar todas las rutas planteadas y calcular el costo,
después buscar la de menor costo y proponer como la mejor.
■ Para cada permutación i
Para j=0 hasta permutacion.length
Costo[i] += path[j]+ path[j+1]
fin i++
Fin
//Buscar el arreglo de menor costo.
mejorRuta=min(costo)
Programación dinámica
En este tipo de programación utiliza un método para reducir el tiempo de ejecución de un
algoritmo mediante la división en subproblemas y resolver recordando todas las soluciones
por si en las siguientes iteraciones fuera necesarias nuevamente.
■ TSP con algoritmo Held–Karp  Resuelve el problema en 𝜃 𝑛2 2 𝑛
■ Necesita 𝑛2 2 𝑛 espacio para almacenar operaciones
■ 𝐷(𝑉𝑖 𝑆) Será la longitud del camino mínimo partiendo del vértice Vi que pasa por todos los
vértices del conjunto S y vuelve al vértice 𝑉𝑖
En general la relación de recurrencia es la siguiente:
𝑔 𝑖, { } = 𝐿𝑖1 Cuando S es { }
𝑔 𝑖, 𝑆 = 𝑀𝑖𝑛𝑗∈𝑆 {𝐿𝑖𝑗 + 𝑔 𝑗, 𝑆 𝑗}

𝒈(𝒊, 𝑺) Será la longitud del camino mínimo partiendo del vértice i que pasa por todos los vértices
del conjunto S y vuelve al vértice 𝒊.
Algoritmo voraz

El vecino más cercano


■ Permite al viajante elegir la ciudad no visitada más cercana como próximo movimiento.
■ En promedio, retorna un camino de un 25% más largo que el menor camino posible.
■ Revuelve el problema del agente viajero hasta con 14,900 ciudades rápidamente.
Para el caso del agente viajero no se asegura que la solución dada sea la mejor. En general el proceso
seguido es el siguiente.
■ Paso 1: Se inicia la distancia en 0 ”cero” y un arreglo de vecinos vacía
■ Paso 2: Se toma un nodo inicial, generalmente el primero del grafo.
■ Paso 3: Se calculan las distancias con todos sus vecinos que no estén en la lista de visitados.
■ Paso 4: Se elige el vecino más cercano al nodo inicial
■ Paso 5: La distancia se actualiza con la distancia acumulada más la distancia del vecino más
próximo.
■ Paso 6: El nodo inicial se guarda en la lista de visitados, el vecino seleccionado ahora es el nodo
inicial.
■ Paso 7: Repetir desde el paso 2 mientras no se llegue al destino.
Divide y vencerás

■ En las ciencias de la computación, el término divide y vencerás (DYV) hace referencia


a uno de los más importantes paradigmas de diseño algorítmico. El método está basado
en la resolución recursiva de un problema dividiéndolo en dos o más subproblemas de
igual tipo o similar. El proceso continúa hasta que éstos llegan a ser lo suficientemente
sencillos como para que se resuelvan directamente. Al final, las soluciones a cada uno
de los subproblemas se combinan para dar una solución al problema original
Algoritmo de plano de corte

es agregar un conjunto de restricciones que, cuando se incorporan al Problema de


Asignación garanticen evitar la formación de un subcircuito.
Consideremos un problema con n ciudades, asociar una variable continua U >= 0 con las
ciudades 2,3,…,n.
A continuación definir un conjunto de restricciones adicionales de la siguiente forma:
Método de Branch and Bound

■ El método de branch and bound (ramificación y poda), nos proporciona una solución


óptima del problema del agente viajero, calculando mediante el algoritmo simplex la
solución del modelo. A medida que aumente el tamaño de la red el método puede tardar
gran cantidad de tiempo en resolverse, sin embargo para redes de mediano tamaño es
una excelente alternativa.
■ En este caso y considerando la red que hemos desarrollado mediante los métodos
anteriores, utilizaremos el módulo Network Modeling del software WinQSB para
encontrar la solución óptima.
Algoritmos genéticos

Los algoritmos genéticos fueron introducidos por John Holland a finales de los 60´s,
inspirándose en el proceso observado en la evolución natural de los seres vivos.
Son algoritmos de búsqueda basados en la mecánica de la selección natural y en la genética.
Estos combinan la supervivencia de los individuos más aptos entre las cadenas de
estructuras con un intercambio aleatorio para formar un algoritmo de búsqueda
Algoritmos Heurísticos de Inserción
Consiste en comenzar construyendo ciclos que visiten únicamente unos cuantos vértices,
para posteriormente extenderlos insertando los vértices restantes. En cada paso se inserta un
nuevo vértice en el ciclo hasta obtener un ciclo Hamiltoniano.
Algoritmos Genéticos
la solución consiste en encontrar un individuo cuya combinación de genes (cada gen es una
variable), den solución al problema de visitar todas las ciudades una vez. Otra solución es
que cada gen es una ciudad y cuyo orden dependerá del orden en que serán visitadas. Redes
neuronales: Una red neuronal simula las conexiones entre los nodos (lugares por visitar), y
cada recorrido por las diferentes neuronas genera al final un camino que involucra el tour
por todas las ciudades visitadas una sola vez.

También podría gustarte