Anda di halaman 1dari 12

28/08/2008

Roteiro
Teoria dos Grafos

Conexidade e Conectividade

Discusso preliminar sobre Conexidade


Importncia de classificao e deteco de diferentes grafos

Tipos de Conexidade
Simplesmente conexo Semi-fortemente conexo Fortemente conexo

Prof. Humberto Brando humberto@unifal-mg.edu.br aula disponvel no site: http://www.dcc.ufmg.br/~humberto/


Universidade Federal de Alfenas Departamento de Cincias Exatas verso da aula: 0.1

Componentes fortemente conexos Grafo reduzido Algoritmo para detectar componentes fortemente conexos
Usando busca em profundidade

Vrtice peculiares em grafos no fortemente conexos Aplicaes Conectividade e conjuntos de articulao Pontos de articulao e anti-articulao

Discusso preliminar sobre Conexidade


A conexidade est relacionada a passagem de um vrtice a outro em um grafo atravs de ligaes existentes. Est passagem diz respeito a atingibilidade atingibilidade.

Discusso preliminar sobre Conexidade


Conexidade em grafos no orientados

Podemos ilustrar a atingibilidade na seqncia acima.

Exemplo na prtica:
Um vrtice servidor pode enviar mensagens de dados para um determinado cliente?

Dado um gravo trivial G=(V, ), adicionamos sucessivas ligaes ao conjunto de arestas, para aumentarmos a atingibilidade entre vrtices.

Discusso preliminar sobre Conexidade


Conexidade em grafos orientados

Tipos de Conexidade
Para grafos orientados ou no

A atingibilidade entre vrtices tambm pode ser observada em grafos orientados. Vejamos a seqncia abaixo:

Conexo ou no conexo (definio)


Um grafo no conexo (desconexo) se nele existir ao menos um par de vrtices no unidos por uma cadeira
Pares no unidos por uma cadeira: (a,c) (a,d) (b,c) (b,d)

28/08/2008

Tipos de Conexidade
Para grafos orientados ou no

Tipos de Conexidade
Em grafos orientados

Conexo ou no conexo (definio)


Um grafo no conexo (desconexo) se nele existir ao menos um par de vrtices no unidos por uma cadeira

Os grafos so conexos, mas possuem diferenas fundamentais de atingibilidade...

e a g c d G1 b

f h

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

Tipos de Conexidade
Simplesmente conexo (s-conexo)

Tipos de Conexidade
Semi-fortemente conexo (sf-conexo)

s-conexo (simplesmente conexo simplesmente conexo):


todo par de vrtices unido por ao menos uma cadeia
No existe percurso de b para d e nem d d para b mas de b, estes vrtices esto ligados por uma cadeia de arcos: (c,b); (c,d)

sf-conexo (semi-fortemente conexo): semiconexo


Em todo par de vrtices, ao menos um dos vrtices atingvel a partir do outro
No existe percurso de b para a, mas existe percurso de a para b.

Tipos de Conexidade
Fortemente conexo (f-conexo)

Tipos de Conexidade
Observaes

f-conexo (fortemente conexo fortemente conexo):


Em todo par de vrtices, os vrtices so mutuamente atingveis.

Nos grafos orientados, podemos notar que:


Todo grafo f-conexo tambm um grafo sf-conexo; Todo grafo sf-conexo tambm um grafo s-conexo;

G2 f-conexo

28/08/2008

Tipos de Conexidade
Aplicaes Ateno especial para os conjuntos C1 = (s-conexo) (sf-conexo) C2 = (sf-conexo) (f-conexo) Os conjuntos C1 e C2 contem grafos cujos alguns vrtices so privilegiados, em relao a outros. Muitas aplicaes em redes, por exemplo, precisam desta representao

Componentes fortemente conexos


Um componente fortemente conectado de um grafo orientado G = (V,E) um conjunto mximo de vrtices C V tal que, para todo par de vrtices u e v em C, temos que os vrtices u e v so acessveis um a partir do outro.

Componentes fortemente conexos


Observao Todo grafo que possui apenas um componente conexo fortemente conexo (f-conexo) Exemplo j visto anteriormente:

Grafos Reduzidos

Grafos Reduzidos
Definio Define-se um grafo Gr, obtido de G, atravs de uma seqncia de contraes de vrtices, feitas de um critrio predefinido.
Minas

Grafos Reduzidos
Reduo utilizando o critrio de componentes fortemente conexos

SP

RJ

Grafo reduzido Grafo

Gr

Critrio: Agrupar por estado

28/08/2008

Reduo por componentes fortemente conexos


Algoritmo Existem diferentes algoritmos para decomposio por conexidade. Uma implementao eficiente faz uso do algoritmo de busca em profundidade para identificar as componentes conexos. Portanto, vamos ao mtodo de busca em profundidade!!!

Reduo por componentes fortemente conexas


Algoritmo de Busca em Profundidade Legenda
a
/

Vrtice desconhecido Vrtice encontrado Vrtice encontrado, com fecho positivo totalmente visitado

b
n/

c
m/z

m: marcador do instante que o vrtice c foi encontrado; z: marcador do instante que os fecho transitivo do vrtice c foi totalmente visitado.

Reduo por componentes fortemente conexos


Algoritmo de Busca em Profundidade
Dado um Grafo, temos uma lista de todos os vrtices:

Reduo por componentes fortemente conexos


Algoritmo de Busca em Profundidade
ltima ao: Vrtice c encontrado

Contador = 1

Reduo por componentes fortemente conexos


Algoritmo de Busca em Profundidade
ltima ao: Vrtice g encontrado

Reduo por componentes fortemente conexos


Algoritmo de Busca em Profundidade
ltima ao: Vrtice f encontrado

Contador = 2

Contador = 3

28/08/2008

Reduo por componentes fortemente conexos


Algoritmo de Busca em Profundidade
ltima ao: Vrtice f finalizado

Reduo por componentes fortemente conexos


Algoritmo de Busca em Profundidade
ltima ao: Vrtice h encontrado

Contador = 4

Contador = 5

Reduo por componentes fortemente conexos


Algoritmo de Busca em Profundidade
ltima ao: Vrtice h finalizado

Reduo por componentes fortemente conexos


Algoritmo de Busca em Profundidade
ltima ao: Vrtice g finalizado

Contador = 6

Contador = 7

Reduo por componentes fortemente conexos


Algoritmo de Busca em Profundidade
ltima ao: Vrtice d encontrado

Reduo por componentes fortemente conexos


Algoritmo de Busca em Profundidade
ltima ao: Vrtice d finalizado

Contador = 8

Contador = 9

28/08/2008

Reduo por componentes fortemente conexos


Algoritmo de Busca em Profundidade
ltima ao: Vrtice c finalizado

Reduo por componentes fortemente conexos


Algoritmo de Busca em Profundidade
ltima ao: Capturando o prximo vrtice da lista de vrtices disponveis no grafo

Contador = 10

Contador = 10

Reduo por componentes fortemente conexos


Algoritmo de Busca em Profundidade
ltima ao: Vrtice a encontrado

Reduo por componentes fortemente conexos


Algoritmo de Busca em Profundidade
ltima ao: Vrtice b encontrado

Contador = 11

Contador = 12

Reduo por componentes fortemente conexos


Algoritmo de Busca em Profundidade
ltima ao: Vrtice e encontrado

Reduo por componentes fortemente conexos


Algoritmo de Busca em Profundidade
ltima ao: Vrtice e finalizado

Contador = 13

Contador = 14

28/08/2008

Reduo por componentes fortemente conexos


Algoritmo de Busca em Profundidade
ltima ao: Vrtice b finalizado

Reduo por componentes fortemente conexos


Algoritmo de Busca em Profundidade
ltima ao: Vrtice a finalizado

Contador = 15

Contador = 16

Reduo por componentes fortemente conexos


Algoritmo de Busca em Profundidade
ltima ao: Capturando os prximos vrtices disponveis. Ser verificado que todos foram visitados pela busca!!!

Reduo por componentes fortemente conexos

Visto o algoritmo de busca em profundidade, profundidade podemos voltar aos componentes fortemente conexos!!!

Contador = 16

Reduo por componentes fortemente conexos


Algoritmo: Componentes fortemente conexos
1. Faa a pesquisa em profundidade em G e calcule o tempo de finalizao em cada vrtice u; Gere o grafo transposto GT (grafo dual) do grafo G. Faa a pesquisa em profundidade em GT, mas considerando os vrtices acessveis na ordem decrescente ao seu tempo de finalizao encontrado no passo 1.

Reduo por componentes fortemente conexos


Algoritmo: Componentes fortemente conexos Retomando ao final do do passo 1

2. 3.

Cada floresta encontrada no passo 3, corresponde a um componente fortemente conexo de G. Vamos retomar a busca em profundidade... Lista em ordem decrescente ao tempo de finalizao: [ a, b, e, c, d, g, h, f ]

Armazenar para usar no passo 3.

28/08/2008

Reduo por componentes fortemente conexos


Algoritmo: Componentes fortemente conexos Passo 2: Gere GT

Reduo por componentes fortemente conexos


Algoritmo: Componentes fortemente conexos Passo 3: Efetue a busca em profundidade em GT ordem armazenada ltima ao: Capturando primeiro da lista de vrtices disponveis a ser explorado

GT

Lista em ordem decrescente ao tempo de finalizao: [ a, b, e, c, d, g, h, f ]

Lista em ordem decrescente ao tempo de finalizao: [ a, b, e, c, d, g, h, f ]

Reduo por componentes fortemente conexos


Algoritmo: Componentes fortemente conexos Passo 3: Efetue a busca em profundidade em GT ordem armazenada ltima ao: Vrtice a encontrado.

Reduo por componentes fortemente conexos


Algoritmo: Componentes fortemente conexos Passo 3: Efetue a busca em profundidade em GT ordem armazenada ltima ao: Vrtice e encontrado.

GT

GT

Lista em ordem decrescente ao tempo de finalizao: [ b, e, c, d, g, h, f ]


Contador = 1

Lista em ordem decrescente ao tempo de finalizao: [ b, e, c, d, g, h, f ]


Contador = 2

Reduo por componentes fortemente conexos


Algoritmo: Componentes fortemente conexos Passo 3: Efetue a busca em profundidade em GT ordem armazenada ltima ao: Vrtice b encontrado.

Reduo por componentes fortemente conexos


Algoritmo: Componentes fortemente conexos Passo 3: Efetue a busca em profundidade em GT ordem armazenada ltima ao: Vrtice b finalizado.

GT

GT

Lista em ordem decrescente ao tempo de finalizao: [ b, e, c, d, g, h, f ]


Contador = 3

Lista em ordem decrescente ao tempo de finalizao: [ b, e, c, d, g, h, f ]


Contador = 4

28/08/2008

Reduo por componentes fortemente conexos


Algoritmo: Componentes fortemente conexos Passo 3: Efetue a busca em profundidade em GT ordem armazenada ltima ao: Vrtice e finalizado.

Reduo por componentes fortemente conexos


Algoritmo: Componentes fortemente conexos Passo 3: Efetue a busca em profundidade em GT ordem armazenada ltima ao: Vrtice a finalizado.

GT

GT

Lista em ordem decrescente ao tempo de finalizao: [ b, e, c, d, g, h, f ]


Contador = 5

Lista em ordem decrescente ao tempo de finalizao: [ b, e, c, d, g, h, f ]


Contador = 6

Reduo por componentes fortemente conexos


Algoritmo: Componentes fortemente conexos Passo 3: Efetue a busca em profundidade em GT ordem armazenada Neste momento a busca em GT no possui mais caminhamento, ento os vrtices encontrados com raiz no vrtice a formam um componente fortemente conexo em G.

Reduo por componentes fortemente conexos


Algoritmo: Componentes fortemente conexos Passo 3: Efetue a busca em profundidade em GT ordem armazenada ltima ao: capturando o prximo vrtice no visitado da lista. Vrtice c.

GT

GT

Lista em ordem decrescente ao tempo de finalizao: [ b, e, c, d, g, h, f ]


Contador = 6

Lista em ordem decrescente ao tempo de finalizao: [ b, e, c, d, g, h, f ]


Contador = 6

Reduo por componentes fortemente conexos


Algoritmo: Componentes fortemente conexos Passo 3: Efetue a busca em profundidade em GT ordem armazenada ltima ao: Vrtice c foi encontrado.

Reduo por componentes fortemente conexos


Algoritmo: Componentes fortemente conexos Passo 3: Efetue a busca em profundidade em GT ordem armazenada ltima ao: Vrtice d foi encontrado.

GT

GT

Lista em ordem decrescente ao tempo de finalizao: [ d, g, h, f ]


Contador = 7

Lista em ordem decrescente ao tempo de finalizao: [ d, g, h, f ]


Contador = 8

28/08/2008

Reduo por componentes fortemente conexos


Algoritmo: Componentes fortemente conexos Passo 3: Efetue a busca em profundidade em GT ordem armazenada ltima ao: Vrtice d foi finalizado.

Reduo por componentes fortemente conexos


Algoritmo: Componentes fortemente conexos Passo 3: Efetue a busca em profundidade em GT ordem armazenada ltima ao: Vrtice c foi finalizado.

GT

GT

Lista em ordem decrescente ao tempo de finalizao: [ d, g, h, f ]


Contador = 9

Lista em ordem decrescente ao tempo de finalizao: [ d, g, h, f ]

Contador = 10

Reduo por componentes fortemente conexos


Algoritmo: Componentes fortemente conexos Passo 3: Efetue a busca em profundidade em GT ordem armazenada Neste momento a busca em GT no possui mais caminhamento, ento os vrtices encontrados com raiz no vrtice c formam um componente fortemente conexo em G.

Reduo por componentes fortemente conexos


Algoritmo: Componentes fortemente conexos Passo 3: Efetue a busca em profundidade em GT ordem armazenada ltima ao: capturando o prximo vrtice no visitado da lista. Vrtice g.

GT

GT

Lista em ordem decrescente ao tempo de finalizao: [ b, e, c, d, g, h, f ]

Contador = 10

Lista em ordem decrescente ao tempo de finalizao: [ d, g, h, f ]

Contador = 10

Reduo por componentes fortemente conexos


Algoritmo: Componentes fortemente conexos Passo 3: Efetue a busca em profundidade em GT ordem armazenada ltima ao: Vrtice g foi encontrado.

Reduo por componentes fortemente conexos


Algoritmo: Componentes fortemente conexos Passo 3: Efetue a busca em profundidade em GT ordem armazenada ltima ao: Vrtice f foi encontrado.

GT

GT

Lista em ordem decrescente ao tempo de finalizao: [ h, f ]

Contador = 11

Lista em ordem decrescente ao tempo de finalizao: [ h, f ]

Contador = 12

10

28/08/2008

Reduo por componentes fortemente conexos


Algoritmo: Componentes fortemente conexos Passo 3: Efetue a busca em profundidade em GT ordem armazenada ltima ao: Vrtice f foi finalizado.

Reduo por componentes fortemente conexos


Algoritmo: Componentes fortemente conexos Passo 3: Efetue a busca em profundidade em GT ordem armazenada ltima ao: Vrtice g foi finalizado.

GT

GT

Lista em ordem decrescente ao tempo de finalizao: [ h, f ]

Contador = 13

Lista em ordem decrescente ao tempo de finalizao: [ h, f ]

Contador = 14

Reduo por componentes fortemente conexos


Algoritmo: Componentes fortemente conexos Passo 3: Efetue a busca em profundidade em GT ordem armazenada Neste momento a busca em GT no possui mais caminhamento, ento os vrtices encontrados com raiz no vrtice g formam um componente fortemente conexo em G.

Reduo por componentes fortemente conexos


Algoritmo: Componentes fortemente conexos Passo 3: Efetue a busca em profundidade em GT ordem armazenada ltima ao: capturando o prximo vrtice no visitado da lista. Vrtice h.

GT

GT

Lista em ordem decrescente ao tempo de finalizao: [ h, f ]

Contador = 14

Lista em ordem decrescente ao tempo de finalizao: [ h, f ]

Contador = 14

Reduo por componentes fortemente conexos


Algoritmo: Componentes fortemente conexos Passo 3: Efetue a busca em profundidade em GT ordem armazenada ltima ao: Vrtice h foi encontrado.

Reduo por componentes fortemente conexos


Algoritmo: Componentes fortemente conexos Passo 3: Efetue a busca em profundidade em GT ordem armazenada ltima ao: Vrtice h foi finalizado.

GT

GT

Lista em ordem decrescente ao tempo de finalizao: [f]

Contador = 15

Lista em ordem decrescente ao tempo de finalizao: [f]

Contador = 16

11

28/08/2008

Reduo por componentes fortemente conexos


Algoritmo: Componentes fortemente conexos Passo 3: Efetue a busca em profundidade em GT ordem armazenada Neste momento a busca em GT no possui mais caminhamento, ento os vrtices encontrados com raiz no vrtice h formam um componente fortemente conexo em G.

Reduo por componentes fortemente conexos


Algoritmo: Componentes fortemente conexos Lembrete Os componentes encontrados so referentes a G, e no a GT.

GT GT

Lista em ordem decrescente ao tempo de finalizao: [f]

Contador = 16

Reduo por componentes fortemente conexos


Algoritmo: Componentes fortemente conexos Discusso da complexidade do algorimo

Conexidade e Conectividade em Grafos


Bibliografia recomendada:
Algoritmos Teoria e Prtica, Traduo da 2 edio. Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein. 2002, 936 pp. Editora Campus/Elsevier, ISBN 8535209263. Grafos: Teoria - Modelos Algoritmos, NETTO, P. O. B., 4a Ed So Paulo: Ed E Blche 2006 Ed. Ed. E. Blche,. 2006. Captulo 3.

Busca em profundidade sobre G: (|V|+|A|) Clculo de GT: (|V|+|A|) (| | | |) Busca em profundidade sobre GT: (|V|+|A|) Assim, a complexidade de tempo de todo o algoritmo (|V|+|A|)

12

Anda mungkin juga menyukai