Você está na página 1de 8

1

UNIVERSIDADE DO SUL DE SANTA CATARINA - UNISUL CLEITON VIANA SILVEIRA JOO FILIPI DA ROSA

ANLISE DE ALGORITMOS PROBLEMA DO CAIXEIRO VIAJANTE

Palhoa 2010

CLEITON VIANA SILVEIRA JOO FILIPI DA ROSA

ANLISE DE ALGORITMOS PROBLEMA DO CAIXEIRO VIAJANTE

Trabalho curricular de Anlise de Algoritmos apresentado ao Curso de Cincia da Computao da Universidade do Sul de Santa Catarina, para cumprimento da ementa semestre/ano: 2/2010.

Orientador: Prof. Osmar de Oliveira Braz Jnior

Palhoa 2010

SUMRIO
INTRODUO.......................................................................................................................................................4 O PROBLEMA DO CAIXEIRO VIAJANTE......................................................................................................5 SOLUO PARA O PROBLEMA DO CAIXEIRO VIAJANTE.....................................................................6 1.1. ALGORITMOS EXATOS APLICADOS AO PROBLEMA DO CAIXEIRO VIAJANTE.......................................................................6 1.2. ALGORITMOS HEURSTICOS APLICADOS AO PROBLEMA DO CAIXEIRO VIAJANTE................................................................7

1.2.1. Algoritmo Busca Tabu......................................................................................................8

INTRODUO A capacidade de processamento altssima dos computadores atualmente no mercado nos faz crer que solues exatas e precisas so simples de serem solucionadas a partir da apicao de um algoritmo que no exija tamanha complexidade. Mas o que veremos no o que acontece, veremos o quanto nossos computadores deixam a desejar no sentido de se resolver problemas com nvel de complexidade mais elevado. Para resolver tais problemas so necessrias tcnicas computacionais mais apuradas, algoritmos mais eficazes. Utilizaremos o problema do caixeiro viajante para retratar melhor essa condio, tal problema clssico dentre os problemas de otimizao combinatria. O problema do caixeiro viajante muito utilizado para aprimoramento de idias algortmicas tendo em vista que no complexo para se descrever, porm caracterizado como algoritmo NP-Hard, que significa que raramente ser possvel que algoritmos o solucionem, apenas mostrem um resultado aproximado do real, para que satisfaa a necessidade de uma aplicao, pesquisa ou desenvolvimento de anlise.

O Problema do Caixeiro Viajante

O Problema do Caixeiro Viajante busca encontrar o menor caminho a percorrer dentre uma determinada lista de cidades, de modo que todas possam ser visitadas e de uma nica s vez. Tantas possibilidades devem ser consideradas com a resoluo do problema do caixeiro viajante que se torna impossvel a obteno de uma soluo exata, buscando-se somente a melhor soluo encontrada em menos tempo. Buscar uma soluo exata acarretaria em um alto custo para o processo, pois se aumentamos as possibilidades o problema aumenta muito, tornando impossvel, para ser processadas, solues poderia ser alcanado em dias, meses, anos, dcadas, supondo que se alterarmos insignificantemente o proposto para soluo do curso. Vamos exemplificar melhor, se tivermos um computados capaz de fazer 1 bilho de adies por segundo, temos 20 cidades a percorrer, a partir disso notamos que sero necessria 19 adies. O nosso computador ser capar de realizar 53 milhes de rotas por segundo, o que no pouco, computador muito bom o nosso, de dar inveja. Porm ele no capaz de dar a soluo do problema em um tempo que eu poderia estar satisfeito a ver, pois ele necessitaria de 2.3 x 10^9 segundo para me retornar um resultado, cerca de 70 anos de processamento. Usando a notao fatorial R( n ) = ( n - 1 )! Percebe-se que o aumento se d em saltos gigantes a cada nova cidade que acrescentamos para retornar uma nova soluo.
N = Qde de Cidades 5 10 15 20 25 Rotas por Segundo 250 milhes 110 milhes 71 milhes 53 milhes 42 milhes

(N-1)! 24 362880 87 Bilhes 1,2 x 10^17 6,2 x 10^23

Clculo Total insignificante 0,003 segundos 20 minutos 73 anos 470 milhes de anos

O Problema do caixeiro viajante por ser altamente aplicado na vida real, desenvolvido vrios mtodos e abordagens. A mais utilizada seria o conceito de algoritmo de aproximao, ou algoritmos heursticos.

Soluo para o Problema do Caixeiro Viajante Como falamos anteriormente o problema do caixeiro viajante um problema NP Completo ou NP - Difcil, ou seja, de alta complexidade para solues computacionais devido a sua ampla escalabilidade fatorial contida em cada ciclo do curso. Para resolver tal problema encontramos os algoritmos Exatos e os algoritmos Heursticos. Este ltimo mais adequado para a soluo do problema. Mas abordaremos ambos a seguir.

1.1.

Algoritmos Exatos aplicados ao Problema do Caixeiro Viajante

Para solucionar o problema do caixeiro viajante seria possvel agruparmos todas as possibilidades, e test-las em seqncia. Porm sabemos da complexidade do problema do caixeiro viajante, e sabemos tambm que tal processamento tornar-se-ia invivel. Algoritmos exatos permitem dois resultados, o Sim e o No. So algoritmos de processamento limitado que nos traria essas duas solues, sim, possvel, no, impossvel ou no convm. Este mtodo chama-se Programao Inteira, tais mtodos podem ser citados como Branch & Bound, Branch & Cut, Branch & Price e Programao Dinmica. Caso a execuo do processo seja concluda de forma que retorne o resultado antes do esperado, ele trar o melhor resultado, a soluo mais tima possvel, claro que este no seria o melhor caso, mas uma das vantagens dos algoritmos da Programao Inteira. Porem, para a maioria dos problemas, principalmente do problema do caixeiro viajante, a quantidade de variveis de entrada devem ser limitadas ao extremo devido ao grande crescimento de possibilidades com o aumento das mesmas. Como falado anteriormente impossibilitando uma soluo tima. Outro fato seria que o consumo de memria seria muito alto, obviamente levando o computador ao seu limite, interrompendo a execuo do processamento. Abaixo exemplificamos em uma tabela o que ocorreria em uma simulao com Programao Inteira para o problema do caixeiro viajante.

Analisando a figura acima temos a coluna |V| que indica a quntidade de cidades que o algoritmo teria de percorrer, N de iteraes seria como o nome jpa diz as iteraes realizadas para que se chegue ao timo global, na coluna ao lado o tempo necessrio em minutos para a execuo at a obteno da resposta. Notamos que ao fazermos a anlise com 51 cidades o tempo mximo que o computador consegue processar at que o mesmo desista e no encontre soluo vivel ao problema do caixeiro viajante.

1.2.

Algoritmos Heursticos aplicados ao Problema do Caixeiro Viajante

Como vimos anteriormente a aplicao de algoritmos exatos para o problema do caixeiro viajante no eficiente quando se depara com um elevado nmero de cidades para solucionar. Nesse caso os algoritmos Heursticos ou algoritmos de aproximao so mais eficientes. Algoritmos de Aproximao so aqueles que buscam a soluo da maneira mais correta possvel dentro de uma porcentagem que seja aceitvel. Analisa-se o melhor e o pior caso que o algoritmo pode produzir avaliando a proximidade com o que se torna aceitvel como j falamos anteriormente. Aceitvel do ponto de vista do resultado esperado, como do tempo para realizas a busca da soluo para o problema. Temos alguns modelos de algoritmos heurstico com aplicaes ao problema do caixeiro viajante como o algoritmo Busca Tabu, Simulated Annealing (SA) e Greedy Randomized Adaptive Search Procedures (GRASP). Usaremos como exemplo o algoritmo Busca Tabu para mostrar como feito o processo de aproximao de possibilidades para o problema do caixeiro viajante.

1.2.1.

Algoritmo Busca Tabu O algoritmo de busca tabu baseia-se em uma busca local. A cada iterao procura uma

nova soluo vizinha que possua um menor custo de distncia. Porm fica em contnua busca de uma nova melhor distncia, e cada soluo formada por elementos. Tenta escapar de mnimos locais, proibindo alteraes nos elementos afetados nas ultimas K iteraes e guarda a melhor soluo encontrada durante sua execuo. Explicando melhor os termos temos K, que corresponde ao nmero de iteraes na memria da busca tabu, T(k), corresponde a lista de movimentos proibidos, lista tabu, considerando ultima K iteraes. Temos ainda o N(S), que corresponde ao conjunto de solues vizinhas de S.