Escolar Documentos
Profissional Documentos
Cultura Documentos
Estruturas de Dados
Grafos III:
Busca em Largura
Prof. Ricardo J. G. B. Campello
Parte deste material baseado em adaptaes e extenses de slides
disponveis em http://ww3.datastructures.net (Goodrich & Tamassia).
Organizao
Definio e Motivao
Algoritmo BFS
Pseudo-cdigo
Busca de ciclos
11/12/2008 10:42 AM
Busca em Largura
Busca em Largura (BFS) uma
estratgia geral de percurso em
grafos
BFS em um grafo G:
logo, se G conexo ou no
Busca em Largura
Um algoritmo do tipo BFS usa
marcadores para direcionar o
percurso (caminhamento)
A forma mais geral marcar
ambos vrtices e arestas
Alternativamente, pode-se
marcar apenas os vrtices,
como no descobertos,
descobertos e explorados
vide pseudo-cdigo
Arestas de cruzamento so as
demais arestas
11/12/2008 10:42 AM
Exemplo de Execuo
vrtice no descoberto
vrtice descoberto
vrtice explorado
aresta inexplorada
aresta de descoberta
aresta de cruzamento
1
5
4
2
3
1
5
6
4
6
4
2
3
5
1
6
1
5
2
3
1
6
2
3
6
4
2
3
6
11/12/2008 10:42 AM
1
6
parent
5
6
4
3
7
Algoritmo BFS
Algoritmo BFS(G, v)
Q nova fila vazia
enqueue(Q, v)
v.label DESCOBERTO
enquanto ( no empty(Q) )
v dequeue(Q)
process_vertex(v)
v.label EXPLORADO
para todo e incidentEdges(G, v)
y opposite(G, v, e)
se y.label = NO-DESCOBERTO
enqueue(Q, y)
y.label DESCOBERTO
y.parent v
se ( no y.label = EXPLORADO )
process_edge(e)
11/12/2008 10:42 AM
Propriedades
Notao:
Propriedade 1:
Propriedade 2:
As arestas de descoberta formam uma
rvore geradora de Gv.
Propriedade 3:
Qualquer vrtice s v a um no. mnimo
de i arestas de v ser descoberto por
um vrtice a um no. mnimo de i 1
arestas de v.
3
9
Caminhos
Mnimos
1
5
3
parent
0 0 1 6 5 1 1
11/12/2008 10:42 AM
Ciclos
Como as arestas de descoberta
formam uma rvore geradora,
qualquer aresta de cruzamento
fecha um ciclo.
2
5
1
2
Exemplo:
aresta (4,6)
4
6
3
7
11
Anlise
A rotulao de um vrtice leva tempo O(1).
11/12/2008 10:42 AM
Exerccios
1.
13
Exerccios
2.
d
h
g
5
3.
14
11/12/2008 10:42 AM
Exerccios
4. Considere que a matriz abaixo represente as conexes areas bilaterais existentes (x) ou
no (em branco) entre um dado conjunto de 16 cidades. Aplique BFS para descobrir as
rotas com o menor nmero de conexes ligando a cidade 1 s demais cidades e
apresente as 15 rotas. Dica: Visualize o grafo como um grid 4 x 4, sendo a cidade 1 na
posio (1,1), a cidade 2 na posio (1,2), etc, at a cidade 16 na posio (4,4).
x
1
2
x
x
x
x
x
x
x
x
...
x
x
x
x
x
x
x
x
x
x
x
x
16
x
x
15
Bibliografia
M. T. Goodrich and R. Tamassia, Data Structures and
Algorithms in C++/Java, John Wiley & Sons, 2002/2005.
N. Ziviani, Projeto de Algoritmos, Thomson, 2a. Edio, 2004.
T. H. Cormen, C. E. Leiserson, and R. L. Rivest, Introduction
to Algorithms, MIT Press, 2nd Edition, 2001.
S. Skiena e M. Revilla, Programming Challenges: The
Programming Contest Training Manual, Springer-Verlag, 2003.
16