s 19.8 clrs 22am/328/aulas/aula-0327.pdf · algoritmos em grafos 1 º sem 2014 7/1. relações de...
TRANSCRIPT
![Page 1: S 19.8 CLRS 22am/328/aulas/aula-0327.pdf · Algoritmos em Grafos 1 º sem 2014 7/1. Relações de equivalência Dada uma relação binária )no conjunto C, seja ) seu fecho re exivo](https://reader033.vdocuments.pub/reader033/viewer/2022042913/5f4ba8b6eb172e7a2c431765/html5/thumbnails/1.jpg)
Componentes fortemente conexas
S 19.8CLRS 22.5
Algoritmos em Grafos � 1º sem 2014 1 / 1
![Page 2: S 19.8 CLRS 22am/328/aulas/aula-0327.pdf · Algoritmos em Grafos 1 º sem 2014 7/1. Relações de equivalência Dada uma relação binária )no conjunto C, seja ) seu fecho re exivo](https://reader033.vdocuments.pub/reader033/viewer/2022042913/5f4ba8b6eb172e7a2c431765/html5/thumbnails/2.jpg)
Digrafos fortemente conexos
Um digrafo é fortemente conexo se e somente separa cada par {s,t} de seus vértices, existemcaminhos de s a t e de t a s
Exemplo: um digrafo fortemente conexo
0
5
1
6 7 8
4
9 10
2
3
11 12
Algoritmos em Grafos � 1º sem 2014 2 / 1
![Page 3: S 19.8 CLRS 22am/328/aulas/aula-0327.pdf · Algoritmos em Grafos 1 º sem 2014 7/1. Relações de equivalência Dada uma relação binária )no conjunto C, seja ) seu fecho re exivo](https://reader033.vdocuments.pub/reader033/viewer/2022042913/5f4ba8b6eb172e7a2c431765/html5/thumbnails/3.jpg)
Componentes fortemente conexas
Uma componente fortemente conexa (= strongly
connected) é um conjunto maximal de vértices W talque digrafo induzido por W é fortemente conexo
Exemplo: 4 componentes fortemente conexas
0
5
1
6 7 8
4
9 10
2
3
11 12
Algoritmos em Grafos � 1º sem 2014 3 / 1
![Page 4: S 19.8 CLRS 22am/328/aulas/aula-0327.pdf · Algoritmos em Grafos 1 º sem 2014 7/1. Relações de equivalência Dada uma relação binária )no conjunto C, seja ) seu fecho re exivo](https://reader033.vdocuments.pub/reader033/viewer/2022042913/5f4ba8b6eb172e7a2c431765/html5/thumbnails/4.jpg)
Componentes fortemente conexas
Uma componente fortemente conexa (= strongly
connected) é um conjunto maximal de vértices W talque digrafo induzido por W é fortemente conexo
Exemplo: 4 componentes fortemente conexas
11 12
1
0
5
3
2
6 7 8
4
9 10
Algoritmos em Grafos � 1º sem 2014 4 / 1
![Page 5: S 19.8 CLRS 22am/328/aulas/aula-0327.pdf · Algoritmos em Grafos 1 º sem 2014 7/1. Relações de equivalência Dada uma relação binária )no conjunto C, seja ) seu fecho re exivo](https://reader033.vdocuments.pub/reader033/viewer/2022042913/5f4ba8b6eb172e7a2c431765/html5/thumbnails/5.jpg)
Relações de equivalência
Dada uma relação binária ⇒ no conjunto C, seja ⇒∗seu fecho re�exivo e transitivo. De�na, para a, b ∈ C
a⇔ b sse a⇒∗ b e b ⇒∗ aclaro que ⇔ é um relação de equivalência.Caso típico: ⇒ é alguma transformação de dados.
Problema: Determinar as classes de equivalência.
Mesma coisa que achar as componentes fortementeconexas dografo com vértices C e arcos dados por ⇒.
Algoritmos em Grafos � 1º sem 2014 5 / 1
![Page 6: S 19.8 CLRS 22am/328/aulas/aula-0327.pdf · Algoritmos em Grafos 1 º sem 2014 7/1. Relações de equivalência Dada uma relação binária )no conjunto C, seja ) seu fecho re exivo](https://reader033.vdocuments.pub/reader033/viewer/2022042913/5f4ba8b6eb172e7a2c431765/html5/thumbnails/6.jpg)
Relações de equivalência
Dada uma relação binária ⇒ no conjunto C, seja ⇒∗seu fecho re�exivo e transitivo. De�na, para a, b ∈ C
a⇔ b sse a⇒∗ b e b ⇒∗ aclaro que ⇔ é um relação de equivalência.Caso típico: ⇒ é alguma transformação de dados.
Problema: Determinar as classes de equivalência.
Mesma coisa que achar as componentes fortementeconexas dografo com vértices C e arcos dados por ⇒.
Algoritmos em Grafos � 1º sem 2014 6 / 1
![Page 7: S 19.8 CLRS 22am/328/aulas/aula-0327.pdf · Algoritmos em Grafos 1 º sem 2014 7/1. Relações de equivalência Dada uma relação binária )no conjunto C, seja ) seu fecho re exivo](https://reader033.vdocuments.pub/reader033/viewer/2022042913/5f4ba8b6eb172e7a2c431765/html5/thumbnails/7.jpg)
Relações de equivalência
Dada uma relação binária ⇒ no conjunto C, seja ⇒∗seu fecho re�exivo e transitivo. De�na, para a, b ∈ C
a⇔ b sse a⇒∗ b e b ⇒∗ aclaro que ⇔ é um relação de equivalência.Caso típico: ⇒ é alguma transformação de dados.
Problema: Determinar as classes de equivalência.
Mesma coisa que achar as componentes fortementeconexas dografo com vértices C e arcos dados por ⇒.
Algoritmos em Grafos � 1º sem 2014 7 / 1
![Page 8: S 19.8 CLRS 22am/328/aulas/aula-0327.pdf · Algoritmos em Grafos 1 º sem 2014 7/1. Relações de equivalência Dada uma relação binária )no conjunto C, seja ) seu fecho re exivo](https://reader033.vdocuments.pub/reader033/viewer/2022042913/5f4ba8b6eb172e7a2c431765/html5/thumbnails/8.jpg)
Relações de equivalência
Dada uma relação binária ⇒ no conjunto C, seja ⇒∗seu fecho re�exivo e transitivo. De�na, para a, b ∈ C
a⇔ b sse a⇒∗ b e b ⇒∗ aclaro que ⇔ é um relação de equivalência.Caso típico: ⇒ é alguma transformação de dados.
Problema: Determinar as classes de equivalência.
Mesma coisa que achar as componentes fortementeconexas dografo com vértices C e arcos dados por ⇒.
Algoritmos em Grafos � 1º sem 2014 8 / 1
![Page 9: S 19.8 CLRS 22am/328/aulas/aula-0327.pdf · Algoritmos em Grafos 1 º sem 2014 7/1. Relações de equivalência Dada uma relação binária )no conjunto C, seja ) seu fecho re exivo](https://reader033.vdocuments.pub/reader033/viewer/2022042913/5f4ba8b6eb172e7a2c431765/html5/thumbnails/9.jpg)
Determinando componentes f.c.
Problema: determinar as componentes fortementeconexas
Exemplo: 4 componentes fortemente conexas
11 12
1
0
5
3
2
6 7 8
4
9 10
Algoritmos em Grafos � 1º sem 2014 9 / 1
![Page 10: S 19.8 CLRS 22am/328/aulas/aula-0327.pdf · Algoritmos em Grafos 1 º sem 2014 7/1. Relações de equivalência Dada uma relação binária )no conjunto C, seja ) seu fecho re exivo](https://reader033.vdocuments.pub/reader033/viewer/2022042913/5f4ba8b6eb172e7a2c431765/html5/thumbnails/10.jpg)
Exemplo
v 0 1 2 3 4 5 6 7 8 9 10 11 12
sc[v] 2 1 2 2 2 2 2 3 3 0 0 0 0
11 12
1
0
5
3
2
6 7 8
4
9 10
Algoritmos em Grafos � 1º sem 2014 10 / 1
![Page 11: S 19.8 CLRS 22am/328/aulas/aula-0327.pdf · Algoritmos em Grafos 1 º sem 2014 7/1. Relações de equivalência Dada uma relação binária )no conjunto C, seja ) seu fecho re exivo](https://reader033.vdocuments.pub/reader033/viewer/2022042913/5f4ba8b6eb172e7a2c431765/html5/thumbnails/11.jpg)
Exemplo
v 0 1 2 3 4 5 6 7 8 9 10 11 12
sc[v] 2 1 2 2 2 2 2 3 3 0 0 0 0
11 12
1
0
5
3
2
6 7 8
4
9 10
Algoritmos em Grafos � 1º sem 2014 11 / 1
![Page 12: S 19.8 CLRS 22am/328/aulas/aula-0327.pdf · Algoritmos em Grafos 1 º sem 2014 7/1. Relações de equivalência Dada uma relação binária )no conjunto C, seja ) seu fecho re exivo](https://reader033.vdocuments.pub/reader033/viewer/2022042913/5f4ba8b6eb172e7a2c431765/html5/thumbnails/12.jpg)
strongreach
int
strongreach(Digraph G,Vertex s,Vertex t)
{
return sc[s]==sc[t];
}
Algoritmos em Grafos � 1º sem 2014 12 / 1
![Page 13: S 19.8 CLRS 22am/328/aulas/aula-0327.pdf · Algoritmos em Grafos 1 º sem 2014 7/1. Relações de equivalência Dada uma relação binária )no conjunto C, seja ) seu fecho re exivo](https://reader033.vdocuments.pub/reader033/viewer/2022042913/5f4ba8b6eb172e7a2c431765/html5/thumbnails/13.jpg)
Força Bruta
int DIGRAPHsc1 (Digraph G) {
Vertex v , w ; int n ;
Graph H = GRAPHinit(G�>V);1 for (v = 0; v < G->V; v++)
2 for (v = w+1; v < G->V; v++)
3 if (DIGRAPHpath(G,v,w)==1&& DIGRAPHpath(G,w,v)==1)
4 GRAPHinsertE(H,v,w);5 n = GRAPHcc(H);6 for (v = 0; v < G->V; v++)
7 sc[v]=cc[v];
8 return n ;
}Algoritmos em Grafos � 1º sem 2014 13 / 1
![Page 14: S 19.8 CLRS 22am/328/aulas/aula-0327.pdf · Algoritmos em Grafos 1 º sem 2014 7/1. Relações de equivalência Dada uma relação binária )no conjunto C, seja ) seu fecho re exivo](https://reader033.vdocuments.pub/reader033/viewer/2022042913/5f4ba8b6eb172e7a2c431765/html5/thumbnails/14.jpg)
Consumo de tempo
O consumo de tempo da função DIGRAPHsc1
para vetor de listas de adjacência é O(V2(V+ A)).
O consumo de tempo da função DIGRAPHsc1
para matriz de adjacência é O(V4).
Algoritmos em Grafos � 1º sem 2014 14 / 1
![Page 15: S 19.8 CLRS 22am/328/aulas/aula-0327.pdf · Algoritmos em Grafos 1 º sem 2014 7/1. Relações de equivalência Dada uma relação binária )no conjunto C, seja ) seu fecho re exivo](https://reader033.vdocuments.pub/reader033/viewer/2022042913/5f4ba8b6eb172e7a2c431765/html5/thumbnails/15.jpg)
Propriedade
Os vértices de uma componente fortemente conexainduzem uma subarborescência em uma �orestaDFS
11 12
1
0
5
3
2
6 7 8
4
9 10
Algoritmos em Grafos � 1º sem 2014 15 / 1
![Page 16: S 19.8 CLRS 22am/328/aulas/aula-0327.pdf · Algoritmos em Grafos 1 º sem 2014 7/1. Relações de equivalência Dada uma relação binária )no conjunto C, seja ) seu fecho re exivo](https://reader033.vdocuments.pub/reader033/viewer/2022042913/5f4ba8b6eb172e7a2c431765/html5/thumbnails/16.jpg)
Digrafo das componentes
O digrafo das componentes de G tem um vérticepara cada componente fortemente conexa e um arcoU-W se G possui um arco com ponta inicial em U eponta �nal em W
Digrafo das componente é um DAG
Algoritmos em Grafos � 1º sem 2014 16 / 1
![Page 17: S 19.8 CLRS 22am/328/aulas/aula-0327.pdf · Algoritmos em Grafos 1 º sem 2014 7/1. Relações de equivalência Dada uma relação binária )no conjunto C, seja ) seu fecho re exivo](https://reader033.vdocuments.pub/reader033/viewer/2022042913/5f4ba8b6eb172e7a2c431765/html5/thumbnails/17.jpg)
Digrafo das componentes
O digrafo das componentes de G tem um vérticepara cada componente fortemente conexa e um arcoU-W se G possui um arco com ponta inicial em U eponta �nal em W
Digrafo das componente é um DAG
Algoritmos em Grafos � 1º sem 2014 17 / 1
![Page 18: S 19.8 CLRS 22am/328/aulas/aula-0327.pdf · Algoritmos em Grafos 1 º sem 2014 7/1. Relações de equivalência Dada uma relação binária )no conjunto C, seja ) seu fecho re exivo](https://reader033.vdocuments.pub/reader033/viewer/2022042913/5f4ba8b6eb172e7a2c431765/html5/thumbnails/18.jpg)
Idéia . . . G e DFS
11 12
1
0
5
3
2
6 7 8
4
9 10
Algoritmos em Grafos � 1º sem 2014 18 / 1
![Page 19: S 19.8 CLRS 22am/328/aulas/aula-0327.pdf · Algoritmos em Grafos 1 º sem 2014 7/1. Relações de equivalência Dada uma relação binária )no conjunto C, seja ) seu fecho re exivo](https://reader033.vdocuments.pub/reader033/viewer/2022042913/5f4ba8b6eb172e7a2c431765/html5/thumbnails/19.jpg)
Idéia . . . G e DFS
11 12
1
0
5
3
2
6 7 8
4
9 10
Algoritmos em Grafos � 1º sem 2014 19 / 1
![Page 20: S 19.8 CLRS 22am/328/aulas/aula-0327.pdf · Algoritmos em Grafos 1 º sem 2014 7/1. Relações de equivalência Dada uma relação binária )no conjunto C, seja ) seu fecho re exivo](https://reader033.vdocuments.pub/reader033/viewer/2022042913/5f4ba8b6eb172e7a2c431765/html5/thumbnails/20.jpg)
Idéia . . . G e DFS
11 12
1
0
5
3
2
6 7 8
4
9 10
Algoritmos em Grafos � 1º sem 2014 20 / 1
![Page 21: S 19.8 CLRS 22am/328/aulas/aula-0327.pdf · Algoritmos em Grafos 1 º sem 2014 7/1. Relações de equivalência Dada uma relação binária )no conjunto C, seja ) seu fecho re exivo](https://reader033.vdocuments.pub/reader033/viewer/2022042913/5f4ba8b6eb172e7a2c431765/html5/thumbnails/21.jpg)
Idéia . . . G e DFS
11 12
1
0
5
3
2
6 7 8
4
9 10
Algoritmos em Grafos � 1º sem 2014 21 / 1
![Page 22: S 19.8 CLRS 22am/328/aulas/aula-0327.pdf · Algoritmos em Grafos 1 º sem 2014 7/1. Relações de equivalência Dada uma relação binária )no conjunto C, seja ) seu fecho re exivo](https://reader033.vdocuments.pub/reader033/viewer/2022042913/5f4ba8b6eb172e7a2c431765/html5/thumbnails/22.jpg)
Idéia . . . G e DFS
11 12
1
0
5
3
2
6 7 8
4
9 10
Algoritmos em Grafos � 1º sem 2014 22 / 1
![Page 23: S 19.8 CLRS 22am/328/aulas/aula-0327.pdf · Algoritmos em Grafos 1 º sem 2014 7/1. Relações de equivalência Dada uma relação binária )no conjunto C, seja ) seu fecho re exivo](https://reader033.vdocuments.pub/reader033/viewer/2022042913/5f4ba8b6eb172e7a2c431765/html5/thumbnails/23.jpg)
Numeração pós-ordem (�nalização)
pos[v] = numeração pós-ordem de vsop[i] = vértice de numeração pós-ordem i
pos[W] = maior numeração pós-ordem de um vérticeem W
11 12
1
0
5
3
2
6 7 8
4
9 10
Algoritmos em Grafos � 1º sem 2014 23 / 1
![Page 24: S 19.8 CLRS 22am/328/aulas/aula-0327.pdf · Algoritmos em Grafos 1 º sem 2014 7/1. Relações de equivalência Dada uma relação binária )no conjunto C, seja ) seu fecho re exivo](https://reader033.vdocuments.pub/reader033/viewer/2022042913/5f4ba8b6eb172e7a2c431765/html5/thumbnails/24.jpg)
Exemplo
v 0 1 2 3 4 5 6 7 8 9 10 11 12
pos[v] 6 5 7 8 9 4 10 11 12 3 1 2 0
11 12
1
0
5
3
2
6 7 8
4
9 10
Algoritmos em Grafos � 1º sem 2014 24 / 1
![Page 25: S 19.8 CLRS 22am/328/aulas/aula-0327.pdf · Algoritmos em Grafos 1 º sem 2014 7/1. Relações de equivalência Dada uma relação binária )no conjunto C, seja ) seu fecho re exivo](https://reader033.vdocuments.pub/reader033/viewer/2022042913/5f4ba8b6eb172e7a2c431765/html5/thumbnails/25.jpg)
Exemplo
i 0 1 2 3 4 5 6 7 8 9 10 11 12
sop[i] 12 10 11 9 5 1 0 2 3 4 6 7 8
11 12
1
0
5
3
2
6 7 8
4
9 10
Algoritmos em Grafos � 1º sem 2014 25 / 1
![Page 26: S 19.8 CLRS 22am/328/aulas/aula-0327.pdf · Algoritmos em Grafos 1 º sem 2014 7/1. Relações de equivalência Dada uma relação binária )no conjunto C, seja ) seu fecho re exivo](https://reader033.vdocuments.pub/reader033/viewer/2022042913/5f4ba8b6eb172e7a2c431765/html5/thumbnails/26.jpg)
Exemplopos[{7,8}] = 12pos[{0, 2, 3, 4, 5,6}] = 10pos[{1}] = 5pos[{9, 10, 11, 12}] = 3
11 12
1
0
5
3
2
6 7 8
4
9 10
Algoritmos em Grafos � 1º sem 2014 26 / 1
![Page 27: S 19.8 CLRS 22am/328/aulas/aula-0327.pdf · Algoritmos em Grafos 1 º sem 2014 7/1. Relações de equivalência Dada uma relação binária )no conjunto C, seja ) seu fecho re exivo](https://reader033.vdocuments.pub/reader033/viewer/2022042913/5f4ba8b6eb172e7a2c431765/html5/thumbnails/27.jpg)
Numeração pós-ordem e componentes f.c.
Se U e W são componentes f.c. e existe arco componta inicial em U e ponta �nal em W, então
pos[U] > pos[W]
11 12
1
0
5
3
2
6 7 8
4
9 10
Algoritmos em Grafos � 1º sem 2014 27 / 1
![Page 28: S 19.8 CLRS 22am/328/aulas/aula-0327.pdf · Algoritmos em Grafos 1 º sem 2014 7/1. Relações de equivalência Dada uma relação binária )no conjunto C, seja ) seu fecho re exivo](https://reader033.vdocuments.pub/reader033/viewer/2022042913/5f4ba8b6eb172e7a2c431765/html5/thumbnails/28.jpg)
Propriedade
Um digrafo G e seu digrafo reverso R têm as mesmascomponentes fortemente conexas
Exemplo: Digrafo G
11 12
1
0
5
3
2
6 7 8
4
9 10
Algoritmos em Grafos � 1º sem 2014 28 / 1
![Page 29: S 19.8 CLRS 22am/328/aulas/aula-0327.pdf · Algoritmos em Grafos 1 º sem 2014 7/1. Relações de equivalência Dada uma relação binária )no conjunto C, seja ) seu fecho re exivo](https://reader033.vdocuments.pub/reader033/viewer/2022042913/5f4ba8b6eb172e7a2c431765/html5/thumbnails/29.jpg)
Propriedade
Um digrafo G e seu digrafo reverso R têm as mesmascomponentes fortemente conexas
Exemplo: Digrafo reverso R de G
11 12
1
0
5
3
2
6 7 8
4
9 10
Algoritmos em Grafos � 1º sem 2014 29 / 1
![Page 30: S 19.8 CLRS 22am/328/aulas/aula-0327.pdf · Algoritmos em Grafos 1 º sem 2014 7/1. Relações de equivalência Dada uma relação binária )no conjunto C, seja ) seu fecho re exivo](https://reader033.vdocuments.pub/reader033/viewer/2022042913/5f4ba8b6eb172e7a2c431765/html5/thumbnails/30.jpg)
Digrafo reverso R
v 0 1 2 3 4 5 6 7 8 9 10 11 12
sc[v] 2 1 2 2 2 2 2 3 3 0 0 0 0
11 12
1
0
5
3
2
6 7 8
4
9 10
Algoritmos em Grafos � 1º sem 2014 30 / 1
![Page 31: S 19.8 CLRS 22am/328/aulas/aula-0327.pdf · Algoritmos em Grafos 1 º sem 2014 7/1. Relações de equivalência Dada uma relação binária )no conjunto C, seja ) seu fecho re exivo](https://reader033.vdocuments.pub/reader033/viewer/2022042913/5f4ba8b6eb172e7a2c431765/html5/thumbnails/31.jpg)
Digrafo reverso R e DFS
v 0 1 2 3 4 5 6 7 8 9 10 11 12
pos[v] 7 8 6 5 4 3 2 1 0 12 9 10 11
11 12
1
0
5
3
2
6 7 8
4
9 10
Algoritmos em Grafos � 1º sem 2014 31 / 1
![Page 32: S 19.8 CLRS 22am/328/aulas/aula-0327.pdf · Algoritmos em Grafos 1 º sem 2014 7/1. Relações de equivalência Dada uma relação binária )no conjunto C, seja ) seu fecho re exivo](https://reader033.vdocuments.pub/reader033/viewer/2022042913/5f4ba8b6eb172e7a2c431765/html5/thumbnails/32.jpg)
Digrafo reverso R e DFS
i 0 1 2 3 4 5 6 7 8 9 10 11 12
sop[i] 8 7 6 5 4 3 2 0 1 10 11 12 9
11 12
1
0
5
3
2
6 7 8
4
9 10
Algoritmos em Grafos � 1º sem 2014 32 / 1
![Page 33: S 19.8 CLRS 22am/328/aulas/aula-0327.pdf · Algoritmos em Grafos 1 º sem 2014 7/1. Relações de equivalência Dada uma relação binária )no conjunto C, seja ) seu fecho re exivo](https://reader033.vdocuments.pub/reader033/viewer/2022042913/5f4ba8b6eb172e7a2c431765/html5/thumbnails/33.jpg)
Digrafo reverso R e DFS
i 0 1 2 3 4 5 6 7 8 9 10 11 12
sop[i] 8 7 6 5 4 3 2 0 1 10 11 12 9
11 12
1
0
5
3
2
6 7 8
4
9 10
Algoritmos em Grafos � 1º sem 2014 33 / 1
![Page 34: S 19.8 CLRS 22am/328/aulas/aula-0327.pdf · Algoritmos em Grafos 1 º sem 2014 7/1. Relações de equivalência Dada uma relação binária )no conjunto C, seja ) seu fecho re exivo](https://reader033.vdocuments.pub/reader033/viewer/2022042913/5f4ba8b6eb172e7a2c431765/html5/thumbnails/34.jpg)
Digrafo G e DFS
i 0 1 2 3 4 5 6 7 8 9 10 11 12
sop[i] 8 7 6 5 4 3 2 0 1 10 11 12 9
11 12
1
0
5
3
2
6 7 8
4
9 10
Algoritmos em Grafos � 1º sem 2014 34 / 1
![Page 35: S 19.8 CLRS 22am/328/aulas/aula-0327.pdf · Algoritmos em Grafos 1 º sem 2014 7/1. Relações de equivalência Dada uma relação binária )no conjunto C, seja ) seu fecho re exivo](https://reader033.vdocuments.pub/reader033/viewer/2022042913/5f4ba8b6eb172e7a2c431765/html5/thumbnails/35.jpg)
Digrafo G e DFS
i 0 1 2 3 4 5 6 7 8 9 10 11 12
sop[i] 8 7 6 5 4 3 2 0 1 10 11 12 9
11 12
1
0
5
3
2
6 7 8
4
9 10
Algoritmos em Grafos � 1º sem 2014 35 / 1
![Page 36: S 19.8 CLRS 22am/328/aulas/aula-0327.pdf · Algoritmos em Grafos 1 º sem 2014 7/1. Relações de equivalência Dada uma relação binária )no conjunto C, seja ) seu fecho re exivo](https://reader033.vdocuments.pub/reader033/viewer/2022042913/5f4ba8b6eb172e7a2c431765/html5/thumbnails/36.jpg)
Digrafo G e DFS
i 0 1 2 3 4 5 6 7 8 9 10 11 12
sop[i] 8 7 6 5 4 3 2 0 1 10 11 12 9
11 12
1
0
5
3
2
6 7 8
4
9 10
Algoritmos em Grafos � 1º sem 2014 36 / 1
![Page 37: S 19.8 CLRS 22am/328/aulas/aula-0327.pdf · Algoritmos em Grafos 1 º sem 2014 7/1. Relações de equivalência Dada uma relação binária )no conjunto C, seja ) seu fecho re exivo](https://reader033.vdocuments.pub/reader033/viewer/2022042913/5f4ba8b6eb172e7a2c431765/html5/thumbnails/37.jpg)
Digrafo G e DFS
i 0 1 2 3 4 5 6 7 8 9 10 11 12
sop[i] 8 7 6 5 4 3 2 0 1 10 11 12 9
11 12
1
0
5
3
2
6 7 8
4
9 10
Algoritmos em Grafos � 1º sem 2014 37 / 1
![Page 38: S 19.8 CLRS 22am/328/aulas/aula-0327.pdf · Algoritmos em Grafos 1 º sem 2014 7/1. Relações de equivalência Dada uma relação binária )no conjunto C, seja ) seu fecho re exivo](https://reader033.vdocuments.pub/reader033/viewer/2022042913/5f4ba8b6eb172e7a2c431765/html5/thumbnails/38.jpg)
Digrafo G e DFS
i 0 1 2 3 4 5 6 7 8 9 10 11 12
sop[i] 8 7 6 5 4 3 2 0 1 10 11 12 9
11 12
1
0
5
3
2
6 7 8
4
9 10
Algoritmos em Grafos � 1º sem 2014 38 / 1
![Page 39: S 19.8 CLRS 22am/328/aulas/aula-0327.pdf · Algoritmos em Grafos 1 º sem 2014 7/1. Relações de equivalência Dada uma relação binária )no conjunto C, seja ) seu fecho re exivo](https://reader033.vdocuments.pub/reader033/viewer/2022042913/5f4ba8b6eb172e7a2c431765/html5/thumbnails/39.jpg)
Algoritmo de Kosaraju
A função devolve o número de componentesfortemente conexas do digrafo G
static int sc[maxV];
static Vertex sop[maxV], sopR[maxV];static int cnt, id;
Além disso, ela armazena no vetor sc o número dacomponente a que o vértice pertence: se o vértice vpertence à k-ésima componente então sc[v] ==
k-1
int DIGRAPHsc (Graph G)
Algoritmos em Grafos � 1º sem 2014 39 / 1
![Page 40: S 19.8 CLRS 22am/328/aulas/aula-0327.pdf · Algoritmos em Grafos 1 º sem 2014 7/1. Relações de equivalência Dada uma relação binária )no conjunto C, seja ) seu fecho re exivo](https://reader033.vdocuments.pub/reader033/viewer/2022042913/5f4ba8b6eb172e7a2c431765/html5/thumbnails/40.jpg)
DIGRAPHsc
int DIGRAPHsc (Digraph G) {
Vertex v ;
int id, i;
1 Digraph R = DIGRAPHreverse(G);
2 cnt = 0;
3 for (v = 0; v < R->V; v++) sc[v]=-1;
4 for (v = 0; v < R->V; v++)
5 if (sc[v] == -1)
6 dfsRsc(R, v, 0);
Algoritmos em Grafos � 1º sem 2014 40 / 1
![Page 41: S 19.8 CLRS 22am/328/aulas/aula-0327.pdf · Algoritmos em Grafos 1 º sem 2014 7/1. Relações de equivalência Dada uma relação binária )no conjunto C, seja ) seu fecho re exivo](https://reader033.vdocuments.pub/reader033/viewer/2022042913/5f4ba8b6eb172e7a2c431765/html5/thumbnails/41.jpg)
DIGRAPHsc
7 for (i = 0; i < G->V; i++)
8 sopR[i] = sop[i];
9 cnt = id = 0;
10 for (v = 0; v < G->V; v++) sc[v]=-1;
11 for (i = G->V-1; i > 0; i--)
12 if (sc[sopR[i]] == -1)
13 dfsRsc(G, sopR[i], id++);
14 DIGRAPHdestroy(R);
15 return id;
}
Algoritmos em Grafos � 1º sem 2014 41 / 1
![Page 42: S 19.8 CLRS 22am/328/aulas/aula-0327.pdf · Algoritmos em Grafos 1 º sem 2014 7/1. Relações de equivalência Dada uma relação binária )no conjunto C, seja ) seu fecho re exivo](https://reader033.vdocuments.pub/reader033/viewer/2022042913/5f4ba8b6eb172e7a2c431765/html5/thumbnails/42.jpg)
dfsRsc
void dfsRsc(Digraph G,Vertex v,int id){
link p;
1 sc[v] = id;
2 for (p =G->adj[v]; p; p = p->next)
3 if (sc[p->w] == -1)
4 dfsRsc(G, p->w, id);
5 pos[v] = cnt; /* não precisa */
6 sop[cnt++] = v;
}
Algoritmos em Grafos � 1º sem 2014 42 / 1
![Page 43: S 19.8 CLRS 22am/328/aulas/aula-0327.pdf · Algoritmos em Grafos 1 º sem 2014 7/1. Relações de equivalência Dada uma relação binária )no conjunto C, seja ) seu fecho re exivo](https://reader033.vdocuments.pub/reader033/viewer/2022042913/5f4ba8b6eb172e7a2c431765/html5/thumbnails/43.jpg)
DIGRAPHreverse
Digraph DIGRAPHreverse (Digraph G) {
1 Vertex v; link p;
2 Digraph R = DIGRAPHinit(G->V);
3 for (v =0; v < G->V; v++)
4 for (p =G->adj[v]; p; p = p->next)
5 DIGRAPHinsertA(G,p->w,v);
6 return R;}
Algoritmos em Grafos � 1º sem 2014 43 / 1
![Page 44: S 19.8 CLRS 22am/328/aulas/aula-0327.pdf · Algoritmos em Grafos 1 º sem 2014 7/1. Relações de equivalência Dada uma relação binária )no conjunto C, seja ) seu fecho re exivo](https://reader033.vdocuments.pub/reader033/viewer/2022042913/5f4ba8b6eb172e7a2c431765/html5/thumbnails/44.jpg)
Consumo de tempo
O consumo de tempo da função DIGRAPHsc éO(V+ A).
Algoritmos em Grafos � 1º sem 2014 44 / 1