• Nenhum resultado encontrado

Universidade Federal de Alfenas

N/A
N/A
Protected

Academic year: 2021

Share "Universidade Federal de Alfenas"

Copied!
49
0
0

Texto

(1)

Universidade Federal de Alfenas

Algoritmos em Grafos

Aula 11 – Conectividade

Prof. Humberto César Brandão de Oliveira

(2)

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?

(3)

Discussão preliminar sobre Conectividade

Conectividade em grafos não orientados

b G0 a d c b G1 a d c b G2 a d c b G3 a d c b G4 a d c

• 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.

(4)

Discussão preliminar sobre Conexidade

Conexidade em grafos orientados

b G0 a d c b G1 a d c b G2 a d c b G3 a d c b G4 a d c

• A atingibilidade entre vértices também pode ser observada

em grafos orientados.

(5)

Tipos de Conectividade

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,c)

•(a,d)

•(b,c)

•(b,d)

G

0

a

b

c

d

(6)

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);

G

1

a

b

c

d

e

f

g

h

(7)

Tipos de Conectividade

Em grafos orientados

Os grafos G

A

, G

B

e G

C

são conexos, mas possuem

diferenças fundamentais de atingibilidade...

b

G

A

a

d

c

b

G

B

a

d

c

b

G

C

a

d

c

(8)

Tipos de Conexidade

Simplesmente 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:

(9)

Tipos de Conexidade

Semi-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

d

c

Não existe percurso de b para a, mas existe percurso de a para b.

(10)

Tipos de Conexidade

Fortemente conexo (f-conexo)

f-conexo (

fortemente conexo

):

▫ Em todo par de vértices, os vértices são mutuamente atingíveis.

e

f

g

G

2

f-conexo

b

a

d

c

G

1

f-conexo

(11)

Tipos de Conexidade

Observaçõ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-conexo

sf-conexo

(12)

Tipos de Conexidade

Aplicações

s-conexo

sf-conexo

f-conexo desconexos

Atenção especial para os conjuntos

C

1

= (s-conexo) – (sf-conexo)

C

2

= (sf-conexo) – (f-conexo)

• Os conjuntos C

1

e C

2

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

(13)

Componentes fortemente conectados

Um componente fortemente conectado de um grafo orientado

G = (V,A) é um conjunto máximo de vértices

C

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.

b

a

f

e

g

c

d

h

Componente 1 Componente 2 Componente 3 Componente 4

(14)

Componentes fortemente conexos

Observação

Todo grafo que possui apenas um componente conexo é fortemente

conexo

(f-conexo)

Exemplo já visto anteriormente:

b

a

d

c

(15)
(16)

Grafos Reduzidos

Definição

“Define-se um grafo G

r

, 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 Varginha Alfenas SP Santos Rio Niterói Grafo Grafo reduzido

(17)

Grafos Reduzidos

Redução utilizando o critério de componentes fortemente conexos

b

a

f

e

g

c

d

h

Componente 1 Componente 2 Componente 3 Componente 4

G

G

r

1

2

3

4

Aplicações em redes!!! Para montar tabelas de encaminhamento

(18)

Redução por componentes fortemente conexos

Algoritmo

• 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.

(19)

Redução por componentes fortemente conexos

Algoritmo: 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.

(20)

Redução por componentes fortemente conexos

Algoritmo: 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/15 11/16 3/4 13/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 h Passo 1: Aplique a DFS no grafo original G=(V,A)

(21)

Redução por componentes fortemente conexos

Algoritmo: 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

(22)

Redução por componentes fortemente conexos

Algoritmo: 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

(23)

Redução por componentes fortemente conexos

Algoritmo: 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.

G

T

/ 1/ / / / / / / a b c d e f g h Contador = 1

(24)

Redução por componentes fortemente conexos

Algoritmo: 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.

G

T

Contador = 2 / 1/ / 2/ / / / / a b c d e f g h

(25)

Redução por componentes fortemente conexos

Algoritmo: 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.

G

T

Contador = 3 3/ 1/ / 2/ / / / / a b c d e f g h

(26)

Redução por componentes fortemente conexos

Algoritmo: 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.

G

T

Contador = 4 3/4 1/ / 2/ / / / / a b c d e f g h

(27)

Redução por componentes fortemente conexos

Algoritmo: 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 ]

G

T

Contador = 5 3/4 1/ / 2/5 / / / /

a

b

c

d

e

f

g

h

(28)

Redução por componentes fortemente conexos

Algoritmo: 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 ]

G

T

Contador = 6 3/4 1/6 / 2/5 / / / /

a

b

c

d

e

f

g

h

(29)

Redução por componentes fortemente conexos

Algoritmo: 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.

G

T

Contador = 6 3/4 1/6 / 2/5 / / / / a b c d e f g h

(30)

Redução por componentes fortemente conexos

Algoritmo: 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.

G

T

Contador = 6 3/4 1/6 / 2/5 / / / / a b c d e f g h

(31)

Redução por componentes fortemente conexos

Algoritmo: 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.

G

T

Contador = 7 3/4 1/6 / 2/5 / 7/ / / a b c d e f g h

(32)

Redução por componentes fortemente conexos

Algoritmo: 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.

G

T

Contador = 8 3/4 1/6 / 2/5 / 7/ 8/ / a b c d e f g h

(33)

Redução por componentes fortemente conexos

Algoritmo: 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.

G

T

Contador = 9 3/4 1/6 / 2/5 / 7/ 8/9 / a b c d e f g h

(34)

Redução por componentes fortemente conexos

Algoritmo: 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.

G

T

Contador = 10 3/4 1/6 / 2/5 / 7/10 8/9 / a b c d e f g h

(35)

Redução por componentes fortemente conexos

Algoritmo: 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.

G

T

Contador = 10 3/4 1/6 / 2/5 / 7/10 8/9 / a b c d e f g h

(36)

Redução por componentes fortemente conexos

Algoritmo: 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.

G

T

Contador = 10 3/4 1/6 / 2/5 / 7/10 8/9 / a b c d e f g h

(37)

Redução por componentes fortemente conexos

Algoritmo: 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.

G

T

Contador = 11 3/4 1/6 / 2/5 11/ 7/10 8/9 / a b c d e f g h

(38)

Redução por componentes fortemente conexos

Algoritmo: 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.

G

T

Contador = 12 3/4 1/6 12/ 2/5 11/ 7/10 8/9 /

a

b

c

d

e

f

g

h

(39)

Redução por componentes fortemente conexos

Algoritmo: 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.

G

T

Contador = 13 3/4 1/6 12/13 2/5 11/ 7/10 8/9 /

a

b

c

d

e

f

g

h

(40)

Redução por componentes fortemente conexos

Algoritmo: 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.

G

T

Contador = 14 3/4 1/6 12/13 2/5 11/14 7/10 8/9 / a b c d e f g h

(41)

Redução por componentes fortemente conexos

Algoritmo: 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.

G

T

Contador = 14 3/4 1/6 12/13 2/5 11/14 7/10 8/9 / a b c d e f g h

(42)

Redução por componentes fortemente conexos

Algoritmo: 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.

G

T

Contador = 14 3/4 1/6 12/13 2/5 11/14 7/10 8/9 / a b c d e f g h

(43)

Redução por componentes fortemente conexos

Algoritmo: 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.

G

T

Contador = 15 3/4 1/6 12/13 2/5 11/14 7/10 8/9 15/ a b c d e f g h

(44)

Redução por componentes fortemente conexos

Algoritmo: 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.

G

T

Contador = 16 3/4 1/6 12/13 2/5 11/14 7/10 8/9 15/16 a b c d e f g h

(45)

Redução por componentes fortemente conexos

Algoritmo: 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.

G

T

Contador = 16 3/4 1/6 12/13 2/5 11/14 7/10 8/9 15/16 a b c d e f g h

(46)

Redução por componentes fortemente conexos

Algoritmo: Componentes fortemente conexos Lembrete

Os componentes encontrados são referentes a G, e não a GT.

3/4 1/6 12/13 2/5 11/14 7/10 8/9 15/16 a b c d e f g h

G

T

b a f e g c d h Componente 1 Componente 2 Componente 3 Componente 4

G

(47)

Redução por componentes fortemente conexos

Algoritmo: Componentes fortemente conexos Discussão da complexidade do algoritmo

Busca em profundidade sobre G:

(|V|+|A|)

Cálculo de G

T

:

(|V|+|A|)

Busca em profundidade sobre G

T

:

(|V|+|A|)

Assim, a complexidade de tempo de todo o algoritmo é

(48)

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.

(49)

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;

Referências

Documentos relacionados

O estudo proposto permite inferir que os ENDs tanto de ultrassom quanto de caracterização magnética com sensor Hall foram capazes de determinar a presença ou não dos

O Parque Nascentes do Belém apresentou problemas relacionados com os objetivos de uma Unidade de Conservação, e de acordo com os critérios utilizados para

a) ao sul do Saara, formada por países que foram colônias francesas. b) no noroeste da África, constituída por países onde predomina a religião islâmica. c) no extremo sul, onde

A pesquisa se propõe a expor o problema da violência no Brasil, as dificuldades da Polícia Militar brasileira e seu papel na democracia, assim como o risco da atividade policial que

Por meio de dados abrangentes do casamento (heterossexual), Higa verificou o crescimento dessa união na velhice na última década, desmistificando que o homem idoso se

No panorama internauta são vários os softwares à disposição do utilizador que servem para converter ficheiros PDF em flipbooks, que nada mais são que livros ou publicações

Identification of overexpressed genes by in silico EST subtraction and of novel transcripts in yeast- form cells recovered from infected mice.. To select transcripts upregulated

Este problema consiste em, dado um grafo ( V, E ) e um conjunto de vértices T ⊆ V , definir um conjunto de arestas J de custo mínimo tal que todo vértice do conjunto T possui grau