Post on 18-Jul-2015
5/14/2018 Busca Em Largura - slidepdf.com
http://slidepdf.com/reader/full/busca-em-largura 1/65
Grafos e Algoritmos de Busca 1 / 6 5
Grafos e Algoritmos de Busca
Eduardo Camponogara
Departamento de Automacao e SistemasUniversidade Federal de Santa Catarina
DAS-9003: Introducao a Algoritmos
5/14/2018 Busca Em Largura - slidepdf.com
http://slidepdf.com/reader/full/busca-em-largura 2/65
Grafos e Algoritmos de Busca 2 / 6 5
Sumario
Introducao
Representacao de Grafos
Busca em Largura
Busca em Profundidade
Ordenacao Topologica
Componentes Fortemente Conexos
5/14/2018 Busca Em Largura - slidepdf.com
http://slidepdf.com/reader/full/busca-em-largura 3/65
Grafos e Algoritmos de Busca 3 / 6 5
Introducao
Sumario
Introducao
Representacao de Grafos
Busca em Largura
Busca em Profundidade
Ordenacao Topologica
Componentes Fortemente Conexos
5/14/2018 Busca Em Largura - slidepdf.com
http://slidepdf.com/reader/full/busca-em-largura 4/65
Grafos e Algoritmos de Busca 4 / 6 5
Introducao
Introducao
Grafos◮ Aqui apresentaremos metodos para representar grafos e
realizar buscas
◮ Busca em grafos significa seguir sistematicamente as arestas evisitar os vertices
5/14/2018 Busca Em Largura - slidepdf.com
http://slidepdf.com/reader/full/busca-em-largura 5/65
Grafos e Algoritmos de Busca 5 / 6 5
Introducao
Introducao
GrafosEstudaremos tres representacoes de grafos:
◮
listas de adjacencia◮ matrizes de adjacencia
◮ matrizes de incidencia
Estudaremos tambem:
◮ metodos de busca em largura◮ metodos de busca em profundidade
◮ ordenacao topologica
5/14/2018 Busca Em Largura - slidepdf.com
http://slidepdf.com/reader/full/busca-em-largura 6/65
Grafos e Algoritmos de Busca 6 / 6 5
Representacao de Grafos
Sumario
Introducao
Representacao de Grafos
Busca em Largura
Busca em Profundidade
Ordenacao Topologica
Componentes Fortemente Conexos
5/14/2018 Busca Em Largura - slidepdf.com
http://slidepdf.com/reader/full/busca-em-largura 7/65
Grafos e Algoritmos de Busca 7 / 6 5
Representacao de Grafos
Representacao de Grafos
Lista de Adjacencia
◮ Dado um grafo G = (V , E ), esta representacao e tipicamente
preferida pois e uma maneira compacta de representar grafosesparsos – aqueles onde |E | ≪ |V |2
◮ A representacao por listas de adjacencia consiste em um vetorAdj com |V | listas de adjacencia, uma para cada verticev ∈ V .
◮ Para cada u ∈ V , Adj [u ] contem ponteiros para todos osvertices v tal que (u , v ) ∈ E . Ou seja, Adj [u ] consiste detodos os vertices que sao adjacentes a u
5/14/2018 Busca Em Largura - slidepdf.com
http://slidepdf.com/reader/full/busca-em-largura 8/65
Grafos e Algoritmos de Busca 8 / 6 5
Representacao de Grafos
Representacao de Grafos
Lista de Adjacencia
1
1
2
2
22
3
3
4
4
4
4
5
5
556
6
66
Adj
\\
\
\
\
\
5/14/2018 Busca Em Largura - slidepdf.com
http://slidepdf.com/reader/full/busca-em-largura 9/65
Grafos e Algoritmos de Busca 9 / 6 5
Representacao de Grafos
Representacao de Grafos
Matriz de Adjacencia
◮ A representacao por matriz de adjacencia e preferida,entretanto, quando o grafo e denso, ou seja, quando|E | ≈ |V |2.
◮ Para um grafo G = (V ,E ), assumimos que os vertices saorotulados com numeros 1, 2, . . . , |V |.
◮ A representacao consiste de uma matriz A = (aij ) de
dimensoes |V | × |V |, onde
aij =
1 se (i , j ) ∈ E
0 caso contrario
/
5/14/2018 Busca Em Largura - slidepdf.com
http://slidepdf.com/reader/full/busca-em-largura 10/65
Grafos e Algoritmos de Busca 10/65
Representacao de Grafos
Representacao de Grafos
Matriz de Adjacencia
0
00
00
0
00
0
0
0
0
0
0
0
0000
0
0
0
0
0
0
0
0
0 1
1
11
1
1
1
1
1
11
2
22
3
3
3
4
4
4
5
55
6
66
G f Al i d B 11/65
5/14/2018 Busca Em Largura - slidepdf.com
http://slidepdf.com/reader/full/busca-em-largura 11/65
Grafos e Algoritmos de Busca 11/65
Representacao de Grafos
Representacao de Grafos
Matriz de incidencia
◮ O grafo direcionado G = (V , E ) e representado por umamatriz A ∈ Rn×m, onde |V | = n e |E | = m.
◮ Cada linha de A corresponde a um vertice.◮ Cada coluna de A corresponde a uma aresta.
(1, 2) (1, 4) (2, 5) (3, 5) (3, 6) (4, 2) (5, 4) (6, 6)1 1 0 0 0 0 0 0
−1 0 1 0 0 −1 0 00 0 0 1 1 0 0 00 −1 0 0 0 1 −1 00 0 −1 −1 0 0 1 00 0 0 0 −1 0 0 0
G f Al it d B 12/65
5/14/2018 Busca Em Largura - slidepdf.com
http://slidepdf.com/reader/full/busca-em-largura 12/65
Grafos e Algoritmos de Busca 12/65
Representacao de Grafos
Representacao de Grafos
Matriz de incidencia
◮ A matriz de incidencia e utilizada com frequencia emproblemas de otimizacao
◮ Problema de fluxo em redes
Minimize c T x
Sujeito a :
Ax = b l ≤ x ≤ u
x = [x ij : (i , j ) ∈ E ]
Grafos e Algoritmos de Busca 13/65
5/14/2018 Busca Em Largura - slidepdf.com
http://slidepdf.com/reader/full/busca-em-largura 13/65
Grafos e Algoritmos de Busca 13/65
Busca em Largura
Sumario
Introducao
Representacao de Grafos
Busca em Largura
Busca em Profundidade
Ordenacao Topologica
Componentes Fortemente Conexos
Grafos e Algoritmos de Busca 14/65
5/14/2018 Busca Em Largura - slidepdf.com
http://slidepdf.com/reader/full/busca-em-largura 14/65
Grafos e Algoritmos de Busca 14/65
Busca em Largura
Algoritmos de Busca
Busca em Largura
◮ A busca em largura e um dos algoritmos mais simples paraexploracao de um grafo.
◮ Dados um grafo G = (V , E ) e um vertice s , chamado defonte, a busca em largura sistematicamente explora as arestas
de G de maneira a visitar todos os vertices alcancaveis a partirde s .
Grafos e Algoritmos de Busca 15/65
5/14/2018 Busca Em Largura - slidepdf.com
http://slidepdf.com/reader/full/busca-em-largura 15/65
Grafos e Algoritmos de Busca 15/65
Busca em Largura
Algoritmos de Busca
Busca em Largura
◮ Esta busca e dita em largura porque ela expande a fronteiraentre vertices conhecidos e desconhecidos de uma formauniforme ao longo da fronteira.
◮ Ou seja, o algoritmo descobre todos os vertices com distancia
k de s antes de descobrir qualquer vertice de distancia k + 1.
Grafos e Algoritmos de Busca 16/65
5/14/2018 Busca Em Largura - slidepdf.com
http://slidepdf.com/reader/full/busca-em-largura 16/65
Grafos e Algoritmos de Busca 16/65
Busca em Largura
Algoritmos de Busca
Busca em Largura
s
k = 1
k = 2
Grafos e Algoritmos de Busca 17/65
5/14/2018 Busca Em Largura - slidepdf.com
http://slidepdf.com/reader/full/busca-em-largura 17/65
g /
Busca em Largura
Busca em Largura
Cores
◮ Para controlar a busca, a BL (Busca em Largura) pinta cadavertice na cor branca, cinza ou preta.
◮ Todos os vertices iniciam com a cor branca e podem, maistarde, se tornar cinza e depois preta.
◮ Branca: nao visitado◮ Cinza: visitado◮ Preta: visitado e seus nos adjacentes visitados
Grafos e Algoritmos de Busca 18/65
5/14/2018 Busca Em Largura - slidepdf.com
http://slidepdf.com/reader/full/busca-em-largura 18/65
/
Busca em Largura
Busca em Largura
Algoritmo
BFS(G , s )
for each u ∈ V [G ] − {s }Color [u ] ← white
d [u ] ← ∞π[u ] ← NIL
endforcolor [s ] ← gray
d [s ] ← 0Q ← {s } * Queue *
......
Grafos e Algoritmos de Busca 19/65
5/14/2018 Busca Em Largura - slidepdf.com
http://slidepdf.com/reader/full/busca-em-largura 19/65
Busca em Largura
Busca em Largura
Algoritmo
while Q = ∅u ← head [Q ]
for each v ∈ Adj [u ]if color [v ] = white
color [v ] ← gray
d [v ] ← d [u ] + 1π[v ] ← u
Enqueue(Q ,v )
endif endforDequeue(Q )color [u ] ← black
endwhile
Grafos e Algoritmos de Busca 20/65
5/14/2018 Busca Em Largura - slidepdf.com
http://slidepdf.com/reader/full/busca-em-largura 20/65
Busca em Largura
Busca em Largura
Algoritmo
◮ Quando um vertice e visitado pela primeira vez, sua cor emodificada de branco para cinza.
◮ Quando todos os vertices adjacentes a um vertice cinza saovisitados, ele se torna preto.
Grafos e Algoritmos de Busca 21/65
5/14/2018 Busca Em Largura - slidepdf.com
http://slidepdf.com/reader/full/busca-em-largura 21/65
Busca em Largura
Exemplo
Busca em Largura
Exemplo
◮ Inıcio
01
1
1
2
2
3
3
4
4
5
5 6
6
d
π
c
Q
g w w w w w
∞∞∞∞∞
\\\\\\
Grafos e Algoritmos de Busca 22/65
5/14/2018 Busca Em Largura - slidepdf.com
http://slidepdf.com/reader/full/busca-em-largura 22/65
Busca em Largura
Exemplo
Busca em Largura
Exemplo
◮ Explorando vertice 1
0
11
111
1
2
2
2
3
3
4
4
4
5
5 6
6
d
π
c
Q
g g w w w b
∞∞∞
\\\\
Grafos e Algoritmos de Busca 23/65
5/14/2018 Busca Em Largura - slidepdf.com
http://slidepdf.com/reader/full/busca-em-largura 23/65
Busca em Largura
Exemplo
Busca em Largura
Exemplo
◮ Explorando vertice 2
0
0
11
111
1
2
22
2
3
3
3
4
4
4
5
5 6
6
d
π
c
Q
g g w w b b
∞∞
\\
Grafos e Algoritmos de Busca 24/65
5/14/2018 Busca Em Largura - slidepdf.com
http://slidepdf.com/reader/full/busca-em-largura 24/65
Busca em Largura
Exemplo
Busca em Largura
Exemplo
◮ Explorando vertice 3
0
0
11
111
1
22
2
22
2
3
3
3
44
4
4
5
5
5
6
6
6
d
π
c
Q
g g g b b b
Grafos e Algoritmos de Busca 25/65
B L
5/14/2018 Busca Em Largura - slidepdf.com
http://slidepdf.com/reader/full/busca-em-largura 25/65
Busca em Largura
Exemplo
Busca em Largura
Exemplo
◮ Arvore da busca em largura
12
3 4
5
6
Grafos e Algoritmos de Busca 26/65
B L
5/14/2018 Busca Em Largura - slidepdf.com
http://slidepdf.com/reader/full/busca-em-largura 26/65
Busca em Largura
Analise
Busca em Largura
Analise
◮ Cada vertice de V e colocado na fila Q no maximo uma vez.◮ A lista de adjacencia de um vertice qualquer de u e percorrida
somente quando o vertice e removido da fila
◮ Daı concluımos que o algoritmo roda em tempo O (|V | + |E |)
pois as operacoes executadas levam Θ(1).
Grafos e Algoritmos de Busca 27/65
Busca em Largura
5/14/2018 Busca Em Largura - slidepdf.com
http://slidepdf.com/reader/full/busca-em-largura 27/65
Busca em Largura
Caminho mais curto
Busca em Largura
Caminho mais curtoSeja δ(s , v ) a distancia do vertice v a partir do vertice s , sendo adistancia o menor numero de arestas em qualquer caminho em G
com origem em s e destino para v .
Grafos e Algoritmos de Busca 28/65
Busca em Largura
5/14/2018 Busca Em Largura - slidepdf.com
http://slidepdf.com/reader/full/busca-em-largura 28/65
Busca em Largura
Caminho mais curto
Busca em Largura
TeoremaSeja G = (V ,E ) um grafo direcionado ou nao, e suponha que BFSe executada a partir de um vertice s ∈ V . Entao:
◮ Durante a busca, BFS descobre cada vertice v ∈ V que seja
alcancavel a partir de s
◮ Ao final, d [v ] = δ(s , v ) para todo v ∈ V .
◮ Alem disso, para qualquer vertice v = s que seja alcancavel apartir de s , um caminho mais curto de s para v e o caminho
de s para π[v ] seguido da aresta (π[v ], v ).
s π[v ] v
Grafos e Algoritmos de Busca 29/65
Busca em Profundidade
5/14/2018 Busca Em Largura - slidepdf.com
http://slidepdf.com/reader/full/busca-em-largura 29/65
Busca em Profundidade
Sumario
Introducao
Representacao de Grafos
Busca em Largura
Busca em Profundidade
Ordenacao Topologica
Componentes Fortemente Conexos
Grafos e Algoritmos de Busca 30/65
Busca em Profundidade
5/14/2018 Busca Em Largura - slidepdf.com
http://slidepdf.com/reader/full/busca-em-largura 30/65
usca e o u d dade
Busca em Profundidade
Algoritmos de Busca
Busca em Profundidade
◮ A estrategia aqui e explorar o grafo em profundidade.
◮ Na busca em profundidade, as arestas sao exploradas a partir
do vertice mais recentemente visitado.
◮ Da mesma forma que a busca em largura, sempre que umvertice v e descoberto durante a busca na lista de adjacenciade um outro vertice ja visitado u , a DFS memoriza este
evento ao definir o predecessor de v , π[v ] como u .◮ Diferentemente da BFS, cujo grafo predecessor forma uma
arvore, o grafo predecessor de DFS pode ser composto devarias arvores.
Grafos e Algoritmos de Busca 31/65
Busca em Profundidade
5/14/2018 Busca Em Largura - slidepdf.com
http://slidepdf.com/reader/full/busca-em-largura 31/65
Busca em Profundidade
Busca em Profundidade
Grafo predecessor
G π = (V , E π)
E π = {(π[v ], v ) : v ∈ V e π[v ] = NIL }
Os vertices do grafo sao coloridos durante a busca.
◮ Branco: antes da busca.
◮ Cinza: quando o vertice for visitado.◮ Preto: quando os vertices adjacentes foram visitados.
Grafos e Algoritmos de Busca 32/65
Busca em Profundidade
5/14/2018 Busca Em Largura - slidepdf.com
http://slidepdf.com/reader/full/busca-em-largura 32/65
Busca em Profundidade
Busca em Profundidade
timestamp
Alem de construir uma floresta, DFS marca cada vertice com umtimestamp . Cada vertice tem dois timestamps .
◮ d [v ] → indica o instante em que v foi visitado (pintado comcinza).
◮ f [v ] → indica o instante em que a busca pelos vertices nalista de adjacencia de v foi completada (pintado de preto ).
Usando timestamp 1, 2, . . ., verifica-se que
◮ d [v ], f [v ] ∈ 1, . . . , 2|V |, ∀v ∈ V
◮ d [v ] < f [v ], ∀v ∈ V
Grafos e Algoritmos de Busca 33/65
Busca em Profundidade
5/14/2018 Busca Em Largura - slidepdf.com
http://slidepdf.com/reader/full/busca-em-largura 33/65
Busca em Profundidade
Busca em Profundidade
Algoritmo
DFS(G )
for each vertex u ∈ V [G ]color [u ] ← white
π[u ] ← NILtime ← 0for each u ∈ V [G ]
if color [u ] = white
DFS visit(u )
Grafos e Algoritmos de Busca 34/65
Busca em Profundidade
5/14/2018 Busca Em Largura - slidepdf.com
http://slidepdf.com/reader/full/busca-em-largura 34/65
Busca em Profundidade
Busca em Profundidade
Algoritmo
DFS visit(u )
color [u ] ← gray d [u ] ← time ← time + 1for each v ∈ Adj [u ]
if color [u ] = white
π[v ] ← u
DFS visit(v )color [u ] ← black
f [u ] ← time ← time + 1
Grafos e Algoritmos de Busca 35/65
Busca em Profundidade
5/14/2018 Busca Em Largura - slidepdf.com
http://slidepdf.com/reader/full/busca-em-largura 35/65
Exemplo
Busca em Profundidade
Exemplo
u v w
x y z
1/
Grafos e Algoritmos de Busca 36/65
Busca em Profundidade
5/14/2018 Busca Em Largura - slidepdf.com
http://slidepdf.com/reader/full/busca-em-largura 36/65
Exemplo
Busca em Profundidade
Exemplo
u v w
x y z
1/ 2/
Grafos e Algoritmos de Busca 37/65
Busca em Profundidade
5/14/2018 Busca Em Largura - slidepdf.com
http://slidepdf.com/reader/full/busca-em-largura 37/65
Exemplo
Busca em Profundidade
Exemplo
u v w
x y z
1/ 2/
3/
Grafos e Algoritmos de Busca 38/65
Busca em Profundidade
5/14/2018 Busca Em Largura - slidepdf.com
http://slidepdf.com/reader/full/busca-em-largura 38/65
Exemplo
Busca em Profundidade
Exemplo
u v w
x y z
1/ 2/
3/4/
Grafos e Algoritmos de Busca 39/65
Busca em Profundidade
E l
5/14/2018 Busca Em Largura - slidepdf.com
http://slidepdf.com/reader/full/busca-em-largura 39/65
Exemplo
Busca em Profundidade
Exemplo
u v w
x y z
1/ 2/
3/4/5
Grafos e Algoritmos de Busca 40/65
Busca em Profundidade
E l
5/14/2018 Busca Em Largura - slidepdf.com
http://slidepdf.com/reader/full/busca-em-largura 40/65
Exemplo
Busca em Profundidade
Exemplo
u v w
x y z
1/ 2/
3/64/5
Grafos e Algoritmos de Busca 41/65
Busca em Profundidade
Exemplo
5/14/2018 Busca Em Largura - slidepdf.com
http://slidepdf.com/reader/full/busca-em-largura 41/65
Exemplo
Busca em Profundidade
Exemplo
u v w
x y z
1/ 2/7
3/64/5
Grafos e Algoritmos de Busca 42/65
Busca em Profundidade
Exemplo
5/14/2018 Busca Em Largura - slidepdf.com
http://slidepdf.com/reader/full/busca-em-largura 42/65
Exemplo
Busca em Profundidade
Exemplo
u v w
x y z
1/8 2/7
3/64/5
9/
Grafos e Algoritmos de Busca 43/65
Busca em Profundidade
Exemplo
5/14/2018 Busca Em Largura - slidepdf.com
http://slidepdf.com/reader/full/busca-em-largura 43/65
Exemplo
Busca em Profundidade
Exemplo
u v w
x y z
1/8 2/7
3/64/5
9/
10/
Grafos e Algoritmos de Busca 44/65
Busca em Profundidade
Exemplo
5/14/2018 Busca Em Largura - slidepdf.com
http://slidepdf.com/reader/full/busca-em-largura 44/65
e p o
Busca em Profundidade
Exemplo
u v w
x y z
1/8 2/7
3/64/5
9/12
10/11
Grafos e Algoritmos de Busca 45/65
Busca em Profundidade
Analise
5/14/2018 Busca Em Largura - slidepdf.com
http://slidepdf.com/reader/full/busca-em-largura 45/65
Busca em Profundidade
AnaliseO procedimento DFS visit(v ) e chamado exatamente uma vezpara cada vertice, pois e chamado apenas para vertices white e naprimeira vez que isto acontece, ele e pintado de gray .
Grafos e Algoritmos de Busca 46/65
Busca em Profundidade
Analise
5/14/2018 Busca Em Largura - slidepdf.com
http://slidepdf.com/reader/full/busca-em-largura 46/65
Propriedades da Busca em Profundidade
Teorema dos ParentesesNa busca em profundidade de um grafo (direcionado ounao-direcionado) G = (V ,E ), para quaisquer dois vertices u e v ,
exatamente uma de tres condicoes vale:1. os intervalos [d [u ], f [u ]] e [d [v ], f [v ]] sao disjuntos, e u nao e
descendente de v , bem como v nao e descendente de u nafloresta da busca em profundidade
2. o intervalo [d [u ], f [u ]] esta contido em [d [v ], f [v ]], e u e umdescendente de v na floresta da busca em profundidade
3. o intervalo [d [v ], f [v ]] esta contido em [d [u ], f [u ]], e v e umdescendente de u na floresta da busca em profundidade
Grafos e Algoritmos de Busca 47/65Busca em Profundidade
Teorema dos Parenteses
5/14/2018 Busca Em Largura - slidepdf.com
http://slidepdf.com/reader/full/busca-em-largura 47/65
Teorema dos Parenteses
y z s t
uwx v
C C C
C BB
F
3/6 2/9 1/10 11/16
14/1512/137/84/5
Grafos e Algoritmos de Busca 48/65Busca em Profundidade
Teorema dos Parenteses
5/14/2018 Busca Em Largura - slidepdf.com
http://slidepdf.com/reader/full/busca-em-largura 48/65
Teorema dos Parenteses
1 2 5 10 163 4 6 7 8 9 11 12 13 14 15
s
y w
x
t
v uz
Grafos e Algoritmos de Busca 49/65Busca em Profundidade
Classificacao de Arestas
5/14/2018 Busca Em Largura - slidepdf.com
http://slidepdf.com/reader/full/busca-em-largura 49/65
Propriedades da Busca em Profundidade
◮ A busca em profundidade pode ser usada para classificar asarestas de G = (V , E ).
◮ Tal classificacao traz informacoes uteis sobre o grafo.
◮ Por exemplo, G e acıclico se nao existem arestas “reversas”
Grafos e Algoritmos de Busca 50/65Busca em Profundidade
Classificacao de Arestas
5/14/2018 Busca Em Largura - slidepdf.com
http://slidepdf.com/reader/full/busca-em-largura 50/65
Propriedades da Busca em Profundidade
Podemos classificar as arestas em quatro tipos de acordo com afloresta G π produzida pela busca em profundidade;
Arestas Arvore: as arestas da floresta em profundidade G π
Arestas Reversas: as arestas (u , v ) que conectam u a um ancestralv
Lacos sao considerados arestas reversas.
Arestas Diretas: as arestas (u , v ) que conectam um vertice u a um
descendente v
Arestas Cruzadas: todas as demais arestas
Grafos e Algoritmos de Busca 51/65Busca em Profundidade
Classificacao de Arestas
5/14/2018 Busca Em Largura - slidepdf.com
http://slidepdf.com/reader/full/busca-em-largura 51/65
Busca em Profundidade
y z s t
uwx v
C C C
C BB
F
3/6 2/9 1/10 11/16
14/1512/137/84/5
Grafos e Algoritmos de Busca 52/65Busca em Profundidade
Classificacao de Arestas
5/14/2018 Busca Em Largura - slidepdf.com
http://slidepdf.com/reader/full/busca-em-largura 52/65
Classificacao de Arestas
s
z
wy
x
t
v uB
C
F
C
C
C
B
Grafos e Algoritmos de Busca 53/65Ordenacao Topologica
5/14/2018 Busca Em Largura - slidepdf.com
http://slidepdf.com/reader/full/busca-em-largura 53/65
Sumario
Introducao
Representacao de Grafos
Busca em Largura
Busca em Profundidade
Ordenacao Topologica
Componentes Fortemente Conexos
Grafos e Algoritmos de Busca 54/65Ordenacao Topologica
5/14/2018 Busca Em Largura - slidepdf.com
http://slidepdf.com/reader/full/busca-em-largura 54/65
Ordenacao topologica
◮ Mostraremos como busca em profundidade pode serempregada para encontrar uma ordenacao topologica de umgrafo direcionado acıclico G = (V ,E ).
◮ Uma ordenacao topologica u 1, . . . , u n dos vertices de G euma ordenacao linear tal que se (u i , u j ) ∈ E , entao u i precedeu j na ordenacao, ou seja, i < j .
◮ Ordenacao topologica pode ser vista como um arranjo dos
vertices na horizontal, tal que as arestas vao da esquerda paraa direita.
Grafos e Algoritmos de Busca 55/65Ordenacao Topologica
5/14/2018 Busca Em Largura - slidepdf.com
http://slidepdf.com/reader/full/busca-em-largura 55/65
Busca em Largura
Topological-Sort(G )
call DFS(G ) to compute finishing f [v ] for each vertex v ,as each vertex is finished, insert it into the front of a linked list
return the linked list of vertices
Grafos e Algoritmos de Busca 56/65Ordenacao Topologica
5/14/2018 Busca Em Largura - slidepdf.com
http://slidepdf.com/reader/full/busca-em-largura 56/65
Exemplo
Roupa deBaixo
RelogioSapatos
Gravata
Jaqueta
Calca
Cinto
Camisa
Meias11/16
12/15
6/7
17/18
9/10
13/141/8
2/5
3/4
Grafos e Algoritmos de Busca 57/65Ordenacao Topologica
5/14/2018 Busca Em Largura - slidepdf.com
http://slidepdf.com/reader/full/busca-em-largura 57/65
Exemplo
Roupa deBaixo
RelogioSapatos Gravata JaquetaCalca CintoCamisaMeias
11/16 12/15 6/717/18 9/1013/14 1/8 2/5 3/4
Grafos e Algoritmos de Busca 58/65Componentes Fortemente Conexos
5/14/2018 Busca Em Largura - slidepdf.com
http://slidepdf.com/reader/full/busca-em-largura 58/65
Sumario
Introducao
Representacao de Grafos
Busca em Largura
Busca em Profundidade
Ordenacao Topologica
Componentes Fortemente Conexos
Grafos e Algoritmos de Busca 59/65Componentes Fortemente Conexos
5/14/2018 Busca Em Largura - slidepdf.com
http://slidepdf.com/reader/full/busca-em-largura 59/65
Componentes Fortemente Conexos
◮ Um componente fortemente conexo de um grafo direcionadoG = (V , E ) e um conjunto de vertices C ⊆ V maximo tal quepara todo par de vertices u e v em C , existe um caminhou v e um caminho v u .
◮ Estamos interessados em desenvolver um algoritmo queencontra todos os componentes fortemente conexos de G .
◮ Vamos utilizar o grafo transposto G T = (V ,E T ) onde
E T = {(u , v ) : (v , u ) ∈ E }. G T consiste de G com as arestasreversas.
Grafos e Algoritmos de Busca 60/65Componentes Fortemente Conexos
5/14/2018 Busca Em Largura - slidepdf.com
http://slidepdf.com/reader/full/busca-em-largura 60/65
Strongly-Connected-Components(G )
1 call DFS(G ) to compute finishing f [u ] for each vertex u
2 compute G T
3 call DFS (G T ), but in the main loop of DFS, consider the verticesin decreasing order of f [u ] (as computed in step 1)
4 output the vertices of each depth-first search treebuilt in step 3 as an independent connected component
Grafos e Algoritmos de Busca 61/65Componentes Fortemente Conexos
5/14/2018 Busca Em Largura - slidepdf.com
http://slidepdf.com/reader/full/busca-em-largura 61/65
Exemplo: Grafo G = (V ,E )
a b c d
e f g h
Grafos e Algoritmos de Busca 62/65Componentes Fortemente Conexos
5/14/2018 Busca Em Largura - slidepdf.com
http://slidepdf.com/reader/full/busca-em-largura 62/65
DFS(G )
a b c d
e f g h
11/1613/14
12/15 3/4 2/7
1/10 8/9
5/6
Grafos e Algoritmos de Busca 63/65Componentes Fortemente Conexos
5/14/2018 Busca Em Largura - slidepdf.com
http://slidepdf.com/reader/full/busca-em-largura 63/65
G T
b c d
e f g h
a
Grafos e Algoritmos de Busca 64/65Componentes Fortemente Conexos
5/14/2018 Busca Em Largura - slidepdf.com
http://slidepdf.com/reader/full/busca-em-largura 64/65
DFS(G T )
b c d
e f g h
a
Nos em amarelo sao raızes das arvores de profundidade.
Grafos e Algoritmos de Busca 65/65Componentes Fortemente Conexos
5/14/2018 Busca Em Largura - slidepdf.com
http://slidepdf.com/reader/full/busca-em-largura 65/65
Conclusoes
◮ Fim!◮ Obrigado pela presenca