Escolar Documentos
Profissional Documentos
Cultura Documentos
Representações
Matriz de Adjacências
e1
Instituto Multidisciplinar v5 e12
e6
e7
v6 1 0 1 1 1 0 1 e4
v6 e13
v7
e14 v2
e10 e8
1 1 1 1 0 1 0 e2
v7 v4 e9
e3 v3
Representações Definições
Listas de Adjacências
Um caminho de um vértice s para um vértice t em um grafo G é
uma seqüência v1 , K , vk de vértices tal que s = v1 , t = vk e
v1 v2 v5 v6 v7
e5
v1
e1
(v j , v j +1 ) pertence a E(G) , para 1 ≤ j < k . (Ver [1].)
v2 v1 v3 v7 v5 e12
e6
e7
e13 e14
v3 v2 v4 v6 v7
e4 e11
v6
v7
v2
O caminho é dito simples se todos os vértices v1 , K , vk forem
v4 e10 e9
e8 e2
distintos. O comprimento do caminho v1 , K , vk é o seu número
e3
v4 v3 v5 v6 v7 v3
de arestas (i.e. dado por k - 1).
v5 v1 v4 v6
Um ciclo é um caminho no qual v1 = vk .
v6 v1 v3 v4 v5 v7
v7 v1 v2 v3 v4 v6 Um grafo é completo se entre cada par de vértices existe uma aresta
(ver familias de grafos).
Definições Exemplos:
v6 v2
Um grafo G = ( V, E ) é dito ser uma árvore se for acíclico (i.e. não v1
v5 Não é árvore pois
possuir ciclos) e conexo (i.e. existir um caminho entre qualquer par de possui um ciclo.
vértices). v8 v7
v4 v3
G
Um grafo G = ( V, E ) é dito ser uma floresta se for acíclico (i.e. não G v1
possuir ciclos). v2 v3
T F
Um grafo G = ( V, E ) é ponderado quando cada aresta possui um
árvore floresta peso associado a ela, dado por uma função.
1
Introdução à Teoria dos Grafos Introdução à Teoria dos Grafos
Definições Definições
O grafo complemento do grafo G = (V, E) é grafo denotado por G Se G ≡ G então G é dito auto-complementar.
com V(G) = V(G) e E(G) = { (x, y) | x, y ∈ V e (x, y) ∉ E(G) }.
Ex.:
Ex.: (Ver Cogis e Robert [2].)
a b a b a b a b
e c e c e c e c
d d d d
G G G G
Definições Definições
Dizemos que G = (V, E ) é um grafo bipartido se temos uma partição Questão: Quantos grafos com 3 vértices existem?
de seu conjunto de vértices V = V1 ∪ V2 , com V1 ∩ V2 = ∅ , de
forma que toda aresta de G possui um extremo em V1 e outro Uma primeira resposta é apresentada pelos grafos abaixo.
extremo V2 . (Ver Cogis e Robert [2].)
Ex.:
G a
e
b
f
c
Mas imagine 3 casas a, b e c com 3 caminhos de terra interligando
g
V1 d V2 elas. Desejamos asfaltar dois dos 3 caminhos para conectá-las. (Ver
Cogis e Robert [2].)
Definições Definições
Os três grafos abaixo são, de uma certa maneira o mesmo grafo. Dizemos que dois grafos G = (V, E) e G’ = (V’, E’) são isomorfos se
existe uma bijeção f de V em V’ tal que, para todos os vértices x e
a a a
y de G , x é adjacente a y em G se, e somente se, f(x) é adjacente
a f(y) em G’.
b c
c é apresentada
b b c
Uma primeira resposta pelos grafos abaixo.
a a a
Mas se a, b e c representam as 3 casas, para seus moradores estes
grafos certamente não são o mesmo grafo. b c b c b c
A questão do número de grafos com n vértices pode, portanto, receber Grafos Isomorfos (Dois a Dois)
duas respostas, dependendo se os ‘nomes’ dos vértices possuem
importância ou não.
2
Introdução à Teoria dos Grafos Introdução à Teoria dos Grafos
Definições Definições
Neste caso, dizemos que f é um isomorfismo de G sobre G’. Os dois grafos a seguir são auto-complementares (são isomorfos a
seus complementares).
Se existe uma bijeção f de V nele mesmo tal que x é adjacente a y
se, e somente se f(x) é adjacente a f(y), dizemos que f é um Exemplo:
automorfismo de G.
G1 G2
Exemplo:
a A aplicação f tal que f(a) = a,
G e b f(b) = e, f(e) = b, f(d) = d, f(c) = c
define um automorfismo do
d c grafo G.
Definremos, a seguir, algumas familias de grafos especiais com n
vértices. (Ver [2].).
Definições Definições
O grafo completo Kn em que todos os vértices são adjacentes entre si. O grafo bipartido completo Kp,q em que podemos particionar seu
conjunto de vértices em duas classes de cardinalidades p e q, de
forma que cada vértice de uma classe seja adjacente a cada vértice da
Exemplos: outra classe e somente a eles.
Exemplo:
K1 K2 K3 K4 K5
K2,3
Definições Definições
O grafo caminho Pn em que podemos organizar seu conjunto de O grafo ciclo Cn em que podemos organizar seu conjunto de vértices
vértices em uma sequência tal que todo vértice seja adjacente a seu em uma sequência tal que todo vértice seja adjacente a seu
predecessor e a seu sucessor, e somente a estes, salvo o primeiro e o predecessor e a seu sucessor, e somente a eles, exceto o primeiro e o
último com apenas um vizinho. último que são adjacentes entre si.
Exemplos: Exemplos:
P7
P4
C8 C5
3
Introdução à Teoria dos Grafos Introdução à Teoria dos Grafos
Definições Definições
A estrela Sn de ordem n em que um vértice é adjacente a todos os Questão: Quantos grafos com 4 vértices existem? E se não
outros e é o único vizinho de tais vértices. (Ver [2].) consideramos isomorfismos?
Dizemos que um grafo é regular se todos os seus vértices possuem o
Exemplos:
mesmo grau.
Exemplos:
S9 S6
C5 G K2
Definições Definições
Em particular, se todos os vértices de um grafo G possuem grau r, Nos multigrafos as duas extremidades de uma aresta podem ser
dizemos que G é r-regular. (Abaixo, um grafo 3-regular.) idênticas, e duas arestas distintas podem ter extremidades comuns.
Exemplo:
Exemplo:
Grafo de Petersen
G
Teorema 1 Em qualquer grafo G = (V, E) a soma dos graus de todos Busca em Largura
os seus vértices é igual a duas vezes o seu número de arestas, isto é,
Um dos algoritmos mais simples de busca em grafos.
d (v ) = 2 | E | .
v∈V
(Os algoritmos de Prim e Dijkstra utilizam idéias similares.)
4
Introdução à Teoria dos Grafos Introdução à Teoria dos Grafos
Calcula a árvore de busca em largura. Um vértice cinza pode ter vértices brancos adjacentes.
Descobre todos os vértices a uma distância k de s antes A árvore da busca em largura inicialmente contém apenas a
de descobrir vértices com distância k + 1. sua raiz s.
Para o acompanhamento de cada etapa, o algoritmo irá Quando um vértice branco v é descoberto pela leitura da
colorir os vértices com branco, cinza ou preto. lista de adjacências de um vértice já descoberto u , o
vértice v e a aresta (u, v) são adicionados à árvore.
Inicialmente, todos os vértices possuem a cor branca.
O vértice u é dito predecessor do vértice v .
Um vértice descoberto torna-se cinza ou preto.
Adicionalmente ao grafo G = (V, E), representado por listas
Se (u , v) ∈ E e o vértice u é preto, então ou o vértice v é de adjacências, o algoritmo de busca em largura mantém
cinza ou preto. Isto é, todos os vértices adjacentes a um outras estruturas de dados.
vértice preto são descobertos. (Ver apresentação em [1].)
Busca_em_Largura ( G, s )
A cor de cada vértice u ∈ V é armazenada no array cor[u], 1. para cada vértice u ∈ V[G] - {s} faça
2. cor[u] = branco
e o predecessor de u é armazenado em pred[u]. 3. d[u] = ∞
4. pred[u] = -1
Se u não possui predecessor, então pred[u]= -1. (Como 5. cor[s] = cinza
6. d[s] = 0
exemplo, podemos ter u = s ou u ainda não ter sido 7. pred[s] = -1
descoberto.) 8. Q = ∅
9. enfileira(Q,s)
10. enquanto Q ≠ ∅ faça
A distância entre a fonte s e o vértice u calculada pelo 11. u = desenfileira(Q)
algoritmo é armazenada em d[u]. 12. para cada v ∈ Adj[u] faça
13. se cor[v]==branco então
14. cor[v] = cinza
O algoritmo também faz uso de uma fila Q ( FIFO = first 15. d[v] = d[u] + 1
16. pred[v] = u
in first out ), para o gerenciamento dos vértices de cor cinza 17. enfileira(Q,v) (Ver Cormen et al. [1].)
e requer tempo O(n + m). 18. cor[u] = preto
O método prossegue até que todos os vértices alcançáveis a Diferentemente da busca em largura, o subgrafo de
partir de v tenham sido descobertos. predecessores da busca em profundidade pode ser uma
floresta, ao invés de uma árvore. Requer tempo Θ(V+E ).
5
Introdução à Teoria dos Grafos Introdução à Teoria dos Grafos
O subgrafo predecessor da busca em profundidade é Ao término, o vértice torna-se preto, isto é, quando sua lista
definido como sendo o grafo Gπ= (V,Eπ ), onde de adjacências tiver sido examinada completamente.
Cada vértice é inicialmente branco, tornando-se cinza Além disso, para todo vértice u, temos
quando é descoberto na busca. d[u] < f[u].
Busca_em_Profundidade ( G )
1. para cada u ∈ V[G] faça
2. cor[u] = branco [1] T.H. Cormen, C.E. Leiserson, R.L. Rivest, Introduction to Algorithms, MIT Press, 1990.
3. pred[u] = -1
4. tempo = 0 [2] O. Cogis, C. Robert. Théorie des Graphes – Au-delà des Ponts de Königsberg –
5. para cada u ∈ V[G] faça Problèmes, Théorèmes, Algorithmes, Vuibert, 2003.
6. se cor[u]==branco então
7. visita(u)
visita ( u )
1. cor[u] = cinza
2. d[u] = tempo = tempo + 1
3. para cada v ∈ Adj[u] faça
4. se cor[v]==branco então
5. pred[v] = u
6. visita(u)
7. cor[u] = preto
8. f[u] = tempo = tempo + 1 (Ver Cormen et al. [1].)