PERCURSOS
André Falcão, Carlos Augusto, Rafael Broédel e Lucas Dipré
Serra
2011
Índice
1..................................................................O que é caminho e
circuito
1.1...............................................................Caminho
1.2...............................................................Circuito
1.3...............................................................Classificação
2..................................................................Caminhos Eulerianos
2.1...............................................................Definição
2.2...............................................................Como surgiu
2.3...............................................................Modelo do Problema
2.4 ..............................................................Caminho Aberto e
Caminho Fechado
2.5 ..............................................................Aplicações
3..................................................................Circuito Hamiltoniano
3.1...............................................................Verificação e
Classificação
3.2...............................................................O problema do caixeiro
viajante
4.................................................................Pseudocódigo
5.................................................................Exercícios
6.................................................................Referências
1) Caminhos e Circuitos
1.1) Caminho
É uma seqüência de vértices ligados por arestas. As
arestas fazem parte do caminho.
Caminho 1-2-4-1
Caminho 1-2-3-1
1.2) Circuito
É um caminho formado por x + 1 vértices. Deve começar
e terminar no mesmo vértice. Mesmo escolhendo o vértice
inicial ao acaso, ele continuará sendo um circuito.
A seqüência dos vértices x1, x2, x5, x4, x1 forma um circuito.
1.3) Classificação
Simples: Um caminho é considerado simples se ele não
contem a mesma aresta mais de uma vez.
Idêntico: Dois ciclos são idênticos quando um for obtido a
partir do outro através da troca de seus vértices. Em outras
palavras, iniciar o ciclo em outro vértice.
2) Caminhos Eulerianos
2.1) Definição:
Caminhos eulerianos são caminhos nos quais se utilizam todas as arestas uma
única só vez num determinado grafo.
2.2) Como Surgiu:
O caminho euleriano surgiu com o famoso problema das Sete
pontes de Königsberg (que foi uma das principais fundações
da teoria dos grafos), onde os moradores da cidade
de Königsberg (território da Prússia até 1945, atual Kaliningrado,
na Rússia), que é cortada pelo Rio Prególia, onde há duas
grandes ilhas que, juntas, formam um complexo que na época
continha sete pontes, discutiam nas ruas da cidade a possibilidade
de atravessar todas as pontes sem repetir nenhuma. Havia-se
tornado uma lenda popular à possibilidade da façanha quando
Euler, em 1736, provou que não existia caminho que possibilitasse
tais restrições.
Representação das pontes.
2.3) Modelo do Problema:
Euler usou um raciocínio muito simples. Transformou os caminhos em retas e
suas intersecções em pontos, criando possivelmente o primeiro grafo da história.
O Grafo utilizado como modelo é definido como:
V = { m | m é uma ilha ou uma margem }
A = { (m1,m2, p} | existe uma ponte p unindo as margens ou ilhas m1 e m2 }
Os conjuntos acima são apresentados, a seguir, na forma extensiva, contendo
todos seus elementos, extraídos do problema:
V = { 1, 2, 3, 4 }
A = { (1,3,e), (1,3,f), (1,2,a), (1,2,b), (1,4,d), (2,4,c), (3,4,g) }
Com isso, podemos construir o seguinte grafo:
Grafo G
Observação sobre o grafo G:
 Não Orientado: O mesmo caminho faz ligação de uma vértice a outra e
vice-verso, exemplo: o caminho “a” pode ser usado para ligar o vértice 1 ao
vértice 2, e o vértice 2 ao vértice 1, [(1,2,a), (2,1,a)].
 Multigrafo: Um vértice pode ter mais de um caminho para outro mesmo
vértice, como exemplo, os vértices 1 e 2 tem os caminhos “a” e “b” fazendo
ligação entre eles.
 Conexo: Todo vértice está ligado à pelo menos um outro vértice.
Solução:
TEOREMA: Um grafo conexo é um grafo de Euler se e somente se todos os seus
vértices são de grau par (caminho fechado) ou existir exatamente dois vértices de
grau ímpar (caminho aberto).
2.4) Caminho Aberto e Caminho Fechado:
A diferença entre um caminho euleriano aberto e um fechado está no final do
caminho. Caso se parta e se chegue no mesmo vértice teremos um caminho
fechado. Caso a partida não coincida com a chegada teremos um caminho
euleriano aberto.
Exemplo Caminho Fechado:
Exemplo Caminho Aberto:
Prova:
Imagine que G seja um grafo de Euler. Então ele contém um caminho de Euler.
Seguindo esse caminho nota-se que chegamos num vértice 'entrando„ por uma
aresta e encontramos outra para 'sair' do vértice e continuar o caminho. Se
houver outras arestas adjacentes ao vértice, 'entramos' por uma destas arestas
e devemos encontrar uma, ainda não visitada, para 'sairmos' do vértice. Se
houver um número n ímpar de arestas em pelo menos um dos vértices, ao
realizar o caminhamento, em um determinando momento, „entramos‟ no vértice
e não haverá „saída‟ ainda não visitada. O caminhamento não pode continuar.
Solução:
Pela análise do grafo modelo G para o problema das pontes de Königsberg,
observa-se que para todo vértice seu grau é ímpar. Logo, o grafo G não é um
grafo de Euler. Isso significa que o problema não possui solução.
2.5) Aplicações:
As aplicações dos caminhos eulerianos se relacionam, basicamente, com
problemas de atendimento seqüencial, sobre um conjunto de usuários de um
serviço oferecido no interior de uma rede de tráfego, tais como, entrega de
correio, coleta de lixo, vendas por atacado, etc.
Imagine um carteiro que deve percorrer um roteiro todo dia. O problema é de
identificar esse roteiro de maneira a minimizar a distância total percorrida. Essa
situação pode ser representada por um grafo onde as arestas correspondem
às ruas e os vértices correspondem aos cruzamentos.
3) O Problema do Circuito de Hamilton
O famoso matemático William Rowan Hamilton (1805-1865) colocou um
problema em teoria de grafos que consistia em dizer se um caminho num grafo
é um caminho elementar que contém todos os vértices do grafo. Um ciclo
hamiltoniano é um ciclo que contém todos os vértices do grafo. Um grafo dizse grafo hamiltoniano se contém um ciclo hamiltoniano.
Tentativa e erro
O problema do ciclo Hamiltoniano pode ser resolvido para um determinado
grafo usando a técnica de tentativa e erro, a teoria do algoritmo é o seguinte:
Comece por um nó do grafo e tente alguns caminhos escolhendo diversos
arcos. Se o caminho resulta em um nó repetido, não é um ciclo, jogue-o fora e
tente um caminho diferente. Se o caminho pode ser completado para formar
um ciclo, verifique se todos os nós são visitados, se não jogue-o fora e tente
um caminho diferente. Continue assim até tentar todos os caminhos possíveis
ou encontrar um caminho que sirva.
Na teoria, para grafos muito pequenos esse algoritmo é razoavelmente
aceitável, mas para grafos mais robustos ele é ineficiente, pois vão existir
caminhos demais para se tentar.
Euler x Hamilton
Diferentemente de Leonhard Euler (1707-1783), Hamilton não conseguiu um
algoritmo simples para determinar, para um grafo arbitrário, se existe um
caminho Hamiltoniano. De fato existe uma teoria de que esse algoritmo nunca
será encontrado pois o algoritmo tem comprovadamente complexidade n² , e
com uma quantidade grande de caminhos fica impraticável uma resolução
como a encontrada por Euler em seu algoritmo.
3.1) Verificação e Classificação
Não existe uma equação polinomial absoluta para saber se um grafo tem ou
não requisitos para ser um circuito hamiltoniano. Apenas utilizando-se de
testes de caminhos no grafo para fazer a checagem, o que aumenta a
complexidade exponencialmente. No entanto, algumas condições permitem
verificar se um grafo é ou não hamiltoniano:
1. Se um n-grafo simples com três ou mais vértices satisfaz grau(v) + grau(w) ≥
n para quaisquer vértices não vizinhos um do outro, então o grafo é
hamiltoniano.
2. Se um grafo simples com três ou mais vértices, vértices esses que tem o
grau não inferior a metade do número de vértices. Então o grafo é
hamiltoniano.
3.2) O Problema do Caixeiro Viajante
Se considerarmos um grafo com peso, se existe um circuito hamiltoniano para
o grafo, podemos encontrar um peso mínimo? Esse é o famoso problema do
caixeiro viajante, que continua sofrendo com o problema da ineficiência do
algoritmo para um grafo arbitrário de tamanho mais robusto, mas com o
desenvolvimento de algoritmos como o do vizinho mais próximo torna possível
a verificação de grafos maiores, mas não de todo e qualquer grafo.
Exemplos
Exemplo de dois grafos que não admitem Circuito de Hamilton:
Segue-se o exemplo de um grafo que admite Circuito de Hamilton: um
ircuito poderá ser AHGFEDIBCA:
Reparemos que a figura anterior foi obtida da figura (b) acrescentando uma aresta,
a aresta CA.
4) Pseudocódigo
ALGORITMO CaminhodeEuler
CaminhoDeEuler (matriz n x n A)
//Determina se existe um caminho de Euler em um grafo conexo
//sem laços e com matriz de adjacências A
Variáveis Locais:
int total //numero de nos impares encontrados até agora
int grau //o grau do nó
int i,j //índices da matriz
total = 0
i=1
enquanto total<=2 e i<=n faça
grau=0
para j=1 até n faça
grau=grau+A[i,j]
fim do para
se impar(grau) entao
total = total + 1
fim do se
i=i+1
fim do enquanto
se total > 2 então
escreva ("Não Existe Caminho de Euler")
senão
escreva ("Existe Caminho de Euler")
fim do se
fim do CaminhoDeEuler
5) Exercícios
1-Julgue as Sentenças a Seguir:
a) Um Grafo com quatro nós Impares ainda pode ser conexo.
b) Existe um Caminho de Euler em qualquer grafo com um número par de nós
impares.
c) Existe um algoritmo O(n²) que testa a existência de um caminho de Euler
em um grafo com nós.
d) Um Circuito Hamiltoniano usa cada arco e cada nó do grafo exatamente
uma vez, exceto o nó que é ao mesmo tempo, Inicial e final.
e) Não se conhece nenhum algoritmo que resolva o problema do circuito
hamiltoniano.
2-Dado o Grafo a seguir:
1
2
4
3
5
6
Determine se o Grafo especificado tem o caminho de Euler de acordo com o
Teorema de Euler.
3- A partir da matriz a seguir, diga se existe um ciclo Euleriano:
0
2
1
0
0
2
0
1
0
0
1
1
0
1
1
0
0
1
0
2
0
0
1
2
0
Respostas:
1a) V
b) F
c) V
d) F
e) F
2- Sim, existe ciclo euleriano pois todos os nós tem grau par.
3- Não, pois os nós 1,2,4 e 5 tem grau impar, que vai contra o Teorema do
Caminho de Euler.
6) Referencias:
http://www6.ufrgs.br/espmat/disciplinas/novos_conteudos/modulo_I/conteudos1c.h
tm
http://www.felr.ufpa.br/images/ResumoTutoriaisCaldwell_Jnane.pdf
http://www.inf.ufsc.br/grafos/problema/pontes/grafos.html
GERSTING, J. L., Fundamentos Matemáticos para a Ciência da Computação,
Ed. LTC, 5ª Ed. 2008, Capítulo 6.2.
Imagens retiradas do Google Imagens.
Download

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