Вы находитесь на странице: 1из 6

MC448 Analise

de Algoritmos I

Cid Carvalho de Souza Candida


Nunes da Silva
Orlando Lee

Componentes fortemente conexos

11 de novembro de 2009

Cid Carvalho de Souza, Candida


Nunes da Silva, Orlando Lee

MC448 Analise
de Algoritmos

Componentes fortemente conexos (CFC)

Cid Carvalho de Souza, Candida


Nunes da Silva, Orlando Lee

MC448 Analise
de Algoritmos

Componentes fortemente conexos

classica

Uma aplicacao
de busca em profundidade:
decompor um grafo orientado em seus componentes
fortemente conexos.

Um componente fortemente conexo de um grafo orientado

C V tal que:
G = (V , E) e um subconjunto de vertices

Muitos algoritmos em grafos comecam com tal

decomposicao.

O algoritmo opera separadamente em cada componente


fortemente conexo.
sao
combinadas de alguma forma.
As solucoes

Cid Carvalho de Souza, Candida


Nunes da Silva, Orlando Lee

MC448 Analise
de Algoritmos

Para todo par de vertices


u e v em C, existe um caminho
(orientado) de u a v e vice-versa.
C e maximal com respeito a` propriedade (1).

Cid Carvalho de Souza, Candida


Nunes da Silva, Orlando Lee

MC448 Analise
de Algoritmos

Componentes fortemente conexos

Grafo transposto

Seja G = (V , E) um grafo orientado.


O grafo transposto de G e o grafo GT = (V T , E T ) tal que
VT = V e
E T = {(u, v ) : (v , u) E}.

Um grafo orientado e seus componentes fortemente conexos.

Cid Carvalho de Souza, Candida


Nunes da Silva, Orlando Lee

MC448 Analise
de Algoritmos

Grafo transposto

Ou seja, GT e obtido a partir de G invertendo as orientacoes


das arestas.
de listas de adjacencias

Dada uma representacao


de G e
de listas de adjacencias

possvel obter a representacao


de GT
em tempo (V + E).

Cid Carvalho de Souza, Candida


Nunes da Silva, Orlando Lee

MC448 Analise
de Algoritmos

Algoritmo
a

d
C OMPONENTES -F ORTEMENTE -C ONEXOS(G)

1 Execute DFS(G) para obter f [v ] para v V .

2 Execute DFS(GT ) considerando os vertices


em ordem
decrescente de f [v ].

3 Devolva os conjuntos de vertices


de cada arvore
da
Floresta de Busca em Profundidade obtida.
exatemente os
Veremos que os conjuntos devolvidos sao
componentes fortemente conexos de G.

os
Um grafo orientado e o grafo transposto. Note que eles tem
mesmos componentes fortemente conexos.

Cid Carvalho de Souza, Candida


Nunes da Silva, Orlando Lee

MC448 Analise
de Algoritmos

Cid Carvalho de Souza, Candida


Nunes da Silva, Orlando Lee

MC448 Analise
de Algoritmos

Exemplo CLRS

Exemplo CLRS

13/14

11/16

1/10

8/9

12/15

3/4

2/7

5/6

1 Execute DFS(G) para obter f [v ] para v V .

Cid Carvalho de Souza, Candida


Nunes da Silva, Orlando Lee

MC448 Analise
de Algoritmos

Cid Carvalho de Souza, Candida


Nunes da Silva, Orlando Lee

Exemplo CLRS
a

MC448 Analise
de Algoritmos

Grafo Componente
b

MC448 Analise
de Algoritmos

2 Execute DFS(GT ) considerando os vertices


em ordem
decrescente de f [v ].
3 Os componentes fortemente conexos correspondem aos

vertices
de cada arvore
da Floresta de Busca em Profundida.

Cid Carvalho de Souza, Candida


Nunes da Silva, Orlando Lee

por tras
de C OMPONENTES -F ORTEMENTE -C ONEXOS
A ideia
segue de uma propriedade do grafo componente GCFC obtido a
partir de G contraindo-se seus componentes fortemente
conexos.

Cid Carvalho de Souza, Candida


Nunes da Silva, Orlando Lee

MC448 Analise
de Algoritmos

Grafo Componente

Corretude

por tras
de C OMPONENTES -F ORTEMENTE -C ONEXOS
A ideia
segue de uma propriedade do grafo componente GCFC obtido a
replacements
partir de G contraindo-se seus componentes fortemente
conexos.

cd
abe

Lema 22.13 (CLRS)


Sejam C e C dois componentes fortemente conexos de G.
Sejam u, v C e u , v C .
u em G.
Suponha que existe um caminho u

nao
existe um caminho v
v em G.
Entao
O lema acima mostra que GCFC e acclico.

fg
GCFC

Agora vamos mostrar porque


C OMPONENTES -F ORTEMENTE -C ONEXOS funciona.

e acclico.

visitados em ordem
Os componentes fortementes conexos sao
a GCFC !

com relacao
topologica

Cid Carvalho de Souza, Candida


Nunes da Silva, Orlando Lee

MC448 Analise
de Algoritmos

Corretude

Cid Carvalho de Souza, Candida


Nunes da Silva, Orlando Lee

MC448 Analise
de Algoritmos

Corretude
Lema 22.14 (CLRS):

Daqui pra frente d, f referem-se a` busca em profundidade em


G feita no passo 1 do algoritmo.

Sejam C e C dois componentes f.c. de G.


Suponha que existe (u, v ) em E onde u C e v C .
f (C) > f (C ).
Entao

Definicao:

Para todo subconjunto U de vertices


denote
d(U) := min{d[u]}
uU

e f (U) := max{f [u]}.


uU

Ou seja, d(U) e o instante em que o primeiro vertice


de U foi

descoberto e f (U) e o instante em que o ultimo


vertice
de U foi

finalizado.

Cid Carvalho de Souza, Candida


Nunes da Silva, Orlando Lee

MC448 Analise
de Algoritmos

Prova: Temos dois casos:

d(C) < d(C ): seja x o primeiro vertice


de C que foi
descoberto. Logo d[x] = d(C). No instante d[x], existe um

de C C . Entao
caminho branco de de x a todo vertice

descendentes de x e

todos os vertices
de C C sao
portanto f (C ) < f [x] f (C).

d(C) > d(C ): o primeiro vertice


de C C a ser

descoberto pertence a C . Logo, todos os vertices


de C
finalizados antes de qualquer vertice

serao
de C ser
descoberto. Isso mostra que f (C) > f (C ).

Cid Carvalho de Souza, Candida


Nunes da Silva, Orlando Lee

MC448 Analise
de Algoritmos

Corretude

Corretude

C OMPONENTES -F ORTEMENTE -C ONEXOS(G)

Corolario
22.15 (CLRS):
Sejam C e C dois componentes fortemente conexos de G.
Suponha que existe (u, v ) esta em E T onde u C e v C .
f (C) < f (C ).
Entao
Segue do fato de que G e GT terem os mesmos componentes
fortemente conexos e do lema anterior.

Cid Carvalho de Souza, Candida


Nunes da Silva, Orlando Lee

MC448 Analise
de Algoritmos

Corretude

Teorema 22.16 (CLRS):


O algoritmo C OMPONENTES -F ORTEMENTE -C ONEXOS
determina corretamente os componentes fortemente conexos
de G em tempo O(V + E).

Cid Carvalho de Souza, Candida


Nunes da Silva, Orlando Lee

MC448 Analise
de Algoritmos

Corretude

Prova: (CLRS)

no numero
Vamos provar por inducao
de arvores
produzidas

componentes
na linha 3 que os vertices
de cada arvore
sao
fortemente conexos.
Base: k = 0 (trivial)

as primeiras k arvores

Hipotese
de inducao:
produzidas na
componentes fortemente conexos.
linha 3 sao

Cid Carvalho de Souza, Candida


Nunes da Silva, Orlando Lee

1 Execute DFS(G) para obter f [v ] para v V .

2 Execute DFS(GT ) considerando os vertices


em ordem
decrescente de f [v ].

3 Devolva os conjuntos de vertices


de cada arvore
da
Floresta de Busca em Profundidade obtida.

MC448 Analise
de Algoritmos

considere a (k + 1)-esima

Passo de inducao:
arvore
produzida

pelo algoritmo. Vamos mostrar que seu conjunto de vertices


e
um componente fortemente conexo.

e seja C o componente fortemente


Seja u a raiz desta arvore
conexo ao qual u pertence.
Pela escolha do algoritmo, f (C) > f (C ) para qualquer outro

componente fortemente conexo C que consiste de vertices


visitados em DFS(GT ).
ainda nao

Cid Carvalho de Souza, Candida


Nunes da Silva, Orlando Lee

MC448 Analise
de Algoritmos

Corretude

no instante d[u] todos os vertices

Pela hipotese
de inducao,
de
brancos. Assim, todos os vertices

C sao
de C tornam-se

de busca de GT .
descendentes de u na arvore

e pelo Corolario

Pela hipotese
de inducao
22.15, qualquer
aresta que sai de C so pode entrar em uma das k
componentes ja visitadas.
na arvore

de busca em
Logo, apenas os vertices
de C estao
profundidade de GT com raiz u.

Cid Carvalho de Souza, Candida


Nunes da Silva, Orlando Lee

MC448 Analise
de Algoritmos

Вам также может понравиться