Ciclos hamiltonianos e o problema do caixeiro viajante

Documentos relacionados
Ciclos hamiltonianos e o problema do caixeiro viajante

O estudo utilizando apenas este material não é suficiente para o entendimento do conteúdo. Recomendamos a leitura das referências no final deste

Caminhos mínimos de todos os pares

Busca em largura. Algoritmos em Grafos. Marco A L Barbosa

Caminhos mínimos de única origem

Grafos Hamiltonianos e o Problema do Caixeiro Viajante. Prof. Ademir Constantino Departamento de Informática Universidade Estadual de Maringá

Teoria e Algoritmos em Grafos

Grafos. Exemplo de árvore geradora mínima. Notas. Notas. Notas. Notas. Árvores espalhadas mínimas. Como construir uma árvore geradora miníma

O estudo utilizando apenas este material não é suficiente para o entendimento do conteúdo. Recomendamos a leitura das referências no final deste

O estudo utilizando apenas este material não é suficiente para o entendimento do conteúdo. Recomendamos a leitura das referências no final deste

Grafos. Notas. Notas. Notas. Notas. Caminhos mais curtos de única origem. Subestrutura ótima. Propriedades de caminhos mais curtos

Algoritmos de aproximação - Problema do caixeiro viajante

Grafos planares. Algoritmos em Grafos. Marco A L Barbosa

Algoritmos de Aproximação para o Problema do Caixeiro Viajante

Análise e Síntese de Algoritmos

O estudo utilizando apenas este material não é suficiente para o entendimento do conteúdo. Recomendamos a leitura das referências no final deste

Grafos. Notas. Notas. Notas. Notas. Caminhos mais curtos de todos os pares

04 Grafos: caminhos e coloração SCC0503 Algoritmos e Estruturas de Dados II

Algoritmo Aproximação. Prof. Anderson Almeida Ferreira [DPV]9.2 [ZIV]9.2.2 e 9.2.3

Problema do Caixeiro Viajante

Otimização em Grafos

5COP096 TeoriadaComputação

Algoritmos Combinatórios: Introdução

Teoria dos Grafos. Valeriano A. de Oliveira, Socorro Rangel, Silvio A. de Araujo. Departamento de Matemática Aplicada

Algoritmo Aproximado. Prof. Anderson Almeida Ferreira [DPV]9.2 [ZIV]9.2.2 e 9.2.3

Algoritmos de Aproximação Segundo Semestre de 2012

O estudo utilizando apenas este material não é suficiente para o entendimento do conteúdo. Recomendamos a leitura das referências no final deste

Aula nº / Outubro/ 07. Problema do carteiro chinês

Escola Básica e Secundária Mouzinho da Silveira. MACS 11.º Ano Problema do Caixeiro Viajante

GRAFOS Aula 08 Árvore Geradora Mínima: Algoritmos de Kruskal e Prim-Jarnik Max Pereira

Problemas de otimização

Problema do Caixeiro Viajante (The Travelling Salesman Problem-TSP) (Problema Del viajante)

Grafos: árvores geradoras mínimas. Graça Nunes

Variáveis e instruções de repetição

Capítulo 2- Modelos de grafos.

Análise e Projeto de Algoritmos

Teoria dos Grafos Aula 6

Teoria dos Grafos. Valeriano A. de Oliveira Socorro Rangel Departamento de Matemática Aplicada.

CIC 111 Análise e Projeto de Algoritmos II

Árvore de Suporte de Comprimento Mínimo Minimal Spanning Tree

MATEMÁTICA DISCRETA PARA ENGENHARIA DE COMPUTAÇÃO

NOTAS DE AULA 1 METAHEURÍSTICA 13/10/2016

Otimização: O melhor

Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (5)

Estudo e Implementação de Algoritmos de Roteamento sobre Grafos em um Sistema de Informações Geográficas

Árvores: Conceitos Básicos e Árvore Geradora

ANÁLISE DE ALGORITMOS (INF 1721)

Sub-grafo. Árvore Geradora Mínima

Grafos Árvores Geradoras Mínimas

Projeto de funções e instruções condicionais

Matemática Aplicada às Ciências Sociais- 11º ano (Versão: para o manual a partir de 2016/17)

Técnicas de Concepção de Algoritmos: Branch and Bound

ESTRUTURAS DE DADOS. prof. Alexandre César Muniz de Oliveira. 1. Introdução 2. Pilhas 3. Filas 4. Listas 5. Árvores 6. Ordenação 7. Busca 8.

INSTITUTO SUPERIOR TÉCNICO Análise e Síntese de Algoritmos. RESOLUÇÃO DO 2 o TESTE

5COP096 TeoriadaComputação

Algoritmos em Grafos COM11087-Tópicos Especiais em Programação I

Árvores de Suporte de Custo Mínimo

Projeto e Análise de Algoritmos

Circuitos Eulerianos Ciclos Hamiltonianos O Problema do Caixeiro Viajante CAMINHAMENTOS BASEADO EM TOWNSEND (1987), CAP. 7.

Complexidade computacional

Teoria da Complexidade Computacional

Grafos - Representação

Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4)

Otimização em Grafos

Cap. 2 Conceitos Básicos em Teoria dos Grafos

Teoria da Complexidade Computacional

Algoritmo de Dijkstra Estudo e Implementação

O estudo utilizando apenas este material não é suficiente para o entendimento do conteúdo. Recomendamos a leitura das referências no final deste

BCC204 - Teoria dos Grafos

Desafios de Programação TCC Turma A-1

Departamento de Engenharia de Produção UFPR 57

INF 1010 Estruturas de Dados Avançadas

Problema do Caixeiro Viajante (The Travelling Salesman Problem-TSP) (Problema Del viajante)

Aula 12: Programação Inteira

Lista de Exercícios Programação Inteira. x 2 0 e inteiros.

Expressões e sentença de atribuição

Grafos: componentes fortemente conexos, árvores geradoras mínimas

Projeto e Análise de Algoritmos

Departamento de Engenharia de Produção UFPR 22

Teoria e Algoritmos em Grafos

Projeto e Análise de Algoritmos

Volmir Eugênio Wilhelm Departamento de Engenharia de Produção UFPR 45

76) 1.1 Sim 1.2 Não 1.3 Não

Selecciona-se dos vértices ainda não seleccionados o vértice v k que está à menor distância de v i,

APOSTILA DE MÉTODO GULOSO

Definição 1.1 : Uma árvore é um grafo simples conexo e sem ciclos.

Algoritmos e estrutura de dados

Volmir Eugênio Wilhelm Departamento de Engenharia de Produção UFPR 21

PERCURSOS. André Falcão, Carlos Augusto, Rafael Broédel e Lucas Dipré

grafo nós vértices arcos arestas

Paradigmas de Projetos de Algoritmos

Complexidade de Tempo e Espaço

Combinação de modelos

Demonstração. Relação invariante chave. Implementações do algoritmo de Prim. Implementação grosseira

PLANO DE DISCIPLINA DISCIPLINA: Análise de Algoritmos

Grafos: aplicações. Grafos: árvore geradora mínima

Projeto e Análise de Algoritmos Projeto de Algoritmos Programação Dinâmica (continuação) Prof. Humberto Brandão

Projeto e Análise de Algoritmos

Projeto e Análise de Algoritmos

Aula 20: Revisão Otimização Linear e Inteira Túlio A. M. Toffolo

Transcrição:

Ciclos hamiltonianos e o problema do caixeiro viajante Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual 4.0 Internacional. http://github.com/malbarbo/na-grafos

Introdução Um caminho hamiltoniano é um caminho que passa por cada vértice do grafo exatamente uma vez Um ciclo hamiltoniano é um ciclo que passa por cada vértice do grafo exatamente uma vez (exceto o primeiro vértice que é visitado duas vezes) Um grafo hamiltoniano é um grafo que tem um ciclo hamiltoniano 2/21

Exemplos A B A B E E C D C D Este grafo é hamiltoniano: A, C, E, D, B, A Este grafo não é hamiltoniano 3/21

Propriedades Como determinar se um grafo é hamiltoniano? Teorema de Ore Uma condição suficiente (mas não necessária) para que um grafo G = (V, E) seja hamiltoniano é que a soma dos graus de cada par de vértices não adjacentes seja no mínimo V Teorema de Dirac Uma condição suficiente (mas não necessária) para que um grafo G = (V, E) possua um ciclo hamiltoniano, é que o grau de cada vértice em G seja pelo menos igual a V 2 E algoritmos? 4/21

Algoritmos O problema de determinar se um grafo é hamiltoniano é NP-completo, portanto não são conhecidos algoritmos de tempo polinomial para resolvê-lo. Podemos abordar a questão como um problema de otimização e utilizar algoritmos heurísticos. 5/21

O problema do caixeiro viajante Dado um grafo conexo com peso nas arestas, o problema do caixeiro viajante (do inglês travelling salesman problem - TSP) consiste em encontrar um ciclo hamiltoniano de peso mínimo. Aplicações Planejamento de entregas Perfuração de placas de circuito impresso Sequenciamento de DNA (subproblema) 6/21

O problema do caixeiro viajante O TSP é NP-Difícil, o que implica que, a menos que P = NP, não existem algoritmos exatos de tempo polinomial para resolver este problema. Desta forma, é comum estudar algoritmos que não são exatos (não garantem encontrar o ótimo) mas executam em tempo polinomial. Veremos os seguintes algoritmos Algoritmo aproximativo baseado na árvore geradora mínima Algoritmo heurístico construtivo vizinho mais próximo Algoritmo heurístico melhorativo 2-opt e 3-opt 7/21

Algoritmo baseado na árvore geradora mínima Ideia Construir uma árvore geradora mínima é fazer um percurso pré-ordem Característica Algoritmo aproximativo com fator de aproximação 2 Requisito A função de custo c tem que respeitar a desigualdade de triângulos (o caminho mais curto entre dois vértices não passa por vértice intermediário) isto é, para todo vértice u, v, w V c(u, w) c(u, v) + c(v, w) 8/21

Algoritmo baseado na árvore geradora mínima TSP-MST(G, c) 1 selecionar um vértice r G.V para ser a raiz 2 computar a árvore geradora mínima T usando MST-Prim(G, c, r) 3 seja H a lista de vértices ordenado de acordo com uma visitação em pré-ordem da árvore T 4 return o ciclo hamiltoniano H Análise do tempo de execução Com uma implementação do MST-Prim usando arranjo e busca linear para fila de prioridade, o tempo de execução é Θ(V 2 ) 9/21

Algoritmo baseado na árvore geradora mínima 10/21

Algoritmo baseado na árvore geradora mínima a b c d e f g h a 2.0 3.2 2.0 3.2 2.8 4.5 4.1 b 2.0 1.4 2.8 3.2 2.0 4.0 2.2 c 3.2 1.4 4.2 4.5 3.2 5.1 2.2 d 2.0 2.8 4.2 1.4 2.0 2.8 4.1 e 3.1 3.2 4.5 1.4 1.4 1.4 3.6 f 2.8 2.0 3.1 2.0 1.4 2.0 2.2 g 4.5 4.0 5.1 2.8 1.4 2.0 3.6 h 4.1 2.2 2.2 4.1 3.6 2.2 3.6 Caminho encontrado por TSP-MST a, b, c, h, d, e, f, g, a, custo = 19,1 Melhor caminho a, b, c, h, f, g, e, d, a, custo = 14,7 11/21

Algoritmo baseado na árvore geradora mínima Prova do fator de aproximação 2 Discutido em sala (veja a seção 35.2.1 do livro do Cormen) 12/21

Heurística do vizinho mais próximo Ideia Começar com um vértice qualquer A cada passo, escolher o vértice mais próximo do último vértice visitado Voltar para o primeiro vértice 13/21

Heurística do vizinho mais próximo TSP-NN(G, c) 1 selecionar um vértice inicial v 0 G.V 2 C = v 0 // caminho contendo v 0 3 v = v 0 4 while C não incluí todos os vértices de G 5 u = vértice mais próximo de v que não está em C 6 C = C u 7 v = u 8 C = C v 0 // fecha o ciclo 9 return C Análise do tempo de execução Encontrar o vértice mais próximo que não foi visitado (linha 5) usando uma busca linear custa O(V) Como cada vértice (a menos do primeiro) é colocado uma vez no ciclo, o tempo total de execução do algoritmo é O(V 2 ) 14/21

Heurística do vizinho mais próximo a b c d e f g h a b c d e f g h a b c d e f g h a b c d e f g h a b c d e f g h a b c d e f g h a b c d e f g h a b c d e f g h a b c d e f g h 15/21

Heurística do vizinho mais próximo a b c d e f g h a 2.0 3.2 2.0 3.2 2.8 4.5 4.1 b 2.0 1.4 2.8 3.2 2.0 4.0 2.2 c 3.2 1.4 4.2 4.5 3.2 5.1 2.2 d 2.0 2.8 4.2 1.4 2.0 2.8 4.1 e 3.1 3.2 4.5 1.4 1.4 1.4 3.6 f 2.8 2.0 3.1 2.0 1.4 2.0 2.2 g 4.5 4.0 5.1 2.8 1.4 2.0 3.6 h 4.1 2.2 2.2 4.1 3.6 2.2 3.6 Caminho encontrado por tsp-mst a, b, c, h, f, e, d, g, a, custo = 17,9 Melhor caminho a, b, c, h, f, g, e, d, a, custo = 14,7 16/21

Heurística 2-opt Usada para melhorar uma solução (obtida por algum algoritmo construtivo) Ideia Eliminar 2 arestas não adjacentes e reconectar o caminho usado duas outras arestas, verificar se houve melhora Repetir este processo para todos os pares de arestas e realizar a melhor troca 17/21

Heurística 2-opt Seja w a função de custo e t um percurso Vamos supor que o percurso t é representado por um vetor (índices 1.. V ) de vértices. A aresta (t V, t 1 ) está implícita nesta representação Seja (t a, t b ) e (t c, t d ) duas arestas não adjacentes de t (a, b, c, d são os índices em t) Seja t o percurso (válido) obtido a partir de t trocando a aresta (t a, t b ) por (t a, t c ) e (t c, t d ) por (t b, t d ) Seja δ = w(t a, t b ) + w(t c, t d ) w(t a, t c ) w(t b, t d ) a diferença do custo de t e t (quando maior a diferença, maior a melhoria) Seja δ max o maior valor entre os δ s de todas as trocas de arestas 18/21

Heurística 2-opt tsp-2opt(t, w) 1 loop 2 δ max = 0 3 best = nil 4 for a = 1..(n 2) 5 b = a + 1 6 lim = n if a 1 else n 1 7 for c = (a + 2)..lim 8 d = c + 1 if c n else 1 9 δ = w(t a, t b) + w(t c, t d) w(t a, t c) w(t b, t d) 10 if δ > δ max 11 δ max = δ 12 best = a, b, c, d 13 if δ max! = 0 14 a, b, c, d = best 15 t = (t {(t a, t b), (t c, t d)}) {(t a, t c), (t b, t d)} 16 else 17 return t 19/21

Heurística 3-opt Mesmo princípio do 2-opt, mas seleciona 3 arestas 20/21

Referências Thomas H. Cormen et al. Introduction to Algorithms. 3 rd edition. Capítulo 35.2.1. Caminho hamiltoniano. Wikipédia. https://pt.wikipedia.org/wiki/caminho_hamiltoniano Problema do caminho hamiltoniano. Wikipédia https://en.wikipedia.org/wiki/hamiltonian_path_problem Problema do caixeiro viajante. Wikipédia. https://en.wikipedia.org/wiki/travelling_salesman_problem Algoritmo vizinho mais próximo. Wikipédia. https://en.wikipedia.org/wiki/nearest_neighbour_algorithm Algoritmo de Christofides. Wikipédia. https://en.wikipedia.org/wiki/christofides_algorithm 21/21