Grafos - ic.unicamp.brrocha/teaching/2014s1/mc202/aulas/aula-grafos.pdf · Grafos Representações,...

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

Transcript of Grafos - ic.unicamp.brrocha/teaching/2014s1/mc202/aulas/aula-grafos.pdf · Grafos Representações,...

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

MC 202 – Estruturas de Dados

Prof. Anderson Rocha

Organização dessa aula

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

Warming Up...

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

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

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

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

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

Ok... mas como implementar?

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

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

MC202 Estruturas de Dados – Prof. Anderson Rocha

Matriz de Adjacências

13

Como fazer com grafos ponderados?

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

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

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

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

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

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

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

MC202 Estruturas de Dados – Prof. Anderson Rocha

Algoritmos em Grafos

‣ Efetuar buscas

‣ Determinar topologias e restrições

‣ Achar caminhos mínimos

‣ Achar componentes

21

MC202 Estruturas de Dados – Prof. Anderson Rocha

Algoritmos em Grafos

‣ Determinar comunidades em redes sociais

‣ Analisar padrões de espalhamento e comportamento

‣ etc.

22

Busca em Profundidade

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

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

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

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

MC202 Estruturas de Dados – Prof. Anderson Rocha

Busca em Profundidade

28

u v w

x y z

MC202 Estruturas de Dados – Prof. Anderson Rocha

Busca em Profundidade

29

1/

u v w

x y z

MC202 Estruturas de Dados – Prof. Anderson Rocha

Busca em Profundidade

30

1/ 2/

u v w

x y z

MC202 Estruturas de Dados – Prof. Anderson Rocha

Busca em Profundidade

31

1/ 2/

u v w

x y z

MC202 Estruturas de Dados – Prof. Anderson Rocha

Busca em Profundidade

32

1/ 2/

3/

u v w

x y z

MC202 Estruturas de Dados – Prof. Anderson Rocha

Busca em Profundidade

33

1/ 2/

3/

u v w

x y z

MC202 Estruturas de Dados – Prof. Anderson Rocha

Busca em Profundidade

34

1/ 2/

4/ 3/

u v w

x y z

MC202 Estruturas de Dados – Prof. Anderson Rocha

Busca em Profundidade

35

1/ 2/

4/ 3/

u v w

x y z

MC202 Estruturas de Dados – Prof. Anderson Rocha

Busca em Profundidade

36

1/ 2/

4/5 3/

u v w

x y z

MC202 Estruturas de Dados – Prof. Anderson Rocha

Busca em Profundidade

37

1/ 2/

4/5 3/6

u v w

x y z

MC202 Estruturas de Dados – Prof. Anderson Rocha

Busca em Profundidade

38

1/ 2/7

4/5 3/6

u v w

x y z

MC202 Estruturas de Dados – Prof. Anderson Rocha

Busca em Profundidade

39

1/ 2/7

4/5 3/6

u v w

x y z

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

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

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

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

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

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

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

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

Algoritmo e Complexidade

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

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|)

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|)

???

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]|

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)

Busca em Largura

MC202 Estruturas de Dados – Prof. Anderson Rocha

Busca em Largura

‣ Explicar busca em largura

55

MC202 Estruturas de Dados – Prof. Anderson Rocha

Busca em Largura

56

r s t u

v w x y

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ø

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)

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

Aplicações de Buscas

Onde podemos usar a Busca em Profundidade?

Ordenação Topológica

Aplicação 1

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

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

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

MC202 Estruturas de Dados – Prof. Anderson Rocha

Ordenação Topológica

79

Cueca

Calças

Cinto

Camisa

Gravata Sapatos

Meias

Paletó

MC202 Estruturas de Dados – Prof. Anderson Rocha

Ordenação Topológica

80

Cueca

Calças

Cinto

Camisa (1/)

Gravata Sapatos

Meias

Paletó

MC202 Estruturas de Dados – Prof. Anderson Rocha

Ordenação Topológica

81

Cueca

Calças

Cinto

Camisa (1/)

Gravata (2/) Sapatos

Meias

Paletó

MC202 Estruturas de Dados – Prof. Anderson Rocha

Ordenação Topológica

82

Cueca

Calças

Cinto

Camisa (1/)

Gravata (2/) Sapatos

Meias

Paletó (3/)

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ó}

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ó}

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ó}

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ó}

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ó}

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ó}

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ó}

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ó}

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ó}

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ó}

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ó}

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ó}

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ó}

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)

Componentes Fortemente Conectados

Aplicação 2

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

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

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

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

MC202 Estruturas de Dados – Prof. Anderson Rocha

Componentes Conectados

102

u v w

x y z

G

u v w

x y z

GT

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

Lição da aula de hoje

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

Próximos capítulos...

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

Para casa...

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

MC202 Estruturas de Dados – Prof. Anderson Rocha

Para casa...

124

1 2

3

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

Obrigado!