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