teoria dos grafos aula 6 - federal university of rio de janeirodaniel/grafos/slides/aula_6.pdf ·...

24
Teoria dos Grafos Aula 6 Aula passada BFS – implementação Complexidade Busca em profundidade (DFS) Implementação Aula de hoje Componentes Conexos Grafos direcionados Busca em grafos direcionados Ordenação topológica

Upload: others

Post on 15-Jul-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Teoria dos Grafos Aula 6 - Federal University of Rio de Janeirodaniel/grafos/slides/aula_6.pdf · 2019-08-21 · Teoria dos Grafos Aula 6 Aula passada BFS – implementação Complexidade

Teoria dos GrafosAula 6

Aula passadaBFS – implementação

Complexidade

Busca em profundidade (DFS)

Implementação

Aula de hojeComponentes ConexosGrafos direcionadosBusca em grafos direcionadosOrdenação topológica

Page 2: Teoria dos Grafos Aula 6 - Federal University of Rio de Janeirodaniel/grafos/slides/aula_6.pdf · 2019-08-21 · Teoria dos Grafos Aula 6 Aula passada BFS – implementação Complexidade

Figueiredo – 2010

Componentes ConexosMaiores subgrafos “conectados” de um grafo

Exemplo:

Subgrafos maximais de G que sejam conexosmaximal: subconjunto que maximiza a propriedade, no caso subgrafo conexo

6

78

2 36

5 97

8

1

42

5

1

4

Componenteconexo?

Componenteconexo?

Page 3: Teoria dos Grafos Aula 6 - Federal University of Rio de Janeirodaniel/grafos/slides/aula_6.pdf · 2019-08-21 · Teoria dos Grafos Aula 6 Aula passada BFS – implementação Complexidade

Figueiredo – 2010

Componentes ConexosProblema: Determinar o número de componentes conexos de um grafo

e tamanho de cada componente

Algoritmo eficiente para resolver este problema?

Page 4: Teoria dos Grafos Aula 6 - Federal University of Rio de Janeirodaniel/grafos/slides/aula_6.pdf · 2019-08-21 · Teoria dos Grafos Aula 6 Aula passada BFS – implementação Complexidade

Figueiredo – 2010

Componentes Conexos

Desmarcar todos os vértices

Escolher vértice s qualquer

Realizar BFS(s)

Vértices marcados determinam uma CC

Escolher vértice s qualquer não marcado

Realizar BFS(s)

Vértices marcados determinam outra CC

...

Usar Busca em Grafos (BFS ou DFS)

Page 5: Teoria dos Grafos Aula 6 - Federal University of Rio de Janeirodaniel/grafos/slides/aula_6.pdf · 2019-08-21 · Teoria dos Grafos Aula 6 Aula passada BFS – implementação Complexidade

Figueiredo – 2010

Componentes Conexos

Complexidade do algoritmo anterior

Maior número de CC de um grafo?

Custo para detectar cada CC?

Usar marcações diferentes para cada CC

Complexidade?

O(m + n)

Page 6: Teoria dos Grafos Aula 6 - Federal University of Rio de Janeirodaniel/grafos/slides/aula_6.pdf · 2019-08-21 · Teoria dos Grafos Aula 6 Aula passada BFS – implementação Complexidade

Figueiredo – 2010

Grafo Direcionado (Dígrafo)Relacionamento não é simétrico!

A estar relacionado com B, não implica B estar relacionado com A

Exemplo de relacionamento assimétrico?

Abstração: arestas têm “direção”par de vértices é ordenado

Exemplo: G = (V, E)

V = {1, 2, 3, 4}

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

1

3

2

4

Page 7: Teoria dos Grafos Aula 6 - Federal University of Rio de Janeirodaniel/grafos/slides/aula_6.pdf · 2019-08-21 · Teoria dos Grafos Aula 6 Aula passada BFS – implementação Complexidade

Figueiredo – 2010

GrauGrau de entrada: número de arestas que “entram” em v: |{(*,v)}|

Grau de saída: número de arestas que “saem” de v: |{(v,*)}|

Exemplo: G = (V, E)g

e(3) = ?

gs(3) = ?

ge(4) = ?

gs(7) = ?

Número máximo de arestas em G?

Relação entre ge(v) e g

s(v)? Nenhuma

n(n-1)

1 7

4 65

3

2

8

Page 8: Teoria dos Grafos Aula 6 - Federal University of Rio de Janeirodaniel/grafos/slides/aula_6.pdf · 2019-08-21 · Teoria dos Grafos Aula 6 Aula passada BFS – implementação Complexidade

Figueiredo – 2010

Caminho, Ciclo, DistânciaMesma definição de antes!

Respeitando o direcionamento das areas

Exemplo: G = (V, E)Existe caminho de 5 para 2?

Ciclo que contém 1?

d(1,8) = ?

d(8,1) = ?

d(7,1) = ?

1 7

4 65

3

2

8

Page 9: Teoria dos Grafos Aula 6 - Federal University of Rio de Janeirodaniel/grafos/slides/aula_6.pdf · 2019-08-21 · Teoria dos Grafos Aula 6 Aula passada BFS – implementação Complexidade

Figueiredo – 2010

Fortemente ConexoAnálogo a conexo (no caso não direcionado)

Existe caminho entre qualquer par de vértices

mas caminho de u a v, não implica caminho de v a u

Exemplo: G = (V, E)

É fortemente conexo?

1 7

4 65

3

2

8

Page 10: Teoria dos Grafos Aula 6 - Federal University of Rio de Janeirodaniel/grafos/slides/aula_6.pdf · 2019-08-21 · Teoria dos Grafos Aula 6 Aula passada BFS – implementação Complexidade

Figueiredo – 2010

Componentes Fortemente Conexos

Análogo a componentes conexos

Subgrafos maximais de G que são fortemente conexos

Exemplo: G = (V, E)

Componentes fortemente conexos?1 7

4 65

3

2

8

Page 11: Teoria dos Grafos Aula 6 - Federal University of Rio de Janeirodaniel/grafos/slides/aula_6.pdf · 2019-08-21 · Teoria dos Grafos Aula 6 Aula passada BFS – implementação Complexidade

Figueiredo – 2010

Busca em Grafos Direcionados

Busca precisa respeitar direcionamento das arestas

(u, v) não é igual a (v, u)

BFS e DFS idênticas (respeitando arestas)

Mesmos algoritmos, mesma complexidade

Mesma idéia!

Mas há diferenças!

Page 12: Teoria dos Grafos Aula 6 - Federal University of Rio de Janeirodaniel/grafos/slides/aula_6.pdf · 2019-08-21 · Teoria dos Grafos Aula 6 Aula passada BFS – implementação Complexidade

Figueiredo – 2010

Busca em Grafos DirecionadosEscolher vértice s (grafo direcionado)

Executar BFS à partir de s

Qual significado dos vértices marcados?

Vértices que s alcança!

Tais vértices alcançam s?

existe caminho de volta a s?

Page 13: Teoria dos Grafos Aula 6 - Federal University of Rio de Janeirodaniel/grafos/slides/aula_6.pdf · 2019-08-21 · Teoria dos Grafos Aula 6 Aula passada BFS – implementação Complexidade

Figueiredo – 2010

Busca em Grafos DirecionadosComo descobrir quais vértices alcançam s?

Solução pouco eficiente

Para cada vértice do grafo, executar BFS e verificar se s é marcado

Idéias melhores?

Inverter a direção das arestas!executar BFS no novo grafo à partir de s

vértices que s alcançou, alcançam s no grafo original!

Page 14: Teoria dos Grafos Aula 6 - Federal University of Rio de Janeirodaniel/grafos/slides/aula_6.pdf · 2019-08-21 · Teoria dos Grafos Aula 6 Aula passada BFS – implementação Complexidade

Figueiredo – 2010

Busca em Grafos DirecionadosExemplo

determinar vértices que chegam em 1?

1 7

4 65

3

2

8

Grafo com arestas invertidas: Grev

1 7

4 65

3

2

8

Executar BFS à partir de 1

Vértices marcados chegam em 1 no grafo original

Page 15: Teoria dos Grafos Aula 6 - Federal University of Rio de Janeirodaniel/grafos/slides/aula_6.pdf · 2019-08-21 · Teoria dos Grafos Aula 6 Aula passada BFS – implementação Complexidade

Figueiredo – 2010

Fortemente ConexoProblema: Como determinar se um grafo direcionado é fortemente conexo?

Como fizemos no caso não-direcionado?

Idéias?

Mesmo princípio de antesSe s chega aos vértices u e v, e os vértices u e v chegam a s

Então u chega a v, via s

Page 16: Teoria dos Grafos Aula 6 - Federal University of Rio de Janeirodaniel/grafos/slides/aula_6.pdf · 2019-08-21 · Teoria dos Grafos Aula 6 Aula passada BFS – implementação Complexidade

Figueiredo – 2010

Fortemente ConexoProblema: Como determinar se um grafo direcionado é fortemente conexo?

Escolher vértice s qualquer

Executar BFS à partir de s

Construir Grev

Executar BFS à partir de s em Grev

Se todos os vértices foram marcados nas duas buscas, então G é fortemente conexo

Complexidade?

Page 17: Teoria dos Grafos Aula 6 - Federal University of Rio de Janeirodaniel/grafos/slides/aula_6.pdf · 2019-08-21 · Teoria dos Grafos Aula 6 Aula passada BFS – implementação Complexidade

Figueiredo – 2010

Executando Tarefas

N tarefas precisam ser executadas

Tarefas são dependentesTarefas tem “pré-requisitos” (como sua grade curricular)

Problema: Qual ordem de execução não viola as dependências?

Modelar problema utilizandografos direcionados

Page 18: Teoria dos Grafos Aula 6 - Federal University of Rio de Janeirodaniel/grafos/slides/aula_6.pdf · 2019-08-21 · Teoria dos Grafos Aula 6 Aula passada BFS – implementação Complexidade

Figueiredo – 2010

Executando TarefasExemplo com 5 tarefas

B depende de AA depende de CC depende de DB depende de EB depende de DC depende de E

A B

DC

E

Qual é a ordem de execução?

Page 19: Teoria dos Grafos Aula 6 - Federal University of Rio de Janeirodaniel/grafos/slides/aula_6.pdf · 2019-08-21 · Teoria dos Grafos Aula 6 Aula passada BFS – implementação Complexidade

Figueiredo – 2010

DAGGrafo direcionado acíclico (DAG, em inglês)

importante estrutura em grafos

Tarefas podem ser executadas, somente se grafo de dependência é um DAG

não podemos ter ciclos!

Dado um DAG, como descobrir ordem de execução das tarefas?

Algoritmo (eficiente)!

Page 20: Teoria dos Grafos Aula 6 - Federal University of Rio de Janeirodaniel/grafos/slides/aula_6.pdf · 2019-08-21 · Teoria dos Grafos Aula 6 Aula passada BFS – implementação Complexidade

Figueiredo – 2010

Ordenação Topológica

Dado grafo direcionado G

Ordenação dos vértices de G: v1, v

2, ..., v

n,

tal que para toda aresta (vi, v

j), i < j

Ordenação dos vértices de forma que arestas “apontam” sempre para frente

A B

DC

E

Ordenação topológica?

v1 = E

v2 = D

v3 = C

v4 = A

v5 = B

Page 21: Teoria dos Grafos Aula 6 - Federal University of Rio de Janeirodaniel/grafos/slides/aula_6.pdf · 2019-08-21 · Teoria dos Grafos Aula 6 Aula passada BFS – implementação Complexidade

Figueiredo – 2010

Ordenação Topológica

Problema: Dado um DAG, como determinar uma ordernação topológica?

Define uma ordem de execução das tarefas

Idéias?

Page 22: Teoria dos Grafos Aula 6 - Federal University of Rio de Janeirodaniel/grafos/slides/aula_6.pdf · 2019-08-21 · Teoria dos Grafos Aula 6 Aula passada BFS – implementação Complexidade

Figueiredo – 2010

Ordenação TopológicaAlgoritmo

1.Ordem = 0

2.Enquanto |V| > 0 faça

3. Encontrar u com grau de entrada zero

4. Ordem = Ordem + u

5. Remover u do grafo G

A B

D

C E

G

F

Exemplo

Page 23: Teoria dos Grafos Aula 6 - Federal University of Rio de Janeirodaniel/grafos/slides/aula_6.pdf · 2019-08-21 · Teoria dos Grafos Aula 6 Aula passada BFS – implementação Complexidade

Figueiredo – 2010

Ordenação TopológicaComplexidade?

1.Ordem = 0

2.Enquanto |V| > 0 faça

3. Encontrar u com grau de entrada zero

4. Ordem = Ordem + u

5. Remover u do grafo G

Depende to tempo para remover u do grafo

Depende do tempo necessário para encontrar u

Procurar sequencialmente: O(n)

Complexidade O(n2)

Page 24: Teoria dos Grafos Aula 6 - Federal University of Rio de Janeirodaniel/grafos/slides/aula_6.pdf · 2019-08-21 · Teoria dos Grafos Aula 6 Aula passada BFS – implementação Complexidade

Figueiredo – 2010

Ordenação Topológica

Como melhorar complexidade?

Manter vetor de grau de entrada

Manter lista de vértices com grau zero

Atualizar vetor e lista a cada remoção de vértice

inserir na lista quando grau for zero

Complexidade: O(m + n)