Escolar Documentos
Profissional Documentos
Cultura Documentos
Pesquisa Operacional
Sumrio
Introduo
Histrico
Aplicaes de grafos
Conceitos e Notao
Representaes de um grafo
Tipos de grafos
Problemas tpicos e Algoritmos
Caminho timo - Algoritmo de Djisktra
rvore tima - Algoritmo de Kruskal
Fluxo Mximo - Algoritmo de Ford - Fulkerson
2
Introduo
Histrico
Euler resolveu o problema das pontes de Knigsberg do rio Pregel, em
1736, utilizando um modelo de grafos: partir de uma das 4 regies,
atravessar cada ponte uma nica vez e retornar regio de partida.
Introduo
Introduo
Introduo
Aplicaes de modelos em grafos
1.
Introduo
2.
Problemas de Localizao
Notao
Representaes de um grafo G
1. G(V, A) onde:
V = Conjunto de vrtices ou ns do grafo
A = Conjunto de arcos ou arestas do grafo
Grafo
c No- orientado
4
c
b
d
1
b
2
f
e
3
Grafo Orientado
Notao
3. Matriz de adjacncia (grafo no-orientado)
1, se aresta do n i ao n j
A = (aij) =
0, se aresta do n i ao n j
2
a
1
b
1 0 1 1
A = 2 1 0 1
3 1 1 0
1 2 3
9
Notao
4. Matriz de incidncia (grafos orientados)
4
c
b
d
2
f
e
3
10
Grafo Valorado
Grafo com as distncias de So Paulo a 3 capitais:
400
700
Belo
So Paulo
Rio de
Janeiro
1500
Horizonte
Braslia
11
Grafos Especiais
Para o grafo G abaixo: rvore, cadeia, caminho, ciclo e circuito
d
a
j
c
f
h
b
g
12
rvore
1. rvore (arborescncia): grafo conexo sem ciclos
d
a
j
h
b
g
13
Cadeia
2. Cadeia: seqncia de arcos com extremidade em comum
d
l
a
j
h
14
Caminho
3. Caminho: seqncia de arcos com mesma orientao
c
f
15
Ciclo e Circuito
4. Ciclo: cadeia fechada
d
l
c
b
16
Problemas e Algoritmos
Otimizao em grafos
17
Algoritmo de Kruskal
Histrico
18
Algoritmo de Kruskal
Determinao de uma rvore mnima num grafo G (V, A)
Para cada aresta (i, j) existe um custo associado Cij.
|V| = cardinalidade do conjunto de ns V = nmero de ns.
B
2
9
J
10
11
F
2
8
H
I
20
21
22
D
1
23
24
D
1
1
B
25
D
1
1
B
2
3
26
D
1
1
4
B
2
3
E
4
27
D
1
1
4
B
2
3
E
4
28
4
2
3
4
Algoritmo de Dijsktra
Histrico
Em 1956 o cientista da computao
holands Edsger Wybe Dijkstra concluiu o
desenvolvimento do algoritmo para o
problema do caminho mnimo mas
somente em 1959 foi publicado seu
trabalho.
Este algoritmo foi o seu primeiro trabalho
e o mais conhecido.
Edsger Wybe Dijkstra nasceu em 11 de
maio de 1930 e morreu em 6 de agosto de
2002.
Cincia no estuda ferramentas,
mas o que fazemos e o que
descobrimos com elas. Edsger Dijkstra
Algoritmo de Dijsktra
Problema do Caminho timo
Determinao de caminhos mnimos em grafos valorados.
Princpio de Otimalidade de Bellman:
Um caminho mnimo constitudo de sub-caminhos mnimos
Algoritmo de Dijsktra
Aspectos Gerais
Adota a tcnica de rotulao dos ns, havendo dois tipos de
rtulos: rtulos temporrios e rtulos definitivos.
Algoritmo de Djisktra
1. Inicializao
2. Atualizao dos rtulos temporrios
3. Rotulao Definitiva de um n
4. Passo geral
1. Inicializao
Rotular definitivamente o n origem S com valor 0.
Algoritmo de Djisktra
2. Atualizao dos rtulos temporrios
Todo n j ainda no rotulado definitivamente deve receber
novo valor de rtulo dado por
Algoritmo de Djisktra
3. Rotulao definitiva
1
2
E
4
4
B
10
7
6
D
37
Algoritmo de Djisktra
Resoluo completa do exemplo de caminho mnimo
Aplicao do Algoritmo de Djisktra - Tabela completa
Rtulos
Explicao
S A B C E D T
Vetor com ns do grafo
0*
Passo 1 - Inicializao
0* 7 1
Passo 2 com i = S
0* 7 1*
Passo 3 - Rot. Def. N B
0* 4 1* 5 4
Passo 2 com i = B
0* 4 1* 5 4*
Passo 3 - Rot. Def. N D
0* 4 1* 14 5 4* 11
Passo 2 com i = D
0* 4* 1* 14 5 4* 11
Passo 3 - Rot. Def. N A
0* 4* 1* 12 5 4* 11
Passo 2 com i = A
0* 4* 1* 12 5* 4* 11
Passo 3 - Rot. Def. N E
0* 4* 1* 12 5* 4* 7
Passo 2 com i = E
0* 4* 1* 12 5* 4* 7*
Passo 3 - Rot. Def. N T (parar!)
38
Algoritmo de Djisktra
Distncia mnima entre os ns S e T = 7 = Rtulo definitivo do n T.
E
2
39
Exerccio
Achar a distncia mnima entre os ns S e T:
6
D
3
2
3
6
C
T
2
F
10
40
Em
1956
os
matemticos
americanos Lester Randolph Ford
(nascido em 23/09/1927) e Delbert
Ray
Fulkerson
(14/08/192410/01/1976) propuseram em um
trabalho conjunto o algoritmo para
resoluo do Problema de Fluxo
Mximo.
Ns
Arcos
Fluxo
Satlites,
Micro ondas,
computadores fibra tica
Mensagens,
dados
Sistemas
hidrulicos
Estao de
bombeamento,
reservatrio
Tubos
gua, gs,
petrleo
Sistemas de
transportes
Intersees,
aeroportos
Estradas,
rotas areas
Veculos,
passageiros
42
2
44
s. a:
F S1 + FS2 = F
F12 + F 1T = FS1 + F21
F21 + F2T = FS2 + F12
F1T + F2T = F
0 Fij Kij
(1)
(2)
(3)
(4)
(5)
Extenses:
Rede no-orientada
Mltiplas fontes e mltiplos destinos
46
Lema 1:
Se F o fluxo da fonte ao destino e (S,S) um corte o valor de
F menor ou igual a capacidade daquele corte (S,S).
49
Exemplo Completo
Determinar o fluxo mximo F da fonte S ao destino T, na rede a seguir.
Os nmeros ao lado dos arcos representam suas capacidades Cij.
1
7
F
8
2
Exemplo Completo
Etapa 2 (Figura 1) Para achar um CFC de S para T: Rotular
inicialmente S. Deste n S pode-se rotular o n 1 pois o arco (S,1) do
tipo Forward e 0 = FS1 CS1 = 7 a seguir, do n 1 pode-se rotular o n 2
pois o arco (1,2) do tipo Forward e 0 = F12 C12 = 3. Finalmente
rotula-se o n destino T pois o arco (2,T) do tipo Forward e 0 = F2T
C2T = 8. Isto resulta num valor de fluxo F = 0.
(0,7)
F=0
1*
(0,9)
(0,3)
S*
(0,9)
2*
T*
F=0
(0,8)
Figura 1
55
Exemplo Completo
Desta forma foi obtida uma CFA formada por arcos do tipo Forward,
(S,1), (1,2), (2,T).
Etapa 3
O fluxo mximo neste CFC dado por min {(7 - 0), (3 - 0), (8 - 0)} = 3.
Assim pode-se aumentar o fluxo entre S e T de = 3.
Os novos fluxos esto na Figura 2.
(3,7)
F=3
(0,9)
(3,3)
S
(0,9)
2
Figura 2
F=3
(3,8)
56
Exemplo Completo
Etapa 2 Repetindo o processo de rotulao de ns para a configurao da
Figura 2 obtm-se um novo CFC dado por:
v
T*
1*
S*
Etapa 3 O fluxo mximo permitido neste CFC = min {(7 -3), (9 -0)}= 4.
Isto aumenta o fluxo pela rede para F = 3 + 4 = 7.
A nova configurao de fluxos fica sendo a da Figura 3.
(7,7)
F=7
(4,9)
(3,3)
S
(0,9)
2
Figura 3
F=7
(3,8)
57
Exemplo Completo
Etapa 2 Na busca de um novo CFC, o n 1 no pode ser rotulado a partir do
n S pois o arco (S,1) Forward e agora FS1 = CS1 = 7. Mas um novo CFC
pode ser obtido rotulando-se o n 2 e depois o n T:
v
T*
2*
S*
Etapa 3 Neste CFC o fluxo pode ser aumentado de min {(9 -0), (8 -3)} = 5, o
que resulta na configurao dada pela Figura 4:
(7,7)
F = 12
(4,9)
(3,3)
S
(5,9)
F = 12
(8,8)
Figura 4
58
Exemplo Completo
Etapa 2: Partindo-se do n S pode-se rotular o n 2, a seguir rotula-se o n 1, pois o
arco (1,2) contm um fluxo positivo de 3 unidades e fica sendo Backward neste
novo CFC, finalmente a partir do n 1, pelo arco (1,T) rotula-se o n destino T:
1*
S*
v
T*
2*
Etapa 3 Neste CFC pode-se aumentar o fluxo na rede de min{(9 -5),3,(9 -4)} = 3,
pois o arco (1,2) Backward e pode ter o fluxo de 3 diminudo at zero. A nova
configurao de fluxos est na Figura 5:
(7,7)
F = 15
(7,9)
(0,3)
S
(8,9)
F = 15
(8,8)
Figura 5
59
Exemplo Completo
60
Exemplo Completo
(7,7)
F = 15
S*
1
(0,3)
F = 15
(8,8)
2*
Figura 6
30
40
50
20
15
25
30
50
2
30
4
62
30
40
15 15
50
20
20
25 25
30
2
50
30
20
CC
5
D
15
10
Capacidade
do arco
5
5
10
5
10
CH
10
15
10
5
A
C
20
20
Cs
CC
5
20
CE
15
CD
20
5
5
5
5
CF
10
f
CT fictcia
10
HC
10
G
C
f
fictcia