Escolar Documentos
Profissional Documentos
Cultura Documentos
Algoritmos e Programação
Avançada
Prof. Marco Antonio M. Carvalho
Prof. Túlio Ângelo M. Toffolo
2011/1
Na aula anterior
• Estruturas de Dados
– Pilhas;
– Listas;
– Filas
• Filas de Prioridades.
– Dicionários.
2
Na aula de hoje
3
Grafos
6
Grafos - Definições
1
Vértice
2
4
3 Aresta
7
Grafos - Definições
8
Arestas Especiais
2
9
[Grafos]
Simples vs. Não Simples
• Um grafo sem arestas múltiplas, ou loops é dito
simples;
• Um grafo com este tipo de arestas é dito não
simples
– Pode ser utilizado para representar situações em
que dois elementos são ligados por mais que um
meio
• Diferentes estradas entre duas cidades;
• Ou diferentes dutos entre dois pontos.
• Algoritmos diferenciados para percurso em cada
um dos tipos de grafos.
10
Grafos Orientados
1 4
5
2 3
11
[Grafos]
Orientados vs. Não Orientados
12
Grafos Ponderados
Belo
Horizonte 157
Mariana
115 68
92 18
Ouro
55 Preto
Congonhas
13
[Grafos]
Ponderados vs. Não Ponderados
14
Caminhos
Vértice
Final
Vértice
Inicial
17
Densidade
18
Representação de Grafos
19
Matriz de Adjacências
20
Matriz de Adjacências
1 2 3 4 5
1 0 1 0 1 0
2 1 0 1 1 1
3 0 1 0 0 1
4 1 1 0 0 1
5 0 1 1 1 0
1 2 3 4 5
1 0 1 0 1 0
2 0 0 1 0 1
3 0 0 0 0 1
4 0 1 0 0 0
5 0 0 0 1 0
21
Lista de Adjacências
22
Lista de Adjacências
1
2
3
4
5
1
2
3
4
5
23
Lista vs. Matriz de Adjacências
24
Lista de Adjacências
em Matrizes
• As listas de adjacências podem não usar listas
encadeadas
– Podem inclusive usar uma matriz para armazenar os
elementos.
• Aparentemente, esta estrutura combina o pior da matriz
de adjacências (muito espaço) com o pior da lista de
adjacências (determinar a existência de uma aresta);
• Contudo, faz sentido:
– É uma estrutura simples de implementar;
– O problema do espaço pode ser contornado limitando-se a
quantidade de colunas da matriz.
25
Lista de Adjacências
em Matrizes
1 2 3 4
1 2 4 ? ?
2 1 3 4 5
3 2 5 ? ?
4 1 2 5 ?
5 2 3 4 ?
1 2 3 4
1 2 4 ? ?
2 3 5 ? ?
3 5 ? ? ?
4 2 ? ? ?
5 4 ? ? ?
26
Códigos
27
Percurso em Grafos
28
Busca em Largura (BFS)
29
Busca em Largura (BFS)
30
Busca em Largura (BFS)
• F: null
31
Busca em Largura (BFS)
• F: 1→null
32
Busca em Largura (BFS)
• F: 2→3→4→5→null
33
Busca em Largura (BFS)
• F: 3→4→5→null
34
Busca em Largura (BFS)
• F: 3→4→5→6→null
35
Busca em Largura (BFS)
• F: 4→5→6→7→null
36
Busca em Largura (BFS)
• F: 5→6→7→8→null
37
Busca em Largura (BFS)
• F: 6→7→8→9→null
38
Busca em Largura (BFS)
• F: 7→8→9→null
39
Busca em Largura (BFS)
• F: 8→9→null
40
Busca em Largura (BFS)
• F: 9→null
41
Busca em Largura (BFS)
• F: null
42
Busca em Largura (BFS)
43
Busca em Largura - Código
44
Busca em Profundidade (DFS)
45
Busca em Profundidade (DFS)
46
Busca em Profundidade (DFS)
7 3 1 5 9
8
• P: null
47
Busca em Profundidade (DFS)
7 3 1 5 9
8
• P: 1→null
48
Busca em Profundidade (DFS)
7 3 1 5 9
8
• P: 2→1→null
49
Busca em Profundidade (DFS)
7 3 1 5 9
8
• P: 6→2→1→null
50
Busca em Profundidade (DFS)
7 3 1 5 9
8
• P: 2→1→null
51
Busca em Profundidade (DFS)
7 3 1 5 9
8
• P: 1→null
52
Busca em Profundidade (DFS)
7 3 1 5 9
8
• P: 9→5→1→null
53
Busca em Profundidade (DFS)
7 3 1 5 9
8
• P: 8→4→1→null
54
Busca em Profundidade (DFS)
7 3 1 5 9
8
• P: 7→3→1→null
55
Busca em Profundidade (DFS)
7 3 1 5 9
8
• P: 1→null
56
Busca em Profundidade (DFS)
7 3 1 5 9
8
• P: null
57
Classificação de Arestas
59
Classificação de Arestas
Árvore Retorno
60
Classificação de Arestas
4 5
Árvore Retorno
61
Classificação de Arestas
4 5
Árvore Retorno
62
Classificação de Arestas
6 4 5
Árvore Retorno
63
Classificação de Arestas
6 4 5
Árvore Retorno
64
Classificação de Arestas
6 4 5
Árvore Retorno
65
Conectividade
66
Conectividade
67
Conectividade
68
Conectividade
6
5
4 8
2
3 7
69
Conectividade
6
5
4 8
2
3 7
70
Conectividade
6
5
4 8
2
3 7
71
Busca em Profundidade
Código
72
Busca em Largura vs.
Busca em Profundidade
73
Perguntas?
74
Na próxima aula
75
FIM
76