Professional Documents
Culture Documents
Aula 3
1 2 3
5 6 7
Como representar
no computador?
Figueiredo 2011
Representando Grafos
Como representar grafos no computador?
Estrutura de dados
Matriz de adjacncia
Matriz n x n (n nmero de vrtices)
aij = 1 , se existe aresta entre
vrtices i e j
aij = 0 , caso contrrio.
Figueiredo 2011
Matriz de Adjacncia
Exemplo 1 2 3 4
1 2 1 0 1 1 0
2 1 0 1 0
3 1 1 0 1
3 4
4 0 0 1 0
4 5
1
2 0 0
2 3
1 0 1 1
1
3
1
4
0
1
0
1
1 0 0 ?
1
5
0 0 1 1
0 Figueiredo 2011
Matriz de Incidncia
Idia: associar vrtices s linhas e
arestas s colunas
elemento da matriz indica se aresta incide sobre
o vrtice
Matriz de incidncia
Matriz n x m (n vrtices, m arestas)
aij = 1 , se vrtice i incide sobre aresta
j
aij = 0 , caso contrrio.
Figueiredo 2011
Matriz de Incidncia
Exemplo e1 e2 e3 4
e1 e1
1 2 1 1 0 0
e2 e 2 1 0 1 0
3
3 0 1 1 1
3 4
e 4 0 0 0 1
4
e e e e e e
1 2 3 4 5 6
1 1 1 0 0 0 1
2
3
4
1
0
0
0
1
0
1
0
0
1
1
0
1
0
1
0
0
0
?
5 0 0 1 0 0 1
Figueiredo 2011
Desvantagem
Desvantagem da representao
matricial?
Considere grafos grandes e
esparos
grande: muitos vrtices
esparo: relativamente poucas
arestas
Grande consumo de
Matriz formada principalmente
memria (desnecessrio)!
de zeros!
Como resolver este problema?
Figueiredo 2011
Representao via Listas
Idia: associar a cada vrtice uma lista de
vrtices adjacentes
Lista de adjacncia
Vrtices associados a um vetor, dimenso
n (nmero de vrtices no grafo)
Cada vrtice possui uma lista de vrtices
adjacentes
Figueiredo 2011
Lista de Adjacncia
1 ---> 2
1 2 3
2
---> 1
3 3 1 2 4
4 --->
---> 3
Figueiredo 2011
Desvantagem
Desvantagem da representao com
lista?
Considere grafos onde vrtices tem muitos
vizinhos (mas bem menos do que n)
Listas vo ser grandes (longas)
Problema?
Tempo de acesso! Ex. descobrir
se dois vrtices so vizinhos
Figueiredo 2011
Vantagens/Desvantagens
Tempo de execuo Matriz Lista
Inserir aresta? O(1) O(1)
Remover aresta? O(1) O(g
Testar adjacncia O(g
(v e v so vizinhos)?
O(1) ) max)
1 2
max