introdução à teoria dos grafos - edmilson campos · de são petersburgo, sendo este o primeiro...
TRANSCRIPT
Conteúdo
• Histórico
• Aplicações
• Definições
• Grafo
• Dígrafo
• Ordem, adjacência e grau
• Laço
• Tipos de grafos
• Representação de Grafos
• Matriz de adjacências e de custos
• Lista de arestas e de adjacências
• Matriz de incidências
• Listas de vértices e arestas
Histórico
• Problema das Pontes de Königsberg
• No século 18, na cidade de Königsberg (antiga Prússia), um
conjunto de sete pontes cruzavam o rio Pregel. Elas conectavam
duas ilhas entre si (A e D) e as ilhas com as margens (C e B).
• Os habitantes perguntavam: É possível cruzar as sete pontes
numa caminhada contínua sem passar duas vezes por qualquer
uma delas?
• Em 1736, Euler apresenta a solução deste problema na Academia
de São Petersburgo, sendo este o primeiro trabalho sobre Grafos.
Aplicações
• Ferramenta simples e poderosa para a construção de
modelos e resolução de diversos problemas
• Processos industriais
• Tática e logística
• Sistemas de comunicação
• Redes de computadores
• Engenharia
• Computação
• Jogos
Aplicações
• DESAFIO:
• Ligar água, luz e telefone em cada uma das 3 casas, sem haver
cruzamento de ligações.
• As ligações podem ser em linhas retas ou não, podem cruzar atrás
das casas, mas é importante salientar, as ligações não podem ser
cruzadas.
Definições
• Grafo
• Um grafo G(V, A) é definido pelos conjuntos V e A, onde:
• V é um conjunto não vazio: Vértices, Nodos ou Nós do grafo
• A é um conjunto de pares ordenados a=(v,w) com v e w pertencente a
V: Arestas, Linhas ou Ramos do grafo
• Exemplo
• V = {p | p é uma pessoa}
• A = {(v,w) | v é amiga de w}
• V = {Maria, José, Ana, Luiz}
• A = {(Maria, José), (Maria, Ana), (José, Luiz), (José, Ana)}
Maria José
Ana Luiz
Dígrafo
• Dígrafo
• Grafo orientado
• Exemplo
• V = {p | p é uma pessoa}
• A = {(v,w) | v é pai ou mãe de w}
João
Maria Joana Paulo
Ana
Ordem e Adjacência
• Ordem
• É o número de vértices do grafo
• Ordem(G1) = 4
• Adjacência • Dois vértices - v e w de um grafo - são adjacentes se há uma aresta
a=(v,w) em G
• Ex: José e Luiz em G1
• Duas arestas são adjacentes se incidem sobre o mesmo vértice
• Ex: (Ana, Maria) e (Ana, José) em G1
Maria José
Ana Luiz
G1
Graus • Grau de um vértice
• É o número de arestas incidentes no vértice
• Grau(b)=3
• Grau de saída (outdegree)
• Número de arestas que têm ponta inicial no vértice
• Gs(b) = 1
• Grau de entrada (indegree)
• Número de arestas têm ponta final no vértice
• Ge(b) = 2
G2
a
b c
d e
G3
a
b c
e
Vértice Isolado, Laço, Arestas Paralelas
• Vértice isolado
• É aquele que possui grau igual a zero
• Ex: Vértice e
• Laço
• É uma aresta do tipo a=(v,v)
• Ex: Aresta a=(d,d)
• Arestas paralelas
• Possuem os mesmos vértices terminais: ci=(v,w) e cj=(v,w)
G2
a
b c
d e
G3
a
c
d e
1
2
Multigrafo, Grafos Simples e Completo
• Multigrafo
• É o grafo que possui laços e/ou arestas paralelas
• Grafo simples
• Não possui laços e/ou arestas paralelas
• Grafo completo
• Um grafo é dito completo quando cada par distinto de vértice é
adjacente
• Kn = grafo completo de ordem n, possui m arestas, onde:
a
b c
d
1
2
k1 k2 k3 k4
!
( 2)!2!
nm
n
Grafo Complementar
• Grafo Complementar
• Um grafo G é complementar de G, se possuir a mesma ordem de
G e se todas arestas (vi, vj) pertencentes a G, não pertencerem a
G.
G G
Grafo Bipartido
• Grafo bipartido
• Um grafo é considerado bipartido quando seu conjunto de vértices
V puder ser particionado em dois subconjuntos V1 e V2, tal que
toda aresta de G une um vértice de V1 a outro de V2
V1
V2
21 VV 21 VVV
Grafo Rotulado
• Grafo rotulado
• Grafo em que cada vértice está associado a um rótulo
SP (Pão Paulo)
CE (Fortaleza) PA (Belém)
RN (Natal)
Grafo Valorado
• Grafo valorado
• Um grafo G(V,A) é dito ser valorado quando existe uma ou mais
funções relacionando V e/ou A com um conjunto de números
SP
CE PA
RN 1850
1500
900
1900 2100
Subgrafo
• Subgrafo
• Um grafo Gs(Vs, As) é dito ser subgrafo de G(V,A) se Vs está
contido em V e se As está contido em A
Representação de Grafos
• Graficamente, a forma mais intuitiva de representar um
grafo é usando do círculos e linhas.
• O grafo pode ser representado de diversas maneiras:
• Matriz de adjacências
• Matriz de custos
• Lista de arestas
• Lista de adjacências
• Matriz de incidências
• Listas de vértices e arestas
• Dado um grafo G(V, E):
• A matriz de adjacência A=[aij] é uma matriz n x n tal que:
Matriz de adjacências
v1
v2
v3
v4
contrário caso ,0
se ,1 E),v(va jiij
v1 v2 v3 v4
v1 0 1 1 0
v2 1 0 0 1
v3 1 0 0 1
v4 0 1 1 0
Matriz de adjacências
v1
v4
v2
v3
• Representação de laços:
• Diagonal principal = 1
• Representação de arestas paralelas:
• Utilizar o número de arestas, ao invés de um
• No grafo não direcionado, a matriz é sempre simétrica
(50% espaço)
v1 v2 v3 v4
v1 1 1 0 1
v2 0 0 0 0
v3 1 1 0 0
v4 0 0 2 0
Matriz de custos
• Dado um grafo simples valorado G(V, E):
• Pode ser representado por uma matriz de custos W=[wij],
de ordem n x n, onde:
v1 v2
v3
30
40 50
v1 v2 v3
v1 0 30 50
v2 30 0 40
v3 50 40 0
contrário caso , ou 0
E)v,(v se aresta, da custo jiijw
Lista de arestas
• É uma forma eficiente de para representar grafos
esparsos utilizando-se duas listas de vértices, onde a
primeira contém os inícios das arestas, e a segunda, os
respectivos términos.
• Dois vetores g(início) e h(término)
• g={v1,v2,v2,v3,v3,v4}
• h={v2,v3,v5,v4,v5,v5}
• Dificuldade de representação de grafos valorados
v1
v2
v4
v5
v3
Lista de adjacências
v2
v1
v4
v3 5
30
15
20
10
4
3
2
1 2/10 3/5
4/20 null
2/15
null
3/30
null
null
• Na lista de adjacências, para cada vértice é armazenada
uma lista com todos os seus sucessores
• Um vértice y, em um grafo, é chamado sucessor de x, se
existe uma aresta de x para y
• A implementação pode utilizar uma lista de vértices (vetor
de tamanho n), onde cada elemento referencia uma lista
de adjacentes
v1 v2 v3
v2 v4
v3 -
v4 v2 v3
Matriz de incidências
• Dado um grafo G(V, E), com n vértices e m arestas:
• A matriz de incidência B=[bij] é uma matriz n x m tal que:
contrário caso 0,
e de terminal vértice ofor v se 1, jiijb
v2
v1
v4
v3
c1
c2
c3
c4
c1 c2 c3 c4
v1 1 1 0 0
v2 1 0 0 1
v3 0 1 1 0
v4 0 0 1 1
Matriz de incidências
v2
v1
v4
v3
c1
c2
c3
c4
contrário caso 0,
e de final vértice ofor v se 1,
e de inicial vértice ofor v se 1,
ji
ji
ijb
• Se o grafo G(V, E) for direcionado:
• A matriz de incidência B=[bij] é uma matriz n x m tal que:
c1 c2 c3 c4
v1 -1 1 0 0
v2 1 0 0 -1
v3 0 -1 -1 0
v4 0 0 1 1
Listas de vértices e arestas
vi vj
e1 v1 v2
e2 v1 v3
e3 v3 v4
e4 v2 v4 v2
v1
v4
v3
e1
e2
e3
e4
• É possivelmente a representação de um grafo G(V, E)
mais simples
• Mantém uma lista com todos os vértices do grafo: V
• Mantém uma lista com todas as arestas do grafo: E
v1
v2
v3
v4