You are on page 1of 34

O Problema do Caixeiro Viajante

Grupo:
Thiago Vincius Vieira Batista Jos Lauciano Ferreira de Almeida Welison Douglas dos Santos Pereira

O Problema

Dado um conjunto de N cidades, um vendedor deseja fazer o menor percurso, visitando todas as cidades uma nica vez, posteriormente regressando a origem

Grafos
Um grafo uma representao de um conjunto de objetos conectados por linhas. Em geral, grafos so representados por um par ordenado G = (V,L), onde V um conjunto de vrtices, e L um conjunto de linhas. Cada linha do grafo pode ter um valor numrico associado, chamado peso, uma direo e um sentido.

A Classe P
Uma linguagem dita polinomialmente decidvel se existe uma Mquina de Turing determinstica de uma fita que decida tal linguagem em tempo polinomial. A classe de todas as linguagens polinomialmente decidveis chamada classe P.

Exemplo: Dados vrtices r e s de um grafo, encontrar um caminho de comprimento mnimo de r a s no grafo ou constatar que no h caminho algum de r a s.

A Classe NP
NP a classe de todas as linguagens que so decidveis por uma Mquina de Turing no determinstica em tempo polinomial.

Exemplo: O problema do caminho hamiltoniano.

Caminho Hamiltoniano
Dado um grafo G, o caminho hamiltoniano um caminho que permite passar por todos os vrtices de G, sem repetir nenhum. O ciclo hamiltoniano um caminho hamiltoniano que tambm retorna para o vrtice inicial.

Exemplos de Caminhos Hamiltonianos

O Problema do Ciclo Hamiltoniano

Dado um grafo G, decidir se G tem um ciclo hamiltoniano ou no. Definimos o Problema do Ciclo Hamiltoniano como HAM

Ciclos Hamiltonianos
Dado o grafo G' Dado o grafo G''

G' no admite nenhum ciclo hamiltoniano, G'' admite.

O PCV

O PCV (Problema do Caixeiro Viajante), muito semelhante a HAM, a diferena que, alm de achar um caminho que passe por todos os vrtices uma nica vez, tambm queremos fazer isso com o menor custo (distncia) possvel.

O PCV
O PCV pode ser descrito como um grafo sem direo, em que cada cidade so os vrtices, os caminhos so as linhas que conectam os grafos, e a distncia de um caminho o tamanho da linha.
10 C 15 A 14 5 8 B D 7

Regras do Problema
1. O Caixeiro sempre sai de uma cidade para outra diferente.
Soluo Invlida C

Regras do Problema
2. No podem haver sub-caminhos na soluo
Soluo Invlida C

Regras do Problema
3. Seja C = Mij uma matriz na qual i representa cidade de origem, e j representa cidade de destino, Aij representa o custo de se viajar de i para j. Se Aij = Aji, M simtrica e obedece a desigualdade triangular.
10 C 8 15 5 A 14 B D 11 A B C D A 14 15 5 B 14 8 11 C 15 8 10 D 5 11 10 -

Complexidade do PCV
O PCV pode ser resolvido de uma maneira bastante simples, porm muito custosa. Para descobrir a menor de todas as rotas R(n) para n cidades, basta testar todas as possibilidades e verificar qual delas a menor. Ou seja, o algoritmo pode ser resolvido em (n-1)! Passos. O(n) = (n!)

Prova da NP-Completude

1. Mostrar que o PCV pertence a NP 2. Mostrar que o PCV NP-Difcil

Prova da NP-Completude
1. Mostrar que o PCV pertence a NP
Para isso devemos mostrar que a checagem de PCV pertence a P, ou seja, podemos checar PCV em tempo polinomial por uma MT determinstica. Sabendo que a melhor rota para PCV com N cidades L, e dada uma rota R. Para se checar se essa rota R a melhor, basta verificar se seu comprimento L. Essa checagem claramente pertence a P, portanto PCV pertence a NP.

Prova da NP-Completude
2. Mostrar que o PCV NP-Difcil Para isso temos que reduzir um problema conhecidamente NPCompleto a PCV em tempo polinomial, vamos reduzir ento o Ciclo Hamiltoniano ao PCV. G = (V, E) um grafo completo, ou seja, todos os vrtices tem rotas entre si. Onde V o conjunto de vrtices e E o conjunto de rotas. Queremos encontrar um caminho com custo mnimo usando o Ciclo Hamiltoniano.

Prova da NP-Completude
PCV = {<G, c, k> : G = (V, E) um grafo completo, c a funo de custo V V Z k pertence a Z, e G tem um caminho com custo k} O algortmo F: <G> -> <G, c, k> constroi G = (V, E) onde: G' um grafo completo, c(i, j) = 0 se (i, j) pertence a E 1 se (i, j) no pertence a E k = 0. O algoritmo F roda em tempo polinomial pois: constroi G' com tempo O(V) e constroi c com tempo O(V) F faz um reduo: <G> pertence ao Ciclo Hamiltoniano <=> <G, c, 0> pertence a PCV

Prova da NP-Completude
(=>) G tem um ciclo hamiltoniano h Toda rota no ciclo pertence a G Tais rotas tero custo 0 em G' Portanto G' tem um caminho com custo 0 (<=) G' tem um caminho com custo 0. Todo caminho em G' tem custo 0 ou 1 Portanto, toda rota no caminho tem custo 0 Ento toda rota no caminho deve tambm ser rota de G G tem um cilo hamiltoniano

P = NP?
Se existir uma soluo aproximada em tempo polinomial para o PCV, HAM pode ser resolvido exatamente em tempo polinomial. Como HAM NPCompleto, isso s possvel se P = NP. Note que, mesmo o PCV sendo NP-completo, apenas a existncia de uma soluo exata em tempo polinomial para o PVC implicaria em P = NP.

Outros algoritmos para resoluo do PCV

Algoritmo Branch-and-Bound Algoritmos Heursticos

Algoritmo Heurstico
O termo Heurstico usado para algoritmos que encontram solues dentre vrias outras, mas no garantem que a melhor possvel.

Algoritmo do vizinho mais prximo


um algortmo Heurstico para resoluo do PCV. De acordo com este algoritmo, toda vez que um caixeiro est na cidade i, ele escolhe como prxima cidade a cidade j, tal que o custo C(i,j) seja o mnimo dentre todos os C(i,k) custos, onde k so os ponteiros para todas as cidades que o caixeiro no visitou ainda. um algortmo ganancioso que em cada passo sempre escolhe a visita mais barata, sem se importar caso no seja a melhor rota.

Algoritmos Branch-and-Bound
O Algoritmo Branch-and-Bound gera rvores enumeradas a fim de limitar o problema e encontrar um encontrar o melhor subconjunto de respostas, descartando candidatos baseado nos limites inferior e superior dos valores examinados."

Exemplo
Suponha um PCV com quatro cidades e a seguinte matriz de distncias Mij, onde Xij a distncia entre a cidade i e a cidade j
1 2 3 4 1 5 4 7 2 5 3 2 3 4 3 8 4 7 2 8 -

Exemplo
Ao sair da cidade 1, a menor distncia para outra cidade quatro. Chamamos de limite inferior da distncia a soma das menores distncias de cada linha. Ele representa a distncia mnima que deve ser percorrida para passar por todos os pontos. A partir do limite inferior, criamos um ramo para cada caminho possvel, formando novos limites inferiores:

Exemplo
Examinar um desses limites pressupe que um caminho j foi percorrido. Assim, no clculo do novo limite inferior, eliminamos a linha e a coluna desse caminho, fixando o seu valor para x12 LI = 5 + 2 + 4 + 7

1 2 3 4

1 5 4 7

2 5 3 2

3 4 3 8

4 7 2 8 -

Exemplo

No fazemos um ramo para X23 pois j passamos pela cidade 3. Quando s temos dois caminhos a seguir, cada caminho representa uma soluo vivel. Calculamos ento o limite superior desse caminho. Para X21, passamos por X13, mas no passamos pela cidade 4, ento faltam os caminhos X34 e X42.

Exemplo

Caminho: 1-3-4-2-1, LS = X13 + X34 + X42 + X21 = 4 + 8 + 2 +5 = 19 Para X24, faltam os caminhos X32 e X41. Caminho: 1-3-4-2-1, LS = X13 + X32 + X24 + X41 = 4 + 3 + 2 +7 = 16

Exemplo
Encontramos um caminho com distncia total 16. Ainda existe um caminho com limite inferior 15, cuja distncia total pode ou no ser menor do que 16.

Exemplo
Continuando a partir do limite 15: Para X21, faltam os caminhos X43 e X32. Caminho: 1-4-3-2-1, LS = X14 + X43 + X32 + X21 = 7 + 8 + 3 +5 = 23 Para X23, faltam os caminhos X42 e X31. Caminho: 1-4-2-3-1, LS = X14 + X42 + X23 + X31 = 7 + 2 + 3 +4 = 16

Exemplo
Encontramos como resposta dois caminhos equivalentes de distncia total 16. Sabemos que essa distncia menor do que as distncias possveis a partir de X12 pois elas so automaticamente maiores ou iguais a 18.

Fim

You might also like