Busca
em
Largura
Centro
de
Inform-ca
Universidade
Federal
de
Pernambuco
Sistemas
de
Informao
Vinicius
Cardoso
Garcia
vcg@cin.ufpe.br
Introduo
Existem
duas
maneiras
bsicas
de
percorrer
um
grafo:
Busca
em
profundidade
Busca
em
largura
Algoritmos e Estrutura de Dados Grafos: Busca em Largura 2011 Vinicius Cardoso Garcia
Busca
em
Largura
A
busca
em
largura
assim
chamada
porque
expande
a
fronteira
entre
vr-ces
descobertos
e
no
descobertos
uniformemente
Como
se
fossem
crculos
concntricos
Busca
em
Largura
Dado
um
vr-ce
de
origem,
uma
busca
em
largura
descobre
todos
os
vr-ces
a
uma
distncia
x
do
vr-ce
de
origem,
antes
de
descobrir
qualquer
vr-ce
a
x+1
Vr-ces
no
visitados
como
BRANCOS
Vr-ces
visitados
so
coloridos
como
CINZAS
Vr-ces
cujos
adjacentes
j
foram
visitados
so
coloridos
como
PRETOS
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
Algoritmo
Marca
todos
os
ns
como
BRANCOS
Percorre
todos
os
ns
BRANCOS
em
largura
Mais
detalhes
deste
passo
a
seguir
Algoritmos e Estrutura de Dados Grafos: Busca em Largura 2011 Vinicius Cardoso Garcia
Algoritmo
buscaEmLargura(g,
v)
Marca
o
vr-ce
de
origem
v
como
CINZA
Cria
uma
la
e
insere
v
Enquanto
a
la
no
es-ver
vazia
u
=
dequeue(la)
Obtm
os
adjacentes
de
u
Para
cada
adjacente[i]
de
u
Se
adjacente[i].cor
==
BRANCO
Marca
adjacente[i]
como
CINZA
Enqueue(la,
adjacente[i])
Exemplo
4
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
10
Inserir
o
vrFce
0
na
la
0
4
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
11
Algoritmos e Estrutura de Dados Grafos: Busca em Largura 2011 Vinicius Cardoso Garcia
12
u
=
dequeue(la)
4
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
13
Obtm
os
adjacentes
de
u
4
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
14
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
15
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
16
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
17
u
=
dequeue(la)
2
3
4
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
18
Obtm
os
adjacentes
de
u
2
3
4
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
19
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
20
Inserir
os
adjacentes
na
la
2
3
4
5
4
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
21
Pintar
u
de
PRETO
2
3
4
5
4
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
22
u
=
dequeue(la)
3
4
5
4
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
23
Obtm
os
adjacentes
de
u
3
4
5
4
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
24
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
25
Inserir
os
adjacentes
na
la
3
4
5
6
7
4
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
26
Pintar
u
de
PRETO
3
4
5
6
7
4
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
27
u
=
dequeue(la)
4
5
6
7
4
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
28
Obtm
os
adjacentes
de
u
4
5
6
7
4
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
29
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
30
Inserir
os
adjacentes
na
la
4
5
6
7
9
4
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
31
Pintar
u
de
PRETO
4
5
6
7
9
4
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
32
u
=
dequeue(la)
5
6
7
9
4
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
33
Obtm
os
adjacentes
de
u
5
6
7
9
4
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
34
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
35
Inserir
os
adjacentes
na
la
5
6
7
9
8
4
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
36
Pintar
u
de
PRETO
5
6
7
9
8
4
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
37
u
=
dequeue(la)
6
7
9
8
4
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
38
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
39
Pintar
u
de
PRETO
6
7
9
8
4
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
40
u
=
dequeue(la)
7
9
8
4
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
41
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
42
Pintar
u
de
PRETO
7
9
8
4
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
43
u
=
dequeue(la)
9
8
4
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
44
Obtm
os
adjacentes
de
u
9
8
4
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
45
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
46
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
47
Pintar
u
de
PRETO
9
8
10
4
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
48
u
=
dequeue(la)
8
10
4
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
49
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
50
u
=
dequeue(la)
10
4
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
51
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
52
u = dequeue(la)
8 1 3 0 6 9 2 7
10
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
53
8 1 3 0 6 9 2 7
10
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
54
Percursos
Pr
e
Ps
Ordem
A
busca
em
largura
pode
ser
usada
para
a
realizao
de
operaes
nos
vr-ces
de
um
grafo
Para
isto,
podem
ser
considerados
dois
-pos
de
percurso:
Percurso
pr-ordem
Percurso
ps-ordem
Algoritmos e Estrutura de Dados Grafos: Busca em Largura 2011 Vinicius Cardoso Garcia
55
Percurso
Pr-Ordem
No
percurso
pr-ordem
as
operaes
acontecem
no
momento
em
que
o
vr-ce
marcado
como
CINZA
No
percurso
ps-ordem,
as
operaes
acontecem
no
momento
em
que
o
vr-ce
marcado
como
PRETO
Algoritmos e Estrutura de Dados Grafos: Busca em Largura 2011 Vinicius Cardoso Garcia
56
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
57
Pr-Ordem: 0 Ps-Ordem:
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
58
Pr-Ordem: 0, 1 Ps-Ordem:
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
59
Pr-Ordem: 0, 1, 2 Ps-Ordem:
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
60
Pr-Ordem: 0, 1, 2, 3 Ps-Ordem:
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
61
Pr-Ordem: 0, 1, 2, 3 Ps-Ordem: 0
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
62
Pr-Ordem: 0, 1, 2, 3, 4 Ps-Ordem: 0
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
63
Pr-Ordem: 0, 1, 2, 3, 4, 5 Ps-Ordem: 0
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
64
Pr-Ordem: 0, 1, 2, 3, 4, 5 Ps-Ordem: 0, 1
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
65
Pr-Ordem: 0, 1, 2, 3, 4, 5, 6 Ps-Ordem: 0, 1
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
66
Pr-Ordem: 0, 1, 2, 3, 4, 5, 6, 7 Ps-Ordem: 0, 1
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
67
Pr-Ordem: 0, 1, 2, 3, 4, 5, 6, 7 Ps-Ordem: 0, 1, 2
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
68
Pr-Ordem: 0, 1, 2, 3, 4, 5, 6, 7, 9 Ps-Ordem: 0, 1, 2
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
69
Pr-Ordem: 0, 1, 2, 3, 4, 5, 6, 7, 9 Ps-Ordem: 0, 1, 2, 3
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
70
Pr-Ordem: 0, 1, 2, 3, 4, 5, 6, 7, 9, 8 Ps-Ordem: 0, 1, 2, 3
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
71
Pr-Ordem: 0, 1, 2, 3, 4, 5, 6, 7, 9, 8 Ps-Ordem: 0, 1, 2, 3, 4
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
72
Pr-Ordem: 0, 1, 2, 3, 4, 5, 6, 7, 9, 8 Ps-Ordem: 0, 1, 2, 3, 4, 5
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
73
Pr-Ordem: 0, 1, 2, 3, 4, 5, 6, 7, 9, 8 Ps-Ordem: 0, 1, 2, 3, 4, 5, 6
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
74
Pr-Ordem: 0, 1, 2, 3, 4, 5, 6, 7, 9, 8, 10 Ps-Ordem: 0, 1, 2, 3, 4, 5, 6
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
75
Pr-Ordem: 0, 1, 2, 3, 4, 5, 6, 7, 9, 8, 10 Ps-Ordem: 0, 1, 2, 3, 4, 5, 6, 7
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
76
Pr-Ordem: 0, 1, 2, 3, 4, 5, 6, 7, 9, 8, 10 Ps-Ordem: 0, 1, 2, 3, 4, 5, 6, 7, 9
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
77
Pr-Ordem: 0, 1, 2, 3, 4, 5, 6, 7, 9, 8, 10 Ps-Ordem: 0, 1, 2, 3, 4, 5, 6, 7, 9, 8
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
78
Pr-Ordem: 0, 1, 2, 3, 4, 5, 6, 7, 9, 8, 10 Ps-Ordem: 0, 1, 2, 3, 4, 5, 6, 7, 9, 8, 10
8 1 3 0 6 9 2 7
10
Algoritmos
e
Estrutura
de
Dados
Grafos:
Busca
em
Largura
2011
Vinicius
Cardoso
Garcia
79
AFvidades
Complementares
Leitura
do
captulo
22
do
livro
Cormen
Implementar
a
busca
em
largura
para
grafos,
incluindo
a
impresso
d
grafo
em
pr
e
ps
ordem
Algoritmos e Estrutura de Dados Grafos: Busca em Largura 2011 Vinicius Cardoso Garcia
80