Escolar Documentos
Profissional Documentos
Cultura Documentos
a Grafos
Byron Leite
Dantas Bezerra
Exemplo de Grafo
Pode representar
uma rede de
computadores
Cada computador da
rede é um vértice do
Grafo
A conexão entre dois
computadores é
representada por
uma aresta do Grafo
Man Rec
BSB Sal
Sao Rio
Byron Leite Dantas Bezerra
Tipos de Grafos
Grafo direcionado
Suas arestas são direcionadas
Man Rec
BSB Sal
Sao Rio
Man Rec
3480 2220
845 839
2660
3490
BSB 1038 Sal
1659
445 1649
1015 Sao Rio
429
Aresta
• Representação Explícita
• Representação Implícita através de:
• Lista de Incidência
• Matriz de Adjacência
Object valor;
// flag de controle usado em diversos algoritmos
boolean foiVisitado;
// ...
}
Byron Leite Dantas Bezerra
Aresta
Representação Explícita
public class Aresta {
// vértices que compõe a aresta
boolean foiVisitada;
// ...
}
Byron Leite Dantas Bezerra
Grafo Não Direcionado
Representação Explícita
Man Rec
BSB Sal
Sao Rio
BSB Sal
Sao Rio
List vertices;
// coleção de arestas que compõe o grafo
List arestas;
// ...
}
O fato do grafo ser direcionado ou não,
influi em boa parte dos
Byron Leite algoritmos
Dantas Bezerra de grafos!
Representação
Implícita
Lista de Incidência
Representação
BSB Implícita
Sal
Lista de Incidência
Sao Rio
Man BSB
Representação
BSB Implícita
Sal
Lista de Incidência
Sao Rio
Man BSB
BSB Sao
Sao Rio
Rio
Sal Rio
Hashtable vertices;
// ...
Matriz de Adjacência
BSB Sal
Sao Rio
Representação
BSB Implícita
Sal
Lista de Incidência
Sao Rio
Lista de Incidência
10
Sao Rio
16
4
List vertices;
// matriz de incidência do grafo
double[][] matriz;
// ...
}
Os valores iniciais da matriz de adjacência
depende doByron
tipoLeite
deDantas
grafo considerado!
Bezerra
Conceitos
Arestas incidentes
a,b,d são incidentes a V
Vértices adjacentes
U,V são adjacentes
Grau de um vértice
Grau(X) = 5
Arestas paralelas
h,i são paralelas
Auto-loop: j
Passeio
P1= {V,X,Z}
P2 = {U,W,X,Y,W,V}
Passeio Simples
(Caminho)
Todos os vértices
são distintos (P1)
F
A A
C C
G E G’
B B
D
Byron Leite Dantas Bezerra
Conceitos
Grafo Conexo
Existe um passeio de um vértice
para qualquer outro vértice do
grafo
F
A G
C I
G E
B H
D
G é desconexo!
Byron Leite Dantas Bezerra
Operações em Grafos
int numVertices();
int numArestas();
int grau(Vertice v);
Iterator verticesAdjacentes(Vertice v);
Iterator arestasIncidentes(Vertice v);
boolean saoAdjacentes(Vertice v, Vertice w);
void insereVertice(Vertice v);
void insereAresta(Vertice v, Vertice w);
void removeVertice(Vertice v);
void removeAresta(Aresta e);