Problema do Caixeiro Viajante

Implementação força bruta em Java e C

Daniel Cardoso Leão

Izabela Caldeira Borges

Problema do  Caixeiro Viajante

O problema do caixeiro viajante consiste em determinar a rota mínima para percorrer uma série de n cidades, retornando à cidade inicial.

​Força Bruta

O algoritmo de busca por força bruta executa todas as tentativas possíveis de caminho, o que só é capaz de mostrar uma solução para problemas com um número de vértices pequeno como entrada.

Tempo de execução

Ambas as tentativas de execução com 14 cidades demoraram mais de 1 hora para executar, e por isso não houve tentativa com um número maior.

Especificação da máquina: processador Intel Core i5 2,7 GHz, dois núcleos; L2 cache de       256 KB por núcleo, L3 cache de 3MB, memória de 8 GB 1867 MHz DDR3.

Heurística do vizinho mais próximo

Também chamado de algoritmo guloso, foi um dos primeiros algoritmos utilizados para determinar uma solução para o problema do PCV. Ele gera rapidamente um caminho curto, mas geralmente não o ideal.

Heurística do vizinho mais próximo

A heurística do vizinho mais próximo consiste em pegar sempre o caminho de menor valor a partir do vértice atual até um vértice não visitado, até que todos os vértices sejam visitados.

A sequência de vértices visitados é a saída do problema: o caminho mais curto.

Um problema do vizinho mais próximo, é que depois de várias arestas de baixo valor ele pode ter como única escolha passar por uma aresta de valor altíssimo, deixando de gerar um caminho rápido.

Algoritmo ACO (otimização de formigueiro)

Ele modela o comportamento observado em formigas reais para encontrar caminhos curtos entre as fontes de alimento e seu ninho, resultante da preferência de cada formiga para seguir feromônios de trilha depositados por outras formigas.​

Algoritmo ACO (otimização de formigueiro)

Inicialmente, cada uma de n formigas é colocada em uma cidade, e em seguida, cada formiga escolhe probabilistica-mente a cidade seguinte para visitar baseada em uma heurística que combina a distância à cidade e a quantidade de feromônio virtual depositada na borda da cidade.

As formigas visitam novos nodos, depositando feromônio em cada borda que eles cruzam, até que todos tenham completado um passeio (circuito). Neste ponto, a formiga que completou a mais curta excursão deposita feromônio virtual ao longo de seu circuito (atualização de trilha global). 

Algoritmo ACO (otimização de formigueiro)

A quantidade de feromônio é inversamente proporcional ao comprimento do circuito: quanto mais curto o circuito, mais feromônio.

Sendo assim a aresta com mais feromônio torna-se aquela que além de sempre ser visitada nos circuitos feitos pelas formigas é também uma aresta que faz parte de um ou mais circuitos de menor tamanho.

Dúvidas?

Contato

Daniel Cardoso Leão

daniel.leao.947635@sga.pucminas.br

 

Izabela Caldeira Borges

​izabela.borges@sga.pucminas.br

Traveling Salesman Presentation

By Izabela Borges

Traveling Salesman Presentation

This is a presentation on the Traveling Salesman Problem, implemented with a brute force algorithm in both Java and C programming languages for a seminar on Computer Science graduate course on PUC Minas.

  • 474