Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que...
Transcript of Grafos - Instituto de Computação · Grafos – Aplicações ‣ Alguns problemas práticos que...
![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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/1.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/2.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/3.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/4.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/5.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/6.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/7.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/8.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/9.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/10.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/11.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/12.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/13.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/14.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/15.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/16.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/17.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/18.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/19.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/20.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/21.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/22.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/23.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/24.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/25.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/26.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/27.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/28.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/29.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/30.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/31.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/32.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/33.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/34.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/35.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/36.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/37.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/38.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/39.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/40.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/41.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/42.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/43.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/44.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/45.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/46.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/47.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/48.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/49.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/50.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/51.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/52.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/53.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/54.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/55.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/56.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/57.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/58.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/59.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/60.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/61.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/62.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/63.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/64.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/65.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/66.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/67.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/68.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/69.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/70.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/71.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/72.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/73.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/74.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/75.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/76.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/77.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/78.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/79.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/80.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/81.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/82.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/83.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/84.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/85.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/86.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/87.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/88.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/89.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/90.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/91.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/92.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/93.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/94.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/95.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/96.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/97.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/98.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/99.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/100.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/101.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/102.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/103.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/104.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/105.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/106.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/107.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/108.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/109.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/110.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/111.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/112.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/113.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/114.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/115.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/116.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/117.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/118.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/119.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/120.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/121.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/122.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/123.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/124.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/125.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022050517/5fa121de2dadd91d921f929f/html5/thumbnails/126.jpg)
Obrigado!