grafos –aplicações dos algoritmos de busca

28
Grafos – Aplicações dos Algoritmos de Busca Profa. Elaine Parros Machado de Sousa adaptações: Cristina Dutra de Aguiar Ciferri Material baseado em aulas dos professores: Gustavo Batista, Robson Cordeiro, Moacir Ponti Jr. e Maria Cristina Oliveira, Thiago A.S. Pardo ESTRUTURAS DE DADOS III

Upload: others

Post on 23-Jul-2022

8 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Grafos –Aplicações dos Algoritmos de Busca

Grafos – Aplicações dos Algoritmos de Busca

Profa. Elaine Parros Machado de Sousaadaptações: Cristina Dutra de Aguiar Ciferri

Material baseado em aulas dos professores: Gustavo Batista, Robson Cordeiro, Moacir Ponti Jr. e

Maria Cristina Oliveira, Thiago A.S. Pardo

ESTRUTURAS DE DADOS III

Page 2: Grafos –Aplicações dos Algoritmos de Busca

¢Busca em profundidade� pode ser usada para verificar se um grafo é acíclico

ou contém um ou mais ciclos¢Grafo G é acíclico

� se e somente se a busca em profundidade em Gnão apresentar arestas de retorno.

¢Em termos do algoritmo� verificar se um vértice w adjacente a v possui cor

cinza na primeira vez que a aresta (v, w) é percorrida.

Teste de Grafo Cíclico/Acíclico: Busca em Profundidade

Page 3: Grafos –Aplicações dos Algoritmos de Busca

3 2 1

456

Teste de Grafo Cíclico/Acíclico: Exemplo

Page 4: Grafos –Aplicações dos Algoritmos de Busca

3 2 1

456

1/1

Vértice origem: 1Tempo de descoberta: 1 Ação: vértice 1 torna-se cinzaTempo de término: -

árvore de busca em profundidade

Teste de Grafo Cíclico/Acíclico: Exemplo

Page 5: Grafos –Aplicações dos Algoritmos de Busca

3 2 1

456

1/2/1

2arv

Primeiro vértice não descoberto adjacente a 1: 2Tempo de descoberta: 2 Ação: vértice 2 torna-se cinzaTempo de término:

árvore de busca em profundidade

Teste de Grafo Cíclico/Acíclico: Exemplo

Page 6: Grafos –Aplicações dos Algoritmos de Busca

3 2 1

456

1/2/3/1

2

3

arvarv

Primeiro vértice não descoberto adjacente a 2: 3Tempo de descoberta: 3 Ação: vértice 3 torna-se cinzaTempo de término:

árvore de busca em profundidade

Teste de Grafo Cíclico/Acíclico: Exemplo

Page 7: Grafos –Aplicações dos Algoritmos de Busca

3 2 1

456

1/2/3/ arvarv1

2

3

6

arv

4/

Primeiro vértice não descoberto adjacente a 3: 6Tempo de descoberta: 4 Ação: vértice 6 torna-se cinzaTempo de término:

árvore de busca em profundidade

Teste de Grafo Cíclico/Acíclico: Exemplo

Page 8: Grafos –Aplicações dos Algoritmos de Busca

3 2 1

456

1/2/3/ arvarv

arv ret

4/5

1

2

3

6

Primeiro vértice não descoberto adjacente a 6: nenhumTempo de descoberta: -Ação: vértice 6 torna-se pretoTempo de término: 5

árvore de busca em profundidade

Teste de Grafo Cíclico/Acíclico: Exemplo

Page 9: Grafos –Aplicações dos Algoritmos de Busca

3 2 1

456

1/2/3/ arvarv

arv ret

4/5

1

2

3

6

árvore de busca em profundidadegrafo cíclico

Teste de Grafo Cíclico/Acíclico: Exemplo

Page 10: Grafos –Aplicações dos Algoritmos de Busca

¢ Mesma da busca em profundidade� O(|V|+|V|2) para matrizes de

adjacências � O(|V|+|A|) para listas de adjacências

Teste de Grafo Cíclico/Acíclico: Complexidade

Page 11: Grafos –Aplicações dos Algoritmos de Busca

Ordenação Topológica:Definição¢Ordenação topológica de um DAG

� Ordenação linear de todos os vértices de G, tal que se G contém uma aresta (u,v) então uaparece antes de v¢ordenação dos vértices de G ao longo de uma linha

horizontal de tal forma que todas as arestas estão direcionadas da esquerda para a direita

¢ Aplicada a DAGs� DAGs podem ser utilizados, por exemplo, para

indicar precedência entre eventos

Page 12: Grafos –Aplicações dos Algoritmos de Busca

¢ Ordenação topológica� pode ser obtida por busca em

profundidade¢ Algoritmo

1. Faça uma busca em profundidade2. Quando um vértice é pintado de preto,

insira-o na cabeça de uma lista de vértices3. Retorne a lista de vértices

Ordenação Topológica:Busca em Profundidade

Page 13: Grafos –Aplicações dos Algoritmos de Busca

3 2

456

1

Ordenação Topológica:Exemplo

Page 14: Grafos –Aplicações dos Algoritmos de Busca

3 2

456

Vértice origem: 1Tempo de descoberta: 1 Ação: vértice 1 torna-se cinzaTempo de término: -

11/

Ordenação Topológica:Exemplo

Page 15: Grafos –Aplicações dos Algoritmos de Busca

3 2

456

11/

Primeiro vértice não descoberto adjacente a 1: 2Tempo de descoberta: 2 Ação: vértice 2 torna-se cinzaTempo de término:

2/

Ordenação Topológica:Exemplo

Page 16: Grafos –Aplicações dos Algoritmos de Busca

3 2

456

11/

Primeiro vértice não descoberto adjacente a 2: 3Tempo de descoberta: 3 Ação: vértice 3 torna-se cinzaTempo de término:

2/3/

Ordenação Topológica:Exemplo

Page 17: Grafos –Aplicações dos Algoritmos de Busca

3 2

456

11/

Primeiro vértice não descoberto adjacente a 3: 6Tempo de descoberta: 4 Ação: vértice 6 torna-se cinzaTempo de término:

2/3/

4/

Ordenação Topológica:Exemplo

Page 18: Grafos –Aplicações dos Algoritmos de Busca

3 2

456

11/

Primeiro vértice não descoberto adjacente a 6: nenhumTempo de descoberta: -Ação: vértice 6 torna-se pretoTempo de término: 5Ação: insere o vértice 6 na cabeça da lista de vértices

2/3/

4/5

6lista de vértices

Ordenação Topológica:Exemplo

Page 19: Grafos –Aplicações dos Algoritmos de Busca

3 2

456

11/

Primeiro vértice não descoberto adjacente a 3: nenhumTempo de descoberta: -Ação: vértice 3 torna-se pretoTempo de término: 6Ação: insere o vértice 3 na cabeça da lista de vértices

2/3/6

4/5

6lista de vértices 3

Ordenação Topológica:Exemplo

Page 20: Grafos –Aplicações dos Algoritmos de Busca

3 2

456

11/

Primeiro vértice não descoberto adjacente a 2: 5Tempo de descoberta: 7 Ação: vértice 5 torna-se cinzaTempo de término: -

2/3/6

4/5

6lista de vértices 3

7/

Ordenação Topológica:Exemplo

Page 21: Grafos –Aplicações dos Algoritmos de Busca

3 2

456

11/

Primeiro vértice não descoberto adjacente a 5: nenhumTempo de descoberta: Ação: vértice 5 torna-se pretoTempo de término: 8Ação: insere o vértice 5 na cabeça da lista de vértices

2/3/6

4/5

6lista de vértices 3

7/8

5

Ordenação Topológica:Exemplo

Page 22: Grafos –Aplicações dos Algoritmos de Busca

3 2

456

11/

Primeiro vértice não descoberto adjacente a 2: nenhumTempo de descoberta: Ação: vértice 2 torna-se pretoTempo de término: 9Ação: insere o vértice 2 na cabeça da lista de vértices

2/3/6

4/5

6lista de vértices 3

7/8

52

Ordenação Topológica:Exemplo

Page 23: Grafos –Aplicações dos Algoritmos de Busca

3 2

456

11/10

Primeiro vértice não descoberto adjacente a 1: nenhumTempo de descoberta: Ação: vértice 1 torna-se pretoTempo de término: 10Ação: insere o vértice 1 na cabeça da lista de vértices

2/3/6

4/5

6lista de vértices 3

7/8

521

Ordenação Topológica:Exemplo

Page 24: Grafos –Aplicações dos Algoritmos de Busca

3 2

456

11/102/3/6

4/5

6lista de vértices 3

7/8

521

Vértice origem: 4Tempo de descoberta: 11 Ação: vértice 4 torna-se cinzaTempo de término: -

11/

Ordenação Topológica:Exemplo

Page 25: Grafos –Aplicações dos Algoritmos de Busca

3 2

456

11/102/3/6

4/5

6lista de vértices 3

7/8

521

11/12

Primeiro vértice não descoberto adjacente a 4: nenhumTempo de descoberta: -Ação: vértice 4 torna-se pretoTempo de término: 12Ação: insere o vértice 4 na cabeça da lista de vértices

4

Ordenação Topológica:Exemplo

Page 26: Grafos –Aplicações dos Algoritmos de Busca

3 2

456

11/102/3/6

4/5

6lista de vértices 3

7/8

521

11/12

4

Ordenação Topológica:Exemplo

Page 27: Grafos –Aplicações dos Algoritmos de Busca

¢Atenção � não há uma única ordenação topológica� não há ordenação topológica em grafos com

ciclos¢Complexidade

� mesma da busca em profundidade¢O(|V|+|V|2) para matrizes de adjacência¢O(|V|+|A|) para listas de adjacência¢Inserir um elemento na cabeça da lista: O(1)

Ordenação Topológica:Considerações Finais

Page 28: Grafos –Aplicações dos Algoritmos de Busca

BIBLIOGRAFIA¢N. Ziviani. Projeto de Algoritmos,

Thomson, 2a. Edição, 2004.

¢T. H. Cormen, C. E. Leiserson and R. L. Rivest. Introduction to Algorithms, MIT Press, 2nd Edition, 2001.