• Nenhum resultado encontrado

Componentes fortemente conexas

N/A
N/A
Protected

Academic year: 2022

Share "Componentes fortemente conexas"

Copied!
32
0
0

Texto

(1)

Componentes fortemente conexas

CLRS Cap 22.5

(2)

Busca em profundidade

DFS(G)

1 para cada u∈V(G) faça

2 u.cor←branco u.π ←nil 3 tempo←0

4 para cada u∈V(G) faça 5 se u.cor=branco 6 então DFS-Visit(u)

DFS-Visit(u)

1 u.cor←cinzento u.d ←tempo tempo←tempo+1 3 para cada v ∈u.Estrelafaça

4 se u.cor=branco

5 então v.π ←u

6 DFS-Visit(v)

7 u.cor←preto

8 u.f ←tempo tempo←tempo+1

(3)

Busca em profundidade

DFS(G)

1 para cada u∈V(G) faça

2 u.cor←branco u.π ←nil 3 tempo←0

4 para cada u∈V(G) faça 5 se u.cor=branco 6 então DFS-Visit(u) DFS-Visit(u)

1 u.cor←cinzento u.d ←tempo tempo←tempo+1 3 para cada v ∈u.Estrelafaça

4 se u.cor=branco

5 então v.π ←u

6 DFS-Visit(v)

7 u.cor←preto

8 u.f tempo tempo tempo 1

(4)

A oresta DF

Cada componente da oresta DF é uma árvore enraizada, orientada a partir da raíz.

A cada chamada de DFS-Visit no laço principal, os vértices lá processados fazem parte da componente cuja raíz é o argumento da chamada.

Extensão do algoritmo para capturar essas componentes. . . Sugestões?

(5)

A oresta DF

Cada componente da oresta DF é uma árvore enraizada, orientada a partir da raíz.

A cada chamada de DFS-Visit no laço principal, os vértices lá processados fazem parte da componente cuja raíz é o argumento da chamada.

Extensão do algoritmo para capturar essas componentes. . . Sugestões?

(6)

A oresta DF

Cada componente da oresta DF é uma árvore enraizada, orientada a partir da raíz.

A cada chamada de DFS-Visit no laço principal, os vértices lá processados fazem parte da componente cuja raíz é o argumento da chamada.

Extensão do algoritmo para capturar essas componentes. . .

Sugestões?

(7)

A oresta DF

Cada componente da oresta DF é uma árvore enraizada, orientada a partir da raíz.

A cada chamada de DFS-Visit no laço principal, os vértices lá processados fazem parte da componente cuja raíz é o argumento da chamada.

Extensão do algoritmo para capturar essas componentes. . . Sugestões?

(8)

Componentes fortemente conexas

SejaG um digrafo eu e v vértices deG.

Escrevemosu v se existe caminho deu parav emG. SejaC um conjunto maximal de vértices de G tal que u v ev u quaisquer que sejamu ev em C. C é umacomponente fortemente conexa deG.

Diferentes componentes fortemente conexas são disjuntas, ou seja, as componentes determinam uma partição de VG.

Problema: Dado digrafo G, encontrar todas as componentes fortemente conexas deG.

(9)

Componentes fortemente conexas

SejaG um digrafo eu e v vértices deG.

Escrevemosu v se existe caminho deu parav emG.

SejaC um conjunto maximal de vértices de G tal que u v ev u quaisquer que sejamu ev em C. C é umacomponente fortemente conexa deG.

Diferentes componentes fortemente conexas são disjuntas, ou seja, as componentes determinam uma partição de VG.

Problema: Dado digrafo G, encontrar todas as componentes fortemente conexas deG.

(10)

Componentes fortemente conexas

SejaG um digrafo eu e v vértices deG.

Escrevemosu v se existe caminho deu parav emG. SejaC um conjunto maximal de vértices de G tal que u v ev u quaisquer que sejamu ev emC.

C é umacomponente fortemente conexa deG.

Diferentes componentes fortemente conexas são disjuntas, ou seja, as componentes determinam uma partição de VG.

Problema: Dado digrafo G, encontrar todas as componentes fortemente conexas deG.

(11)

Componentes fortemente conexas

SejaG um digrafo eu e v vértices deG.

Escrevemosu v se existe caminho deu parav emG. SejaC um conjunto maximal de vértices de G tal que u v ev u quaisquer que sejamu ev emC. C é umacomponente fortemente conexa deG.

Diferentes componentes fortemente conexas são disjuntas, ou seja, as componentes determinam uma partição de VG.

Problema: Dado digrafo G, encontrar todas as componentes fortemente conexas deG.

(12)

Componentes fortemente conexas

SejaG um digrafo eu e v vértices deG.

Escrevemosu v se existe caminho deu parav emG. SejaC um conjunto maximal de vértices de G tal que u v ev u quaisquer que sejamu ev emC. C é umacomponente fortemente conexa deG.

Diferentes componentes fortemente conexas são disjuntas, ou seja, as componentes determinam uma partição de VG.

Problema: Dado digrafo G, encontrar todas as componentes fortemente conexas deG.

(13)

Componentes fortemente conexas

SejaG um digrafo eu e v vértices deG.

Escrevemosu v se existe caminho deu parav emG. SejaC um conjunto maximal de vértices de G tal que u v ev u quaisquer que sejamu ev emC. C é umacomponente fortemente conexa deG.

Diferentes componentes fortemente conexas são disjuntas, ou seja, as componentes determinam uma partição de VG.

Problema: Dado digrafo G, encontrar todas as componentes fortemente conexas deG.

(14)

Algoritmo de Kosaraju-Sharir

SejaG = (V,E)um digrafo.

SejaGr o digrafo reverso deG (todos os arcos invertidos).

Kosaraju-Sharir(G)

Execute uma DFS em G calculando u.f para cadau. ConstruaGr.

Execute uma DFS em Gr considerando os vértices de Gr em ordem decrescente do valor de f calculado acima.

Devolva as componentes da oresta DF construída para Gr.

Consumo de tempo: linear no tamanho deG.

(15)

Algoritmo de Kosaraju-Sharir

SejaG = (V,E)um digrafo.

SejaGr o digrafo reverso deG (todos os arcos invertidos).

Kosaraju-Sharir(G)

Execute uma DFS em G calculando u.f para cadau. ConstruaGr.

Execute uma DFS em Gr considerando os vértices de Gr em ordem decrescente do valor de f calculado acima.

Devolva as componentes da oresta DF construída para Gr.

Consumo de tempo: linear no tamanho deG.

(16)

Algoritmo de Kosaraju-Sharir

SejaG = (V,E)um digrafo.

SejaGr o digrafo reverso deG (todos os arcos invertidos).

Kosaraju-Sharir(G)

Execute uma DFS em G calculando u.f para cadau.

ConstruaGr.

Execute uma DFS em Gr considerando os vértices de Gr em ordem decrescente do valor de f calculado acima.

Devolva as componentes da oresta DF construída para Gr. Consumo de tempo: linear no tamanho deG.

(17)

Algoritmo de Kosaraju-Sharir

SejaG = (V,E)um digrafo.

SejaGr o digrafo reverso deG (todos os arcos invertidos).

Kosaraju-Sharir(G)

Execute uma DFS em G calculando u.f para cadau.

ConstruaGr.

Execute uma DFS em Gr considerando os vértices de Gr em ordem decrescente do valor de f calculado acima.

Devolva as componentes da oresta DF construída para Gr. Consumo de tempo: linear no tamanho deG.

(18)

Algoritmo de Kosaraju-Sharir

SejaG = (V,E)um digrafo.

SejaGr o digrafo reverso deG (todos os arcos invertidos).

Kosaraju-Sharir(G)

Execute uma DFS em G calculando u.f para cadau.

ConstruaGr.

Execute uma DFS em Gr considerando os vértices deGr em ordem decrescente do valor de f calculado acima.

Devolva as componentes da oresta DF construída para Gr. Consumo de tempo: linear no tamanho deG.

(19)

Algoritmo de Kosaraju-Sharir

SejaG = (V,E)um digrafo.

SejaGr o digrafo reverso deG (todos os arcos invertidos).

Kosaraju-Sharir(G)

Execute uma DFS em G calculando u.f para cadau.

ConstruaGr.

Execute uma DFS em Gr considerando os vértices deGr em ordem decrescente do valor de f calculado acima.

Devolva as componentes da oresta DF construída para Gr.

Consumo de tempo: linear no tamanho deG.

(20)

Algoritmo de Kosaraju-Sharir

SejaG = (V,E)um digrafo.

SejaGr o digrafo reverso deG (todos os arcos invertidos).

Kosaraju-Sharir(G)

Execute uma DFS em G calculando u.f para cadau.

ConstruaGr.

Execute uma DFS em Gr considerando os vértices deGr em ordem decrescente do valor de f calculado acima.

Devolva as componentes da oresta DF construída para Gr.

Consumo de tempo: linear no tamanho deG.

(21)

Algoritmo de Kosaraju-Sharir

SejaG = (V,E)um digrafo.

SejaGr o digrafo reverso deG (todos os arcos invertidos).

Kosaraju-Sharir(G)

Execute uma DFS em G calculando u.f para cadau.

ConstruaGr.

Execute uma DFS em Gr considerando os vértices deGr em ordem decrescente do valor de f calculado acima.

Devolva as componentes da oresta DF construída para Gr. Consumo de tempo: linear no tamanho deG.

(22)

Análise

Lema: Sejam C e C0 componentes fortemente conexas distintas de um digrafoG e vértices u,v ∈C eu0,v0∈C0. Se existe um caminho de u a u0 em G, então não existe caminho emG dev0 av.

d ef como calculados na primeira DFS do algoritmo. Para um conjunto U de vértices,

sejam d(U) :=min{u.d :u ∈U} e f(U) :=max{u.f :u ∈U}.

d(U): instante em que o primeiro vértice deU foi descoberto f(U): instante em que o último vértice deU terminou

Lema: Sejam C e C0 componentes fortemente conexas distintas de um digrafoG. Se existe um arco(u,u0)em G, com u∈C e u0 ∈C0, então f(C)>f(C0).

(23)

Análise

Lema: Sejam C e C0 componentes fortemente conexas distintas de um digrafoG e vértices u,v ∈C eu0,v0∈C0. Se existe um caminho de u a u0 em G, então não existe caminho emG dev0 av.

d ef como calculados na primeira DFS do algoritmo.

Para um conjunto U de vértices, sejam d(U) :=min{u.d :u ∈U} e f(U) :=max{u.f :u ∈U}.

d(U): instante em que o primeiro vértice de U foi descoberto f(U): instante em que o último vértice deU terminou

Lema: Sejam C e C0 componentes fortemente conexas distintas de um digrafoG. Se existe um arco(u,u0) em G, com u∈C e u0∈C0, então f(C)>f(C0).

(24)

Análise

Lema: Sejam C e C0 componentes fortemente conexas distintas de um digrafoG e vértices u,v ∈C eu0,v0∈C0. Se existe um caminho de u a u0 em G, então não existe caminho emG dev0 av.

d ef como calculados na primeira DFS do algoritmo.

Para um conjunto U de vértices, sejam d(U) :=min{u.d :u ∈U} e f(U) :=max{u.f :u ∈U}.

d(U): instante em que o primeiro vértice de U foi descoberto f(U): instante em que o último vértice deU terminou

Lema: Sejam C e C0 componentes fortemente conexas distintas de um digrafoG. Se existe um arco(u,u0) em G, com u∈C e u0∈C0, então f(C)>f(C0).

(25)

Análise

Lema: Sejam C e C0 componentes fortemente conexas distintas de um digrafoG e vértices u,v ∈C eu0,v0∈C0. Se existe um caminho de u a u0 em G, então não existe caminho emG dev0 av.

d ef como calculados na primeira DFS do algoritmo.

Para um conjunto U de vértices, sejam d(U) :=min{u.d :u ∈U} e f(U) :=max{u.f :u ∈U}.

d(U): instante em que o primeiro vértice de U foi descoberto

f(U): instante em que o último vértice deU terminou

Lema: Sejam C e C0 componentes fortemente conexas distintas de um digrafoG. Se existe um arco(u,u0) em G, com u∈C e u0∈C0, então f(C)>f(C0).

(26)

Análise

Lema: Sejam C e C0 componentes fortemente conexas distintas de um digrafoG e vértices u,v ∈C eu0,v0∈C0. Se existe um caminho de u a u0 em G, então não existe caminho emG dev0 av.

d ef como calculados na primeira DFS do algoritmo.

Para um conjunto U de vértices, sejam d(U) :=min{u.d :u ∈U} e f(U) :=max{u.f :u ∈U}.

d(U): instante em que o primeiro vértice de U foi descoberto f(U): instante em que o último vértice deU terminou

Lema: Sejam C e C0 componentes fortemente conexas distintas de um digrafoG. Se existe um arco(u,u0) em G, com u∈C e u0∈C0, então f(C)>f(C0).

(27)

Análise

Lema: Sejam C e C0 componentes fortemente conexas distintas de um digrafoG e vértices u,v ∈C eu0,v0∈C0. Se existe um caminho de u a u0 em G, então não existe caminho emG dev0 av.

d ef como calculados na primeira DFS do algoritmo.

Para um conjunto U de vértices, sejam d(U) :=min{u.d :u ∈U} e f(U) :=max{u.f :u ∈U}.

d(U): instante em que o primeiro vértice de U foi descoberto f(U): instante em que o último vértice deU terminou

Lema: Sejam C e C0 componentes fortemente conexas distintas de um digrafoG. Se existe um arco(u,u0) em G, com u∈C e u0∈C0, então f(C)>f(C0).

(28)

Análise

d e f como calculados na primeira DFS do algoritmo.

Para um conjuntoU de vértices,

sejad(U) :=min{u.d :u∈U} ef(U) :=max{u.f :u∈U}.

Lema: Sejam C e C0 componentes fortemente conexas distintas de um digrafoG. Se existe um arco(u,u0) em Gr, então f(C)<f(C0).

Isso implica que a ordenação porf decrescente na segunda DFS percorre as componentes fortemente conexas

Teorema: Kosaraju-Sharir(G)calcula corretamente as componentes fortemente conexas deG.

(29)

Análise

d e f como calculados na primeira DFS do algoritmo.

Para um conjuntoU de vértices,

sejad(U) :=min{u.d :u∈U} ef(U) :=max{u.f :u∈U}.

Lema: Sejam C e C0 componentes fortemente conexas distintas de um digrafoG. Se existe um arco(u,u0) em Gr, então f(C)<f(C0).

Isso implica que a ordenação porf decrescente na segunda DFS percorre as componentes fortemente conexas

Teorema: Kosaraju-Sharir(G)calcula corretamente as componentes fortemente conexas deG.

(30)

Análise

d e f como calculados na primeira DFS do algoritmo.

Para um conjuntoU de vértices,

sejad(U) :=min{u.d :u∈U} ef(U) :=max{u.f :u∈U}.

Lema: Sejam C e C0 componentes fortemente conexas distintas de um digrafoG. Se existe um arco(u,u0) em Gr, então f(C)<f(C0).

Isso implica que a ordenação porf decrescente na segunda DFS percorre as componentes fortemente conexas

Teorema: Kosaraju-Sharir(G)calcula corretamente as componentes fortemente conexas deG.

(31)

Condensação de um digrafo

Dado um digrafoG, suacondensação é o digrafo cujos vértices são (ou estão em correspondência com) as componentes conexas deG, com arco deC a C0 sse existe em G arco de um vértice emC a um de C0.

TEOREMA: A condensação de um digrafo é um digrafo acíclico.

PROBLEMA: Adaptar Kosaraju-Sharirpara devolver uma ordenação topológica da condensação deG.

(32)

Condensação de um digrafo

Dado um digrafoG, suacondensação é o digrafo cujos vértices são (ou estão em correspondência com) as componentes conexas deG, com arco deC a C0 sse existe em G arco de um vértice emC a um de C0.

TEOREMA: A condensação de um digrafo é um digrafo acíclico.

PROBLEMA: Adaptar Kosaraju-Sharirpara devolver uma ordenação topológica da condensação deG.

Referências

Documentos relacionados

Comparação do número de células do Epitélio Pigmentar da Retina, dorsal e ventralmente ao disco óptico, entre o grupo controle sem exposição à luz, grupo alimentado com

Custos unitarios para cada mes de mobilidade – seguindo as regras de elegibilidade do H2020* Research, networking, training costs € 1800 Management and indirect costs € 700 Top-up

Mais precisamente, os movimentos sociais que usam de violência política, como os terroristas, são organizações como outras e enfrentam os mesmos constrangimentos de recursos;

O consumo, a contribuição e a criação de conteúdo são as três dimensões de envolvimento do consumidor e foram estudadas por estes autores como forma de anteciparem

Tempo médio ± desvio-padrão para o início da rejeição de forrageiras companheiras ou não-companheiras de ninho, expostas ou não ao fungo, Beauveria bassiana por 2h, pelas guardas

Naquele caso pareceu evidenciada a parceria entre Executivo (à época chefiado pelo então presidente Lula) e Judiciário; neste parece ter restado evidente a ruptura da Corte com

No paradigma da doença avançada (N3, N4 ou evidência de invasão vascular) ou metastizada (M1), a resseção cirúrgica com intenção curativa não se assume como

A limited sixteen-hour period per year was set for this community experience for two reasons: first, in accordance with an agreement with public service dentists, the students