Você está na página 1de 69

Grafos Hamiltonianos

Mayron César de Oliveira Moreira

Departamento de Ciência da Computação


Universidade Federal de Lavras
Motivação

Thomas Penyngton Kirkman (1856): existência de ciclos que não


repetissem vértices ou arestas em certos tipos de sólidos.

Figura: Fonte – Goldbarg & Goldbarg (2012).


Motivação

William Rowan Hamilton (1857): um jogo “Around the World”.

Figura: Fonte – http://puzzlemuseum.com.


Motivação

Grafo que modela o jogo “Around the World”.

Figura: Fonte – Goldbarg & Goldbarg (2012).


Definições

Caminho Hamiltoniano
Passa por cada vértice do grafo exatamente vez.

a1
a2
b1
b2 a0
b0
b3
a3 b5
b4
a5
a4
Definições

Caminho Hamiltoniano
Passa por cada vértice do grafo exatamente vez.
Exemplo: a0 − a1 − a2 − a3 − a4 − a5 − b5 − b0 − b1 − b2 − b3 − b4.

a1
a2
b1
b2 a0
b0
b3
a3 b5
b4
a5
a4
Definições

Ciclo Hamiltoniano
Caminho Hamiltoniano que volta ao vértice inicial.

a1
a2
b1
b2 a0
b0
b3
a3 b5
b4
a5
a4
Definições

Ciclo Hamiltoniano
Caminho Hamiltoniano que volta ao vértice inicial.
Exemplo: a0 − a1 − a2 − a3 − a4 − a5 − b5 − b4 − b3 − b2 − b1 − b0 − a0.

a1
a2
b1
b2 a0
b0
b3
a3 b5
b4
a5
a4
Definições

Grafo Hamiltoniano
Possui um ciclo Hamiltoniano

Grafo Semi-Hamiltoniano
Possui um caminho Hamiltoniano.
Conclusão: todo Grafo Hamiltoniano é um Grafo Semi-Hamiltoniano.

a1
a2
b1
b2 a0
b0
b3
a3 b5
b4
a5
a4
Definições

Figura: Fonte – Goldbarg & Goldbarg (2012).


Complexidade do problema

Karp (1972)
Não existe um algoritmo que decida em tempo polinomial se um grafo
possui um ciclo ou caminho Hamiltoniano.

Resultados Teóricos
Não se conhece uma condição necessária e suficiente trivial para a
existência de um ciclo hamiltoniano em um grafo.
Teoremas

Dirac (1952)
n
Seja G = (V , E ) um grafo com n ≥ 3 e δ(G ) ≥ . Então, G é
2
Hamiltoniano.

a1

a2 a0

a3

Figura: Teorema de Dirac é válido.


Teoremas
Dirac (1952)
n
Seja G = (V , E ) um grafo com n ≥ 3 e δ(G ) ≥ . Então, G é
2
Hamiltoniano.

a2 a1

a3 a0

a4 a5

Figura: Hipóteses do Teorema de Dirac não são válidas, mas o grafo é


Hamiltoniano.
Teoremas

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.
Propriedades

Fecho Hamiltoniano de um grafo G


Consiste em um grafo Φ(G ) obtido através de uma adição sucessiva de
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.
Propriedades

Fecho Hamiltoniano de um grafo G


Consiste em um grafo Φ(G ) obtido através de uma adição sucessiva de
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 é Hamiltoniano.

Modificação do Teorema de Bondy & Chvátal (1976)


G será Hamiltoniano se e somente se Φ(G ) for Hamiltoniano.
Aplicações
Problema do Passeio do Cavalo

Figura: Fonte – Goldbarg & Goldbarg (2012).


Aplicações

Problema do Passeio do Cavalo

Figura: Solução do Passeio de Cavalo em um tabuleiro 3 × 10. Fonte – Goldbarg


& Goldbarg (2012).
Aplicações

Problema do Passeio do Cavalo


Para a resolução
• Algoritmo Backtracking ;
• Em tabuleiros 8 × 8, conseguimos encontrar a solução para o ciclo e
caminho Hamiltoniano;
Aplicações
Problema do Passeio do Cavalo
Algoritmo em tempo polinomial:

Figura: Fonte – Conrad et al. (1994).


Problema do Caixeiro Viajante (Traveling Salesperson
Problem)

Definição
Consiste em determinar o ciclo hamiltoniano de menor custo, em um grafo
valorado direcionado ou não. Consiste em um problema NP-Completo.
Problema do Caixeiro Viajante (Traveling Salesperson
Problem)
Definição
Consiste em determinar o ciclo hamiltoniano de menor custo, em um grafo
valorado direcionado ou não. Consiste em um problema NP-Completo.
Caracteristicas do TSP: Transporte de Bagagens em
Aeroportos

Figura: Goldbarg & Goldbarg (2012).


Caracteristicas do TSP: O Passeio do Pistoneio

Figura: Goldbarg & Goldbarg (2012).


Evolução das instâncias
• Instâncias já resolvidas:
• 318 cidades (1980);
• 7.397 cidades (1990);
• 24.978 cidades (2004);
• 85.900 cidades (2006).
• Maior instância do TSP conhecida atualmente: “World TSP”,
contando com 1.904.711 cidades.

Notas de aula do prof. M. A. Carvalho (UFOP, 2017).


Evolução das instâncias

Figura: Notas de aula do prof. M. A. Carvalho (UFOP, 2017).


TSP é arte!
A cheerful image for a rainy day (4096 cities).

Figura: https://twitter.com/baabbaash/status/1121832964491497472
TSP é arte!
Easter egg (1024 cities).

Figura: https://twitter.com/baabbaash/status/1119791076028686336
TSP é arte!
Chick (1024 cities).

Figura: https://twitter.com/baabbaash/status/1119791076028686336
TSP é arte!
Distant cousin Jerome (2048 cities).

Figura: https://twitter.com/baabbaash/status/1107375030005043201
TSP é arte!

A father and a son.

Figura: https://twitter.com/pickover/status/1096217460813037573
TSP é arte!
Monalisa.

Figura: http://www.cgl.uwaterloo.ca/csk/projects/tsp/
Algoritmos

Apresentaremos exemplos de alguns algoritmos:


• Vizinho mais próximo;
• Inserção;
• Rosenkrantz, Stearns e Lewis (RSL) - aplicado ao TSP Métrico;
TSP - Vizinho Mais Próximo

1 Inicie o ciclo em um vértice inicial qualquer


2 Enquanto houver vértices não visitados:
2.1 Vá ao vértice não visitado mais próximo do último vértice visitado
TSP - Vizinho Mais Próximo
TSP - Vizinho Mais Próximo
TSP - Vizinho Mais Próximo
TSP - Vizinho Mais Próximo
TSP - Vizinho Mais Próximo
TSP - Vizinho Mais Próximo
TSP - Vizinho Mais Próximo
TSP - Vizinho Mais Próximo
TSP - Vizinho Mais Próximo
TSP - Vizinho Mais Próximo
TSP - Vizinho Mais Próximo
TSP - Vizinho Mais Próximo
TSP - Vizinho Mais Próximo
TSP - Vizinho Mais Próximo
TSP - Inserção Mais Próxima

1 Selecione um par de vértices qualquer


2 Crie um ciclo indo do primeiro vértice ao segundo e voltando ao
primeiro
3 Enquanto houver vértices não visitados:
3.1 Para todo vértice não visitado:
3.1.1 Encontre a posição no ciclo atual onde a visita do vértice provoca o
menor aumento no custo total do ciclo
3.2 Encontre o vértice não visitado tal que o aumento calculado no passo
3.1.1 é o menor dentre todos os vértices não visitados
3.3 Insira-o na posição correspondente do ciclo
TSP - Inserção Mais Próxima
TSP - Inserção Mais Próxima
TSP - Inserção Mais Próxima
TSP - Inserção Mais Próxima
TSP - Inserção Mais Próxima
TSP - Inserção Mais Próxima
TSP - Inserção Mais Próxima
TSP - Inserção Mais Próxima
TSP - Inserção Mais Próxima
TSP - Inserção Mais Próxima
TSP - Inserção Mais Próxima
TSP - Inserção Mais Próxima
TSP - Inserção Mais Próxima
TSP Métrico - Algoritmo RSL (Rosenkrantz, Stearns e
Lewis)

Figura: Andretta (2017).


TSP Métrico - Algoritmo RSL (Rosenkrantz, Stearns e
Lewis)

Figura: Andretta (2017).


TSP Métrico - Algoritmo RSL (Rosenkrantz, Stearns e
Lewis)

Figura: Andretta (2017).

Duplicar as arestas e definir seu circuito (algoritmos em grafos Eulerianos -


veremos na próxima aula).
TSP Métrico - Algoritmo RSL (Rosenkrantz, Stearns e
Lewis)

Utilizar atalhos na solução e descobrir o ciclo Hamiltoniano.


TSP Métrico - Algoritmo RSL (Rosenkrantz, Stearns e
Lewis)

Observação: tem complexidade dominada pelo algoritmo de AGM, mas


há a garantia de que a solução ótima não seja pior de 2 vezes a ótima.
Referências

Notas de aula do prof. M. A. Carvalho (UFOP, 2017).


Dúvidas?

Figura: Notas de aula do prof. Alysson M. Costa (University of Melboune, 2017).

Você também pode gostar