SlideShare uma empresa Scribd logo
1 de 22
Faculdade de Ciências Humanas, Saúde, Exatas
e Jurídicas de Teresina
Turma: Ciência da Computação
Período: 4º - Manhã
Disciplina: Projet0 e Análise de Algoritmos
Docente: Francisco José
Discentes: Adson Ferrett
Igor Monteiro
Marcelo Kelle
Whallysson Estevam
Copyright 2013.1
1 Introdução;
2 Tipos de Problema;
2.1 A Classe P de problemas;
2.2 A Classe NP de problemas;
2.2 A Classe NP-Completo de problemas;
2.2 A Classe NP-Difícil de problemas.
3 Problema do caixeiro viajante;
3.1 Algoritmos de força bruta;
3.2 Implementação.
4 O Problema do caixeiro viajante é NP-Completo;
5 Conclusão;
6 Referências.
Copyright 2013.1
 O problema do caixeiro viajante é um problema que
tenta determinar a menor rota para percorrer uma
série de cidades, retornando à cidade de origem. Ele é
um problema de otimização NP-Completo inspirado
na necessidade dos vendedores em realizar entregas
em diversos locais percorrendo o menor caminho
possível, reduzindo o tempo necessário para a viagem
e os possíveis custos com transporte e combustível.
3
 Nos anos de 1800, problemas relacionados com o PCV
começaram a ser desenvolvidos por dois matemáticos:
o escocês William Rowan Hamilton e o britânico
Thomas Penyngton Kerkman. A forma geral do PCV
parece ter sido, pela primeira vez, estudada por
matemáticos nos anos de 1930 em Harvard e Viena. O
problema foi posteriormente estudado por Hassler
Whitney e Merril Flood em Princeton.
4
 Para compreender o problema abordado neste
trabalho, é necessário conhecer a classe de problemas
NP-Completos. Para melhor compreender essa classe
e também as classes P e NP, segue uma definição
básica de cada uma delas.
fig 1.
5
6
2.1 A Classe P de problemas
 A classe NP de problemas é o conjunto de todos os
problemas de decisão para os quais existem
verificadores polinomiais. Esta classe corresponde à
classe dos problemas que poderíamos chamar
"razoáveis".
 É importante lembrar que todo problema pertencente
à classe P também pertence à classe NP, uma vez que
se um problema pode ser resolvido em tempo
polinomial, ele pode ser igualmente verificado em
tempo polinomial.
7
2.2 A Classe NP de problemas
 A classe NP-Completo é o conjunto de todos os
problemas completos em NP, portanto, NP-Completo
é a classe dos problemas mais "difíceis" de NP.
 Esta classe de problemas é alvo de longos estudos e
pesquisa durante as últimas décadas, pois ela está no
centro de um dos impasses mais famosos dentro da
computação.
8
2.3 A Classe NP-Completo de problemas
 Um problema NP-Difícil pode também estar em NP,
mas não necessariamente. Os problemas contidos
nesta classe são ditos ao menos tão difíceis quanto os
problemas mais difíceis de NP e não é possível
resolvê-los na exatidão, a menos que P = NP. Ou seja,
um algoritmo polinomial que encontra a solução
exata para um problema NP-Difícil implica P = NP.
9
2.4 A Classe NP-Difícil de problemas
 O PCV consiste em, dado um grafo completo G(V,E),
com n vértices, obter um ciclo hamiltoniano de custo
mínimo, isto é, deseja-se, a partir de um vértice
inicial, passar por todos os demais vértices do grafo
uma única vez e então retornar ao vértice inicial. Cada
aresta que liga um par de vértices do grafo possui um
custo c(i, j) que determina o quanto se gasta para ir de
i até j. Esse custo pode ter diversos significados, de
acordo com a aplicação desejada.
10
 Algoritmos de força bruta são uma forma de se
encontrar a solução ótima para um problema de
otimização através do teste exaustivo de todos os
elementos de seu domínio. Considerando o PCV, que é
o problema estudado neste trabalho, um algoritmo de
força bruta consiste em testar todas as permutações
possíveis entre os vértices de uma instância e escolher
o ciclo hamiltoniano de menor custo.
11
3.1 Algoritmos de força bruta
12
3.2 Implementação
 A seguir, o pseudocódigo que descreve a implementação
feita para o algoritmo de força bruta.
Força Bruta(Ciclo[n], int pos)
1. SE pos == n
2. Calcule o custo do ciclo
3. SE custo < custo mínimo
4. ENTÃO custo mínimo = custo
5. SENÃO FAÇA
6. PARA j = pos até n
7. Troca (ciclo[], pos, j)
8. Força Bruta (ciclo[], pos + 1)
9. Troca (ciclo[], pos, j)
13
3.2 Implementação
 Os cálculos realizados no passo 2, com relação ao
custo da instância, podem ser descritos da seguinte
forma:
Custo(M[n][n], ciclo[n])
1. double custo = 0
2. PARA i = 1 até n-1
3. FAÇA custo = custo + M[ciclo[i]][ciclo[i + 1]]
4. custo = custo + M[ciclo[n]][ciclo[1]]
5. RETORNE custo.
14
3.2 Implementação
 Voltando ao algoritmo principal, os passos 7 e 9 são
responsáveis pela permutação de fato dos vértices no
ciclo. Para isso, foi utilizado um algoritmo simples de
troca de posições em um vetor.
Troca(ciclo[n], int i, int j)
1. int aux = ciclo [i]
2. ciclo[i] = ciclo [j]
3. ciclo[j] = aux
15
3.2 Implementação
 Através da figura 2, pode-se observar um grafo que
representa uma instância do PCV-Métrico e todas as
permutações possíveis para a obtenção da solução.
fig 2.
16
3.2 Implementação
(i) Decisão do Caixeiro Viajante é NP
 A exibição da justificativa SIM pode ser dada por uma sequência
de vértices. A verificação da justificativa apresentada consiste em
se verificar que cada vértice aparece na sequência apenas uma
vez.
O(n) - percorrer a lista marcando os vértices, observando se já não
foram marcados, verificar se contém todos os vértices,
O(1) - durante a marcação contar os vértices, e verificar se o peso
total não ultrapassa o valor k,
O(n) - percorrer a lista somando-se os pesos das arestas,
O(1) - descobrir cada peso, se os dados estão em uma matriz de
adjacência.
Como o algoritmo é polinomial, então o problema é da classe NP.
17
(ii) Decisão do Ciclo Hamiltoniano ∝ Decisão do Caixeiro
Viajante
 Seja um grafo G com n vértices para o qual queremos
decidir se existe ou não um ciclo hamiltoniano.
Construímos um grafo G’ a partir de G contendo todos os
vértices se arestas de G. Atribuímos peso 1 a todas estas
arestas.
fig. 3
18
 Criamos todas as demais arestas não existentes em G’ com
peso 2. É fácil notar que existe um ciclo em G’, que passa em
todos os vértices exatamente uma vez, com peso no
máximo n, se e somente se existe ciclo hamiltoniano em
G, pois assim haveria um ciclo em G’ passando apenas por
arestas de peso 1. Se não houver, um ciclo em G’ deverá
passar por aresta de peso 2, o que ultrapassará o peso total
n.
fig. 4
19
 Logo, como
- Decisão do Caixeiro Viajante é NP;
- Decisão do Ciclo Hamiltoniano ∝ Decisão do Caixeiro
Viajante;
- Decisão do Ciclo Hamiltoniano é NP-Completo;
então Decisão do Caixeiro Viajante é NP-Completo.
20
 CORMEN, Thomas H.; LEISERSON, Charles E.; RIVEST, Ronald L.; STEIN, Clifford.
Algoritmos: Teoria e Prática. 2 ed. Editora Campus, São Paulo. 2002.
 FONSECA, Guilherme D. da. Problemas NP-Completo. Rio de Janeiro: Unirio, [2009]. 20
slides, color, Acompanha texto.
 GRONER, Loiane. NP - COMPLETUDE. 2006. 42 f. Trabalho do curso de graduação em
Ciência da Computação – Unifesp, Vitória-ES.
 MORAIS, José Luiz Machado. Problema do Caixeiro Viajante Aplicado ao Roteamento de
Veículos numa Malha Viária. 2010. 70 f. Trabalho de conclusão de curso – Unifesp, São José
dos Campos-SP.
 O problema do caixeiro viajante é NP-Completo. Disponível em: <
http://homepages.dcc.ufmg.br/~nivio/cursos/pa03/tp2/tp22/tp22.html>. Acesso em: 16 mai.
2013, 22:40:00.
 Problema do caixeiro viajante. Disponível em:
<http://www.mat.ufrgs.br/~portosil/caixeiro.html>. Acesso em: 17 mai. 2013, 16:30:00.
21
Faculdade de Ciências Humanas, Saúde, Exatas
e Jurídicas de Teresina
Discentes: Adson Ferrett adson_sousa007@hotmail.com
Igor Monteiro kijigor@hotmail.com
Marcelo Kelle marcelo_kcs@hotmail.com
Whallysson Estevam avelino099@gmail.com
Copyright 2013.1

Mais conteúdo relacionado

Mais procurados

Árvores: Conceitos e binárias
Árvores:  Conceitos e bináriasÁrvores:  Conceitos e binárias
Árvores: Conceitos e binárias
Sérgio Souza Costa
 
Vantagens e desvantagens em topologias de redes
Vantagens e desvantagens em topologias de redesVantagens e desvantagens em topologias de redes
Vantagens e desvantagens em topologias de redes
Marco Martins
 
Introdução à Teoria dos Grafos
Introdução à Teoria dos GrafosIntrodução à Teoria dos Grafos
Introdução à Teoria dos Grafos
Bianca Dantas
 
Java orientação a objetos (associacao, composicao, agregacao)
Java   orientação a objetos (associacao, composicao, agregacao)Java   orientação a objetos (associacao, composicao, agregacao)
Java orientação a objetos (associacao, composicao, agregacao)
Armando Daniel
 

Mais procurados (20)

Introdução à analise e complexidade de algoritmos
Introdução à analise e complexidade de algoritmosIntrodução à analise e complexidade de algoritmos
Introdução à analise e complexidade de algoritmos
 
Recorrência
RecorrênciaRecorrência
Recorrência
 
Problema das N rainhas (Backtracking)
Problema das N rainhas (Backtracking)Problema das N rainhas (Backtracking)
Problema das N rainhas (Backtracking)
 
Exercícios Resolvidos: Distribuição Binomial
Exercícios Resolvidos: Distribuição BinomialExercícios Resolvidos: Distribuição Binomial
Exercícios Resolvidos: Distribuição Binomial
 
Inequações do 2°grau
Inequações do 2°grauInequações do 2°grau
Inequações do 2°grau
 
Elementos de Matemática Básica - Equações e Inequações
Elementos de Matemática Básica - Equações e InequaçõesElementos de Matemática Básica - Equações e Inequações
Elementos de Matemática Básica - Equações e Inequações
 
Relações de recorrência
Relações de recorrênciaRelações de recorrência
Relações de recorrência
 
Exercício redes cap 3
Exercício redes cap 3Exercício redes cap 3
Exercício redes cap 3
 
Conectividade em grafos
Conectividade em grafosConectividade em grafos
Conectividade em grafos
 
Árvores: Conceitos e binárias
Árvores:  Conceitos e bináriasÁrvores:  Conceitos e binárias
Árvores: Conceitos e binárias
 
GP4US - Pesquisa operacional exercicios resolvidos - metodo simplex
GP4US - Pesquisa operacional   exercicios resolvidos - metodo simplexGP4US - Pesquisa operacional   exercicios resolvidos - metodo simplex
GP4US - Pesquisa operacional exercicios resolvidos - metodo simplex
 
Análise de Algoritmos - Análise Assintótica
Análise de Algoritmos - Análise AssintóticaAnálise de Algoritmos - Análise Assintótica
Análise de Algoritmos - Análise Assintótica
 
Exercicios resolvidos
Exercicios resolvidosExercicios resolvidos
Exercicios resolvidos
 
Vantagens e desvantagens em topologias de redes
Vantagens e desvantagens em topologias de redesVantagens e desvantagens em topologias de redes
Vantagens e desvantagens em topologias de redes
 
Paa algoritmos gulosos
Paa  algoritmos gulososPaa  algoritmos gulosos
Paa algoritmos gulosos
 
Introdução à Teoria dos Grafos
Introdução à Teoria dos GrafosIntrodução à Teoria dos Grafos
Introdução à Teoria dos Grafos
 
Aulas 11-guloso Algoritmos
Aulas 11-guloso AlgoritmosAulas 11-guloso Algoritmos
Aulas 11-guloso Algoritmos
 
Árvores Espalhadas Mínimas
Árvores Espalhadas MínimasÁrvores Espalhadas Mínimas
Árvores Espalhadas Mínimas
 
Java orientação a objetos (associacao, composicao, agregacao)
Java   orientação a objetos (associacao, composicao, agregacao)Java   orientação a objetos (associacao, composicao, agregacao)
Java orientação a objetos (associacao, composicao, agregacao)
 
Derivação com logaritmo
Derivação com logaritmoDerivação com logaritmo
Derivação com logaritmo
 

Destaque

Análise do problema do caixeiro viajante sobre diferentes ambientes de progra...
Análise do problema do caixeiro viajante sobre diferentes ambientes de progra...Análise do problema do caixeiro viajante sobre diferentes ambientes de progra...
Análise do problema do caixeiro viajante sobre diferentes ambientes de progra...
Jerônimo Medina Madruga
 
Análise do problema do caixeiro viajante - Versão artigo - ERAD 2008
Análise do problema do caixeiro viajante - Versão artigo - ERAD 2008Análise do problema do caixeiro viajante - Versão artigo - ERAD 2008
Análise do problema do caixeiro viajante - Versão artigo - ERAD 2008
Jerônimo Medina Madruga
 
Problema do caixeiro viajante
Problema do caixeiro viajanteProblema do caixeiro viajante
Problema do caixeiro viajante
Douglas Cerqueira
 
Cap 8 2ª vinda de cristo
Cap 8   2ª vinda de cristoCap 8   2ª vinda de cristo
Cap 8 2ª vinda de cristo
E. M. Silva
 
Métodos quantitativos e_qualitativos1
Métodos quantitativos e_qualitativos1Métodos quantitativos e_qualitativos1
Métodos quantitativos e_qualitativos1
queenbianca
 
Redes de computadores II - 3.Roteamento
Redes de computadores II - 3.RoteamentoRedes de computadores II - 3.Roteamento
Redes de computadores II - 3.Roteamento
Mauro Tapajós
 

Destaque (11)

Análise do problema do caixeiro viajante sobre diferentes ambientes de progra...
Análise do problema do caixeiro viajante sobre diferentes ambientes de progra...Análise do problema do caixeiro viajante sobre diferentes ambientes de progra...
Análise do problema do caixeiro viajante sobre diferentes ambientes de progra...
 
Análise do problema do caixeiro viajante - Versão artigo - ERAD 2008
Análise do problema do caixeiro viajante - Versão artigo - ERAD 2008Análise do problema do caixeiro viajante - Versão artigo - ERAD 2008
Análise do problema do caixeiro viajante - Versão artigo - ERAD 2008
 
Algoritmos Gulosos - Troco Mínimo
Algoritmos Gulosos - Troco MínimoAlgoritmos Gulosos - Troco Mínimo
Algoritmos Gulosos - Troco Mínimo
 
Problema do caixeiro viajante
Problema do caixeiro viajanteProblema do caixeiro viajante
Problema do caixeiro viajante
 
Classes de problemas p, np,np completo e np-difícil
Classes de problemas p, np,np completo e np-difícilClasses de problemas p, np,np completo e np-difícil
Classes de problemas p, np,np completo e np-difícil
 
Exercicio resolvidos de estatistica 2
Exercicio resolvidos de estatistica 2Exercicio resolvidos de estatistica 2
Exercicio resolvidos de estatistica 2
 
Caminho Mínimo em Grafos - Algoritmo de Bellman-Ford
Caminho Mínimo em Grafos - Algoritmo de Bellman-FordCaminho Mínimo em Grafos - Algoritmo de Bellman-Ford
Caminho Mínimo em Grafos - Algoritmo de Bellman-Ford
 
Problema da Mochila 0-1 (Knapsack problem)
Problema da Mochila 0-1 (Knapsack problem)Problema da Mochila 0-1 (Knapsack problem)
Problema da Mochila 0-1 (Knapsack problem)
 
Cap 8 2ª vinda de cristo
Cap 8   2ª vinda de cristoCap 8   2ª vinda de cristo
Cap 8 2ª vinda de cristo
 
Métodos quantitativos e_qualitativos1
Métodos quantitativos e_qualitativos1Métodos quantitativos e_qualitativos1
Métodos quantitativos e_qualitativos1
 
Redes de computadores II - 3.Roteamento
Redes de computadores II - 3.RoteamentoRedes de computadores II - 3.Roteamento
Redes de computadores II - 3.Roteamento
 

Semelhante a O caixeiro viajante é np completo

Apresentacao N P Completude Loiane
Apresentacao  N P Completude  LoianeApresentacao  N P Completude  Loiane
Apresentacao N P Completude Loiane
Loiane Groner
 
Relatório do projecto computacional grupo 72
Relatório do projecto computacional   grupo 72Relatório do projecto computacional   grupo 72
Relatório do projecto computacional grupo 72
Rafael Lucas
 
Método de Euler Progressivo
Método de Euler Progressivo Método de Euler Progressivo
Método de Euler Progressivo
Rafael Lucas
 

Semelhante a O caixeiro viajante é np completo (20)

Apresentacao N P Completude Loiane
Apresentacao  N P Completude  LoianeApresentacao  N P Completude  Loiane
Apresentacao N P Completude Loiane
 
Floyd-Warshall
Floyd-WarshallFloyd-Warshall
Floyd-Warshall
 
Fluxo a Custo Mínimo
Fluxo a Custo MínimoFluxo a Custo Mínimo
Fluxo a Custo Mínimo
 
1664885950750.pdf
1664885950750.pdf1664885950750.pdf
1664885950750.pdf
 
Inteligencia artificial 2
Inteligencia artificial 2Inteligencia artificial 2
Inteligencia artificial 2
 
Classes de Problemas P e NP
Classes de Problemas P e NPClasses de Problemas P e NP
Classes de Problemas P e NP
 
Modelo de um pendulo simples
Modelo de um pendulo simplesModelo de um pendulo simples
Modelo de um pendulo simples
 
NP Completude - Loiane
NP Completude - LoianeNP Completude - Loiane
NP Completude - Loiane
 
4 groebner danton4 dissertacao
4 groebner danton4 dissertacao4 groebner danton4 dissertacao
4 groebner danton4 dissertacao
 
Aula 2 balanco de massa
Aula 2 balanco de massaAula 2 balanco de massa
Aula 2 balanco de massa
 
CALCULO II - DERIVADAS.pptx
CALCULO II - DERIVADAS.pptxCALCULO II - DERIVADAS.pptx
CALCULO II - DERIVADAS.pptx
 
Estudos sobre PROBLEMAS P-NP-NP-COMPLETO.pptx
Estudos sobre PROBLEMAS P-NP-NP-COMPLETO.pptxEstudos sobre PROBLEMAS P-NP-NP-COMPLETO.pptx
Estudos sobre PROBLEMAS P-NP-NP-COMPLETO.pptx
 
Relatório do projecto computacional grupo 72
Relatório do projecto computacional   grupo 72Relatório do projecto computacional   grupo 72
Relatório do projecto computacional grupo 72
 
Método de Euler Progressivo
Método de Euler Progressivo Método de Euler Progressivo
Método de Euler Progressivo
 
Sequencias e-series
Sequencias e-seriesSequencias e-series
Sequencias e-series
 
Cinemática
CinemáticaCinemática
Cinemática
 
PROBLEMA DA MOCHILA VALIOSA COM VALOR MINIMO DE UTILIDADE
PROBLEMA DA MOCHILA VALIOSA COM VALOR MINIMO DE UTILIDADEPROBLEMA DA MOCHILA VALIOSA COM VALOR MINIMO DE UTILIDADE
PROBLEMA DA MOCHILA VALIOSA COM VALOR MINIMO DE UTILIDADE
 
06 complexidade de problemas
06   complexidade de problemas06   complexidade de problemas
06 complexidade de problemas
 
07 intratablilidade
07 intratablilidade07 intratablilidade
07 intratablilidade
 
07 intratablilidade
07 intratablilidade07 intratablilidade
07 intratablilidade
 

Mais de Marcelo Carvalho (6)

Rede de Computadores - Cabo Coaxial
Rede de Computadores - Cabo CoaxialRede de Computadores - Cabo Coaxial
Rede de Computadores - Cabo Coaxial
 
Árvore B
Árvore BÁrvore B
Árvore B
 
Ação de um campo magnético sobre cargas elétricas & fontes de campo magnético
Ação de um campo magnético sobre cargas elétricas & fontes de campo magnéticoAção de um campo magnético sobre cargas elétricas & fontes de campo magnético
Ação de um campo magnético sobre cargas elétricas & fontes de campo magnético
 
Reprojeto da organização com sistemas de informação
Reprojeto da organização com sistemas de informaçãoReprojeto da organização com sistemas de informação
Reprojeto da organização com sistemas de informação
 
Memória Primária
Memória PrimáriaMemória Primária
Memória Primária
 
A consciência mítica
A consciência míticaA consciência mítica
A consciência mítica
 

O caixeiro viajante é np completo

  • 1. Faculdade de Ciências Humanas, Saúde, Exatas e Jurídicas de Teresina Turma: Ciência da Computação Período: 4º - Manhã Disciplina: Projet0 e Análise de Algoritmos Docente: Francisco José Discentes: Adson Ferrett Igor Monteiro Marcelo Kelle Whallysson Estevam Copyright 2013.1
  • 2. 1 Introdução; 2 Tipos de Problema; 2.1 A Classe P de problemas; 2.2 A Classe NP de problemas; 2.2 A Classe NP-Completo de problemas; 2.2 A Classe NP-Difícil de problemas. 3 Problema do caixeiro viajante; 3.1 Algoritmos de força bruta; 3.2 Implementação. 4 O Problema do caixeiro viajante é NP-Completo; 5 Conclusão; 6 Referências. Copyright 2013.1
  • 3.  O problema do caixeiro viajante é um problema que tenta determinar a menor rota para percorrer uma série de cidades, retornando à cidade de origem. Ele é um problema de otimização NP-Completo inspirado na necessidade dos vendedores em realizar entregas em diversos locais percorrendo o menor caminho possível, reduzindo o tempo necessário para a viagem e os possíveis custos com transporte e combustível. 3
  • 4.  Nos anos de 1800, problemas relacionados com o PCV começaram a ser desenvolvidos por dois matemáticos: o escocês William Rowan Hamilton e o britânico Thomas Penyngton Kerkman. A forma geral do PCV parece ter sido, pela primeira vez, estudada por matemáticos nos anos de 1930 em Harvard e Viena. O problema foi posteriormente estudado por Hassler Whitney e Merril Flood em Princeton. 4
  • 5.  Para compreender o problema abordado neste trabalho, é necessário conhecer a classe de problemas NP-Completos. Para melhor compreender essa classe e também as classes P e NP, segue uma definição básica de cada uma delas. fig 1. 5
  • 6. 6 2.1 A Classe P de problemas
  • 7.  A classe NP de problemas é o conjunto de todos os problemas de decisão para os quais existem verificadores polinomiais. Esta classe corresponde à classe dos problemas que poderíamos chamar "razoáveis".  É importante lembrar que todo problema pertencente à classe P também pertence à classe NP, uma vez que se um problema pode ser resolvido em tempo polinomial, ele pode ser igualmente verificado em tempo polinomial. 7 2.2 A Classe NP de problemas
  • 8.  A classe NP-Completo é o conjunto de todos os problemas completos em NP, portanto, NP-Completo é a classe dos problemas mais "difíceis" de NP.  Esta classe de problemas é alvo de longos estudos e pesquisa durante as últimas décadas, pois ela está no centro de um dos impasses mais famosos dentro da computação. 8 2.3 A Classe NP-Completo de problemas
  • 9.  Um problema NP-Difícil pode também estar em NP, mas não necessariamente. Os problemas contidos nesta classe são ditos ao menos tão difíceis quanto os problemas mais difíceis de NP e não é possível resolvê-los na exatidão, a menos que P = NP. Ou seja, um algoritmo polinomial que encontra a solução exata para um problema NP-Difícil implica P = NP. 9 2.4 A Classe NP-Difícil de problemas
  • 10.  O PCV consiste em, dado um grafo completo G(V,E), com n vértices, obter um ciclo hamiltoniano de custo mínimo, isto é, deseja-se, a partir de um vértice inicial, passar por todos os demais vértices do grafo uma única vez e então retornar ao vértice inicial. Cada aresta que liga um par de vértices do grafo possui um custo c(i, j) que determina o quanto se gasta para ir de i até j. Esse custo pode ter diversos significados, de acordo com a aplicação desejada. 10
  • 11.  Algoritmos de força bruta são uma forma de se encontrar a solução ótima para um problema de otimização através do teste exaustivo de todos os elementos de seu domínio. Considerando o PCV, que é o problema estudado neste trabalho, um algoritmo de força bruta consiste em testar todas as permutações possíveis entre os vértices de uma instância e escolher o ciclo hamiltoniano de menor custo. 11 3.1 Algoritmos de força bruta
  • 13.  A seguir, o pseudocódigo que descreve a implementação feita para o algoritmo de força bruta. Força Bruta(Ciclo[n], int pos) 1. SE pos == n 2. Calcule o custo do ciclo 3. SE custo < custo mínimo 4. ENTÃO custo mínimo = custo 5. SENÃO FAÇA 6. PARA j = pos até n 7. Troca (ciclo[], pos, j) 8. Força Bruta (ciclo[], pos + 1) 9. Troca (ciclo[], pos, j) 13 3.2 Implementação
  • 14.  Os cálculos realizados no passo 2, com relação ao custo da instância, podem ser descritos da seguinte forma: Custo(M[n][n], ciclo[n]) 1. double custo = 0 2. PARA i = 1 até n-1 3. FAÇA custo = custo + M[ciclo[i]][ciclo[i + 1]] 4. custo = custo + M[ciclo[n]][ciclo[1]] 5. RETORNE custo. 14 3.2 Implementação
  • 15.  Voltando ao algoritmo principal, os passos 7 e 9 são responsáveis pela permutação de fato dos vértices no ciclo. Para isso, foi utilizado um algoritmo simples de troca de posições em um vetor. Troca(ciclo[n], int i, int j) 1. int aux = ciclo [i] 2. ciclo[i] = ciclo [j] 3. ciclo[j] = aux 15 3.2 Implementação
  • 16.  Através da figura 2, pode-se observar um grafo que representa uma instância do PCV-Métrico e todas as permutações possíveis para a obtenção da solução. fig 2. 16 3.2 Implementação
  • 17. (i) Decisão do Caixeiro Viajante é NP  A exibição da justificativa SIM pode ser dada por uma sequência de vértices. A verificação da justificativa apresentada consiste em se verificar que cada vértice aparece na sequência apenas uma vez. O(n) - percorrer a lista marcando os vértices, observando se já não foram marcados, verificar se contém todos os vértices, O(1) - durante a marcação contar os vértices, e verificar se o peso total não ultrapassa o valor k, O(n) - percorrer a lista somando-se os pesos das arestas, O(1) - descobrir cada peso, se os dados estão em uma matriz de adjacência. Como o algoritmo é polinomial, então o problema é da classe NP. 17
  • 18. (ii) Decisão do Ciclo Hamiltoniano ∝ Decisão do Caixeiro Viajante  Seja um grafo G com n vértices para o qual queremos decidir se existe ou não um ciclo hamiltoniano. Construímos um grafo G’ a partir de G contendo todos os vértices se arestas de G. Atribuímos peso 1 a todas estas arestas. fig. 3 18
  • 19.  Criamos todas as demais arestas não existentes em G’ com peso 2. É fácil notar que existe um ciclo em G’, que passa em todos os vértices exatamente uma vez, com peso no máximo n, se e somente se existe ciclo hamiltoniano em G, pois assim haveria um ciclo em G’ passando apenas por arestas de peso 1. Se não houver, um ciclo em G’ deverá passar por aresta de peso 2, o que ultrapassará o peso total n. fig. 4 19
  • 20.  Logo, como - Decisão do Caixeiro Viajante é NP; - Decisão do Ciclo Hamiltoniano ∝ Decisão do Caixeiro Viajante; - Decisão do Ciclo Hamiltoniano é NP-Completo; então Decisão do Caixeiro Viajante é NP-Completo. 20
  • 21.  CORMEN, Thomas H.; LEISERSON, Charles E.; RIVEST, Ronald L.; STEIN, Clifford. Algoritmos: Teoria e Prática. 2 ed. Editora Campus, São Paulo. 2002.  FONSECA, Guilherme D. da. Problemas NP-Completo. Rio de Janeiro: Unirio, [2009]. 20 slides, color, Acompanha texto.  GRONER, Loiane. NP - COMPLETUDE. 2006. 42 f. Trabalho do curso de graduação em Ciência da Computação – Unifesp, Vitória-ES.  MORAIS, José Luiz Machado. Problema do Caixeiro Viajante Aplicado ao Roteamento de Veículos numa Malha Viária. 2010. 70 f. Trabalho de conclusão de curso – Unifesp, São José dos Campos-SP.  O problema do caixeiro viajante é NP-Completo. Disponível em: < http://homepages.dcc.ufmg.br/~nivio/cursos/pa03/tp2/tp22/tp22.html>. Acesso em: 16 mai. 2013, 22:40:00.  Problema do caixeiro viajante. Disponível em: <http://www.mat.ufrgs.br/~portosil/caixeiro.html>. Acesso em: 17 mai. 2013, 16:30:00. 21
  • 22. Faculdade de Ciências Humanas, Saúde, Exatas e Jurídicas de Teresina Discentes: Adson Ferrett adson_sousa007@hotmail.com Igor Monteiro kijigor@hotmail.com Marcelo Kelle marcelo_kcs@hotmail.com Whallysson Estevam avelino099@gmail.com Copyright 2013.1