65
 Grafos e Algoritmos de Busca  1/65 Grafos e Algoritmos de Busca Eduardo Camponogara Departamento de Automa¸ ao e Sis temas Universidade Federal de Santa Catarina DAS-9003: Introdu¸ c˜ao a Al gor it mo s

Busca Em Largura

Embed Size (px)

Citation preview

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

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

π

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

π

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

π

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

π

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