Post on 26-Dec-2018
1
Algoritmos e Estruturas de Dados II
Grafos – tipo abstrato de dados
Thiago A. S. Pardo
Profa. M. Cristina
Material de aula da Profa.
Josiane M. Bueno
3
Grafos
Tipo Abstrato de Dados
Última aula: TAD grafo?
– Dados/informação (encapsulados)
Estruturas de dados adequadas
– Operações
4
Grafos
Estruturas de Dados
A escolha da estrutura de dados certa para
a representação de grafos tem um enorme
impacto no desempenho de um algoritmo.
Há duas representações usuais:
– Matriz de Adjacências
– Listas de Adjacências
5
Grafos
Matriz de Adjacências
Dado um grafo G = (V, E) , a matriz de
adjacências M é uma matriz de ordem
|V|x|V|, tal que:
|V| = número de vértices
M[i,j] = 1, se existir aresta de i a j
M[i,j] = 0, se NÃO existir aresta de i a j
8
Grafos
Matriz de Adjacências
Se o grafo for direcionado
– M[i,j] deve indicar ou não a presença de uma
aresta divergente de i e convergente em j, ou
seja i j
10
Grafos
Matriz de Adjacências
Possível resposta:
Matriz
assimétrica
0 1 0 0 0
0 0 0 1 1
1 0 0 0 0
0 0 1 0 0
0 0 0 1 0
1 2 3 4 5
1
2
3
4
5
11
Grafos
Matriz de Adjacências
Se o grafo for valorado
– M[i,j] deve conter o peso associado com a aresta
– Se não existir uma aresta entre i e j, então é
necessário utilizar um valor que não possa ser
usado como peso (como o valor 0 ou negativo,
por exemplo)
12
Grafos
Matriz de Adjacências
Qual a matriz de adjacências do grafo direcionado e
valorado a seguir? Suponha que o grafo represente
a distância em km entre cidades
5
1 2
4
3
50
10
12 8
10
13
Grafos
Matriz de Adjacências
Possível resposta:
Grafo simétrico
ou assimétrico?
-1 10 -1 -1 -1
-1 -1 -1 8 12
50 -1 -1 -1 -1
-1 -1 0 -1 -1
-1 -1 -1 10 -1
1 2 3 4 5
1
2
3
4
5
14
Grafos
Matriz de Adjacências
Forma mais simples de representação
Propriedades
– armazenamento: ?
– teste se aresta (i,j) está no grafo: ?
15
Grafos
Matriz de Adjacências
Forma mais simples de representação
Propriedades
– armazenamento: O(|V|2)
– teste se aresta (i,j) está no grafo: O(1)
16
Grafos
Matriz de Adjacências
Representação útil para grafos densos
Boa para quando desejamos buscar arestas
rapidamente
Ruim quando se necessita examinar a matriz toda:
O(|V|2)
Inserção e remoção de vértices e arestas:
representação boa ou ruim?
17
Grafos
Matriz de Adjacências
Atenção
– Não é incomum encontrar representações de
dígrafos em matrizes de adjacências em que a
coluna “aponta” para a linha
Representação ao gosto do cliente!
19
Grafos
Matriz de Adjacências
Implementação de algumas das operações mais
comuns
– Criar grafo vazio
– Inserir aresta
– Retirar aresta
– Existe aresta?
– Obter lista de vértices adjacentes a um determinado vértice
Lista está vazia?
Retornar primeiro vértice da lista
Retornar próximo vértice adjacente da lista
– Imprimir grafo
20
Grafos
Matriz de Adjacências
Exercício
– Implementar sub-rotina que encontre a aresta de
menor peso em um grafo valorado