Aula05 grafos aplicacoes - USPwiki.icmc.usp.br › images › d › d8 › SCC0603022016... ·...

28
Grafos – Aplicações dos Algoritmos de Busca Profa. Elaine Parros Machado de Sousa adaptações: Cris.na Dutra de Aguiar Ciferri Material baseado em aulas dos professores: Gustavo Ba5sta, Robson Cordeiro, Moacir Pon5 Jr. e Maria Cris5na Oliveira, Thiago A.S. Pardo ALGORITMOS E ESTRUTURAS DE DADOS II

Transcript of Aula05 grafos aplicacoes - USPwiki.icmc.usp.br › images › d › d8 › SCC0603022016... ·...

Page 1: Aula05 grafos aplicacoes - USPwiki.icmc.usp.br › images › d › d8 › SCC0603022016... · Aula05_grafos_aplicacoes.pptx Author: Cristina Ciferri Created Date: 11/22/2016 4:15:19

Grafos  –  Aplicações  dos  Algoritmos  de  Busca  

Profa.  Elaine  Parros  Machado  de  Sousa  adaptações:  Cris.na  Dutra  de  Aguiar  Ciferri  

Material  baseado  em  aulas  dos  professores:    Gustavo  Ba5sta,  Robson  Cordeiro,  Moacir  Pon5  Jr.  e  

Maria  Cris5na  Oliveira,  Thiago  A.S.  Pardo  

ALGORITMOS E ESTRUTURAS DE DADOS II

Page 2: Aula05 grafos aplicacoes - USPwiki.icmc.usp.br › images › d › d8 › SCC0603022016... · Aula05_grafos_aplicacoes.pptx Author: Cristina Ciferri Created Date: 11/22/2016 4:15:19

¢ 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  G  não  apresentar  arestas  de  retorno.  

¢ Em  termos  do  algoritmo  �  verificar  se  um  vér5ce  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: Aula05 grafos aplicacoes - USPwiki.icmc.usp.br › images › d › d8 › SCC0603022016... · Aula05_grafos_aplicacoes.pptx Author: Cristina Ciferri Created Date: 11/22/2016 4:15:19

3 2 1

4 5 6

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

Page 4: Aula05 grafos aplicacoes - USPwiki.icmc.usp.br › images › d › d8 › SCC0603022016... · Aula05_grafos_aplicacoes.pptx Author: Cristina Ciferri Created Date: 11/22/2016 4:15:19

3 2 1

4 5 6

1/ 1

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

árvore de busca em profundidade

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

Page 5: Aula05 grafos aplicacoes - USPwiki.icmc.usp.br › images › d › d8 › SCC0603022016... · Aula05_grafos_aplicacoes.pptx Author: Cristina Ciferri Created Date: 11/22/2016 4:15:19

3 2 1

4 5 6

1/ 2/ 1

2 arv

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

árvore de busca em profundidade

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

Page 6: Aula05 grafos aplicacoes - USPwiki.icmc.usp.br › images › d › d8 › SCC0603022016... · Aula05_grafos_aplicacoes.pptx Author: Cristina Ciferri Created Date: 11/22/2016 4:15:19

3 2 1

4 5 6

1/ 2/ 3/ 1

2

3

arv arv

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

árvore de busca em profundidade

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

Page 7: Aula05 grafos aplicacoes - USPwiki.icmc.usp.br › images › d › d8 › SCC0603022016... · Aula05_grafos_aplicacoes.pptx Author: Cristina Ciferri Created Date: 11/22/2016 4:15:19

3 2 1

4 5 6

1/ 2/ 3/ arv arv

1

2

3

6

arv

4/

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

árvore de busca em profundidade

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

Page 8: Aula05 grafos aplicacoes - USPwiki.icmc.usp.br › images › d › d8 › SCC0603022016... · Aula05_grafos_aplicacoes.pptx Author: Cristina Ciferri Created Date: 11/22/2016 4:15:19

3 2 1

4 5 6

1/ 2/ 3/ arv arv

arv ret

4/5

1

2

3

6

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

árvore de busca em profundidade

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

Page 9: Aula05 grafos aplicacoes - USPwiki.icmc.usp.br › images › d › d8 › SCC0603022016... · Aula05_grafos_aplicacoes.pptx Author: Cristina Ciferri Created Date: 11/22/2016 4:15:19

3 2 1

4 5 6

1/ 2/ 3/ arv arv

arv ret

4/5

1

2

3

6

árvore de busca em profundidade grafo  cíclico  

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

Page 10: Aula05 grafos aplicacoes - USPwiki.icmc.usp.br › images › d › d8 › SCC0603022016... · Aula05_grafos_aplicacoes.pptx Author: Cristina Ciferri Created Date: 11/22/2016 4:15:19

¢   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: Aula05 grafos aplicacoes - USPwiki.icmc.usp.br › images › d › d8 › SCC0603022016... · Aula05_grafos_aplicacoes.pptx Author: Cristina Ciferri Created Date: 11/22/2016 4:15:19

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

� Ordenação  linear  de  todos  os  vér5ces  de  G,  tal  que  se  G  contém  uma  aresta  (u,v)  então  u  aparece  antes  de  v  ¢ ordenação  dos  vér5ces  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  u5lizados,  por  exemplo,  para  indicar  precedência  entre  eventos  

Page 12: Aula05 grafos aplicacoes - USPwiki.icmc.usp.br › images › d › d8 › SCC0603022016... · Aula05_grafos_aplicacoes.pptx Author: Cristina Ciferri Created Date: 11/22/2016 4:15:19

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

profundidade  ¢  Algoritmo  

1.  Faça  uma  busca  em  profundidade  2.  Quando  um  vér5ce  é  pintado  de  preto,  

insira-­‐o  na  cabeça  de  uma  lista  de  vér5ces  3.  Retorne  a  lista  de  vér5ces  

Ordenação  Topológica:  Busca  em  Profundidade  

Page 13: Aula05 grafos aplicacoes - USPwiki.icmc.usp.br › images › d › d8 › SCC0603022016... · Aula05_grafos_aplicacoes.pptx Author: Cristina Ciferri Created Date: 11/22/2016 4:15:19

3 2

4 5 6

1

Ordenação  Topológica:  Exemplo  

Page 14: Aula05 grafos aplicacoes - USPwiki.icmc.usp.br › images › d › d8 › SCC0603022016... · Aula05_grafos_aplicacoes.pptx Author: Cristina Ciferri Created Date: 11/22/2016 4:15:19

3 2

4 5 6

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

1 1/

Ordenação  Topológica:  Exemplo  

Page 15: Aula05 grafos aplicacoes - USPwiki.icmc.usp.br › images › d › d8 › SCC0603022016... · Aula05_grafos_aplicacoes.pptx Author: Cristina Ciferri Created Date: 11/22/2016 4:15:19

3 2

4 5 6

1 1/

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

2/

Ordenação  Topológica:  Exemplo  

Page 16: Aula05 grafos aplicacoes - USPwiki.icmc.usp.br › images › d › d8 › SCC0603022016... · Aula05_grafos_aplicacoes.pptx Author: Cristina Ciferri Created Date: 11/22/2016 4:15:19

3 2

4 5 6

1 1/

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

2/ 3/

Ordenação  Topológica:  Exemplo  

Page 17: Aula05 grafos aplicacoes - USPwiki.icmc.usp.br › images › d › d8 › SCC0603022016... · Aula05_grafos_aplicacoes.pptx Author: Cristina Ciferri Created Date: 11/22/2016 4:15:19

3 2

4 5 6

1 1/

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

2/ 3/

4/

Ordenação  Topológica:  Exemplo  

Page 18: Aula05 grafos aplicacoes - USPwiki.icmc.usp.br › images › d › d8 › SCC0603022016... · Aula05_grafos_aplicacoes.pptx Author: Cristina Ciferri Created Date: 11/22/2016 4:15:19

3 2

4 5 6

1 1/

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

2/ 3/

4/5

6 lista de vértices

Ordenação  Topológica:  Exemplo  

Page 19: Aula05 grafos aplicacoes - USPwiki.icmc.usp.br › images › d › d8 › SCC0603022016... · Aula05_grafos_aplicacoes.pptx Author: Cristina Ciferri Created Date: 11/22/2016 4:15:19

3 2

4 5 6

1 1/

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

2/ 3/6

4/5

6 lista de vértices 3

Ordenação  Topológica:  Exemplo  

Page 20: Aula05 grafos aplicacoes - USPwiki.icmc.usp.br › images › d › d8 › SCC0603022016... · Aula05_grafos_aplicacoes.pptx Author: Cristina Ciferri Created Date: 11/22/2016 4:15:19

3 2

4 5 6

1 1/

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

2/ 3/6

4/5

6 lista de vértices 3

7/

Ordenação  Topológica:  Exemplo  

Page 21: Aula05 grafos aplicacoes - USPwiki.icmc.usp.br › images › d › d8 › SCC0603022016... · Aula05_grafos_aplicacoes.pptx Author: Cristina Ciferri Created Date: 11/22/2016 4:15:19

3 2

4 5 6

1 1/

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

2/ 3/6

4/5

6 lista de vértices 3

7/8

5

Ordenação  Topológica:  Exemplo  

Page 22: Aula05 grafos aplicacoes - USPwiki.icmc.usp.br › images › d › d8 › SCC0603022016... · Aula05_grafos_aplicacoes.pptx Author: Cristina Ciferri Created Date: 11/22/2016 4:15:19

3 2

4 5 6

1 1/

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

2/ 3/6

4/5

6 lista de vértices 3

7/8

5 2

Ordenação  Topológica:  Exemplo  

Page 23: Aula05 grafos aplicacoes - USPwiki.icmc.usp.br › images › d › d8 › SCC0603022016... · Aula05_grafos_aplicacoes.pptx Author: Cristina Ciferri Created Date: 11/22/2016 4:15:19

3 2

4 5 6

1 1/10

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

2/ 3/6

4/5

6 lista de vértices 3

7/8

5 2 1

Ordenação  Topológica:  Exemplo  

Page 24: Aula05 grafos aplicacoes - USPwiki.icmc.usp.br › images › d › d8 › SCC0603022016... · Aula05_grafos_aplicacoes.pptx Author: Cristina Ciferri Created Date: 11/22/2016 4:15:19

3 2

4 5 6

1 1/10 2/ 3/6

4/5

6 lista de vértices 3

7/8

5 2 1

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

11/

Ordenação  Topológica:  Exemplo  

Page 25: Aula05 grafos aplicacoes - USPwiki.icmc.usp.br › images › d › d8 › SCC0603022016... · Aula05_grafos_aplicacoes.pptx Author: Cristina Ciferri Created Date: 11/22/2016 4:15:19

3 2

4 5 6

1 1/10 2/ 3/6

4/5

6 lista de vértices 3

7/8

5 2 1

11/12

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

4

Ordenação  Topológica:  Exemplo  

Page 26: Aula05 grafos aplicacoes - USPwiki.icmc.usp.br › images › d › d8 › SCC0603022016... · Aula05_grafos_aplicacoes.pptx Author: Cristina Ciferri Created Date: 11/22/2016 4:15:19

3 2

4 5 6

1 1/10 2/ 3/6

4/5

6 lista de vértices 3

7/8

5 2 1

11/12

4

Ordenação  Topológica:  Exemplo  

Page 27: Aula05 grafos aplicacoes - USPwiki.icmc.usp.br › images › d › d8 › SCC0603022016... · Aula05_grafos_aplicacoes.pptx Author: Cristina Ciferri Created Date: 11/22/2016 4:15:19

¢ 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: Aula05 grafos aplicacoes - USPwiki.icmc.usp.br › images › d › d8 › SCC0603022016... · Aula05_grafos_aplicacoes.pptx Author: Cristina Ciferri Created Date: 11/22/2016 4:15:19

BIBLIOGRAFIA  ¢ N.  Ziviani.  Projeto  de  Algoritmos,  Thomson,  2a.  Edição,  2004.  

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