Académique Documents
Professionnel Documents
Culture Documents
Aula passada
Algoritmo de busca em largura.
b
5
n
m
10
m
Grafo de entrada
Roteiro da aula
Grafos
- Definies: rvore e florestas.
Algoritmos de buscas em grafos
- Busca em profundidade
Atividade prtica
I. Definies
Definies
Uma rvore um grafo conexo e acclico (sem ciclos).
As rvores so muito teis para organizar informao.
rvore no-direcionada
rvore direcionada
5
Definies
O seguinte grafo uma rvore?
7
5
Definies
O seguinte grafo uma rvore?
0: 5,1
1: 0,2,3,4
2: 1
3: 1
4: 1
5: 0
6: 7,8
7: 6
8: 6
Definies
O seguinte grafo uma rvore?
0: 5,1
1: 0,2,3,4
2: 1
3: 1
4: 1
5: 0
6: 7,8
7: 6
8: 6
3
4
Definies
Toda rvore com V vrtices tem exatamente V-1 arestas.
2
3
4
V=9
V=6
V=3
9
Definies
Toda floresta com V vrtices e C componentes conexas tem
exatamente V-C arestas.
11
12
13
14
15
3
4
Definies
Folhas: vrtices de grau 1 na floresta
Tambm chamadas de ns terminais
11
12
13
14
15
3
4
11
Samuel Konig
Grafo direccionado
Vrtices: 81.768
Arestas: 88.921
12
13
Busca em profundidade
A estrategia seguida pela busca em profundidade , como seu nome
implica, procurar cada vez mais fundo no grafo.
Nessa busca as arestas so
exploradas a partir do vrtice
mais recentemente descoberto
que ainda possui arestas
inexploradas saindo dele.
Baseado em Pilha.
14
Busca em profundidade
Fila
Pilha
Busca em profundidade
Busca em grafos
17
Busca em grafos
Busca em largura
(Breadth First Search - BFS)
Busca em profundidade
(Depth First Search - DFS)
18
Busca em profundidade
O algoritmo de busca em profundidade tambm atribui cores a
cada vrtice
19
Busca em profundidade
Grafo inicial
7
20
Pilha={4}
7
4
0
Indica tempo de visita
21
Pilha={4,1}
7
4
0
22
Pilha={4,1,2}
7
4
0
23
Pilha={4,1,2,7}
4
0
24
Pilha={4,1,2}
3/4
4
0
25
Pilha={4,1,2,5}
3/4
7
5
2
4
0
26
Pilha={4,1,2,5,3}
3/4
7
5
2
4
0
27
Pilha={4,1,2,5,3,6}
3/4
7
5
2
4
0
28
Pilha={4,1,2,5,3}
3/4
7
5
2
7/8
4
0
29
Pilha={4,1,2,5}
3/4
7
5
2
6/9
6
7/8
4
0
30
Pilha={4,1,2}
3/4
7
5/10
2
6/9
6
7/8
4
0
31
Pilha={4,1}
3/4
7
5/10
2/11
6/9
6
7/8
4
0
32
Pilha={4}
3/4
7
5/10
2/11
6/9
1/12
6
7/8
4
0
33
Pilha={}
3/4
7
5/10
2/11
6/9
1/12
6
7/8
4
0/13
Indica tempo de visita
34
36
Inicializao
Percorre o grafo
Enquanto P
VAZIO faa
u = Topo(P)
Se u tem pelo menos um vrtice adjacente BRANCO
v = escolhe um dos vrtices adjacentes com v.cor=BRANCO
v.cor = CINZA
tempo = tempo+1
v.t1 = tempo
Insere(P,v)
Caso-contrrio
u.cor = PRETO
tempo = tempo+1
v.t2 = tempo
Remove(P)
37
Inicializao
P={4}
7
5
4
0
38
Pilha={4}
Pilha={4,1}
5
2
6
Inicializao
Iterao 1
39
7
5
2
2
Iterao 2
Pilha={4,1,2}
3
4
0
40
7
5
2
2
Iterao 3
Pilha={4,1,2,7}
3
4
0
41
7
5
2
2
Iterao 4
Pilha={4,1,2}
3
4
0
42
Busca em profundidade
43
Recursividade
44
Recursividade
Recursividade
46
Recursividade
def contagem_regressiva(n):
if n==0:
print "Fogo!"
else:
print n
contagem_regressiva(n-1)
47
Recursividade
Porque no usar Iterao ao invs de Recursividade
Depende muito do estilo de programao. Entretanto,
algumas vezes mais apropriado usar Recursividade para
resolver um problema.
Normalmente mais fcil de programar e entender um
programa recursivo
def contagem_regressiva(n):
if n==0:
print "Fogo!"
else:
print n
contagem_regressiva(n-1)
def contagem_regressiva2(n):
while n>0:
print n
n = n-1
print "Fogo!"
48
Recursividade
def fact(n):
if n==1:
return 1
else:
return n*fact(n-1)
49
VisitaDFS(G,s):
s.t1 = tempo
s.cor = CINZA
tempo = tempo+1
Para cada v em G.Adj[s] faa
Se v.cor == BRANCO
VisitaDFS(G,v)
s.cor = PRETO
s.t2 = tempo
tempo = tempo+1
Inicializao
Percorre o grafo
50
Percorre o grafo
7
5
s=4
tempo=0
4
0
51
Percorre o grafo
7
5
s=4
tempo=0
4
0
52
Percorre o grafo
7
5
s=4
tempo=1
4
0
53
Percorre o grafo
v=1
s=4
tempo=2
4
0
54
Percorre o grafo
v=1
s=4
tempo=3
4
0
55
Percorre o grafo
7
5
2
2
s=7
tempo=4
4
Aps alguns chamados
recursivos...
0
56
Percorre o grafo
7
5
2
2
s=7
tempo=4
4
Aps alguns chamados
recursivos...
0
57
Percorre o grafo
7
5
2
2
s=7
tempo=4
4
Aps alguns chamados
recursivos...
0
58
Percorre o grafo
3/4
7
5
2
2
s=7
tempo=5
4
Aps alguns chamados
recursivos...
0
59
Percorre o grafo
3/4
7
5
2
2
s=7
tempo=5
4
Aps alguns chamados
recursivos...
0
60
Percorre o grafo
3/4
7
5
2
2
s=5
tempo=5
4
Aps alguns chamados
recursivos...
0
61
Percorre o grafo
3/4
7
5
2
2
s=5
tempo=5
4
Aps alguns chamados
recursivos...
0
62
Percorre o grafo
3/4
7
5
2
2
s=5
tempo=5
4
Aps alguns chamados
recursivos...
0
63
Percorre o grafo
3/4
7
2
s=5
tempo=6
4
Aps alguns chamados
recursivos...
0
64
65
66
67
68
69
70
71
72
73
74
75
76
DFS(G,s):
Para cada vrtice v em G.V-{s} faa
v.cor = BRANCO
v.t1 = INFINITO
v.t2 = INFINITO
tempo = 0
VisitaDFS(G,s)
Inicializao
DFS(G):
Para cada vrtice v em G.V faa
v.cor = BRANCO
v.t1 = INFINITO
v.t2 = INFINITO
tempo = 0
Para cada vrtice u em G.V faa
se u.cor==BRANCO
VisitaDFS(G,u)
Inicializao
77
78
79
80
81
82
83
Ordenao 'topologica'
84
Ordenao 'topologica'
85
Ordenao 'topologica'
A ordenao topologica (de um grafo direcionado) uma ordem
linear de seus vrtices em que:
Cada aresta direcionada uv (do vrtice u ao vrtice v), o vrtice u
vem antes do vrtice v na ordenao.
Podem existir uma ou mais ordenaes topolgicas.
v
86
Ordenao 'topologica'
BCC
BMat
PI
NI
CR
BExp
Optat
TQui
Obrig
87
Ordenao 'topologica'
BCC
BMat
PI
NI
CR
BExp
Optat
TQui
Obrig
88
Ordenao 'topologica'
BCC
BMat
PI
NI
CR
BExp
Optat
TQui
Obrig
89
Ordenao 'topologica'
BCC
BMat
PI
NI
2/3
CR
BExp
Optat
TQui
Obrig
90
Ordenao 'topologica'
BCC
BMat
1/4
PI
NI
2/3
CR
BExp
Optat
TQui
Obrig
91
Ordenao 'topologica'
5
BCC
BMat
1/4
PI
NI
2/3
CR
BExp
Optat
TQui
Obrig
92
Ordenao 'topologica'
5
BCC
BMat
1/4
PI
NI
2/3
CR
BExp
Optat
TQui
Obrig
93
Ordenao 'topologica'
5
BCC
BMat
1/4
2/3
PI
NI
CR
BExp
Optat
TQui
Obrig
94
Ordenao 'topologica'
5
BCC
BMat
1/4
2/3
PI
NI
CR
BExp
Optat
TQui
Obrig
95
Ordenao 'topologica'
5
BCC
BMat
1/4
2/3
PI
NI
CR
BExp
Optat
TQui
Obrig
8/9
96
Ordenao 'topologica'
5
BCC
BMat
1/4
2/3
PI
NI
7/10
CR
BExp
Optat
TQui
Obrig
8/9
97
Ordenao 'topologica'
5
BCC
BMat
1/4
2/3
6/11
PI
NI
7/10
CR
BExp
Optat
TQui
Obrig
8/9
98
Ordenao 'topologica'
5/12
BCC
BMat
1/4
2/3
6/11
PI
NI
7/10
CR
BExp
Optat
TQui
Obrig
8/9
99
Ordenao 'topologica'
5/12
BCC
BMat
1/4
2/3
6/11
PI
NI
7/10
CR
BExp
Optat
13
TQui
Obrig
8/9
100
Ordenao 'topologica'
5/12
BCC
BMat
1/4
2/3
6/11
PI
NI
7/10
CR
BExp
Optat
13/14
TQui
Obrig
8/9
101
Ordenao 'topologica'
5/12
BCC
BMat
1/4
6/11
PI
NI
2/3
7/10
CR
BExp
15
Optat
13/14
TQui
Obrig
8/9
102
Ordenao 'topologica'
5/12
BCC
BMat
1/4
6/11
PI
NI
2/3
7/10
CR
BExp
15
TQui
16
Obrig
8/9
Optat
13/14
103
Ordenao 'topologica'
5/12
BCC
BMat
1/4
6/11
PI
NI
2/3
7/10
CR
BExp
15
TQui
16/17
Obrig
8/9
Optat
13/14
104
Ordenao 'topologica'
5/12
BCC
BMat
1/4
6/11
PI
NI
2/3
7/10
CR
BExp
15/18
TQui
16/17
Obrig
8/9
Optat
13/14
BExp
TQui
Optat
BCC
PI
CR
Obrig
BMat
15/18
16/17
13/14
5/12
6/11
7/10
8/9
1/4
NI
2/3105
106
Atividade Prtica
Para os grafos G e H abaixo, execute a busca em profundidade a
partir do vrtice 1:
(a) Dando preferncia para vrtices de menor ndice.
(b) Dando preferncia para vrtices de maior ndice.
Para cada exerccio indique a sequncia de vrtices visitados.
H
107