Algoritmos em Grafoshumberto/disciplinas/... · 2010. 10. 28. · 2. Gere o grafo transposto GT...
Transcript of Algoritmos em Grafoshumberto/disciplinas/... · 2010. 10. 28. · 2. Gere o grafo transposto GT...
![Page 1: Algoritmos em Grafoshumberto/disciplinas/... · 2010. 10. 28. · 2. Gere o grafo transposto GT (grafo dual) do grafo G. 3. Faça a pesquisa em profundidade em GT, mas considerando](https://reader033.fdocumentos.com/reader033/viewer/2022053110/60806c118a5d1c4eb43202cb/html5/thumbnails/1.jpg)
Universidade Federal de Alfenas
Algoritmos em Grafos
Aula 11 – Conectividade
Prof. Humberto César Brandão de [email protected]
![Page 2: Algoritmos em Grafoshumberto/disciplinas/... · 2010. 10. 28. · 2. Gere o grafo transposto GT (grafo dual) do grafo G. 3. Faça a pesquisa em profundidade em GT, mas considerando](https://reader033.fdocumentos.com/reader033/viewer/2022053110/60806c118a5d1c4eb43202cb/html5/thumbnails/2.jpg)
Discussão preliminar sobre
Conectividade • A conectividade está relacionada a passagem de um
vértice a outro em um grafo através de ligações existentes.
• Está passagem diz respeito a atingibilidade.
• Exemplos na prática:
▫ Um vértice servidor pode enviar mensagens de dados para um determinado cliente?
▫ Você consegue ir de carro da cidade X para a cidade Y?
![Page 3: Algoritmos em Grafoshumberto/disciplinas/... · 2010. 10. 28. · 2. Gere o grafo transposto GT (grafo dual) do grafo G. 3. Faça a pesquisa em profundidade em GT, mas considerando](https://reader033.fdocumentos.com/reader033/viewer/2022053110/60806c118a5d1c4eb43202cb/html5/thumbnails/3.jpg)
Discussão preliminar sobre ConectividadeConectividade em grafos não orientados
b
G0
a
dc
b
G1
a
dc
b
G2
a
dc
b
G3
a
dc
b
G4
a
dc
• Podemos ilustrar a atingibilidade na seqüência acima.
• Dado um gravo trivial G=(V, ), adicionamos sucessivas
ligações ao conjunto de arestas, para aumentarmos a
atingibilidade entre vértices.
![Page 4: Algoritmos em Grafoshumberto/disciplinas/... · 2010. 10. 28. · 2. Gere o grafo transposto GT (grafo dual) do grafo G. 3. Faça a pesquisa em profundidade em GT, mas considerando](https://reader033.fdocumentos.com/reader033/viewer/2022053110/60806c118a5d1c4eb43202cb/html5/thumbnails/4.jpg)
Discussão preliminar sobre ConexidadeConexidade em grafos orientados
b
G0
a
dc
b
G1
a
dc
b
G2
a
dc
b
G3
a
dc
b
G4
a
dc
• A atingibilidade entre vértices também pode ser observada
em grafos orientados.
• Vejamos a seqüência abaixo:
![Page 5: Algoritmos em Grafoshumberto/disciplinas/... · 2010. 10. 28. · 2. Gere o grafo transposto GT (grafo dual) do grafo G. 3. Faça a pesquisa em profundidade em GT, mas considerando](https://reader033.fdocumentos.com/reader033/viewer/2022053110/60806c118a5d1c4eb43202cb/html5/thumbnails/5.jpg)
Tipos de ConectividadePara grafos orientados ou não
• Conexo ou não conexo (definição)
▫ “Um grafo é não conexo (desconexo) se nele existir ao menos um par de vértices não unidos por uma cadeira”
Pares não unidos por uma cadeira:
•(a,c)
•(a,d)
•(b,c)
•(b,d)
G0
a b
c
d
![Page 6: Algoritmos em Grafoshumberto/disciplinas/... · 2010. 10. 28. · 2. Gere o grafo transposto GT (grafo dual) do grafo G. 3. Faça a pesquisa em profundidade em GT, mas considerando](https://reader033.fdocumentos.com/reader033/viewer/2022053110/60806c118a5d1c4eb43202cb/html5/thumbnails/6.jpg)
Tipos de Conexidade
Para grafos orientados ou não
• Conexo ou não conexo (definição)
▫ “Um grafo é não conexo (desconexo) se nele existir ao menos um par de vértices não unidos por uma cadeira”
Pares não unidos por uma cadeira:
•(a,e), (a,f), (a,g), (a,h),
•(b,e), (b,f), (b,g), (b,h),
•(c,e), (c,f), (c,g), (c,h),
•(d,e), (d,f), (d,g), (d,h);
G1
a b
c d
e f
g h
![Page 7: Algoritmos em Grafoshumberto/disciplinas/... · 2010. 10. 28. · 2. Gere o grafo transposto GT (grafo dual) do grafo G. 3. Faça a pesquisa em profundidade em GT, mas considerando](https://reader033.fdocumentos.com/reader033/viewer/2022053110/60806c118a5d1c4eb43202cb/html5/thumbnails/7.jpg)
Tipos de Conectividade
Em grafos orientados
• Os grafos GA, GB e GC são conexos, mas possuem diferenças fundamentais de atingibilidade...
b
GA
a
dc
b
GB
a
dc
b
GC
a
dc
![Page 8: Algoritmos em Grafoshumberto/disciplinas/... · 2010. 10. 28. · 2. Gere o grafo transposto GT (grafo dual) do grafo G. 3. Faça a pesquisa em profundidade em GT, mas considerando](https://reader033.fdocumentos.com/reader033/viewer/2022053110/60806c118a5d1c4eb43202cb/html5/thumbnails/8.jpg)
Tipos de ConexidadeSimplesmente conexo (s-conexo)
• s-conexo (simplesmente conexo): ▫ todo par de vértices é unido por ao menos uma cadeia
b
G s-conexo
a d
c
Não existe percurso de b para
d e nem de d para b, mas
estes vértices estão ligados
por uma cadeia de arcos:
•(c,b); (c,d)
![Page 9: Algoritmos em Grafoshumberto/disciplinas/... · 2010. 10. 28. · 2. Gere o grafo transposto GT (grafo dual) do grafo G. 3. Faça a pesquisa em profundidade em GT, mas considerando](https://reader033.fdocumentos.com/reader033/viewer/2022053110/60806c118a5d1c4eb43202cb/html5/thumbnails/9.jpg)
Tipos de ConexidadeSemi-fortemente conexo (sf-conexo)
• sf-conexo (semi-fortemente conexo): ▫ Em todo par de vértices, ao menos um dos vértices é atingível
a partir do outro
b
G sf-conexo
a
dc
Não existe percurso de b para
a, mas existe percurso de a
para b.
![Page 10: Algoritmos em Grafoshumberto/disciplinas/... · 2010. 10. 28. · 2. Gere o grafo transposto GT (grafo dual) do grafo G. 3. Faça a pesquisa em profundidade em GT, mas considerando](https://reader033.fdocumentos.com/reader033/viewer/2022053110/60806c118a5d1c4eb43202cb/html5/thumbnails/10.jpg)
Tipos de ConexidadeFortemente conexo (f-conexo)
• f-conexo (fortemente conexo): ▫ Em todo par de vértices, os vértices são mutuamente atingíveis.
e
f g
G2 f-conexo
ba
dc
G1 f-conexo
![Page 11: Algoritmos em Grafoshumberto/disciplinas/... · 2010. 10. 28. · 2. Gere o grafo transposto GT (grafo dual) do grafo G. 3. Faça a pesquisa em profundidade em GT, mas considerando](https://reader033.fdocumentos.com/reader033/viewer/2022053110/60806c118a5d1c4eb43202cb/html5/thumbnails/11.jpg)
Tipos de ConexidadeObservações
• Nos grafos orientados, podemos notar que:▫ Todo grafo f-conexo é também um grafo sf-conexo;
▫ Todo grafo sf-conexo é também um grafo s-conexo;
s-conexosf-conexof-conexo desconexos
![Page 12: Algoritmos em Grafoshumberto/disciplinas/... · 2010. 10. 28. · 2. Gere o grafo transposto GT (grafo dual) do grafo G. 3. Faça a pesquisa em profundidade em GT, mas considerando](https://reader033.fdocumentos.com/reader033/viewer/2022053110/60806c118a5d1c4eb43202cb/html5/thumbnails/12.jpg)
Tipos de ConexidadeAplicações
s-conexosf-conexof-conexo desconexos
Atenção especial para os conjuntos
• C1 = (s-conexo) – (sf-conexo)
• C2 = (sf-conexo) – (f-conexo)
• Os conjuntos C1 e C2 contem grafos cujos alguns
vértices são privilegiados, em relação a outros.
• Muitas aplicações em redes, por exemplo, precisam
desta representação
![Page 13: Algoritmos em Grafoshumberto/disciplinas/... · 2010. 10. 28. · 2. Gere o grafo transposto GT (grafo dual) do grafo G. 3. Faça a pesquisa em profundidade em GT, mas considerando](https://reader033.fdocumentos.com/reader033/viewer/2022053110/60806c118a5d1c4eb43202cb/html5/thumbnails/13.jpg)
Componentes fortemente conectados
• Um componente fortemente conectado de um grafo orientado G = (V,A) é um conjunto máximo de vérticesC V tal que, para todo par de vértices u e v em C, temos que os vértices u e v são acessíveis um a partir do outro.
ba
fe g
c d
h
Componente 1
Componente 2
Componente 3
Componente 4
![Page 14: Algoritmos em Grafoshumberto/disciplinas/... · 2010. 10. 28. · 2. Gere o grafo transposto GT (grafo dual) do grafo G. 3. Faça a pesquisa em profundidade em GT, mas considerando](https://reader033.fdocumentos.com/reader033/viewer/2022053110/60806c118a5d1c4eb43202cb/html5/thumbnails/14.jpg)
Componentes fortemente conexosObservação
• Todo grafo que possui apenas um componente conexo é fortemente conexo (f-conexo)
• Exemplo já visto anteriormente:
ba
dc
Componente 1
![Page 15: Algoritmos em Grafoshumberto/disciplinas/... · 2010. 10. 28. · 2. Gere o grafo transposto GT (grafo dual) do grafo G. 3. Faça a pesquisa em profundidade em GT, mas considerando](https://reader033.fdocumentos.com/reader033/viewer/2022053110/60806c118a5d1c4eb43202cb/html5/thumbnails/15.jpg)
Grafos Reduzidos
![Page 16: Algoritmos em Grafoshumberto/disciplinas/... · 2010. 10. 28. · 2. Gere o grafo transposto GT (grafo dual) do grafo G. 3. Faça a pesquisa em profundidade em GT, mas considerando](https://reader033.fdocumentos.com/reader033/viewer/2022053110/60806c118a5d1c4eb43202cb/html5/thumbnails/16.jpg)
Grafos ReduzidosDefinição
• “Define-se um grafo Gr, obtido de G, através de uma seqüência de contrações de vértices, feitas de um critério predefinido.”
Minas
SP RJ
BH
VarginhaAlfenas
SP
Santos
Rio Niterói
Grafo
Grafo reduzido
Critério: Agrupar por estado da federação
![Page 17: Algoritmos em Grafoshumberto/disciplinas/... · 2010. 10. 28. · 2. Gere o grafo transposto GT (grafo dual) do grafo G. 3. Faça a pesquisa em profundidade em GT, mas considerando](https://reader033.fdocumentos.com/reader033/viewer/2022053110/60806c118a5d1c4eb43202cb/html5/thumbnails/17.jpg)
Grafos ReduzidosRedução utilizando o critério de componentes fortemente conexos
ba
fe g
c d
h
Componente 1
Componente 2
Componente 3
Componente 4
G
Gr 1
2
3 4
Aplicações em redes!!!
Para montar tabelas de
encaminhamento
![Page 18: Algoritmos em Grafoshumberto/disciplinas/... · 2010. 10. 28. · 2. Gere o grafo transposto GT (grafo dual) do grafo G. 3. Faça a pesquisa em profundidade em GT, mas considerando](https://reader033.fdocumentos.com/reader033/viewer/2022053110/60806c118a5d1c4eb43202cb/html5/thumbnails/18.jpg)
Redução por componentes fortemente conexosAlgoritmo
• Existem diferentes algoritmos para decomposição por
conectividade.
• Uma implementação eficiente faz uso do algoritmo de
busca em profundidade para identificar as componentes
conexos.
![Page 19: Algoritmos em Grafoshumberto/disciplinas/... · 2010. 10. 28. · 2. Gere o grafo transposto GT (grafo dual) do grafo G. 3. Faça a pesquisa em profundidade em GT, mas considerando](https://reader033.fdocumentos.com/reader033/viewer/2022053110/60806c118a5d1c4eb43202cb/html5/thumbnails/19.jpg)
Redução por componentes fortemente conexosAlgoritmo: Componentes fortemente conexos
1. Faça a pesquisa em profundidade em G e calcule o tempo de finalização em cada vértice u;
2. Gere o grafo transposto GT (grafo dual) do grafo G.
3. Faça a pesquisa em profundidade em GT, mas considerando os vértices acessíveis na ordem decrescente ao seu tempo de finalização encontrado no passo 1.
Cada árvore da floresta primeiro em profundidade encontrada no passo 3, corresponde a um componente fortemente conexo de G.
Vamos fazer um acompanhamento...
![Page 20: Algoritmos em Grafoshumberto/disciplinas/... · 2010. 10. 28. · 2. Gere o grafo transposto GT (grafo dual) do grafo G. 3. Faça a pesquisa em profundidade em GT, mas considerando](https://reader033.fdocumentos.com/reader033/viewer/2022053110/60806c118a5d1c4eb43202cb/html5/thumbnails/20.jpg)
Redução por componentes fortemente conexosAlgoritmo: Componentes fortemente conexos
Retomando ao final do do passo 1
Lista em ordem decrescente ao tempo de finalização:
[ a, b, e, c, d, g, h, f ]
12/1511/16
3/413/14 2/7
1/10 8/9
5/6
a b c d
e f g h
Armazenar para
usar no passo 3.
//
// /
/ /
/
a b c d
e f g hPasso 1: Aplique a DFS
no grafo original
G=(V,A)
![Page 21: Algoritmos em Grafoshumberto/disciplinas/... · 2010. 10. 28. · 2. Gere o grafo transposto GT (grafo dual) do grafo G. 3. Faça a pesquisa em profundidade em GT, mas considerando](https://reader033.fdocumentos.com/reader033/viewer/2022053110/60806c118a5d1c4eb43202cb/html5/thumbnails/21.jpg)
Redução por componentes fortemente conexosAlgoritmo: Componentes fortemente conexos
Passo 2: Gere GT
//
// /
/ /
/
a b c d
e f g h
Lista em ordem decrescente ao tempo de finalização:
[ a, b, e, c, d, g, h, f ]
//
// /
/ /
/
a b c d
e f g h
![Page 22: Algoritmos em Grafoshumberto/disciplinas/... · 2010. 10. 28. · 2. Gere o grafo transposto GT (grafo dual) do grafo G. 3. Faça a pesquisa em profundidade em GT, mas considerando](https://reader033.fdocumentos.com/reader033/viewer/2022053110/60806c118a5d1c4eb43202cb/html5/thumbnails/22.jpg)
Redução por componentes fortemente conexosAlgoritmo: Componentes fortemente conexos
Passo 3: Efetue a busca em profundidade em GT ordem armazenada
Lista em ordem decrescente ao tempo de finalização:
[ a, b, e, c, d, g, h, f ]
//
// /
/ /
/
a b c d
e f g h
• Última ação: Capturando primeiro da lista de vértices disponíveis a ser explorado
GT
![Page 23: Algoritmos em Grafoshumberto/disciplinas/... · 2010. 10. 28. · 2. Gere o grafo transposto GT (grafo dual) do grafo G. 3. Faça a pesquisa em profundidade em GT, mas considerando](https://reader033.fdocumentos.com/reader033/viewer/2022053110/60806c118a5d1c4eb43202cb/html5/thumbnails/23.jpg)
Redução por componentes fortemente conexosAlgoritmo: Componentes fortemente conexos
Passo 3: Efetue a busca em profundidade em GT ordem armazenada
Lista em ordem decrescente ao tempo de finalização:
[ b, e, c, d, g, h, f ]
• Última ação: Vértice a é encontrado.
GT
/1/
// /
/ /
/
a b c d
e f g h
Contador = 1
![Page 24: Algoritmos em Grafoshumberto/disciplinas/... · 2010. 10. 28. · 2. Gere o grafo transposto GT (grafo dual) do grafo G. 3. Faça a pesquisa em profundidade em GT, mas considerando](https://reader033.fdocumentos.com/reader033/viewer/2022053110/60806c118a5d1c4eb43202cb/html5/thumbnails/24.jpg)
Redução por componentes fortemente conexosAlgoritmo: Componentes fortemente conexos
Passo 3: Efetue a busca em profundidade em GT ordem armazenada
Lista em ordem decrescente ao tempo de finalização:
[ b, e, c, d, g, h, f ]
• Última ação: Vértice e é encontrado.
GT
Contador = 2
/1/
/2/ /
/ /
/
a b c d
e f g h
![Page 25: Algoritmos em Grafoshumberto/disciplinas/... · 2010. 10. 28. · 2. Gere o grafo transposto GT (grafo dual) do grafo G. 3. Faça a pesquisa em profundidade em GT, mas considerando](https://reader033.fdocumentos.com/reader033/viewer/2022053110/60806c118a5d1c4eb43202cb/html5/thumbnails/25.jpg)
Redução por componentes fortemente conexosAlgoritmo: Componentes fortemente conexos
Passo 3: Efetue a busca em profundidade em GT ordem armazenada
Lista em ordem decrescente ao tempo de finalização:
[ b, e, c, d, g, h, f ]
• Última ação: Vértice b é encontrado.
GT
Contador = 3
3/1/
/2/ /
/ /
/
a b c d
e f g h
![Page 26: Algoritmos em Grafoshumberto/disciplinas/... · 2010. 10. 28. · 2. Gere o grafo transposto GT (grafo dual) do grafo G. 3. Faça a pesquisa em profundidade em GT, mas considerando](https://reader033.fdocumentos.com/reader033/viewer/2022053110/60806c118a5d1c4eb43202cb/html5/thumbnails/26.jpg)
Redução por componentes fortemente conexosAlgoritmo: Componentes fortemente conexos
Passo 3: Efetue a busca em profundidade em GT ordem armazenada
Lista em ordem decrescente ao tempo de finalização:
[ b, e, c, d, g, h, f ]
• Última ação: Vértice b é finalizado.
GT
Contador = 4
3/41/
/2/ /
/ /
/
a b c d
e f g h
![Page 27: Algoritmos em Grafoshumberto/disciplinas/... · 2010. 10. 28. · 2. Gere o grafo transposto GT (grafo dual) do grafo G. 3. Faça a pesquisa em profundidade em GT, mas considerando](https://reader033.fdocumentos.com/reader033/viewer/2022053110/60806c118a5d1c4eb43202cb/html5/thumbnails/27.jpg)
Redução por componentes fortemente conexosAlgoritmo: Componentes fortemente conexos
Passo 3: Efetue a busca em profundidade em GT ordem armazenada
• Última ação: Vértice e é finalizado.
Lista em ordem decrescente ao tempo de finalização:
[ b, e, c, d, g, h, f ]
GT
Contador = 5
3/41/
/2/5 /
/ /
/
a b c d
e f g h
![Page 28: Algoritmos em Grafoshumberto/disciplinas/... · 2010. 10. 28. · 2. Gere o grafo transposto GT (grafo dual) do grafo G. 3. Faça a pesquisa em profundidade em GT, mas considerando](https://reader033.fdocumentos.com/reader033/viewer/2022053110/60806c118a5d1c4eb43202cb/html5/thumbnails/28.jpg)
Redução por componentes fortemente conexosAlgoritmo: Componentes fortemente conexos
Passo 3: Efetue a busca em profundidade em GT ordem armazenada
• Última ação: Vértice a é finalizado.
Lista em ordem decrescente ao tempo de finalização:
[ b, e, c, d, g, h, f ]
GT
Contador = 6
3/41/6
/2/5 /
/ /
/
a b c d
e f g h
![Page 29: Algoritmos em Grafoshumberto/disciplinas/... · 2010. 10. 28. · 2. Gere o grafo transposto GT (grafo dual) do grafo G. 3. Faça a pesquisa em profundidade em GT, mas considerando](https://reader033.fdocumentos.com/reader033/viewer/2022053110/60806c118a5d1c4eb43202cb/html5/thumbnails/29.jpg)
Redução por componentes fortemente conexosAlgoritmo: Componentes fortemente conexos
Passo 3: Efetue a busca em profundidade em GT ordem armazenada
Lista em ordem decrescente ao tempo de finalização:
[ b, e, c, d, g, h, f ]
• Neste momento a busca em GT não possui mais caminhamento, então os vértices encontrados com raiz no vértice a formam um componente fortemente conexo em G.
GT
Contador = 6
3/41/6
/2/5 /
/ /
/
a b c d
e f g h
![Page 30: Algoritmos em Grafoshumberto/disciplinas/... · 2010. 10. 28. · 2. Gere o grafo transposto GT (grafo dual) do grafo G. 3. Faça a pesquisa em profundidade em GT, mas considerando](https://reader033.fdocumentos.com/reader033/viewer/2022053110/60806c118a5d1c4eb43202cb/html5/thumbnails/30.jpg)
Redução por componentes fortemente conexosAlgoritmo: Componentes fortemente conexos
Passo 3: Efetue a busca em profundidade em GT ordem armazenada
Lista em ordem decrescente ao tempo de finalização:
[ b, e, c, d, g, h, f ]
• Última ação: capturando o próximo vértice não visitado da lista.Vértice c.
GT
Contador = 6
3/41/6
/2/5 /
/ /
/
a b c d
e f g h
![Page 31: Algoritmos em Grafoshumberto/disciplinas/... · 2010. 10. 28. · 2. Gere o grafo transposto GT (grafo dual) do grafo G. 3. Faça a pesquisa em profundidade em GT, mas considerando](https://reader033.fdocumentos.com/reader033/viewer/2022053110/60806c118a5d1c4eb43202cb/html5/thumbnails/31.jpg)
Redução por componentes fortemente conexosAlgoritmo: Componentes fortemente conexos
Passo 3: Efetue a busca em profundidade em GT ordem armazenada
Lista em ordem decrescente ao tempo de finalização:
[ d, g, h, f ]
• Última ação: Vértice c foi encontrado.
GT
Contador = 7
3/41/6
/2/5 /
7/ /
/
a b c d
e f g h
![Page 32: Algoritmos em Grafoshumberto/disciplinas/... · 2010. 10. 28. · 2. Gere o grafo transposto GT (grafo dual) do grafo G. 3. Faça a pesquisa em profundidade em GT, mas considerando](https://reader033.fdocumentos.com/reader033/viewer/2022053110/60806c118a5d1c4eb43202cb/html5/thumbnails/32.jpg)
Redução por componentes fortemente conexosAlgoritmo: Componentes fortemente conexos
Passo 3: Efetue a busca em profundidade em GT ordem armazenada
Lista em ordem decrescente ao tempo de finalização:
[ d, g, h, f ]
• Última ação: Vértice d foi encontrado.
GT
Contador = 8
3/41/6
/2/5 /
7/ 8/
/
a b c d
e f g h
![Page 33: Algoritmos em Grafoshumberto/disciplinas/... · 2010. 10. 28. · 2. Gere o grafo transposto GT (grafo dual) do grafo G. 3. Faça a pesquisa em profundidade em GT, mas considerando](https://reader033.fdocumentos.com/reader033/viewer/2022053110/60806c118a5d1c4eb43202cb/html5/thumbnails/33.jpg)
Redução por componentes fortemente conexosAlgoritmo: Componentes fortemente conexos
Passo 3: Efetue a busca em profundidade em GT ordem armazenada
Lista em ordem decrescente ao tempo de finalização:
[ d, g, h, f ]
• Última ação: Vértice d foi finalizado.
GT
Contador = 9
3/41/6
/2/5 /
7/ 8/9
/
a b c d
e f g h
![Page 34: Algoritmos em Grafoshumberto/disciplinas/... · 2010. 10. 28. · 2. Gere o grafo transposto GT (grafo dual) do grafo G. 3. Faça a pesquisa em profundidade em GT, mas considerando](https://reader033.fdocumentos.com/reader033/viewer/2022053110/60806c118a5d1c4eb43202cb/html5/thumbnails/34.jpg)
Redução por componentes fortemente conexosAlgoritmo: Componentes fortemente conexos
Passo 3: Efetue a busca em profundidade em GT ordem armazenada
Lista em ordem decrescente ao tempo de finalização:
[ d, g, h, f ]
• Última ação: Vértice c foi finalizado.
GT
Contador = 10
3/41/6
/2/5 /
7/10 8/9
/
a b c d
e f g h
![Page 35: Algoritmos em Grafoshumberto/disciplinas/... · 2010. 10. 28. · 2. Gere o grafo transposto GT (grafo dual) do grafo G. 3. Faça a pesquisa em profundidade em GT, mas considerando](https://reader033.fdocumentos.com/reader033/viewer/2022053110/60806c118a5d1c4eb43202cb/html5/thumbnails/35.jpg)
Redução por componentes fortemente conexosAlgoritmo: Componentes fortemente conexos
Passo 3: Efetue a busca em profundidade em GT ordem armazenada
Lista em ordem decrescente ao tempo de finalização:
[ b, e, c, d, g, h, f ]
• Neste momento a busca em GT não possui mais caminhamento, então os vértices encontrados com raiz no vértice c formam um componente fortemente conexo em G.
GT
Contador = 10
3/41/6
/2/5 /
7/10 8/9
/
a b c d
e f g h
![Page 36: Algoritmos em Grafoshumberto/disciplinas/... · 2010. 10. 28. · 2. Gere o grafo transposto GT (grafo dual) do grafo G. 3. Faça a pesquisa em profundidade em GT, mas considerando](https://reader033.fdocumentos.com/reader033/viewer/2022053110/60806c118a5d1c4eb43202cb/html5/thumbnails/36.jpg)
Redução por componentes fortemente conexosAlgoritmo: Componentes fortemente conexos
Passo 3: Efetue a busca em profundidade em GT ordem armazenada
Lista em ordem decrescente ao tempo de finalização:
[ d, g, h, f ]
• Última ação: capturando o próximo vértice não visitado da lista.Vértice g.
GT
Contador = 10
3/41/6
/2/5 /
7/10 8/9
/
a b c d
e f g h
![Page 37: Algoritmos em Grafoshumberto/disciplinas/... · 2010. 10. 28. · 2. Gere o grafo transposto GT (grafo dual) do grafo G. 3. Faça a pesquisa em profundidade em GT, mas considerando](https://reader033.fdocumentos.com/reader033/viewer/2022053110/60806c118a5d1c4eb43202cb/html5/thumbnails/37.jpg)
Redução por componentes fortemente conexosAlgoritmo: Componentes fortemente conexos
Passo 3: Efetue a busca em profundidade em GT ordem armazenada
Lista em ordem decrescente ao tempo de finalização:
[ h, f ]
• Última ação: Vértice g foi encontrado.
GT
Contador = 11
3/41/6
/2/5 11/
7/10 8/9
/
a b c d
e f g h
![Page 38: Algoritmos em Grafoshumberto/disciplinas/... · 2010. 10. 28. · 2. Gere o grafo transposto GT (grafo dual) do grafo G. 3. Faça a pesquisa em profundidade em GT, mas considerando](https://reader033.fdocumentos.com/reader033/viewer/2022053110/60806c118a5d1c4eb43202cb/html5/thumbnails/38.jpg)
Redução por componentes fortemente conexosAlgoritmo: Componentes fortemente conexos
Passo 3: Efetue a busca em profundidade em GT ordem armazenada
Lista em ordem decrescente ao tempo de finalização:
[ h, f ]
• Última ação: Vértice f foi encontrado.
GT
Contador = 12
3/41/6
12/2/5 11/
7/10 8/9
/
a b c d
e f g h
![Page 39: Algoritmos em Grafoshumberto/disciplinas/... · 2010. 10. 28. · 2. Gere o grafo transposto GT (grafo dual) do grafo G. 3. Faça a pesquisa em profundidade em GT, mas considerando](https://reader033.fdocumentos.com/reader033/viewer/2022053110/60806c118a5d1c4eb43202cb/html5/thumbnails/39.jpg)
Redução por componentes fortemente conexosAlgoritmo: Componentes fortemente conexos
Passo 3: Efetue a busca em profundidade em GT ordem armazenada
Lista em ordem decrescente ao tempo de finalização:
[ h, f ]
• Última ação: Vértice f foi finalizado.
GT
Contador = 13
3/41/6
12/132/5 11/
7/10 8/9
/
a b c d
e f g h
![Page 40: Algoritmos em Grafoshumberto/disciplinas/... · 2010. 10. 28. · 2. Gere o grafo transposto GT (grafo dual) do grafo G. 3. Faça a pesquisa em profundidade em GT, mas considerando](https://reader033.fdocumentos.com/reader033/viewer/2022053110/60806c118a5d1c4eb43202cb/html5/thumbnails/40.jpg)
Redução por componentes fortemente conexosAlgoritmo: Componentes fortemente conexos
Passo 3: Efetue a busca em profundidade em GT ordem armazenada
Lista em ordem decrescente ao tempo de finalização:
[ h, f ]
• Última ação: Vértice g foi finalizado.
GT
Contador = 14
3/41/6
12/132/5 11/14
7/10 8/9
/
a b c d
e f g h
![Page 41: Algoritmos em Grafoshumberto/disciplinas/... · 2010. 10. 28. · 2. Gere o grafo transposto GT (grafo dual) do grafo G. 3. Faça a pesquisa em profundidade em GT, mas considerando](https://reader033.fdocumentos.com/reader033/viewer/2022053110/60806c118a5d1c4eb43202cb/html5/thumbnails/41.jpg)
Redução por componentes fortemente conexosAlgoritmo: Componentes fortemente conexos
Passo 3: Efetue a busca em profundidade em GT ordem armazenada
Lista em ordem decrescente ao tempo de finalização:
[ h, f ]
• Neste momento a busca em GT não possui mais caminhamento, então os vértices encontrados com raiz no vértice g formam um componente fortemente conexo em G.
GT
Contador = 14
3/41/6
12/132/5 11/14
7/10 8/9
/
a b c d
e f g h
![Page 42: Algoritmos em Grafoshumberto/disciplinas/... · 2010. 10. 28. · 2. Gere o grafo transposto GT (grafo dual) do grafo G. 3. Faça a pesquisa em profundidade em GT, mas considerando](https://reader033.fdocumentos.com/reader033/viewer/2022053110/60806c118a5d1c4eb43202cb/html5/thumbnails/42.jpg)
Redução por componentes fortemente conexosAlgoritmo: Componentes fortemente conexos
Passo 3: Efetue a busca em profundidade em GT ordem armazenada
Lista em ordem decrescente ao tempo de finalização:
[ h, f ]
• Última ação: capturando o próximo vértice não visitado da lista.Vértice h.
GT
Contador = 14
3/41/6
12/132/5 11/14
7/10 8/9
/
a b c d
e f g h
![Page 43: Algoritmos em Grafoshumberto/disciplinas/... · 2010. 10. 28. · 2. Gere o grafo transposto GT (grafo dual) do grafo G. 3. Faça a pesquisa em profundidade em GT, mas considerando](https://reader033.fdocumentos.com/reader033/viewer/2022053110/60806c118a5d1c4eb43202cb/html5/thumbnails/43.jpg)
Redução por componentes fortemente conexosAlgoritmo: Componentes fortemente conexos
Passo 3: Efetue a busca em profundidade em GT ordem armazenada
Lista em ordem decrescente ao tempo de finalização:
[ f ]
• Última ação: Vértice h foi encontrado.
GT
Contador = 15
3/41/6
12/132/5 11/14
7/10 8/9
15/
a b c d
e f g h
![Page 44: Algoritmos em Grafoshumberto/disciplinas/... · 2010. 10. 28. · 2. Gere o grafo transposto GT (grafo dual) do grafo G. 3. Faça a pesquisa em profundidade em GT, mas considerando](https://reader033.fdocumentos.com/reader033/viewer/2022053110/60806c118a5d1c4eb43202cb/html5/thumbnails/44.jpg)
Redução por componentes fortemente conexosAlgoritmo: Componentes fortemente conexos
Passo 3: Efetue a busca em profundidade em GT ordem armazenada
Lista em ordem decrescente ao tempo de finalização:
[ f ]
• Última ação: Vértice h foi finalizado.
GT
Contador = 16
3/41/6
12/132/5 11/14
7/10 8/9
15/16
a b c d
e f g h
![Page 45: Algoritmos em Grafoshumberto/disciplinas/... · 2010. 10. 28. · 2. Gere o grafo transposto GT (grafo dual) do grafo G. 3. Faça a pesquisa em profundidade em GT, mas considerando](https://reader033.fdocumentos.com/reader033/viewer/2022053110/60806c118a5d1c4eb43202cb/html5/thumbnails/45.jpg)
Redução por componentes fortemente conexosAlgoritmo: Componentes fortemente conexos
Passo 3: Efetue a busca em profundidade em GT ordem armazenada
Lista em ordem decrescente ao tempo de finalização:
[ f ]
• Neste momento a busca em GT não possui mais caminhamento, então os vértices encontrados com raiz no vértice h formam um componente fortemente conexo em G.
GT
Contador = 16
3/41/6
12/132/5 11/14
7/10 8/9
15/16
a b c d
e f g h
![Page 46: Algoritmos em Grafoshumberto/disciplinas/... · 2010. 10. 28. · 2. Gere o grafo transposto GT (grafo dual) do grafo G. 3. Faça a pesquisa em profundidade em GT, mas considerando](https://reader033.fdocumentos.com/reader033/viewer/2022053110/60806c118a5d1c4eb43202cb/html5/thumbnails/46.jpg)
Redução por componentes fortemente conexosAlgoritmo: Componentes fortemente conexos
Lembrete
• Os componentes encontrados são referentes a G, e não a GT.
3/41/6
12/132/5 11/14
7/10 8/9
15/16
a b c d
e f g h
GT
ba
fe g
c d
h
Componente 1
Componente 2
Componente 3
Componente 4
G
![Page 47: Algoritmos em Grafoshumberto/disciplinas/... · 2010. 10. 28. · 2. Gere o grafo transposto GT (grafo dual) do grafo G. 3. Faça a pesquisa em profundidade em GT, mas considerando](https://reader033.fdocumentos.com/reader033/viewer/2022053110/60806c118a5d1c4eb43202cb/html5/thumbnails/47.jpg)
Redução por componentes fortemente conexosAlgoritmo: Componentes fortemente conexos
Discussão da complexidade do algoritmo
• Busca em profundidade sobre G: (|V|+|A|)
• Cálculo de GT:(|V|+|A|)
• Busca em profundidade sobre GT: (|V|+|A|)
• Assim, a complexidade de tempo de todo o algoritmo é (|V|+|A|)
![Page 48: Algoritmos em Grafoshumberto/disciplinas/... · 2010. 10. 28. · 2. Gere o grafo transposto GT (grafo dual) do grafo G. 3. Faça a pesquisa em profundidade em GT, mas considerando](https://reader033.fdocumentos.com/reader033/viewer/2022053110/60806c118a5d1c4eb43202cb/html5/thumbnails/48.jpg)
Exercício
• Proponha um grafo com 12 vértices (qualquer), com no mínimo 4 componentes fortemente conexos e faça o acompanhamento do algoritmo apresentado.
![Page 49: Algoritmos em Grafoshumberto/disciplinas/... · 2010. 10. 28. · 2. Gere o grafo transposto GT (grafo dual) do grafo G. 3. Faça a pesquisa em profundidade em GT, mas considerando](https://reader033.fdocumentos.com/reader033/viewer/2022053110/60806c118a5d1c4eb43202cb/html5/thumbnails/49.jpg)
Bibliografia
• CORMEN, T. H.; LEISERSON, C. E.; RIVEST, R. L.; (2002). Algoritmos – Teoria e Prática. Tradução da 2ª edição americana. Rio de Janeiro. Editora Campus.
• ZIVIANI, N. (2007). Projeto e Algoritmos com implementações em Java e C++. São Paulo. Editora Thomson;
49