126
Grafos Representações, Buscas e Aplicações MC 202 – Estruturas de Dados Prof. Anderson Rocha

Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

Grafos Representações, Buscas e Aplicações

MC 202 – Estruturas de Dados

Prof. Anderson Rocha

Page 2: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

Organização dessa aula

Page 3: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Sumário

3

‣ Recapitulando

‣ Implementação de Grafos

‣ Algoritmos em Grafos: Busca em Profundidade e Largura

‣ Aplicações

‣ Lição da aula de hoje

‣ Próximos capítulos

‣ Exercícios

Page 4: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

Warming Up...

Page 5: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

O que vimos até agora?

‣ O que vimos no curso até o momento

• Arranjos, filas, pilhas

• Árvores (Binária, B, heaps)

• Hashes

• Grafos (Definições)

5

Page 6: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Grafos – Definições

‣ Um grafo G = (V, A) é constituído de um conjunto de vértices e um conjunto de arestas conectando pares de vértices.

‣ Pode ser direcionado, não direcionado, ponderado

6

Page 7: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Grafos – Definições

‣ Muitas aplicações em computação precisam considerar um conjunto de conexões entrepares de objetos

• Existe um caminho para ir de um objeto a outro seguindo as conexões?

• Qual a menor distância entre um objeto e outro?

• Quantos objetos podem ser alcançados a partir de um determinado objeto?

7

Page 8: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Grafos – Aplicações

‣ Alguns problemas práticos que podemos resolver com grafos

• Ajudar máquinas de busca a localizar informação relevante na Web

• Descobrir os melhores casamentos entre posições disponíveis em empresas e pessoas que aplicaram para as posições de interesse

• Descobrir qual o roteiro mais curto para visitar as principais cidades de uma regiões turística

8

Page 9: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Grafos – Modelagem

‣ Finalmente, vimos a questão da modelagem de problemas segundo a ótica de grafos

‣ Exemplo da conexão entre cidades, distâncias, pedágios, pavimentação etc.

9

Page 10: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

Ok... mas como implementar?

Page 11: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Idéias básicas

‣ Podemos implementar o tipo abstrato de dados “Grafo” basicamente de duas formas

• Matriz de Adjacências

• Lista de Adjacências

11

Page 12: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Matriz de Adjacências

‣ A matriz de adjacências de um grafo G = (V, A) contendo n vértices é uma matriz de nxn

‣ A[i,j] é 1 se e somente se existe um arco do vértice i para o vértice j.

12

Page 13: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Matriz de Adjacências

13

Como fazer com grafos ponderados?

Page 14: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Matriz de Adjacências

‣ Quando devemos optar por essa representação?

• Grafos densos (|A| ~ |V|2)

• Por que?

‣ O tempo necessário para acessar um elemento é independente de |V| ou |A|

14

Page 15: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Matriz de Adjacências

‣ É útil quando queremos saber com rapidez se existe um aresta ligando dois vértices

‣ Qual a desvantagem?

• Armazenamento necessita Ω(|V|2) de espaço

• Então ler ou examinar a matriz nos custa O(|V|2)

15

Page 16: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Lista de Adjacências

‣ Utilizamos listas encadeadas

‣ Temos um arranjo adj de |V| listas, uma para cada vértice em V

‣ Para cada vértice u em V

• adj[u] contém todos os vértices adjacentes a u em G.

16

Page 17: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Lista de Adjacências

17

0

1

2

3

1 5

1 3 2 7

0

1

2

3

1 5

0 5 2 7

1 7

Page 18: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Lista de Adjacências

‣ Armazenamento em ordem arbitrária

‣ Complexidade de espaço é O(|V| + |A|)

‣ Quando é indicada?

• Grafos esparsos (|A| << |V|2)

18

Page 19: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Lista de Adjacências

‣ Qual a maior desvantagem?

• Pode ter tempo O(|V|) para determinar se existe uma aresta entre o vértice i e o vértice j

• Por que? Podem existir O(|V|) vértices na lista de adjacentes do vértice i.

19

Page 20: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

Ok... mas o que podemos fazer com isso?

Page 21: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Algoritmos em Grafos

‣ Efetuar buscas

‣ Determinar topologias e restrições

‣ Achar caminhos mínimos

‣ Achar componentes

21

Page 22: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Algoritmos em Grafos

‣ Determinar comunidades em redes sociais

‣ Analisar padrões de espalhamento e comportamento

‣ etc.

22

Page 23: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

Busca em Profundidade

Page 24: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Busca em Profundidade

‣ É um algoritmo para caminhar no grafo

‣ A estratégia é buscar o “mais profundo” no grafo sempre que possível

‣ As arestas são exploradas a partir do vértice v mais recentemente descoberto que ainda possui arestas não exploradas saindo dele

24

Page 25: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Busca em Profundidade

‣ Quando todas as arestas adjacentes a v tiverem sido exploradas a busca “anda para tras” para explorar vértices que saem do vértice do qual v foi descoberto

‣ Algoritmo útil em diversas aplicações

• Ordenação topológica

• Componentes conectados

• Verificação de ciclos

25

Page 26: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Busca em Profundidade

‣ Para acompanhar o progresso do algoritmo, cada vértice é colorido de branco, cinza ou preto

‣ Todos os vértices começam em branco

‣ Quando um vértice é descoberto pela 1ª vez, ele se torna cinza

26

Page 27: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Busca em Profundidade

‣ Quando acabamos de analisar sua lista de adjacentes ele se torna preto

‣ Usamos “time-stamps” para marcar o tempo de descoberta e o tempo de finalização

27

Page 28: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Busca em Profundidade

28

u v w

x y z

Page 29: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Busca em Profundidade

29

1/

u v w

x y z

Page 30: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Busca em Profundidade

30

1/ 2/

u v w

x y z

Page 31: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Busca em Profundidade

31

1/ 2/

u v w

x y z

Page 32: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Busca em Profundidade

32

1/ 2/

3/

u v w

x y z

Page 33: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Busca em Profundidade

33

1/ 2/

3/

u v w

x y z

Page 34: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Busca em Profundidade

34

1/ 2/

4/ 3/

u v w

x y z

Page 35: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Busca em Profundidade

35

1/ 2/

4/ 3/

u v w

x y z

Page 36: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Busca em Profundidade

36

1/ 2/

4/5 3/

u v w

x y z

Page 37: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Busca em Profundidade

37

1/ 2/

4/5 3/6

u v w

x y z

Page 38: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Busca em Profundidade

38

1/ 2/7

4/5 3/6

u v w

x y z

Page 39: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Busca em Profundidade

39

1/ 2/7

4/5 3/6

u v w

x y z

Page 40: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Busca em Profundidade

40

1/8 2/7

4/5 3/6

u v w

x y z

Page 41: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Busca em Profundidade

41

1/8 2/7 9/

4/5 3/6

u v w

x y z

Page 42: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Busca em Profundidade

42

1/8 2/7 9/

4/5 3/6

u v w

x y z

Page 43: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Busca em Profundidade

43

1/8 2/7 9/

4/5 3/6

u v w

x y z

Page 44: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Busca em Profundidade

44

1/8 2/7 9/

4/5 3/6 10/

u v w

x y z

Page 45: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Busca em Profundidade

45

1/8 2/7 9/

4/5 3/6 10/

u v w

x y z

Page 46: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Busca em Profundidade

46

1/8 2/7 9/

4/5 3/6 10/1

u v w

x y z

Page 47: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Busca em Profundidade

47

1/8 2/7 9/12

4/5 3/6 10/1

u v w

x y z

Page 48: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

Algoritmo e Complexidade

Page 49: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

1. BuscaProf(G)

2. Para cada vértice u em V[G]

3. coru = Branco; paiu = NULL

4. tempo = 0

5. Para cada vértice u em V[G]

6. Se(coru == Branco)

7. Visitar(u)

Busca em Profundidade

49

Page 50: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

1. BuscaProf(G)

2. Para cada vértice u em V[G]

3. coru = Branco; paiu = NULL

4. tempo = 0

5. Para cada vértice u em V[G]

6. Se(coru == Branco)

7. Visitar(u)

Busca em Profundidade

50

O(|V|)

Page 51: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

1. BuscaProf(G)

2. Para cada vértice u em V[G]

3. coru = Branco; paiu = NULL

4. tempo = 0

5. Para cada vértice u em V[G]

6. Se(coru == Branco)

7. Visitar(u)

Busca em Profundidade

51

O(|V|)

???

Page 52: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

1. Visitar(u)

2. coru = cinza; tempo = tempo + 1; du = tempo;

3. Para cada v em Adj[u]

4. Se (corv == Branco)

5. paiv = u

6. Visitar(v)

7. coru = Preto

8. fu = tempo + 1; tempo = tempo + 1;

Busca em Profundidade

52

Executado vezes |Adj[u]|

Page 53: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Busca em Profundidade

‣ Fazemos uso da Análise agregada

‣ Visitar é chamado apenas uma vez para cada vértice v em V mas apenas para vértices brancos

‣ Todas as chamadas a Visitar tem custo

!

!

‣ Logo, custo do algoritmo é O(|V| + |E|)

53

u�V

|Adj[u]| = �(E)

Page 54: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

Busca em Largura

Page 55: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Busca em Largura

‣ Explicar busca em largura

55

Page 56: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Busca em Largura

56

r s t u

v w x y

Page 57: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Busca em Largura

57

∞ 0 ∞ ∞

∞ ∞ ∞ ∞

r s t u

v w x y

Fila Q s

0Nível

Page 58: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Busca em Largura

58

1 0 ∞ ∞

∞ 1 ∞ ∞

r s t u

v w x y

Fila Q w

1Nívelr

1

Page 59: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Busca em Largura

59

1 0 ∞ ∞

∞ 1 ∞ ∞

r s t u

v w x y

Fila Q w

1Nívelr

1

Page 60: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Busca em Largura

60

1 0 2 ∞

∞ 1 2 ∞

r s t u

v w x y

Fila Q r

1Nívelt

2

x

2

Page 61: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Busca em Largura

61

1 0 2 ∞

∞ 1 2 ∞

r s t u

v w x y

Fila Q r

1Nívelt

2

x

2

Page 62: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Busca em Largura

62

1 0 2 ∞

2 1 2 ∞

r s t u

v w x y

Fila QNível

t

2

x

2

v

2

Page 63: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Busca em Largura

63

1 0 2 ∞

2 1 2 ∞

r s t u

v w x y

Fila QNível

t

2

x

2

v

2

Page 64: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Busca em Largura

64

1 0 2 3

2 1 2 ∞

r s t u

v w x y

Fila QNível

x

2

v

2

u

3

Page 65: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Busca em Largura

65

1 0 2 3

2 1 2 ∞

r s t u

v w x y

Fila QNível

x

2

v

2

u

3

Page 66: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Busca em Largura

66

1 0 2 3

2 1 2 3

r s t u

v w x y

Fila QNível

v

2

u

3

y

3

Page 67: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Busca em Largura

67

1 0 2 3

2 1 2 3

r s t u

v w x y

Fila QNível

v

2

u

3

y

3

Page 68: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Busca em Largura

68

1 0 2 3

2 1 2 3

r s t u

v w x y

Fila QNível

u

3

y

3

Page 69: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Busca em Largura

69

1 0 2 3

2 1 2 3

r s t u

v w x y

Fila QNível

y

3

Page 70: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Busca em Largura

70

1 0 2 3

2 1 2 3

r s t u

v w x y

Fila QNível

ø

Page 71: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Busca em Largura – Algoritmo

71

1. BuscaLarg(G)

2. Para cada vértice u em V[G] - {S}

3. coru = Branco; du = 0; paiu = NULL

4. cors = Cinza

5. ds = 0; pais = NULL;

6. Q = {}

7. Enqueue(Q,s)

Page 72: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Busca em Largura – Algoritmo

72

8. (...)

9. while(Q != {})

10. u = DeQueue(Q)

11. foreach v = Adj[u]

12. if(corv BRANCO)

13. corv = CINZA; dv = du + 1; paiv = u;

14. Enqueue(Q,v)

15. coru = PRETO

Page 73: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

Aplicações de Buscas

Page 74: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

Onde podemos usar a Busca em Profundidade?

Page 75: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

Ordenação Topológica

Aplicação 1

Page 76: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Busca em Profundidade

‣ Podemos usar Busca em Profundidade para Ordenar Topologicamente um grafo

‣ Ordenação topológica é uma ordenação linear de todos os seus vértices, tal que se se o grafo G (acíclico*) tem uma aresta (u, v), então u aparece antes de v na ordenação

76

* Grafo cíclico = não é possível ordem linear

Page 77: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Busca em Profundidade‣ Considere o problema

• João quer definir a ordem de ações em que deve se preparar para uma reunião

• Suas restrições são que ele deve vestir a cueca antes das calças e o cinto só pode ser colocado após vestir a calça

• O paletó deve ser colocado após colocar os cintos

• A camisa deve ser colocada antes do cinto

77

Page 78: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Busca em Profundidade‣ Considere o problema

• A gravata deve ser colocada depois da camisa e antes do paletó

• As meias podem ser colocadas em qualquer ordem

• As Cueca devem ser colocadas antes dos sapatos assim como as calças

‣ Como conseguir um plano de execução?

78

Page 79: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Ordenação Topológica

79

Cueca

Calças

Cinto

Camisa

Gravata Sapatos

Meias

Paletó

Page 80: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Ordenação Topológica

80

Cueca

Calças

Cinto

Camisa (1/)

Gravata Sapatos

Meias

Paletó

Page 81: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Ordenação Topológica

81

Cueca

Calças

Cinto

Camisa (1/)

Gravata (2/) Sapatos

Meias

Paletó

Page 82: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Ordenação Topológica

82

Cueca

Calças

Cinto

Camisa (1/)

Gravata (2/) Sapatos

Meias

Paletó (3/)

Page 83: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Ordenação Topológica

83

Cueca

Calças

Cinto

Camisa (1/)

Gravata (2/) Sapatos

Meias

Paletó (3/4)

{Paletó}

Page 84: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Ordenação Topológica

84

Cueca

Calças

Cinto

Camisa (1/)

Gravata (2/5) Sapatos

Meias

Paletó (3/4)

{Gravata, Paletó}

Page 85: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Ordenação Topológica

85

Cueca

Calças

Cinto (6/)

Camisa (1/)

Gravata (2/5) Sapatos

Meias

Paletó (3/4)

{Gravata, Paletó}

Page 86: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Ordenação Topológica

86

Cueca

Calças

Cinto (6/7)

Camisa (1/)

Gravata (2/5) Sapatos

Meias

Paletó (3/4)

{Cinto, Gravata, Paletó}

Page 87: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Ordenação Topológica

87

Cueca

Calças

Cinto (6/7)

Camisa (1/8)

Gravata (2/5) Sapatos

Meias

Paletó (3/4)

{Camisa, Cinto, Gravata, Paletó}

Page 88: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Ordenação Topológica

88

Cueca (9/)

Calças

Cinto (6/7)

Camisa (1/8)

Gravata (2/5) Sapatos

Meias

Paletó (3/4)

{Camisa, Cinto, Gravata, Paletó}

Page 89: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Ordenação Topológica

89

Cueca (9/)

Calças (10/)

Cinto (6/7)

Camisa (1/8)

Gravata (2/5) Sapatos

Meias

Paletó (3/4)

{Camisa, Cinto, Gravata, Paletó}

Page 90: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Ordenação Topológica

90

Cueca (9/)

Calças (10/)

Cinto (6/7)

Camisa (1/8)

Gravata (2/5) Sapatos (11/)

Meias

Paletó (3/4)

{Camisa, Cinto, Gravata, Paletó}

Page 91: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Ordenação Topológica

91

Cueca (9/)

Calças (10/)

Cinto (6/7)

Camisa (1/8)

Gravata (2/5) Sapatos (11/12)

Meias

Paletó (3/4)

{Sapatos, Camisa, Cinto, Gravata, Paletó}

Page 92: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Ordenação Topológica

92

Cueca (9/)

Calças (10/13)

Cinto (6/7)

Camisa (1/8)

Gravata (2/5) Sapatos (11/12)

Meias

Paletó (3/4)

{Calças, Sapatos, Camisa, Cinto, Gravata, Paletó}

Page 93: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Ordenação Topológica

93

Cueca (9/14)

Calças (10/13)

Cinto (6/7)

Camisa (1/8)

Gravata (2/5) Sapatos (11/12)

Meias

Paletó (3/4)

{Cueca, Calças, Sapatos, Camisa, Cinto, Gravata, Paletó}

Page 94: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Ordenação Topológica

94

Cueca (9/14)

Calças (10/13)

Cinto (6/7)

Camisa (1/8)

Gravata (2/5) Sapatos (11/12)

Meias (15/)

Paletó (3/4)

{Cueca, Calças, Sapatos, Camisa, Cinto, Gravata, Paletó}

Page 95: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Ordenação Topológica

95

Cueca (9/14)

Calças (10/13)

Cinto (6/7)

Camisa (1/8)

Gravata (2/5) Sapatos (11/12)

Meias (15/16)

Paletó (3/4)

{Meias, Cueca, Calças, Sapatos, Camisa, Cinto, Gravata, Paletó}

Page 96: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Ordenação Topológica

96

{Meias, Cueca, Calças, Sapatos, Camisa, Cinto, Gravata, Paletó}

Meias (15/16) Cueca (9/14) Calças (10/13)

Sapatos (11/12)

Camisa (1/8)

Cinto (6/7)

Gravata (2/5)

Paletó (3/4)

Page 97: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

Componentes Fortemente Conectados

Aplicação 2

Page 98: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Componentes Conectados

‣ A decomposição de um grafo orientado em seus componentes fortemente conectados

‣ Por que? Porque muitos algoritmos podem fazer a decomposição e depois serem executados separadamente em cada componente

98

Page 99: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Componentes Conectados

‣ O que é um componente fortemente conectado em um grafo G = (V, A)?

• É um conjunto maximal de vértices C em V, tal que para todo par u e v em C, temos ao mesmo tempo um caminho de u a v e v a u

• Em outras palavras, u e v são mutuamente acessíveis

99

Page 100: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Componentes Conectados

1. CPTFortementeConectado(G)

2. BuscaProf(G)

3. Calcular GT

4. BuscaProf(GT), mas no laço principal da busca em profundidade, considerar os vértices em ordem decrescente de tempo de término fu

5. Dar saída aos vértices de cada árvore resultante em (3) como um CPT fortemente conectado

100

Page 101: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Componentes Conectados

1. CPTFortementeConectado(G)

2. BuscaProf(G)

3. Calcular GT

4. BuscaProf(GT), mas no laço principal da busca em profundidade, considerar os vértices em ordem decrescente de tempo de término fu

5. Dar saída aos vértices de cada árvore resultante em (3) como um CPT fortemente conectado

101

Page 102: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Componentes Conectados

102

u v w

x y z

G

u v w

x y z

GT

Page 103: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Componentes Conectados

103

1/8 2/7 9/12

4/5 3/6 10/1

u v w

x y z

BuscaProf(G)

u v w

x y z

BuscaProf(GT)

Page 104: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Componentes Conectados

104

1/8 2/7 9/12

4/5 3/6 10/1

u v w

x y z

BuscaProf(G)

1/

u v w

x y z

BuscaProf(GT)

Page 105: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Componentes Conectados

105

1/8 2/7 9/12

4/5 3/6 10/1

u v w

x y z

BuscaProf(G)

1/2

3/

u v w

x y z

BuscaProf(GT)

Page 106: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Componentes Conectados

106

1/8 2/7 9/12

4/5 3/6 10/1

u v w

x y z

BuscaProf(G)

1/2

3/4

u v w

x y z

BuscaProf(GT)

Page 107: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Componentes Conectados

107

1/8 2/7 9/12

4/5 3/6 10/1

u v w

x y z

BuscaProf(G)

5/ 1/2

3/4

u v w

x y z

BuscaProf(GT)

Page 108: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Componentes Conectados

108

1/8 2/7 9/12

4/5 3/6 10/1

u v w

x y z

BuscaProf(G)

5/6 1/2

3/4

u v w

x y z

BuscaProf(GT)

Page 109: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Componentes Conectados

109

1/8 2/7 9/12

4/5 3/6 10/1

u v w

x y z

BuscaProf(G)

5/6 7/ 1/2

3/4

u v w

x y z

BuscaProf(GT)

Page 110: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Componentes Conectados

110

1/8 2/7 9/12

4/5 3/6 10/1

u v w

x y z

BuscaProf(G)

5/6 7/ 1/2

8/ 3/4

u v w

x y z

BuscaProf(GT)

Page 111: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Componentes Conectados

111

1/8 2/7 9/12

4/5 3/6 10/1

u v w

x y z

BuscaProf(G)

5/6 7/ 1/2

8/ 9/ 3/4

u v w

x y z

BuscaProf(GT)

Page 112: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Componentes Conectados

112

1/8 2/7 9/12

4/5 3/6 10/1

u v w

x y z

BuscaProf(G)

5/6 7/ 1/2

8/ 9/ 3/4

u v w

x y z

BuscaProf(GT)

Page 113: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Componentes Conectados

113

1/8 2/7 9/12

4/5 3/6 10/1

u v w

x y z

BuscaProf(G)

5/6 7/ 1/2

8/ 9/ 3/4

u v w

x y z

BuscaProf(GT)

Page 114: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Componentes Conectados

114

1/8 2/7 9/12

4/5 3/6 10/1

u v w

x y z

BuscaProf(G)

5/6 7/ 1/2

8/ 9/10 3/4

u v w

x y z

BuscaProf(GT)

Page 115: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Componentes Conectados

115

1/8 2/7 9/12

4/5 3/6 10/1

u v w

x y z

BuscaProf(G)

5/6 7/ 1/2

8/11 9/10 3/4

u v w

x y z

BuscaProf(GT)

Page 116: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Componentes Conectados

116

1/8 2/7 9/12

4/5 3/6 10/1

u v w

x y z

BuscaProf(G)

5/6 7/12 1/2

8/11 9/10 3/4

u v w

x y z

BuscaProf(GT)

Page 117: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Componentes Conectados

117

5/6 7/12 1/2

8/11 9/10 3/4

u v w

x y z

BuscaProf(GT)v

x y

w

z

u

Resultado

1/8 2/7 9/12

4/5 3/6 10/11

u v w

x y z

BuscaProf(G)

Page 118: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

Lição da aula de hoje

Page 119: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Lição da aula de hoje

1. O que aprendemos na aula de hoje?

2. Importância da estrutura de dados grafo

3. Como implementá-la em computador (Listas x Matrizes)

4. Busca em profundidade e complexidade

5. Aplicação da busca em profundidade

119

Page 120: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

Próximos capítulos...

Page 121: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Próximos capítulos...

1. Mais aplicações da busca em profundidade

2. Complexidade e Aplicações

3. Árvores geradoras

4. Caminhos mínimos

121

Page 122: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

Para casa...

Page 123: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Para casa...

‣ Para cada um dos grafos a seguir, representá-los como matrizes e listas de adjacências

‣ Discutir quais vantagens e desvantagens de cada implementação para cada grafo

‣ Realizar a busca em profundidade em cada grafo

‣ Realizar ordenação topológica (quando cabível)

‣ Achar os CPTs fortemente conectados

123

Page 124: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Para casa...

124

1 2

3

Page 125: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

MC202 Estruturas de Dados – Prof. Anderson Rocha

Referências

Projeto de Algoritmos com implementações em Java e C++. Nivio Ziviani, 2007. Cap. 7

Introduction to Algorithms. T. Cormen, C. Leiserson, R. Rivest, and C. Stein, 2nd ed. Caps. 22-26

Introduction to Algorithms – A creative approach. Udi Manber. Cap. 7 The Algorithm design manual. Steven Skiena. Cap. 4

125

Page 126: Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que podemos resolver com grafos! • Ajudar máquinas de busca a localizar informação

Obrigado!