Grafos - FACOMmadriana/EBD/Didatica.pdf1 Denic‚oesŸ Basicas· de Grafos Denic‚aoŸ de Grafo...

33
Definic ¸˜ oes B ´ asicas de Grafos Busca em Profundidade Ordenac ¸˜ ao Topol´ ogica Componentes Conexos Grafos Ordenac ¸˜ ao Topol´ ogica Componentes Conexos Maria Adriana Vidigal de Lima Fevereiro - 2009 Maria Adriana Vidigal de Lima Grafos

Transcript of Grafos - FACOMmadriana/EBD/Didatica.pdf1 Denic‚oesŸ Basicas· de Grafos Denic‚aoŸ de Grafo...

Page 1: Grafos - FACOMmadriana/EBD/Didatica.pdf1 Denic‚oesŸ Basicas· de Grafos Denic‚aoŸ de Grafo Listas de Adjacencias‹ de Grafos 2 Busca em Profundidade Tecnicas· da Busca em Profundidade

Definicoes Basicas de GrafosBusca em Profundidade

Ordenacao TopologicaComponentes Conexos

GrafosOrdenacao TopologicaComponentes Conexos

Maria Adriana Vidigal de Lima

Fevereiro - 2009

Maria Adriana Vidigal de Lima Grafos

Page 2: Grafos - FACOMmadriana/EBD/Didatica.pdf1 Denic‚oesŸ Basicas· de Grafos Denic‚aoŸ de Grafo Listas de Adjacencias‹ de Grafos 2 Busca em Profundidade Tecnicas· da Busca em Profundidade

Definicoes Basicas de GrafosBusca em Profundidade

Ordenacao TopologicaComponentes Conexos

1 Definicoes Basicas de GrafosDefinicao de GrafoListas de Adjacencias de Grafos

2 Busca em ProfundidadeTecnicas da Busca em ProfundidadeAlgoritmoClassificacao das Arestas

3 Ordenacao TopologicaAplicacao do Algoritmo de Busca em ProfundidadeAlgoritmo de Ordenacao Topologica

4 Componentes ConexosGrafo TranspostoAlgoritmo

Maria Adriana Vidigal de Lima Grafos

Page 3: Grafos - FACOMmadriana/EBD/Didatica.pdf1 Denic‚oesŸ Basicas· de Grafos Denic‚aoŸ de Grafo Listas de Adjacencias‹ de Grafos 2 Busca em Profundidade Tecnicas· da Busca em Profundidade

Definicoes Basicas de GrafosBusca em Profundidade

Ordenacao TopologicaComponentes Conexos

Definicao de GrafoListas de Adjacencias de Grafos

Exemplos de Aplicacao em Computacao

Verificar a existencia de um caminho entre um objeto eoutro (uma cidade e outra)

Calcular a distancia entre um objeto e outro (pontos de ummetro)

Determinar quais objetos podem ser alcancados a partirde um determinado objeto (navegacao na web)

Maria Adriana Vidigal de Lima Grafos

Page 4: Grafos - FACOMmadriana/EBD/Didatica.pdf1 Denic‚oesŸ Basicas· de Grafos Denic‚aoŸ de Grafo Listas de Adjacencias‹ de Grafos 2 Busca em Profundidade Tecnicas· da Busca em Profundidade

Definicoes Basicas de GrafosBusca em Profundidade

Ordenacao TopologicaComponentes Conexos

Definicao de GrafoListas de Adjacencias de Grafos

Representacao de Grafos

Um grafo e constituıdo de um conjunto de vertices e umconjunto de arestas conectando pares de vertices. Um grafopode ser orientado ou nao orientado.

54

211

3

654

32

grafo não−orientadografo orientado

Maria Adriana Vidigal de Lima Grafos

Page 5: Grafos - FACOMmadriana/EBD/Didatica.pdf1 Denic‚oesŸ Basicas· de Grafos Denic‚aoŸ de Grafo Listas de Adjacencias‹ de Grafos 2 Busca em Profundidade Tecnicas· da Busca em Profundidade

Definicoes Basicas de GrafosBusca em Profundidade

Ordenacao TopologicaComponentes Conexos

Definicao de GrafoListas de Adjacencias de Grafos

Definicao de GrafoUm grafo orientado e um par (V , E) em que V e um conjunto finitode vertices e E e um conjunto de arestas com uma relacao binariaem V .

2 3

4 5 6

1

E={(1,2),(1,4),(2,5),(3,5),(3,6),(4,2),(5,4),(6,6)}

V={1,2,3,4,5,6}

Um grafo nao orientado e um par (V , E) em que E e constituıdo depares de vertices nao ordenados. As arestas (u, v) e (v , u) saoconsideradas como unica.

3

1 2

4 5

V = {1,2,3,4,5}

E = {(1,2),(1,4),(2,3),(2,4),(2,5),(3,5),(4,5)}

Maria Adriana Vidigal de Lima Grafos

Page 6: Grafos - FACOMmadriana/EBD/Didatica.pdf1 Denic‚oesŸ Basicas· de Grafos Denic‚aoŸ de Grafo Listas de Adjacencias‹ de Grafos 2 Busca em Profundidade Tecnicas· da Busca em Profundidade

Definicoes Basicas de GrafosBusca em Profundidade

Ordenacao TopologicaComponentes Conexos

Definicao de GrafoListas de Adjacencias de Grafos

Listas de Adjacencias de Grafos

Um grafo G = (V , E) pode ser representado por uma lista deadjacencias, definida a partir de um arranjo de listas, umapara cada vertice em V .

Para cada u ∈ V , a lista de adjacencias Adj[u] contem(ponteiros para) todos os vertices v que podem ser alcancadosdiretamente a partir de u (existe uma aresta (u, v) ∈ E).

A ordem de armazenamento dos vertices em cada lista deadjacencias e arbitraria.

Maria Adriana Vidigal de Lima Grafos

Page 7: Grafos - FACOMmadriana/EBD/Didatica.pdf1 Denic‚oesŸ Basicas· de Grafos Denic‚aoŸ de Grafo Listas de Adjacencias‹ de Grafos 2 Busca em Profundidade Tecnicas· da Busca em Profundidade

Definicoes Basicas de GrafosBusca em Profundidade

Ordenacao TopologicaComponentes Conexos

Definicao de GrafoListas de Adjacencias de Grafos

Representacao de Listas de Adjacencias

45

2 3

4 5 6

3

1 1 2

1

2

3

4

5

2

2

2

2

1

1

5

5

5

4

4

4

3

3

grafo não−orientadografo orientado

lista de adjacênciaslista de adjacências

1

2

3

4

5

2

2

4

6 6

6 5

5

4

Maria Adriana Vidigal de Lima Grafos

Page 8: Grafos - FACOMmadriana/EBD/Didatica.pdf1 Denic‚oesŸ Basicas· de Grafos Denic‚aoŸ de Grafo Listas de Adjacencias‹ de Grafos 2 Busca em Profundidade Tecnicas· da Busca em Profundidade

Definicoes Basicas de GrafosBusca em Profundidade

Ordenacao TopologicaComponentes Conexos

Definicao de GrafoListas de Adjacencias de Grafos

Ciclos

Em um grafo orientado, um caminho (v0, v1, v2, . . . , vk ) forma umciclo se v0 = vk e o caminho contem pelo menos uma aresta.

5

4

23

0 1

O caminho (0,1,2,3,0) forma um ciclo

Em um grafo nao orientado, v0, v1, v2, . . . , vk forma um ciclo sev0 = vk e o caminho contem pelo menos tres arestas.

Em ambos os casos, o ciclo e simples se os vertices v1, v2, . . . , vksao distintos. Um grafo sem ciclos e um grafo acıclico.

Maria Adriana Vidigal de Lima Grafos

Page 9: Grafos - FACOMmadriana/EBD/Didatica.pdf1 Denic‚oesŸ Basicas· de Grafos Denic‚aoŸ de Grafo Listas de Adjacencias‹ de Grafos 2 Busca em Profundidade Tecnicas· da Busca em Profundidade

Definicoes Basicas de GrafosBusca em Profundidade

Ordenacao TopologicaComponentes Conexos

Tecnicas da Busca em ProfundidadeAlgoritmoClassificacao das Arestas

Busca em Profundidade

A busca em profundidade e um algoritmo para caminhar no grafo,com a estrategia de buscar o mais profundo no grafo, sempre quepossıvel.

Na busca, as arestas sao exploradas a partir do vertice v maisrecentemente descoberto que ainda possui arestas nao exploradassaindo dele. Quando nao existem mais arestas a serem exploradas,a busca anda para tras.

A busca em profundidade e a base para os algoritmos de:

ordenacao topologica

obtencao dos componentes fortemente conectados

Maria Adriana Vidigal de Lima Grafos

Page 10: Grafos - FACOMmadriana/EBD/Didatica.pdf1 Denic‚oesŸ Basicas· de Grafos Denic‚aoŸ de Grafo Listas de Adjacencias‹ de Grafos 2 Busca em Profundidade Tecnicas· da Busca em Profundidade

Definicoes Basicas de GrafosBusca em Profundidade

Ordenacao TopologicaComponentes Conexos

Tecnicas da Busca em ProfundidadeAlgoritmoClassificacao das Arestas

Busca em Profundidade

Sempre que um vertice v e descoberto a partir de um u, a buscaregistra este evento atribuindo u a uma estrutura chamadaantecessor[v ].

Para acompanhar o andamento da busca, cada vertice recebe ascores branca, cinza ou preta. No inıcio os vertices estao todosbrancos.

O tempo de descoberta do vertice (tornado cinza) e registrado emd [v ] e o tempo de termino do exame da lista de adjacentes de v eregistrado em t [v ] (nesse momento v se torna preto).

Maria Adriana Vidigal de Lima Grafos

Page 11: Grafos - FACOMmadriana/EBD/Didatica.pdf1 Denic‚oesŸ Basicas· de Grafos Denic‚aoŸ de Grafo Listas de Adjacencias‹ de Grafos 2 Busca em Profundidade Tecnicas· da Busca em Profundidade

Definicoes Basicas de GrafosBusca em Profundidade

Ordenacao TopologicaComponentes Conexos

Tecnicas da Busca em ProfundidadeAlgoritmoClassificacao das Arestas

Progresso do Percurso em Profundidade

2 3

0

( 2 / )( 1 / )( 1 / )

( / )( / )( / )( / )

( / )

( / )( / )

( / )( / )

32

0

32

0

(a)

1

(c)

11

(b)

Ao lado de cada vertice e indicado (tempo-de-descoberta / tempo-de-termino).

Maria Adriana Vidigal de Lima Grafos

Page 12: Grafos - FACOMmadriana/EBD/Didatica.pdf1 Denic‚oesŸ Basicas· de Grafos Denic‚aoŸ de Grafo Listas de Adjacencias‹ de Grafos 2 Busca em Profundidade Tecnicas· da Busca em Profundidade

Definicoes Basicas de GrafosBusca em Profundidade

Ordenacao TopologicaComponentes Conexos

Tecnicas da Busca em ProfundidadeAlgoritmoClassificacao das Arestas

Progresso do Percurso em Profundidade

( / )3

0

( 1 / )

(f)

2( 3 / 4 )

1

( 2 / 5 )

( 3 / 4 ) 2

(e)

( / )

1

3

0

( 1 / ) ( 2 / )

(d)

( 3 / )

( 2 / )( 1 / )

0

2 3

1

( / )

Maria Adriana Vidigal de Lima Grafos

Page 13: Grafos - FACOMmadriana/EBD/Didatica.pdf1 Denic‚oesŸ Basicas· de Grafos Denic‚aoŸ de Grafo Listas de Adjacencias‹ de Grafos 2 Busca em Profundidade Tecnicas· da Busca em Profundidade

Definicoes Basicas de GrafosBusca em Profundidade

Ordenacao TopologicaComponentes Conexos

Tecnicas da Busca em ProfundidadeAlgoritmoClassificacao das Arestas

Progresso do Percurso em Profundidade

( 1 / 6 )

0

32( 3 / 4 )

1

( 2 / 5 )

(h)

( 7 / )

( 2 / 5 )

1

( 3 / 4 ) 2 3 ( / )

0

( 1 / 6 )

(g)

( 2 / 5 )

1

( 3 / 4 ) 2

0

( 1 / 6 )

(i)

3 ( 7 / 8 )

Maria Adriana Vidigal de Lima Grafos

Page 14: Grafos - FACOMmadriana/EBD/Didatica.pdf1 Denic‚oesŸ Basicas· de Grafos Denic‚aoŸ de Grafo Listas de Adjacencias‹ de Grafos 2 Busca em Profundidade Tecnicas· da Busca em Profundidade

Definicoes Basicas de GrafosBusca em Profundidade

Ordenacao TopologicaComponentes Conexos

Tecnicas da Busca em ProfundidadeAlgoritmoClassificacao das Arestas

Algoritmo de Busca em Profundidade

BuscaEmProfundidade(G)

1 For Each vertice u em V

2 Do cor[u] := BRANCO

3 antecessor[u] := NIL

4 tempo := 0

5 For Each vertice u em V

6 Do If cor[u] = BRANCO

7 Then VisitaBEP(u)

Fim

VisitaBEP(u)

1 cor[u] := CINZA

2 tempo := tempo + 1

3 d[u] := tempo

4 For Each v em Adj[u]

5 Do If cor[v] = BRANCO

6 Then antecessor[v] := u

7 VisitaBEP(v)

8 cor[u] := PRETO

9 tempo := tempo + 1

10 t[u] := tempo

Fim

Sempre que um vertice v e descoberto durante uma varredura na lista de adjacenciasde um vertice ja descoberto u, a busca em profundidade registra u como antecessorde v .

Maria Adriana Vidigal de Lima Grafos

Page 15: Grafos - FACOMmadriana/EBD/Didatica.pdf1 Denic‚oesŸ Basicas· de Grafos Denic‚aoŸ de Grafo Listas de Adjacencias‹ de Grafos 2 Busca em Profundidade Tecnicas· da Busca em Profundidade

Definicoes Basicas de GrafosBusca em Profundidade

Ordenacao TopologicaComponentes Conexos

Tecnicas da Busca em ProfundidadeAlgoritmoClassificacao das Arestas

Classificacao das Arestas

A Busca em Profundidade pode ser utilizada para aclassificacao das arestas de um grafo G = (V , E).

Durante a Busca em Profundidade, cada aresta (u, v) pode serclassificada na primeira vez em que e percorrida, atraves dacor do vertice v alcancado:

Branco indica uma aresta de arvore;

Cinza indica uma aresta de retorno;

Preto indica uma aresta de avanco quando d [u] < d [v ] e indicauma aresta de cruzamento quanto d [u] > d [v ]

Maria Adriana Vidigal de Lima Grafos

Page 16: Grafos - FACOMmadriana/EBD/Didatica.pdf1 Denic‚oesŸ Basicas· de Grafos Denic‚aoŸ de Grafo Listas de Adjacencias‹ de Grafos 2 Busca em Profundidade Tecnicas· da Busca em Profundidade

Definicoes Basicas de GrafosBusca em Profundidade

Ordenacao TopologicaComponentes Conexos

Tecnicas da Busca em ProfundidadeAlgoritmoClassificacao das Arestas

Classificacao das ArestasA classificacao das arestas pode ser utilizada para verificar se umgrafo orientado e acıclico ou contem um ou mais ciclos.

Se uma aresta de retorno for encontrada durante a Busca emProfundidade, entao existe um ciclo. O grafo abaixo contem um ciclo,e ao lado de cada aresta e mostrado o tipo (arv , ret , avan ou cruz).

ret

cruzarvret

arv

( 7 / 8 )

( 1 / 6 )

2

1

3

0

( 3 / 4 )

( 2 / 5 )

Maria Adriana Vidigal de Lima Grafos

Page 17: Grafos - FACOMmadriana/EBD/Didatica.pdf1 Denic‚oesŸ Basicas· de Grafos Denic‚aoŸ de Grafo Listas de Adjacencias‹ de Grafos 2 Busca em Profundidade Tecnicas· da Busca em Profundidade

Definicoes Basicas de GrafosBusca em Profundidade

Ordenacao TopologicaComponentes Conexos

Aplicacao do Algoritmo de Busca em ProfundidadeAlgoritmo de Ordenacao Topologica

Ordenacao Topologica

A Ordenacao Topologica de um grafo orientado acıclicoG = (V , E) e uma ordenacao linear de todos os seus verticestal que se G contem uma aresta (u, v ) entao u aparece antesde v .

Uma ordenacao topologica de um grafo fornece a ordem emque as atividades devem ser processadas.

Maria Adriana Vidigal de Lima Grafos

Page 18: Grafos - FACOMmadriana/EBD/Didatica.pdf1 Denic‚oesŸ Basicas· de Grafos Denic‚aoŸ de Grafo Listas de Adjacencias‹ de Grafos 2 Busca em Profundidade Tecnicas· da Busca em Profundidade

Definicoes Basicas de GrafosBusca em Profundidade

Ordenacao TopologicaComponentes Conexos

Aplicacao do Algoritmo de Busca em ProfundidadeAlgoritmo de Ordenacao Topologica

Ordenacao Topologica

Os grafos orientados acıclicos sao usados para indicarprecedencias entre eventos. Uma aresta direcionada numgrafo orientado acıclico indica que a atividade u deve serrealizada antes da v .

calças

cinto

paleto

gravata

camisa

meias

relogio

sapatos

Maria Adriana Vidigal de Lima Grafos

Page 19: Grafos - FACOMmadriana/EBD/Didatica.pdf1 Denic‚oesŸ Basicas· de Grafos Denic‚aoŸ de Grafo Listas de Adjacencias‹ de Grafos 2 Busca em Profundidade Tecnicas· da Busca em Profundidade

Definicoes Basicas de GrafosBusca em Profundidade

Ordenacao TopologicaComponentes Conexos

Aplicacao do Algoritmo de Busca em ProfundidadeAlgoritmo de Ordenacao Topologica

Aplicacao do Algoritmo de Busca em Profundidade

Aplicacao do algoritmo de Busca em Profundidade para amarcacao dos tempos de descoberta e termino em cadavertice de um trecho do exemplo anterior:

paleto

calças

cintocinto

calças

gravata

paleto

cinto

calças

gravata

paleto

( / )

( / )

( / )

( / )

( / )

camisa

(2 / )

(1 / )

gravata

camisa

( / )

( / )

( / )(1 / ) ( / )

( / )( / )

( / )

camisa

(c)(b)(a)

Maria Adriana Vidigal de Lima Grafos

Page 20: Grafos - FACOMmadriana/EBD/Didatica.pdf1 Denic‚oesŸ Basicas· de Grafos Denic‚aoŸ de Grafo Listas de Adjacencias‹ de Grafos 2 Busca em Profundidade Tecnicas· da Busca em Profundidade

Definicoes Basicas de GrafosBusca em Profundidade

Ordenacao TopologicaComponentes Conexos

Aplicacao do Algoritmo de Busca em ProfundidadeAlgoritmo de Ordenacao Topologica

Aplicacao do Algoritmo de Busca em Profundidade

cinto

calçascalças

cinto

calças

cinto

(2 / )

(1 / )

gravata

camisa

( / )

( / )

(d)

paleto(3 / )

(2 / 5)

(3 / 4)

gravata

paleto

(3 / 4)

paleto

(f)(e)

( / )

( / )

camisa

(1 / )

(2 / )

(1 / )

gravata

camisa

( / )

( / )

Maria Adriana Vidigal de Lima Grafos

Page 21: Grafos - FACOMmadriana/EBD/Didatica.pdf1 Denic‚oesŸ Basicas· de Grafos Denic‚aoŸ de Grafo Listas de Adjacencias‹ de Grafos 2 Busca em Profundidade Tecnicas· da Busca em Profundidade

Definicoes Basicas de GrafosBusca em Profundidade

Ordenacao TopologicaComponentes Conexos

Aplicacao do Algoritmo de Busca em ProfundidadeAlgoritmo de Ordenacao Topologica

Aplicacao do Algoritmo de Busca em Profundidade

calças calças calças

(i)

(2 / 5)

(3 / 4)

gravata

paleto

( / )

camisa

(1 / )

(g)

cinto

(6 / ) (2 / 5)

(3 / 4)

gravata

paleto

( / )

camisa

(1 / )

(6 / 7)

cinto

(h)

cinto

(6 / 7)

( / )

paleto

gravata

(3 / 4)

(2 / 5)

camisa

(1 / 8 )

Maria Adriana Vidigal de Lima Grafos

Page 22: Grafos - FACOMmadriana/EBD/Didatica.pdf1 Denic‚oesŸ Basicas· de Grafos Denic‚aoŸ de Grafo Listas de Adjacencias‹ de Grafos 2 Busca em Profundidade Tecnicas· da Busca em Profundidade

Definicoes Basicas de GrafosBusca em Profundidade

Ordenacao TopologicaComponentes Conexos

Aplicacao do Algoritmo de Busca em ProfundidadeAlgoritmo de Ordenacao Topologica

Aplicacao do Algoritmo de Busca em Profundidade

(k)

(1 / 8 )

camisa

(2 / 5)

(3 / 4)

gravata

paleto

(6 / 7)

cinto

(j)

calças

(9 / )

cinto

(6 / 7)

paleto

gravata

(3 / 4)

(2 / 5)

camisa

(1 / 8 )

calças

(9 / 10 )

Maria Adriana Vidigal de Lima Grafos

Page 23: Grafos - FACOMmadriana/EBD/Didatica.pdf1 Denic‚oesŸ Basicas· de Grafos Denic‚aoŸ de Grafo Listas de Adjacencias‹ de Grafos 2 Busca em Profundidade Tecnicas· da Busca em Profundidade

Definicoes Basicas de GrafosBusca em Profundidade

Ordenacao TopologicaComponentes Conexos

Aplicacao do Algoritmo de Busca em ProfundidadeAlgoritmo de Ordenacao Topologica

Apresentacao de Grafo com Ordenacao Topologica

calças gravatacintocamisa paleto

(3 / 4)(2 / 5)(6 / 7)(9 / 10 ) (1 / 8 )

paleto

cinto

(6 / 7)gravata

(3 / 4)

(2 / 5)

camisa

(1 / 8 )

calças

(9 / 10 )

O grafo com ordenacao topologica apresenta seus vertices organizados daesquerda para a direita, em ordem de tempo de termino decrescente.

Maria Adriana Vidigal de Lima Grafos

Page 24: Grafos - FACOMmadriana/EBD/Didatica.pdf1 Denic‚oesŸ Basicas· de Grafos Denic‚aoŸ de Grafo Listas de Adjacencias‹ de Grafos 2 Busca em Profundidade Tecnicas· da Busca em Profundidade

Definicoes Basicas de GrafosBusca em Profundidade

Ordenacao TopologicaComponentes Conexos

Aplicacao do Algoritmo de Busca em ProfundidadeAlgoritmo de Ordenacao Topologica

Algoritmo de Ordenacao Topologica

O algoritmo simples a seguir ordena topologicamente um grafoacıclico orientado utilizando o algoritmo de Busca emProfundidade:

OrdenacaoTopologica(G)

1 Chamar BuscaEmProfundidade(G) para calcular o tempo

de termino t[v] para cada vertice v

2 A medida que cada vertice e terminado, inserir o

vertice a frente de uma lista ligada

3 Retornar a lista ligada de vertices

Fim

Maria Adriana Vidigal de Lima Grafos

Page 25: Grafos - FACOMmadriana/EBD/Didatica.pdf1 Denic‚oesŸ Basicas· de Grafos Denic‚aoŸ de Grafo Listas de Adjacencias‹ de Grafos 2 Busca em Profundidade Tecnicas· da Busca em Profundidade

Definicoes Basicas de GrafosBusca em Profundidade

Ordenacao TopologicaComponentes Conexos

Aplicacao do Algoritmo de Busca em ProfundidadeAlgoritmo de Ordenacao Topologica

Exercıcio Dirigido

Mostre a ordenacao de vertices produzida pelo algoritmoOrdenacaoTopologica(G) quando ele e executado sobre ografo acıclico orientado abaixo:

calças

cinto

paleto

gravata

camisa

meias

relogio

sapatos

Maria Adriana Vidigal de Lima Grafos

Page 26: Grafos - FACOMmadriana/EBD/Didatica.pdf1 Denic‚oesŸ Basicas· de Grafos Denic‚aoŸ de Grafo Listas de Adjacencias‹ de Grafos 2 Busca em Profundidade Tecnicas· da Busca em Profundidade

Definicoes Basicas de GrafosBusca em Profundidade

Ordenacao TopologicaComponentes Conexos

Grafo TranspostoAlgoritmo

Componentes Conexos de um Grafo

Os componentes conexos de um grafo sao as classesde equivalencia de vertices sob a relacao ”e acessıvel apartir de”.Um grafo orientado e fortemente conectado se cada umde dois vertices quaisquer e acessıvel a partir do outro.Os componentes fortemente conectados de um grafoorientado sao as classes de equivalencia de vertices sob arelacao ”sao mutuamente acessıveis”.

Maria Adriana Vidigal de Lima Grafos

Page 27: Grafos - FACOMmadriana/EBD/Didatica.pdf1 Denic‚oesŸ Basicas· de Grafos Denic‚aoŸ de Grafo Listas de Adjacencias‹ de Grafos 2 Busca em Profundidade Tecnicas· da Busca em Profundidade

Definicoes Basicas de GrafosBusca em Profundidade

Ordenacao TopologicaComponentes Conexos

Grafo TranspostoAlgoritmo

Componentes Conexos de um Grafo

Grafo orientado G e seus componentes fortementeconectados:

1

34

2

2

4

1

3

ConectadosComponentes Fortemente

Grafo G

Maria Adriana Vidigal de Lima Grafos

Page 28: Grafos - FACOMmadriana/EBD/Didatica.pdf1 Denic‚oesŸ Basicas· de Grafos Denic‚aoŸ de Grafo Listas de Adjacencias‹ de Grafos 2 Busca em Profundidade Tecnicas· da Busca em Profundidade

Definicoes Basicas de GrafosBusca em Profundidade

Ordenacao TopologicaComponentes Conexos

Grafo TranspostoAlgoritmo

Definicao de Grafo Transposto

O algoritmo para a obtencao dos componentes fortementeconectados em um grafo orientado G utiliza o grafo transpostoGT de G.

Grafo Transposto

Seja o grafo orientado G = (V , E). O grafo transposto de G e definidocomo sendo o grafo GT = (V , ET ), onde ET = {(u, v) : (v , u) ∈ E}.

Isto e, ET contem as arestas de G com suas direcoesinvertidas.

Maria Adriana Vidigal de Lima Grafos

Page 29: Grafos - FACOMmadriana/EBD/Didatica.pdf1 Denic‚oesŸ Basicas· de Grafos Denic‚aoŸ de Grafo Listas de Adjacencias‹ de Grafos 2 Busca em Profundidade Tecnicas· da Busca em Profundidade

Definicoes Basicas de GrafosBusca em Profundidade

Ordenacao TopologicaComponentes Conexos

Grafo TranspostoAlgoritmo

Exemplo de Grafo Transposto

Os grafos G e GT possuem os mesmos componentesfortemente conectados:

2

3

1

4

2

4

4

1

3

3

2

TGrafo G

1 2

34

1

Componentes Fortemente Conectados

Grafo G

Maria Adriana Vidigal de Lima Grafos

Page 30: Grafos - FACOMmadriana/EBD/Didatica.pdf1 Denic‚oesŸ Basicas· de Grafos Denic‚aoŸ de Grafo Listas de Adjacencias‹ de Grafos 2 Busca em Profundidade Tecnicas· da Busca em Profundidade

Definicoes Basicas de GrafosBusca em Profundidade

Ordenacao TopologicaComponentes Conexos

Grafo TranspostoAlgoritmo

Algoritmo para Obtencao de ComponentesFortemente Conectados

O algoritmo simples a seguir apresenta o algoritmo para obteros componentes fortemente conectados utilizando a Busca emProfundidade:ObterCFC(G)

1 Chamar BuscaEmProfundidade(G) para calcular o tempo

de termino t[u] para cada vertice u

2 Gerar GT

3 Chamar BuscaEmProfundidade(GT), realizando a busca

a partir do vertice de maior t[u] obtido na linha 1.

Se a nova busca n~ao alcancar todos os vertices,

reiniciar uma nova busca em profundidade a partir do

vertice de maior t[u] dentre os restantes

4 Retornar os vertices de cada arvore da floresta

obtida na busca da linha 3 como um componente

fortemente conectado separado

Fim

Maria Adriana Vidigal de Lima Grafos

Page 31: Grafos - FACOMmadriana/EBD/Didatica.pdf1 Denic‚oesŸ Basicas· de Grafos Denic‚aoŸ de Grafo Listas de Adjacencias‹ de Grafos 2 Busca em Profundidade Tecnicas· da Busca em Profundidade

Definicoes Basicas de GrafosBusca em Profundidade

Ordenacao TopologicaComponentes Conexos

Grafo TranspostoAlgoritmo

Execucao do Algoritmo

A execucao do algoritmo no grafo G se inicia no vertice 0 e saocalculados os tempos de descoberta e termino. O grafotransposto GT e gerado, e a busca em profundidade em GT

resulta em duas arvores: raiz em 0 e raiz em 3.

1

2

0 3

arv

arvret

arv

2

1

3

0

( 1 / 8 ) ( 2 / 7 )

( 3 / 6 )( 4 / 5 )

avan

Grafo Orientado

0

3

1

2

arv

ret

arv

Grafo Transposto

( 1 / 6 ) ( 3 / 4 )

( 7 / 8 ) ( 2 / 5 )

cruz

cruz

Arvores Resultantes

Maria Adriana Vidigal de Lima Grafos

Page 32: Grafos - FACOMmadriana/EBD/Didatica.pdf1 Denic‚oesŸ Basicas· de Grafos Denic‚aoŸ de Grafo Listas de Adjacencias‹ de Grafos 2 Busca em Profundidade Tecnicas· da Busca em Profundidade

Definicoes Basicas de GrafosBusca em Profundidade

Ordenacao TopologicaComponentes Conexos

Grafo TranspostoAlgoritmo

Execucao do Algoritmo

As duas arvores: raiz em 0 e raiz em 3 representam oscomponentes fortemente conectados do grafo, e um grafo decomponentes acıclicos pode ser obtido pela condensacao doscomponentes fortemente conectados de G.

2

1

30

3

012

Aciclico

Grafo de ComponentesArvores Resultantes

cruz

cruz

( 2 / 5 )( 7 / 8 )

( 3 / 4 )( 1 / 6 )

Grafo Transposto

arv

ret

arv

2

1

3

0

Grafo Orientado

avan

( 4 / 5 ) ( 3 / 6 )

( 2 / 7 )( 1 / 8 )

0

3

1

2

arv

retarv

arv

Maria Adriana Vidigal de Lima Grafos

Page 33: Grafos - FACOMmadriana/EBD/Didatica.pdf1 Denic‚oesŸ Basicas· de Grafos Denic‚aoŸ de Grafo Listas de Adjacencias‹ de Grafos 2 Busca em Profundidade Tecnicas· da Busca em Profundidade

Definicoes Basicas de GrafosBusca em Profundidade

Ordenacao TopologicaComponentes Conexos

Grafo TranspostoAlgoritmo

Bibliografia Utilizada

Nıvio Ziviani. Projeto de Algoritmos com Implementacoesem Pascal e C.

Thomas H. Cormen, Charles E. Leiserson, Ronald L.Rivest, Clifford Stein. Algoritmos - Teoria e Pratica.

Maria Adriana Vidigal de Lima Grafos