Você está na página 1de 14

PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS

SISTEMAS DE INFORMAÇÃO – 3º PERÍODO

PROJETO DE ALGORITMOS

O PROBLEMA DO CAIXEIRO VIAJANTE

Allan Gomes e Silva Amanda Alves Ferreira Camila Valadares de Andrade Diego de Souza Neves Letícia Danielle Cruz de Souza Lucas Henrique Lima dos Santos

PROF. ANDERSON RIBEIRO DA COSTA

Projeto de Algoritmos

PROBLEMA DO CAIXEIRO VIAJANTE

“Suponha que um caixeiro viajante tenha de visitar n cidades diferentes, iniciando e encerrando sua viagem na primeira cidade. Suponha, também, que não importa a ordem com que as cidades são visitadas e que de cada uma delas pode-se ir diretamente a qualquer outra. O problema do caixeiro viajante consiste em descobrir a rota que torna mínima a viagem total”.

Projeto de Algoritmos

É um problema de otimização combinatória.

Como transformá-lo num problema de enumeração ? Como determinar todas as rotas do caixeiro ? Como saber qual delas é a menor ?

SOLUÇÃO: São (n-1)! Rotas

PERGUNTA: É um trabalho fácil para a máquina ?

Projeto de Algoritmos

ALGORITMO

A primeira coisa que podemos pensar para resolver esse tipo de problema é reduzi-lo a um problema de enumeração: achamos todas as rotas possíveis e, usando um computador, calculamos o comprimento de cada uma delas e então vemos qual a menor. (É claro que se acharmos todas as rotas estaremos contando-as, daí podermos dizer que estamos reduzindo o problema de otimização a um de enumeração).

Projeto de Algoritmos

Para acharmos o número R( n ) de rotas para o caso de n cidades, basta fazer um raciocínio combinatório simples e clássico. Por exemplo, no caso de n = 4 cidades, a primeira e última posição são fixas, de modo que elas não afetam o cálculo;

Projeto de Algoritmos

Na segunda posição podemos colocar qualquer uma das 3 cidades restantes B, C e D, e uma vez escolhida uma delas, podemos colocar qualquer uma das 2 restantes na terceira posição; na quarta posição não teríamos nenhuma escolha, pois sobrou apenas uma cidade;

Projeto de Algoritmos

Consequentemente, o número de rotas é 3 x 2 x 1 = 6, resultado que tinhamos obtido antes contando diretamente a lista de rotas.

Projeto de Algoritmos

De modo semelhante, para o caso de n cidades, como a primeira é fixa, o leitor não terá nenhuma

dificuldade em ver que o número total de escolhas que

podemos fazer é (n-1) x (n-2) x usando a notação de fatorial:

x 2 x 1. De modo que,

R( n ) = ( n - 1 )!

Projeto de Algoritmos

A quantidade ( n - 1 )! cresce com uma velocidade alarmante

Projeto de Algoritmos A quantidade ( n - 1 )! cresce com uma velocidade alarmante

Projeto de Algoritmos

Calcular o comprimento total das viagens de cada rota e ver qual delas tem o menor comprimento total não é um trabalho fácil para o computador.

O problema é que a quantidade ( n - 1 )! cresce com uma velocidade alarmante, sendo que muito rapidamente o computador torna-se incapaz de executar o que lhe pedimos.

Projeto de Algoritmos

GRAFOS

Se tivermos as cidades A, B, C e D, uma rota que o caixeiro poderia considerar é sair de A para B, dessa vai para C, e daí vai para D e então volte para A. Existem mais seis rotas possíveis: ABCDA, ABDCA, ACBDA, ACDBA, ADBCA e ADCBA.

Projeto de Algoritmos

D C A
D
C
A

B

Projeto de Algoritmos

CONCLUSÕES

Busca da eficiência dos algoritmos para diminuir o tempo de execução;

A

influencia no tempo de execução de um algoritmo;

quantidade

de

memória

de

máquina

uma

A complexidade é um indicador para a avaliação da eficiência de tempo do algoritmo;

Projeto de Algoritmos

SOBRE O PROBLEMA DO CAIXEIRO VIAJANTE

“O problema do caixeiro viajante é um problema de cunho econômico-social para o Caixeiro, mas um problema do caramba para a computação”.

Fonte: Desciclopédia