A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

GRAFOS EULERIANOS E HAMILTONIANOS

Apresentações semelhantes


Apresentação em tema: "GRAFOS EULERIANOS E HAMILTONIANOS"— Transcrição da apresentação:

1 GRAFOS EULERIANOS E HAMILTONIANOS
Prof. M.Sc. Fábio Francisco da Costa Fontes Maio

2 Introdução Caminhos que usam todos os vértices ou todas as arestas de um grafo são geralmente chamados de percursos Uma grande variedade de problemas práticos podem ser vistos como um percurso num grafo Eles se dividem em duas categorias: Problemas do tipo euleriano Problemas do tipo hamiltoniano

3 Introdução Problemas do tipo euleriano: requerem que cada aresta seja percorrida pelo menos uma vez Problemas do tipo hamiltoniano: requerem que cada vértice seja percorrido pelo menos uma vez Exemplos clássicos de otimização: o problema do carteiro chinês e o problema do caixeiro viajante

4 Introdução Os dois problemas parecem ser semelhantes, mas possuem complexidades bem diferentes A maior parte dos problemas eulerianos são resolvidos em tempo polinomial A maioria dos problemas hamiltonianos têm uma solução de custo elevado e são classificados como NP-difícil, é necessário a utilização de técnicas aproximativas para se obter um resultado em tempo hábil

5 Grafos Eulerianos Um percurso euleriano é um percurso que contém todos as arestas do grafo Um circuito euleriano é um percurso euleriano fechado Um grafo euleriano é um grafo que contém um circuito euleriano Um circuito euleriano no grafo é <u,v,t,u,w,t,z,w,x,y,z,u> u t z y v w x 5

6 Problemas Eulerianos As pontes de Königsberg: é possível fazer um percurso atravessando todas as pontes, sem repetir nenhuma? Na cidade de Königsberg (Prússia no século XVIII, atual Kaliningrado, Rússia) havia duas grandes ilhas que, juntas, formavam um complexo que continha sete (7) pontes. Discutia-se nas ruas da cidade a possibilidade de fazer um percurso (passeio) atravessando todas as pontes, sem repetir nenhuma. Leonhard Euler, em 1736, provou que não existia caminho que possibilitasse tais restrições. 6

7 Problemas Eulerianos Euler percebeu que só seria possível atravessar o caminho inteiro passando uma única vez em cada ponte se houvessem exatamente dois pontos de onde saíssem um número ímpar de caminhos. Leonhard Euler, em 1736, provou que não existia caminho que possibilitasse tais restrições. Euler transformou os caminhos em retas e suas intersecções em pontos criando possivelmente o primeiro grafo da história. Então percebeu que só seria possível atravessar o caminho inteiro passando uma única vez em cada ponte se houvessem no máximo dois pontos de onde saia um número ímpar de caminhos. A razão de tal coisa é: de cada ponto deve haver um número par de caminhos, pois será preciso um caminho para "entrar" e outro para "sair". Os dois pontos com caminhos ímpares referem-se ao início e ao final do percurso, pois estes não precisam de um para entrar e um para sair. 7

8 Grafos Eulerianos Em 1873, Hierholzer mostrou que um grafo cujo todos os vértices têm grau par é euleriano Entrada: Um grafo conectado G cujos vértices têm grau par Saída: Um circuito euleriano Algoritmo: Circuito Euleriano Inicie em qualquer vértice v Construa um percurso fechado T em G Enquanto existirem arestas de G fora do percurso T Escolha qualquer vértice w em T, que seja incidente a uma aresta fora do percurso Iniciando em w, construa um percurso fechado D de arestas fora do percurso T Faça a união do percurso D em T no ponto w Retorne T

9 Grafos Eulerianos Exemplo: w1 t2 x y t1 d1 t3 z v e1 d3 e2 t4 d2 u w

10 Percursos Eulerianos Algumas aplicações (e.g. as pontes de Königsberg) requerem percursos eulerianos abertos: Um grafo conectado G tem um percurso euleriano aberto se e somente se ele tem exatamente dois vértices de grau ímpar O uso do termo euleriano é idêntico para dígrafos, exceto que os percursos são direcionados

11 Exercícios Determine qual dos grafos das famílias abaixo são eulerianos: O grafo completo Kn O grafo ciclo de n vértices Cn O grafo bipartido completo Km,n

12 Exercícios Aplique o algoritmo para achar um circuito euleriano (iniciando em s): d i g c b e j m h a s f k

13 O Problema do Carteiro Chinês
O matemático chinês Meigu Guan introduziu o problema em 1962: Achar o caminho fechado mais curto que percorra todas as arestas de um grafo pelo menos uma vez É o problema do carteiro que quer entregar a correspondência numa rede de ruas e retornar ao escritório central o mais rápido possível

14 O Problema do Carteiro Chinês
Definição: um circuito do carteiro em um grafo G é um caminho fechado que usa cada aresta de G pelo menos uma vez Definição: em um grafo com peso nas arestas, um circuito ótimo do carteiro é um circuito do carteiro cujo peso total das arestas é mínimo

15 O Problema do Carteiro Chinês
Exemplo: achar o circuito ótimo do carteiro no grafo abaixo: 6 7 a b c 3 2 3 5 d e f O grafo não tem um circuito euleriano (existem vértices de grau ímpar), então é necessário repetir arestas no circuito. 6 4 5 6 g h i 5 10 15

16 O Problema do Carteiro Chinês
Edmonds e Johnson resolveram o problema do carteiro chinês usando um algoritmo de tempo polinomial A idéia é duplicar arestas nos vértices de grau ímpar, fazendo com que o grafo tenha um circuito euleriano O ponto chave do algoritmo é descobrir as arestas de caminho mais curto entre os vértices de grau ímpar

17 O Problema do Carteiro Chinês
Solução: duplicar arestas para os vértices de grau ímpar e obter um circuito euleriano no grafo 6 7 a b c 3 2 3 O grafo não tem um circuito euleriano (existem vértices de grau ímpar), então é necessário repetir arestas no circuito. 5 d e f 6 4 5 6 g h i 5 10 17

18 O Problema do Carteiro Chinês
O algoritmo de Edmonds e Johnson usa as seguintes definições: Definição: um casamento em um grafo G é um subconjunto M de arestas de G tal que nenhum par de arestas em M tem um ponto final (vértice) em comum y a b g M = {a,d}, {c,b}, {e,b}, ... e f x v z h c d w

19 O Problema do Carteiro Chinês
O algoritmo de Edmonds e Johnson usa as seguintes definições: Definição: um casamento perfeito em um grafo G é um casamento em que todo vértice de G é um ponto final de uma das arestas de M y a b M = {a,d}, {c,b} x z c d w

20 O Problema do Carteiro Chinês
Entrada: Um grafo conectado G com peso nas arestas Saída: Um circuito ótimo do carteiro W Algoritmo: Circuito Ótimo do Carteiro Ache o conjunto S de vértices com grau ímpar Para cada par de vértices u e v em S Ache duv, o caminho mais curto entre u e v Forme um grafo completo K com os vértices em S Para cada aresta e do grafo completo K Atribua o peso duv para a aresta e=<u,v> Ache um casamento perfeito M em K cujo peso total das arestas é mínimo Duplique as arestas de G correspondentes ao casamento M Construa um circuito euleriano W no novo grafo G W corresponde a um circuito ótimo do carteiro em G

21 Outros Problemas Eulerianos
Variações do problema do carteiro chinês aparecem em diversas aplicações: Coleta de lixo Limpeza das ruas Pintura de linhas no centro das ruas Patrulhamento da polícia Pesquisa de opinião e recenseamento Plotagem de uma rede

22 Grafos Hamiltonianos Definição: um caminho hamiltoniano em um grafo G é um caminho simples que contém todos os vértices de G. Definição: um ciclo hamiltoniano é um caminho hamiltoniano fechado Definição: um grafo hamiltoniano é um grafo que tem um ciclo hamiltoniano Caminho simples: um caminho que não repete vértices w z u t v y x 22

23 Grafos Hamiltonianos Não existe uma regra simples (como para os grafos eulerianos) para caracterizar um grafo como hamiltoniano O problema de saber se um grafo qualquer é hamiltoniano é NP-completo Um algoritmo de tempo polinomial para resolver o problema não é conhecido

24 Grafos Hamiltonianos Não existe um algoritmo que funcione para qualquer grafo, mas: Existem condições suficientes para um grafo ser hamiltoniano que se aplicam a uma grande classe de grafos Existem algumas regras básicas que ajudam a identificar grafos que não são hamiltonianos

25 Grafos Não Hamiltonianos
As regras são baseadas na observação que um ciclo hamiltoniano deve conter exatamente duas arestas incidentes em cada vértice A estratégia para aplicar as regras é iniciar a construção de um ciclo hamiltoniano e mostrar que em algum ponto as regras se contradizem

26 Grafos Não Hamiltonianos
Regras para grafos não-hamiltonianos: Se um vértice v tem grau 2, todas as arestas incidentes em v devem fazer parte de qualquer ciclo hamiltoniano Durante a construção, nenhum ciclo pode ser formado até todos os vértices terem sido visitados Se durante a construção, duas arestas incidentes em um vértice v são necessárias, todas as outras arestas incidentes podem ser apagadas

27 Grafos Não Hamiltonianos
Exemplo: v h Regra 1 Regra 2 Regra 3 a b f g e c d w x

28 Grafos Não Hamiltonianos
Exemplo Regra 1 Regra 1 a b c Regra 3 v w x Pela Regra 1, todas as arestas verticais estão no ciclo hamiltoniano. Pela Regra 3 e 1 ou ab ou bc vai estar no ciclo. Considerando ab no ciclo, bc não estará. Então a regra 3 aplicada em a implica que ac não está no ciclo. Assim cx é a única aresta incidente em c e não pode haver um ciclo hamiltoniano. d e f 28

29 Grafos Hamiltonianos Teorema (Ore, 1960): Seja G um grafo simples de n vértices, onde n ≥ 3, tal que deg(x) + deg(y) ≥ n para cada par de vértices não adjacentes x e y. Então G é hamiltoniano v w Grafo simples: um grafo que não tem loops nem multi-arestas u x y 29

30 Grafos Hamiltonianos Corolário (Dirac 1952): Seja G um grafo simples com n vértices, onde n ≥ 3, tal que deg(v) ≥ n/2 para cada vértice v. Então G é hamiltoniano v w Grafo simples: um grafo que não tem loops nem multi-arestas z x y 30

31 Grafos Hamiltonianos Exercício: identifique se o grafo abaixo é ou não hamiltoniano u t z y v w x

32 Grafos Hamiltonianos Exercício: identifique se o grafo abaixo é ou não hamiltoniano t z u y w O grafo é hamiltoniano pelo corolário de Dirac: cada vértice tem grau maior ou igual a n/2 v x s 32

33 Grafos Hamiltonianos Exercício: identifique se o grafo abaixo é ou não hamiltoniano t z u y w O grafo é hamiltoniano pela construção de um ciclo hamiltoniano usando as regras para identificar grafos não-hamiltonianos v x s 33

34 O Problema do Caixeiro Viajante
O problema do caixeiro viajante consiste em minimizar o custo de um caixeiro viajante que deseja percorrer n cidades, visitando cada cidade apenas uma vez, e retornar para casa. t 10 9 7 u z 7 5 6 10 11 9 v w 6

35 O Problema do Caixeiro Viajante
Dantzig, Fulkerson e Johnson foram os primeiros a encontrar uma solução ótima usando 49 cidades em 1954 Branch and Bound Cutting planes Crowder e Padberg conseguiram uma solução ótima para o problema usando 318 cidades em 1980 Facet-defining inequalities

36 Heurísticas e Aproximações
Definição: uma heurística é um procedimento que ajuda na tomada de uma decisão quando existem múltiplas alternativas Heurísticas são aplicadas quando é impossível avaliar todas as possibilidades. É o que faz, por exemplo, o jogador de xadrez

37 Heurísticas e Aproximações
Definição: um algoritmo heurístico é um algoritmo cujos passos são guiados por uma heurística. Um algoritmo heurístico abdica da garantia de achar a melhor solução, para que uma solução possa ser encontrada rapidamente A heurística mais simples para o caixeiro viajante é a do vizinho mais próximo

38 Heurísticas e Aproximações
Segundo (BARR et al., 2001), Métodos Heurísticos, também chamados algoritmos aproximativos, procedimentos inexatos, algoritmos incorretos, ou simplesmente heurísticos são usados para identificar boas soluções aproximadas para cada problema em menos tempo que os algoritmos exatos (quando este existir).

39 Heurísticas Construtivas
As Heurísticas de métodos construtivos iniciam, sem nenhum resultado, a solução de um problema e constroem passo a passo uma solução viável. Apresentam algoritmos gulosos, os quais, devido a enxergarem apenas o que está mais próximo do objetivo desejado, são também chamados de algoritmos míopes.

40 Heurísticas Construtivas
Quando se trata de solucionar o PCV, as variações desta classe de algoritmo, que se apresentam com maior destaque, são: o vizinho mais próximo; a inserção mais próxima; a inserção mais distante; a inserção mais barata; a inserção pelo maior ângulo; o método das economias.

41 Heurísticas para o PCV Entrada: um grafo completo com pesos nas arestas Saída: uma seqüência de vértices que formam um ciclo hamiltoniano Algoritmo: Vizinho mais próximo Inicie em qualquer vértice v rótulo(v) = 0 i = 0 Enquanto existirem vértices não rotulados i = i + 1 Percorra a aresta de menor custo que une v a um vértice não rotulado w rótulo(w) = i v = w

42 Heurísticas para o PCV O algoritmo do vizinho mais próximo é rápido e fácil de implementar As vezes ele produz resultados muito bons, podendo inclusive achar o ótimo, como no exemplo abaixo se iniciarmos em s s 10 9 7 u z 7 5 6 10 11 9 v w 6

43 Heurísticas para o PCV Entretanto, em geral, o algoritmo do vizinho mais próximo pode achar ciclos hamiltonianos ruins (com custo elevado) s v 2 1 1 2 t u 1

44 Heurísticas para o PCV

45 Aplicações do PVC Seqüenciamento de tarefas:
Suponha n tarefas que devem ser processadas numa única máquina O tempo necessário para processar a tarefa j depois da tarefa i é cij Como as tarefas devem ser seqüenciadas de forma a minimizar o tempo de processamento? A solução é um caminho hamiltoniano de custo mínimo no grafo


Carregar ppt "GRAFOS EULERIANOS E HAMILTONIANOS"

Apresentações semelhantes


Anúncios Google