Você está na página 1de 18

Algoritmos em Grafos

Adaptado: Fernando Moraes de Oliveira


(Original: Prof Paulo Eustáquio)
PARTE 4:
Determinação de Circuito Euleriano

Algoritmos em Grafos 2
Determinação de Circuito Euleriano

• Grafos – Determinação de Circuito Euleriano

O matemático suiço Leonhard Euler ficou intrigado com um


problema popular entre os habitantes de Königsberg.
O rio que atravessa a cidade bifurca em torno de uma ilha e
diversas pontes atravessam o rio conforme figura abaixo.

Algoritmos em Grafos 3
Determinação de Circuito Euleriano

• Grafos – Determinação de Circuito Euleriano

Definição do Circuito Euleriano: circuito que passa por todas as


arestas do grafo, uma única vez.

Um Circuito Euleriano só pode existir se os grafos forem conexos.

A existência de um caminho de Euler em um determinado grafo


depende dos graus de seus nós.

Algoritmos em Grafos 4
Determinação de Circuito Euleriano

• Grafos – Determinação de Circuito Euleriano

Um nó é PAR se tem GRAU PAR e ÍMPAR se tem GRAU ÍMPAR.

Todo grafo tem um número PAR de nós IMPARES.

Ex: d(2) d(3) d(3) d(4) d(4)


1 1 1 3 1 3
d(1) d(2)
3 d(4) 5
d(1) 4
2 2 2
2 4
d(2) d(3) d(3)
d(4) d(4)

Algoritmos em Grafos 5
Determinação de Circuito Euleriano

• Grafos – Determinação de Circuito Euleriano

Teorema sobre Caminhos de Euler


Existe um caminho de Euler em um grafo conexo se, e somente se, não
existem nós ímpares ou existem exatamente dois nós ímpares.
No caso em que não existem nós ímpares, o caminho pode começar em
qualquer nó e terminar aí; no caso de dois nós ímpares, o caminho precisa
começar em um deles e terminar no outro.

Ex: d(2) d(2) d(3)


1
1
3
3
d(2)
4 d(2)
d(2) 2 2
d(3)

Algoritmos em Grafos 6
Determinação de Circuito Euleriano

• Grafos – Determinação de Circuito Euleriano

Algoritmo Caminho de Euler


(Determina se existe um caminho de Euler em um grafo conexo e com
matriz de adjacência)

Var
total, grau, i, j: inteiro //total = numero de nós impares encontrados
Inicio
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]
FimPara
Se (grau%2<>0)
total = total + 1 //nó ímpar
FimSe
i=i+1
FimEnquanto
Se (total > 2) então
Escreva (“Não existe um caminho de Euler”)
Senão
Escreva (“Existe um caminho de Euler”)
FimSe
Fim.
Algoritmos em Grafos 7
Determinação de Circuito Euleriano

• Grafos – Determinação de Circuito Euleriano

Algoritmo Caminho de Euler


(Determina se existe um caminho de Euler em um grafo conexo e com
matriz de adjacência)

Ex: Matriz de Adjacências

1 2 3 4
1 0 1 1 0
2 1 0 1 1
3 1 1 0 1
4 0 1 1 0

Algoritmos em Grafos 8
Determinação de Circuito Euleriano

• Grafos – Determinação de Circuito Euleriano

Algoritmo Caminho de Euler


(Determina se existe um caminho de Euler em um grafo conexo e com
matriz de adjacência)

Saída na tela Quadro de variáveis / chinês

Total Grau i j n
0 0 1 0 4
Existe um caminho de Euler 0 2 1
1 2
2 3
2 4

Algoritmos em Grafos 9
Determinação de Circuito Euleriano

• Grafos – Determinação de Circuito Euleriano

Algoritmo Recursivo que destrói um Grafo:

CircuitoEuleriano;
Escolha(u);
PUSH (u);
Enquanto (topo ≠ 0):
u ← P[topo];
w ← ProxV(u);
Eliminar (u, w);
PUSH (w);
Enquanto (topo ≠ 0) e (d[P[topo]] = 0):
w ← POP;
Imprimir w;
Fim Enquanto;
Fim Enquanto;
Fim.

Algoritmos em Grafos 10
Determinação de Circuito Euleriano

• Grafos – Determinação de Circuito Euleriano

Algoritmo Recursivo que destrói um Grafo:

Ex:

Algoritmos em Grafos 11
Determinação de Circuito Euleriano

• Grafos – Determinação de Circuito Euleriano

Algoritmo Recursivo que destrói um Grafo:

Ex:

6
5
2
1

Algoritmos em Grafos 12
Determinação de Circuito Euleriano

• Grafos – Determinação de Circuito Euleriano

Algoritmo Recursivo que destrói um Grafo:

Ex:

4
5
3
6
5
2
1
1
Algoritmos em Grafos 13
Determinação de Circuito Euleriano

• Grafos – Determinação de Circuito Euleriano

Algoritmo Recursivo que destrói um Grafo:

Ex: 3
2
4
5
3
6
5
2
1
1
Algoritmos em Grafos 14
Determinação de Circuito Euleriano

• Grafos – Determinação de Circuito Euleriano

Algoritmo Recursivo que destrói um Grafo:

Ex: 3
2
4
5
3
6
5
2
1 3 2 4 5 3 6 5 2 1 1

Algoritmos em Grafos 15
Determinação de Circuito Euleriano

• Grafos – Determinação de Circuito Euleriano

Exercício: Aplicar o algoritmo CicloEuleriano ao grafo abaixo.

Algoritmos em Grafos 16
Determinação de Circuito Euleriano

• Grafos – Determinação de Circuito Euleriano

Exercício: Aplicar o algoritmo CicloEuleriano ao grafo abaixo.

2
4
3
Resposta

5
4
6
5
7
3
1 2 4 3 5 4 6 5 7 3 1 1

Algoritmos em Grafos 17
Determinação de Circuito Euleriano

• Grafos – Determinação de Circuito Euleriano

EXERCÍCIO PARA ENTREGAR POR E-MAIL


ATÉ O DIA 26/09/2011 às 00:00hs

Enviar por email em formato DOC ou PDF

Criar/desenhar um grafo EULERIANO com 12 vértices e 20 arestas


e mostrar a execução do algoritmo que escreve um Circuito
Euleriano.

Algoritmos em Grafos 18

Você também pode gostar