PCC104 - Projeto e Análise de Algoritmos Marco Antonio M. Carvalho Departamento de Computação Instituto de Ciências Exatas e Biológicas Universidade Federal de Ouro Preto 3 de fevereiro de 2017 Marco Antonio M. Carvalho (UFOP) PCC104 3 de fevereiro de 2017 1 / 40 Avisos Site da disciplina: I http://www.decom.ufop.br/marco/ Lista de e-mails: I [email protected] Para solicitar acesso: I http://groups.google.com/group/pcc104 Marco Antonio M. Carvalho (UFOP) PCC104 3 de fevereiro de 2017 2 / 40 Na aula de hoje 1 Caminhos e Ciclos Hamiltonianos 2 Caracterização 3 O Problema do Caixeiro Viajante 4 Casos Especiais 5 Evolução dos Benchmarks 6 Algoritmo de Christofides Marco Antonio M. Carvalho (UFOP) PCC104 3 de fevereiro de 2017 3 / 40 Avisos Marco Antonio M. Carvalho (UFOP) PCC104 3 de fevereiro de 2017 4 / 40 Caminhos e Ciclos Hamiltonianos Histórico Em 1856, Thomas Penyngton Kirkman, listado entre os dez mais importantes matemáticos britânicos do séc. 19, escreveu um trabalho que examinava as condições de existência de ciclos que não repetissem vértices ou arestas, desenvolvidos sobre certos tipos de sólidos; Especificamente, seu trabalho se concentrava em poliedros simples e examinava um caso semelhante ao apresentado na figura. Marco Antonio M. Carvalho (UFOP) PCC104 3 de fevereiro de 2017 5 / 40 Caminhos e Ciclos Hamiltonianos Histórico Kirkman havia se deparado com o problema de encontrar um ciclo em um grafo que passasse por todos os vértices sem admitir vértices repetidos; Dentre os diversos tipos possíveis ciclos em grafos, este é um dos de maior importância, tanto sob o aspecto teórico quanto sob o aspecto da aplicação em problemas reais; Historicamente, estes ciclos são denominados Hamiltonianos, devido a William Rowan Hamilton (matemático, físico e astrônomo irlandês), que, em 1957 propôs um jogo que denominou Around the World ; O jogo era feito sobre um dodecaedro (20 vértices de grau 3 e 30 arestas), em que cada vértice estava associado a uma cidade importante na época; O desafio consistia em encontrar uma rota através dos vértices do dodecaedro que iniciasse e terminasse na mesma cidade, sem repetir uma cidade sequer. Marco Antonio M. Carvalho (UFOP) PCC104 3 de fevereiro de 2017 6 / 40 Caminhos e Ciclos Hamiltonianos Around the World, ou Icosian Game. Marco Antonio M. Carvalho (UFOP) PCC104 3 de fevereiro de 2017 7 / 40 Caminhos e Ciclos Hamiltonianos Grafo que representa o jogo, uma solução e um ciclo hamiltoniano. Marco Antonio M. Carvalho (UFOP) PCC104 3 de fevereiro de 2017 8 / 40 Grafos Hamiltoniano e Semi-Hamiltoniano Caminho Hamiltoniano Um caminho hamiltoniano é um caminho que passa por cada vértice de um grafo exatamente uma vez. Ciclo Hamiltoniano Um ciclo hamiltoniano é um caminho hamiltoniano que retorna ao vértice inicial. Grafo Hamiltoniano Um grafo é dito hamiltoniano se possui um ciclo hamiltoniano. Grado Semi-Hamiltoniano Um grafo é dito semi-hamiltoniano se possui um caminho hamiltoniano. Claramente, um grafo hamiltoniano é também semi-hamiltoniano. Marco Antonio M. Carvalho (UFOP) PCC104 3 de fevereiro de 2017 9 / 40 Grafos Hamiltoniano e Semi-Hamiltoniano Grafo hamiltoniano, grafo não hamiltoniano e caminho hamiltoniano. Marco Antonio M. Carvalho (UFOP) PCC104 3 de fevereiro de 2017 10 / 40 Caracterização Insuficiente Não se conhece uma condição necessária e suficiente trivial para a existência de um ciclo hamiltoniano em um grafo. Karp, 1972 O problema de decisão associado à determinação de ciclos e caminhos em grafos sem propriedades peculiares é NP-Completo. Sem Facilitador Decidir de se um grafo é hamiltoniano é NP-Completo mesmo que o grafo: I Seja planar (Garey et al, 1976); I Possua um caminho hamiltoniano conhecido (Papadimitriou & Steiglitz, 1976). Marco Antonio M. Carvalho (UFOP) PCC104 3 de fevereiro de 2017 11 / 40 Caracterização Teorema de Dirac, 1952 Um grafo G = (V, A) com n ≥ 3 e d(x) ≥ n/2 para todo x ∈ V é hamiltoniano. Teorema de Ore, 1961 Uma condição suficiente para que um grafo seja hamiltoniano é que a soma dos graus de cada par de vértices não adjacentes seja no mínimo n. Marco Antonio M. Carvalho (UFOP) PCC104 3 de fevereiro de 2017 12 / 40 O Fecho Hamiltoniano - Φ(G) Definição O fecho hamiltoniano de um grafo G, Φ(G) é o grafo obtido a partir de G do seguinte modo: sucessivamente são adicionadas arestas entre pares de vértice u e v não adjacentes cuja soma dos graus seja pelo menos n, até que em algum momento tais pares não existam mais. Teorema de Bondy & Chvátal, 1976 Se Φ(G) = Kn então G será hamiltoniano. Outro resultado: um grafo será hamiltoniano se e somente se Φ(G) é hamiltoniano. Exercício Tente usar esse resultado para o grafo C4 . Marco Antonio M. Carvalho (UFOP) PCC104 3 de fevereiro de 2017 13 / 40 Ciclos Propriedade Todo grafo Hamiltoniano com n-vértices é constituído por um Cn e mais algumas arestas. Marco Antonio M. Carvalho (UFOP) PCC104 3 de fevereiro de 2017 14 / 40 O Problema do Caixeiro Viajante Definição O Problema do Caixeiro Viajante – PCV, consiste em determinar um ciclo hamiltoniano de custo mínimo em um grafo ponderado direcionado ou não. Complexidade Encontrar um ciclo hamiltoniano de custo mínimo em um grafo sem propriedades particulares é NP-Difícil. Marco Antonio M. Carvalho (UFOP) PCC104 3 de fevereiro de 2017 15 / 40 O Problema do Caixeiro Viajante Grafo de exemplo e solução do PCV. Marco Antonio M. Carvalho (UFOP) PCC104 3 de fevereiro de 2017 16 / 40 O Problema do Caixeiro Viajante Histórico O Problema do Caixeiro Viajante é um problema clássico de otimização combinatória; De acordo com o trabalho On the history of combinatorial optimization, de 1960, a idéia de um ciclo hamiltoniano de custo mínimo como um problema de aplicação surgiu em 1920 em Viena, atribuído a Karl Menger; Karl Menger conhece Hassler Whitney, que supostamente, entre 1931 e 1932, teria se referido ao problema como o Problema do Caixeiro Viajante; Obviamente, esta versão da história não está isenta de contestações. Marco Antonio M. Carvalho (UFOP) PCC104 3 de fevereiro de 2017 17 / 40 O Problema do Caixeiro Viajante Histórico Nos anos seguintes, o problema foi estudado por diversos pesquisadores: I Menger (1940); I Milgran (1940); I Mahalanobis (1940); I Jessen (1942); I Gosh (1948); I Maks (1948); I Flood, em 1956, publica um trabalho pioneiro na revista Operations Research. Marco Antonio M. Carvalho (UFOP) PCC104 3 de fevereiro de 2017 18 / 40 O Problema do Caixeiro Viajante A Importância do PCV O problema do caixeiro viajante é um dos problemas de otimização combinatória mais intensamente pesquisados até o momento. Esta importância é atribuída a três características combinadas: I Grande número de aplicações práticas; I Relação com vários outros problemas e muitas variantes; I Grande dificuldade de solução exata. Marco Antonio M. Carvalho (UFOP) PCC104 3 de fevereiro de 2017 19 / 40 O Problema do Caixeiro Viajante Marco Antonio M. Carvalho (UFOP) PCC104 3 de fevereiro de 2017 20 / 40 O Problema do Caixeiro Viajante Marco Antonio M. Carvalho (UFOP) PCC104 3 de fevereiro de 2017 21 / 40 O Problema do Caixeiro Viajante Marco Antonio M. Carvalho (UFOP) PCC104 3 de fevereiro de 2017 22 / 40 O Problema do Caixeiro Viajante O Filme Quatro matemáticos descobrem um algoritmo para solução eficiente do PCV e provam que P=NP, quando se confrontam com as implicações globais da descoberta. O departamento de defesa americano oferece US$10 milhões para cada pelo algoritmo, porém, um dos matemáticos se recusa a vender, sendo forçado a revelar um segredo importante sobre sua parte do algoritmo. Lançado em 2012. Marco Antonio M. Carvalho (UFOP) PCC104 3 de fevereiro de 2017 23 / 40 Casos Especiais do PCV PCV Métrico (ou PVC com Desigualdade Triangular) Também conhecido como ∆-PCV, em que as distâncias entre as cidades obedecem à desigualdade triangular, ou seja, a distância de uma cidade A até uma cidade B nunca é maior do que uma rota que inclui uma cidade intermediária C. Em outras palavras dAB ≤ dAC + dCB . PCV Euclideano Também conhecido como PCV planar, em que as distâncias são euclideanas. PCV Assimétrico A distância entre dois vértices no grafo dependem do sentido em que a aresta está sendo percorrida. Marco Antonio M. Carvalho (UFOP) PCC104 3 de fevereiro de 2017 24 / 40 O Problema do Caixeiro Viajante Evolução dos Benchmarks Ao longo do tempo, a ampla investigação e criação de métodos para solução do PCV resultou em uma grande evolução no tamanho das instâncias não triviais resolvidas à otimalidade: I 318 cidades (1980); I 7.397 cidades (1990); I 24.978 cidades (2004); I 85.900 cidades (2006). Atualmente, a maior instância do PCV não resolvida é conhecida como “World TSP”, contando com 1.904.711 cidades a . a Disponível em http://www.math.uwaterloo.ca/tsp/world/index.html Marco Antonio M. Carvalho (UFOP) PCC104 3 de fevereiro de 2017 25 / 40 O Problema do Caixeiro Viajante 15.112 cidades na Alemanha e 24.978 cidades na Suécia. Marco Antonio M. Carvalho (UFOP) PCC104 3 de fevereiro de 2017 26 / 40 O Problema do Caixeiro Viajante 85.900 pontos em um circuito VLSI. Marco Antonio M. Carvalho (UFOP) PCC104 3 de fevereiro de 2017 27 / 40 O Problema do Caixeiro Viajante World TSP: 1.904.711 cidades. Marco Antonio M. Carvalho (UFOP) PCC104 3 de fevereiro de 2017 28 / 40 Algoritmo de Christofides Princípio O algoritmo de Christofides, proposto em 1976, determina um ciclo hamiltoniano da seguinte forma: I Dado um grafo G, determina uma árvore geradora mínima T ; I Calcula um casamento perfeito de custo mínimo entre os vértices de grau ímpar de T ; I Adiciona as arestas do casamento em T , tornando-a um grafo euleriano; I Aplica o procedimento Twice-Around para determinar o ciclo hamiltoniano a partir do ciclo euleriano. Comprovadamente, o algoritmo de Christofides produz soluções que são no máximo 1,5 vezes piores do que as soluções ótimas do ∆-PCV. Marco Antonio M. Carvalho (UFOP) PCC104 3 de fevereiro de 2017 29 / 40 Twice-Around Princípio O algoritmo de Christofides utiliza parte do princípio da heurística Twice-Around ; Partindo de uma árvore geradora mínima de um grafo G, um ciclo hamiltoniano é obtido a partir de um ciclo euleriano em G através de um percurso que, utilizando “atalhos” sempre que possível, evita a repetição de vértices no ciclo. Marco Antonio M. Carvalho (UFOP) PCC104 3 de fevereiro de 2017 30 / 40 Algoritmo de Christofides Terminologia I H: conjunto de vértices que determinam o ciclo hamiltoniano; I T : árvore geradora mínima do grafo da entrada; I AT : conjunto de arestas de T ; I G0 = (V0 , A0 ): grafo reduzido que possui os vértices de grau ímpar de T e as arestas de A incidentes aos vértices de T ; I E: casamento perfeito de custo mínimo dos vértices de G0 ; I G0 : grafo que possui o conjunto de vértices original e o conjunto de arestas de T e E; I L: ciclo euleriano em G’. Marco Antonio M. Carvalho (UFOP) PCC104 3 de fevereiro de 2017 31 / 40 Algoritmo de Christofides 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Entrada: Grafo G = (V , A) H ← ∅; determine T = (V, AT ), uma árvore geradora mínima de G; defina G0 = (V0 , A0 ), onde V0 é o conjunto de vértices de T que possuem grau ímpar e A0 = {(i, j) ∈ A|i, j ∈ V0 }; determine E, o casamento perfeito de custo mínimo em G0 ; faça G0 = (V, AT ∪ E); determine um ciclo euleriano L em G0 ; //Twice-Around enquanto L 6= ∅ faça escolher sequencialmente lk ∈ L; se lk 3 H então H ← H ∪ {lk }; fim L ← L \ lk ; fim Marco Antonio M. Carvalho (UFOP) PCC104 3 de fevereiro de 2017 32 / 40 Algoritmo de Christofides Grafo G. Marco Antonio M. Carvalho (UFOP) PCC104 3 de fevereiro de 2017 33 / 40 Algoritmo de Christofides Vértices de grau ímpar na árvore geradora mínima T obtida a partir de G. Marco Antonio M. Carvalho (UFOP) PCC104 3 de fevereiro de 2017 34 / 40 Algoritmo de Christofides Casamento E = {(2, 4), (6, 3)} em G. Marco Antonio M. Carvalho (UFOP) PCC104 3 de fevereiro de 2017 35 / 40 Algoritmo de Christofides G0 = (V, AT ∪ E) Grafo cujas arestas são a união das arestas da árvore geradora mínima e do casamento perfeito de custo mínimo. Marco Antonio M. Carvalho (UFOP) PCC104 3 de fevereiro de 2017 36 / 40 Algoritmo de Christofides L = 6-3-6-1-2-4-5-6 (possui repetição) H = (6, 3, 1, 2, 4, 5, 6). Marco Antonio M. Carvalho (UFOP) PCC104 3 de fevereiro de 2017 37 / 40 Algoritmo de Christofides Complexidade A complexidade do algoritmo é limitada pela complexidade da etapa que determina o casamento dos vértices, que é O(n3 ). Relação de Aproximação Conforme mencionado anteriormente, este algoritmo é uma 3/2-aproximação para o Problema do Caixeiro Viajante Métrico (em que as distâncias obedecem a desigualdade triangular). Marco Antonio M. Carvalho (UFOP) PCC104 3 de fevereiro de 2017 38 / 40 Algoritmo de Christofides Relação de Aproximação Seja A o conjunto de arestas que formam a solução ótima do ∆-PCV; Dado que o grafo é conectado, ele possui uma árvore geradora mínima T , tal que w(A) ≥ w(T ), em que a função w determina o peso das arestas; Seja B o conjunto de arestas da solução ótima do PCV considerando os vértices de V0 (o conjunto de vértices de grau ímpar em T ) como um grafo completo; Dado que os pesos das arestas respeita a desigualdade triangular, temos que w(A) ≥ w(B), uma vez que visitar mais vértices não pode reduzir o custo total; Há um casamento perfeito de vértices em V0 com peso inferior a w(B)/2 ≤ w(A)/2 e este pode ser um limitante superior para o custo de E; Desta forma, temos que w(T ) + w(E) ≤ w(A) + w(A)/2, ou seja, o peso da solução encontrada é menor ou igual a 32 w(A). Marco Antonio M. Carvalho (UFOP) PCC104 3 de fevereiro de 2017 39 / 40 Dúvidas? Marco Antonio M. Carvalho (UFOP) PCC104 3 de fevereiro de 2017 40 / 40