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!
Top Related