Você está na página 1de 40

BC1429 Teoria dos Grafos

1 de 40

http://professor.ufabc.edu.br/~jair.donadelli/disciplinas-ufpr/ci065/

BC1429 TEORIA DOS GRAFOS


JAIR DONADELLI

Sumrio
Sumrio
Aviso
Smbolos
1. Grafosdefinies iniciais
Exerccios
1.1. Grau
Exerccios
2. Subgrafos
2.1. Subgrafo induzido por um subconjunto de vrtices
2.2. Subgrafo induzido por um subconjunto de arestas
2.3. Exerccios
3. Clique, conjunto independente, grafo bipartido e corte
3.1. Exerccios
4. Isomorfismo
4.1. Exerccios
5. Outras noes de grafos
5.1. Exerccios
6. Representao computacional
6.1. Matriz de adjacncias de G
6.2. Lista de adjacncias de G
6.3. Complexidade de algoritmos em grafos
Exerccios
7. Percursos em grafos
7.1. Percurso genrico
7.2. Exerccios
8. Algoritmos de busca
8.1. Busca em Largura
8.2. Busca em Profundidade
8.3. Exerccios
9. Caminhos e Circuitos
9.1. Exerccios
10. Caminhos mnimos em grafos com pesos nas arestas
10.1. Exerccios
11. Algoritmo de Dijkstra para caminhos mnimos
11.1. Exerccios
12. Conexidade
12.1. Exerccios
13. rvores e Florestas
13.1. rvores geradoras
13.2. Exerccios
14. rvores geradoras de custo mnimo em grafos com peso nas arestas
14.1. Exerccios
15. Algoritmo de Kruskal para rvore geradora mnima
Exerccios
16. Algoritmo de Prim para rvore geradora mnima
17. Emparelhamento
Exerccios
18. Emparelhamentos em grafos bipartidos
Exerccios
18.1. Algoritmo de Edmonds
Exerccios
19. Cobertura
Exerccios
20. Circuitos hamiltonianos
Exerccios
21. Trilhas eulerianas
Exerccios
22. Grafos Dirigidos
22.1. Representao computacional
Exerccios

11/12/2013 10:59

BC1429 Teoria dos Grafos

2 de 40

http://professor.ufabc.edu.br/~jair.donadelli/disciplinas-ufpr/ci065/

22.2. Fluxo em redes


Exerccios

Aviso
Esse texto contm hyperlinks que ilustram a discusso de alguns tpicos da disciplina. Eu tomei o cuidado de fazer ligaes com pginas WEB
que tinham, no momento que fiz o acesso, informaes corretas, entretanto essas pginas esto fora do meu controle e podem sofrer alteraes,
portanto leia com cautela.

Smbolos
Denota o conjunto dos nmeros naturais;
denota o conjunto dos nmeros inteiros;
denota o conjunto dos nmeros racionais;
denota o conjunto dos nmeros reais;
+ denota o conjunto dos nmeros reais positivos;
|X| denota a cardinalidade do conjunto X;
para X V denotamos por X o complemento de X em V , isto , o conjunto V \ X;
denota o conjunto dos subconjuntos de V de cardinalidade 2

= max{n : n x} para todo x real;


para qualquer famlia de conjuntos A1,A2,,Am

denotamos por A B a diferena simtrica dos conjuntos A e B, isto , A B = (A B) \ (A B);

1. Grafosdefinies iniciais
Um grafo um par ordenado de conjuntos finitos (V,E) tal que E . Cada elemento de V chamado de vrtice do grafo e cada elemento de E
chamado de aresta do grafo, dessa forma cada aresta e E um subconjunto de V formado por exatamente dois vrtices, ou seja, e V e |e| =
2.
Todo grafo pode ser representado geometricamente por um diagrama. No plano, desenhamos um ponto para cada vrtice e um segmento de
curva ligando cada par de vrtices que determinam uma aresta (figura 1). Claramente, essa representao geomtrica de um grafo no nica.
Exemplo 1.Os conjuntos

definem um grafo e um diagrama desse grafo apresentado na figura 1 a seguir.

Figura 1: Representao geomtrica (ou diagrama) do grafo.

Se G denota o grafo que definido pelo par (V,E) ento escrevemos G = (V,E).
No que segue u e v denotam vrtices e e e f denotam arestas de um grafo
se v e ento dizemos que a aresta e incide em v;
se {u, v} uma aresta, ento dizemos que u e v so vrtices adjacentes;
se |e f| = 1, ento dizemos que e e f so arestas adjacentes;
quando e = {v,u}, dizemos que u e v so os extremos da aresta e.
Quando nos referimos a um grafo conhecido G sem especificarmos o conjunto dos vrtices e o conjunto das arestas que definem G esses

11/12/2013 10:59

http://professor.ufabc.edu.br/~jair.donadelli/disciplinas-ufpr/ci065/

BC1429 Teoria dos Grafos

3 de 40

passam a ser referidos como V(G) e E(G), respectivamente. Assim, se G = (X,Y ) ento V (G) = X e E(G) = Y .
Para um grafo G qualquer, chamamos |V (G)| de ordem de G e chamamos |V (G)| + |E(G)| de tamanho de G.
Um expoente em G, quando G um grafo, denota a ordem de G, assim quando queremos ressaltar que G um grafo de ordem n, para algum
n , escrevemos Gn.
Chamamos G0 = (,) de grafo vazio e todo grafo de ordem 1 de grafo trivial.

Exerccios
Exerccio 1.Um qumico deseja embarcar os produtos A,B,C,D,E,F,X usando o menor nmero de caixas. Alguns produtos no podem ser
colocados numa mesma caixa porque reagem. Os produtos A,B,C,X reagem dois-a-dois; A reage com F e com D e vice-versa; E tambm reage
com F e com D e vice-versa. Descreva o grafo que modela essa situao, mostre um diagrama desse grafo e use esse grafo para descobrir o menor
nmero de caixas necessrias para embarcar os produtos com segurana.
Exerccio 2.Adaltina esperava 4 amigas Brandelina, Clodina, Dejaina e Edina para um lanche em sua casa. Enquanto esperava preparou as
lanches: Bauru, Misto quente, Misto frio e X-salada. Brandelina gosta de Misto frio e de X-salada; Clodina de Bauru e X-salada; Dejaina gosta de
Misto quente e Misto frio; Edina gosta de de Bauru e Misto quente. Descreva o grafo que modela essa situao, mostre um diagrama desse grafo
e use esse grafo para descobrir se possvel que cada amiga de Adaltina tenha o lanche que gosta.
Exerccio 3.Para todo n , qual o nmero mximo de arestas que pode ter um grafo com n vrtices?
Exerccio 4.O complemento de um grafo G, denotado por G, o grafo que tem o mesmo conjunto de vrtices de G
e dois vrtices formam uma aresta em G se e somente se no formam uma aresta de G:

D o complemento dos seguintes grafos


1. G dado por

2. H dado por

3. B dado por

Exerccio 5.Defina a unio dos grafos G e H por

A unio G H um grafo?.
Exerccio 6.Um grafo chamado de completo sobre V se todo par de vrtices de V uma aresta do grafo, ou seja E
=

. Um grafo completo com n vrtices denotado por Kn. Prove que

Exerccio 7.Considere o caso geral do exerccio 1: Um qumico deseja embarcar os produtos p1,p2,,pn usando o menor nmero de caixas. Alguns
produtos no podem ser colocados num mesmo caixas porque reagem. Seja G o grafo que modela esse problema, onde vrtices so produtos e
arestas os pares que reagem, e denote por (G) o nmero de mnimo de caixas de modo que seja possvel encaixotar os produtos com segurana.
Prove que

onde m o nmero de pares de produtos que reagem.

11/12/2013 10:59

BC1429 Teoria dos Grafos

4 de 40

http://professor.ufabc.edu.br/~jair.donadelli/disciplinas-ufpr/ci065/

1.1. Grau.
Para um vrtice v qualquer num grafo G, definimos os conjuntos
(1)
e
(2)
esse ltimo chamado de vizinhana de v. Os elementos de NG(v) so chamados de vizinhos de v.
Para todo v V (G), o nmero de vizinhos de v chamado de grau do vrtice v no grafo G. Os graus dos vrtices de um grafo um dos seus
parmetros importantes e por isso recebem uma notao especial. Para um grafo G = (V,E) no-vazio

Observao 1.As vezes suprimimos os ndices _G ou os argumentos _(G) para simplificar escrevendo, por exemplo, usamos simplesmente E(v) e
N(v), omitindo os ndices da notao, ou escrevemos para o grau mximo e d(v) para o grau de v.
Exemplo 2.No exemplo 1 encontramos d(7) = |E(7)| = d(6) = |E(6)| = 1 e d(5) = |E(5)| = 2. Tambm, o grau mximo (G) = 2, o grau mnimo
(G) = 0 e o grau mdio d(G) = 54.
Teorema 1.Para todo grafo G vale que
(7)

Demonstrao. Seja (V,E) em grafo e defina o conjunto X = {(u,e) V E : u e} e vamos contar seu nmero de elementos de duas maneiras
distintas.
Primeiro, cada vrtice u participa de d(u) elementos de X, portanto
(8)
Depois, cada aresta e est presente em dois elementos de X, logo
(9)
De (8) e (9) temos (7).
Corolrio 2.Em todo grafo o nmero de vrtices com grau mpar par.
Demonstrao. Seja G um grafo. Denote por I o subconjunto formado pelos vrtices em V (G) de grau mpar e denote por P o subconjunto
dos vrtices de grau par. Usando que I P = , que I P = V (G) e o Teorema 1, temos

(10)

portanto devemos ter uId(u) par, o que semente possvel quando |I| par.

Exerccios
Exerccio 8.Chico e sua esposa foram a uma festa com trs outros casais. No encontro deles houveram vrios apertos de mo. Ningum apertou a
prpria mo ou a mo da(o) esposa(o), e ningum apertou a mo da mesma pessoa mais que uma vez.
Aps os cumprimentos Chico perguntou para todos, inclusive para a esposa, quantas mos cada um apertou e recebeu de cada pessoa uma
resposta diferente. (i) Quantas mos Chico apertou? (ii) Quantas mos a esposa de Chico apertou?

11/12/2013 10:59

BC1429 Teoria dos Grafos

5 de 40

http://professor.ufabc.edu.br/~jair.donadelli/disciplinas-ufpr/ci065/

Exerccio 9.Prove que (G) d(G) (G) para todo grafo G.


Exerccio 10.Decida se pode existir um grafo G com vrtices que tm graus 2,3,3,4,4,5. E graus 2,3,4,4,5?
Exerccio 11.Seja G um grafo com 14 vrtices e 25 arestas. Se todo vrtice de G tem grau 3 ou 5, quantos vrtices de grau 3 o grafo G possui?
Exerccio 12.Prove que em todo grafo de ordem pelo menos 2 existem pelo menos dois vrtices com o mesmo grau.
Exerccio 13. Para um nmero natural r, um grafo r-regular se todos os vrtices tm grau r. Para um grafo
r-regular com n vrtices e m arestas, expresse m em funo de n e r.

Exerccio 14.D exemplo de um grafo 3-regular que no completo.


Exerccio 15.Prove que se |V (G)| 3 e (G)

ento existem vrtices u e v em G distintos e tais que N(u) N(v).

Exerccio 16. Dado G, o grafo linha de G, denotado por LG, o grafo cujos vrtices so as arestas de G e um par de vrtices define uma aresta
em LG se, e somente se, esses vrtices so arestas adjacentes em G. Dado G determine |V (LG)| e |E(LG)|.

2. Subgrafos
Dizemos que o grafo H um subgrafo do grafo G se, e somente se, V (H) V (G) e E(H) E(G) e nesse caso escrevemos H G para indicar
que H subgrafo de G.
Exemplo 3.Considerando o grafo G do exemplo 1 temos que

so subgrafos de G, enquanto que

no so subgrafos de G pois: H no grafo, em I no vale V (I) V (G) e em J no vale E(J) E(G).


Um subgrafo H G onde V (H) = V (G) chamado de subgrafo gerador.
2.1. Subgrafo induzido por um subconjunto de vrtices.
Se U V (G) ento escrevemos G[U] para o subgrafo induzido por U que o subgrafo

2.2. Subgrafo induzido por um subconjunto de arestas.


Se M = {e1 ,e2,,em} E(G), ento o subgrafo induzido por M, denotado , tem como conjunto de vrtices e1 e2

em e como conjunto

de arestas o prprio M

Exemplo 4.Dos grafos G, H e I cujos diagramas so dados na figura 2, podemos dizer que H um subgrafo induzido de G enquanto que I um
subgrafo mas no induzido.

11/12/2013 10:59

BC1429 Teoria dos Grafos

6 de 40

http://professor.ufabc.edu.br/~jair.donadelli/disciplinas-ufpr/ci065/

Figura 2: Diagrama dos grafos G, H e I.

2.3. Exerccios.
Exerccio 17.Quantos subgrafos completos tem o grafo completo de ordem n?
Exerccio 18. Descubra um subgrafo induzido de

1-regular e o maior nmero possvel de arestas. (Qual a relao com a resoluo do exerccio 2?)

3. Clique, conjunto independente, grafo bipartido e corte


Se o subconjunto U V (G) induz um grafo completo em G ento chamamos U de clique em G. Mais especificamente, se G[U] um grafo
completo com k vrtices ento dizemos que U um k-clique em G.
O caso particular de um 3-clique num grafo G chamado de tringulo de G.
Por outro lado, todo subconjunto de vrtices U V (G) tal que G[U] = (U,) chamado de conjunto independente de G, ou k-conjuntoindependente no caso |U| = k.
Exemplo 5.O subgrafo G do exemplo 3 um 3-clique e G do exemplo 3 um 3-conjunto-independente.
No grafo G do exemplo 1 os conjuntos {3,5,6} e {1,4,6,8} so independentes; no caso de {1,4,6,8} temos um conjunto independente de
cardinalidade mxima pois no h naquele grafo conjunto independente com 5 ou mais vrtices. Nesse mesmo grafo, {8}, {6,7} e {1,2,5} so
cliques, o ltimo de cardinalidade mxima.
Observao 2 (leia esse aviso antes). O tamanho do maior clique e o tamanho do maior conjunto independente num grafo G so difceis de serem
calculados computacionalmente. Eles pertencem a classe dos problemas NP-difceis. Uma conseqncia desse fato que no sabido se existem
algoritmos cujo tempo de execuo no pior caso um polinmio em |V (G)| + |E(G)| para resolver esse problemas. A descoberta de um algoritmo
com tempo de pior caso polinomial no tamanho de G, ou a prova de que ele no existe, um dos problemas no-resolvidos mais importantes da
atualidade, o problema P NP. Trata-se de um dos 7 problemas do milnio, dos quais restam 6 no resolvidos, cada um com uma recompensa de
US$1.000.000,00 para uma soluo.
Chamamos um grafo G de grafo bipartido se existem dois conjuntos independentes A e B em G que particionam V (G), isto , tais que A B
= e A B = V (G). Por exemplo, o seguinte grafo bipartido

pois V (G) = {1,2,3,4,5}{6,7,8} e tanto {1,2,3,4,5} quanto {6,7,8} so conjuntos independentes.


Um grafo bipartido G com partes A e B dito completo se tem |A||B| arestas, ou seja, E(G) = {{a, b} V (G): a A e b B}. Um grafo
bipartido completo com partes de cardinalidade n e m denotado por Kn,m .
Sejam G um grafo, A e B V (G) dois subconjuntos disjuntos em V (G). Definimos o subconjunto de arestas
(11)
e o subgrafo bipartido induzido por A e B o grafo bipartido

O conjunto de arestas E(A,A) chamado de corte definido por A e, (11) por dessa forma podemos escrever
(12)

Observao 3.Convencionamos que os grafos triviais e vazio so grafos bipartidos.


3.1. Exerccios.

11/12/2013 10:59

BC1429 Teoria dos Grafos

7 de 40

http://professor.ufabc.edu.br/~jair.donadelli/disciplinas-ufpr/ci065/

Exerccio 19. Mostre que em qualquer grafo G com pelo menos 6 vrtices ou existe um 3-clique ou existe um 3-conjunto-independente. (Dica:
exerccio 6 e princpio da casa dos pombos sobre EK (v).)
6

Exerccio 20.Dado um grafo G, denotamos por (G) a cardinalidade do maior conjunto independente em G,

Prove que se d(G) > (G) ento G contm tringulo, para todo G.
Exerccio 21.Para todo grafo G, denotamos por (G) a cardinalidade do maior clique em G

Prove que (G) = (G).


Exerccio 22.Redefina para todo grafo G o parmetro (G) dado no exerccio 7 em funo dos conjuntos
independentes de G. Esse parmetro de um grafo conhecido na literatura como nmero cromtico do grafo.

Exerccio 23.Prove que as duas desigualdades dadas a seguir valem para todo grafo G com pelo menos um vrtice
(13)

Exerccio 24.Prove que E(A,B) = E(B,A), segundo a definio dada em (11).


Exerccio 25.Seja G = (A B,E) um grafo bipartido qualquer e suponha que |A| < |B|. verdade que (G) = |B|? Determine (G).
Exerccio 26.Prove que G bipartido se e somente se (G) < 3.
Exerccio 27.Prove a afirmao da equao (12).
Exerccio 28.Dado um grafo G, defina para todo U V (G) a vizinhana de U, denotada NG(U), por

verdade que |E(U,U)| = |NG(U)|? Justifique.


Exerccio 29.Um grafo G dito k-partido, para k , se existem k conjuntos independentes A1, A2, , Ak que

particionam V (G), ou seja, V (G) = A1 A2 Ak, o conjunto Ai um conjunto independente em G para todo i
{1,2,,k} e Ai Aj = para quaisquer i e j distintos. Prove que dentre os grafos k-partidos (k 3) completos com n vrtices o nmero mximo
de arestas atingido quando |Ai||Aj| 1 para todos i, j {1, 2, , n} distintos.
Exerccio 30.Mostre que, se n = kq + r com 0 r < k, ento o nmero de arestas do grafo do exerccio anterior

e que esse nmero limitado por

4. Isomorfismo
Dizemos que os grafos G e H so isomorfos e, nesse caso escrevemos G H, se existe uma funo bijetora
(14)
tal que

11/12/2013 10:59

BC1429 Teoria dos Grafos

8 de 40

http://professor.ufabc.edu.br/~jair.donadelli/disciplinas-ufpr/ci065/

(15)
para todos u, v V (G). Uma funo f como acima chamada de isomorfismo.
Exemplo 6 (Grafo de Petersen). Os grafos representados na figura 3 so isomorfos pelo isomorfismo f(1) = a, f(2) = b, f(3) = c, f(4) = d, f(5) = e,
f(6) = f, f(7) = g, f(8) = h, f(9) = i, f(10) = j. Esse grafo chamado de grafo de Petersen, um dos grafos mais conhecidos na Teoria dos Grafos
(leia mais aqui).

Figura 3: Grafos isomorfos.

Notamos que quaisquer dois grafos completos G e H de mesma ordem so isomorfos. Mais que isso, qualquer bijeo entre V (G) e V (H)
define um isomorfismo entre eles. Nesse caso, dizemos que o grafo nico a menos de isomorfismos e por isso usamos a mesma notao para
todos eles, a saber Kn, quando o conjunto dos vrtices no relevante.
Exemplo 7.H oito grafos distintos com trs vrtices, eles esto descritos nas representaes da figura abaixo.

Figura 4: Grafos distintos de ordem 3.


No entanto, h apenas 4 grafos no-isomorfos com trs vrtices, representados pelos seguintes diagramas

Figura 5: Grafos no-isomorfos de ordem 3.

No existe uma caracterizao simples de grafos isomorfos. Isso significa que no h algoritmo eficiente que recebe dois grafos e decide se
eles so isomorfos.
Exemplo 8.Nenhum dos grafos G, H e K representados na figura 6 so isomorfos.

Figura 6: Grafos no-isomorfos.


Temos que G no isomorfo a H porque G no tem um vrtice de grau quatro enquanto que o vrtice 5 em H tem grau quatro, portanto no
h como haver uma bijeo entre os vrtices desse grafo que preserve as adjacncias. Pelo mesmo motivo H no isomorfo a K. Agora, G no
isomorfo a K porque caso existisse um isomorfismo f : V (G) V (K) ento a imagem por f do conjunto {2,3,5} V (G) , obrigatoriamente, o
conjunto {2,3,5} V (K), mas qualquer bijeo f no preserva adjacncia entre esses vrtices pois {2,3,5} em G induz um tringulo e em K no
(veja mais no exerccio 33 abaixo).

11/12/2013 10:59

BC1429 Teoria dos Grafos

9 de 40

http://professor.ufabc.edu.br/~jair.donadelli/disciplinas-ufpr/ci065/

Nesse exemplo foram dados argumentos diferentes para concluir o mesmo fato, o no-isomorfismo entre pares de grafos. Ainda, existem
exemplos de grafos no isomorfos para os quais esses argumentos no funcionam (da mesma forma que a existncia de um vrtice de grau quatro
funciona para mostrar que G no isomorfo a H mas no serve para mostrar que G no isomorfo a K pois 1,2,2,3,3,3 so os graus dos vrtices
de ambos os grafos). Isso se deve ao fato de ser difcil caracterizar de modo eficiente o no-isomorfismo entre grafos:
O problema do no-isomorfismo de grafos: Dados os grafos G = (V,E) e H = (V,E) decidir se eles so no-isomorfos.
Observao 4 (leia esse aviso antes). No se conhece algoritmo de tempo polinomial no tamanho dos grafos para decidir se dois grafos no so
isomorfos. Mais do que isso, no se conhece um algoritmo de tempo polinomial que receba como entrada uma terna (G,H,P) onde P uma prova
de que G e H no so isomorfos e que devolva sim se G1 no isomorfo a G2 e devolva no caso contrrio. Em linguagem tcnica dissemos que
no se sabe se o problema do no-isomorfismo de grafos est na classe NP de complexidade computacional.
Por outro lado, podemos considerar o problema do isomorfismo de grafos:
O problema do isomorfismo de grafos: Dados os grafos G = (V,E) e H = (V,E) decidir se eles so isomorfos.
Observao 5 (leia esse aviso antes). Atualmente no se conhece algoritmo polinomial no tamanho do grafo que resolva o problema. Entretanto,
no difcil projetar um algoritmo de tempo polinomial que recebe a terna (G, H, f) onde f : V (G) V (H) e devolve sim caso G e H so
isomorfos e f o isomorfismo, caso contrrio devolve no. Em linguagem tcnica dizemos que o problema do isomorfismo de grafos est na
classe NP de complexidade de problemas computacionais. Entretanto, no sabido se esse problema NP-completo
4.1. Exerccios.
Exerccio 31.Determine quais pares dentre os grafos abaixo so isomorfos.
1. G1 dado por V (G1) = {v1,u1,w1,x1,y1,z1} e
E(G1 ) = {{u1,v1},{u1,w1},{v1,w1},{v1,x1},{w1,y1},{x1,y1},{x1,z1}};
2. G2 dado por V (G2) = {v2,u2,w2,x2,y2,z2} e
E(G2 ) = {{u2,v2},{u2,w2},{v2,w2},{v2,x2},{w2,y2},{x2,y2},{y2,z2}};
3. G3 dado por V (G3) = {v3,u3,w3,x3,y3,z3} e
E(G3 ) = {{u3,v3},{u3,w3},{v3,w3},{v3,x3},{w3,y3},{x3,y3},{u3,z3}}.
Exerccio 32.Mostre que existem 11 grafos no-isomorfos com 4 vrtices.
Exerccio 33. Sejam G e H grafos isomorfos e f : V (G) V (H) um isomorfismo. verdade que G[U] isomorfo a H[f(U)] para todo U V
(G)? Justifique.
Exerccio 34.Um automorfismo de um grafo um isomorfismo do grafo sobre ele mesmo. Quantos automorfismos
tem um grafo completo?

Exerccio 35.Mostre que o conjunto de automorfismos de um grafo com a operao de composio de funes definem um grupo.
Exerccio 36.Um grafo G = (V,E) vrtice-transitivo se para quaisquer u,v V existe um automorfismo f de G com f(v) = u. Analogamente, G
aresta-transitivo se para quaisquer arestas {x,y},{z,w} E existe um automorfismo f de G tal que {f(x),f(y)} = {z,w}.
D um exemplo de grafo vrtice-transitivo. D um exemplo de grafo aresta-transitivo. D um exemplo de grafo aresta-transitivo mas no
vrtice-transitivo.

5. Outras noes de grafos


Em algumas situaes podemos ter um modelo para um problema a ser resolvido e esse modelo seria um grafo se desconsiderassemos algumas
peculiaridades da situao. Por exemplo, um mapa rodovirio pode ser modelado definindo-se um vrtice para cada cidade e duas cidades
formam uma aresta no grafo (modelo) se existe rodovia ligando essas cidades correspondentes aos vrtices. Normalmente, distncia um
parmetro importante nesses mapas e assim as arestas devem ter um comprimento associado a elas. Entretanto, comprimento de aresta no faz
parte da definio de um grafo. Num outro exemplo, se estamos interessados em rotas de trfego dentro de uma cidade podemos definir um
vrtice por esquina e duas esquinas consecutivas numa mesma rua formam uma aresta. Nesse caso, as ruas tm sentido (mo e contra-mo) e as
arestas tambm deveriam ter mas, novamente, essa caracterstica no faz parte da definio de grafos.
Esses problemas e muitos outros podem ser modelados com outros tipos de grafos. Alguns desses outros tipos so
Grafo com pesos nas arestas um tripla (V,E,) de modo que (V,E) um grafo e : E R uma funo que assume valores em R . O

11/12/2013 10:59

BC1429 Teoria dos Grafos

10 de 40

http://professor.ufabc.edu.br/~jair.donadelli/disciplinas-ufpr/ci065/

conjunto R em geral depende do problema sendo considerado. Por exemplo, se os pesos representam distncia ento tomamos R = + (reais
no-negativos). O grafo (V,E) chamado grafo subjacente do grafo com pesos nas arestas.
Grafo orientado aquele onde as arestas tm uma orientao (so pares ordenados) de modo que se u e v so vrtices, ento (u,v)(v,u) e
alm disso se (u,v) uma aresta ento (v,u) no aresta. Removendo o sentido das arestas temos o grafo subjacente ao grafo orientado.
Grafos dirigido ou digrafo dado (V,E) onde E V V \{(v,v): v V }.
Multigrafo dado por um conjuntode vrtices e podemos ter mais de uma aresta incidente ao mesmo par de vrtices. Removendo as arestas
repetidas de um multigrafo temos o grafo subjacente ao multigrafo.

Figura 7: (a) Grafo orientado. (b) Multigrafo. (c) Grafo dirigido. (d) Grafo subjacente.
5.1. Exerccios.
Exerccio 37.D uma definio formal para multigrafo.
Exerccio 38.Defina isomorfismo para grafos orientados.
Exerccio 39.Formule uma verso do teorema 1 para grafos orientados.

6. Representao computacional
O primeiro passo para representar computacionalmente um grafo mapear (construir um isomorfismo) o conjunto de vrtices do grafo G no
subconjunto dos nmero naturais {1,2,,|V (G)|} para facilitar o acesso as informaes usando estruturas indexadas. Isso pode ser feito usando as
tcnicas de busca conhecidas para recuperar os inteiros associados aos vrtices como, por exemplo, tabela de espalhamento (hashing) ou rvore
binria de busca. Feito isso, qualquer problema computacional sobre um grafo G tratado computacionalmente sobre um grafo isomorfo G com
vrtices V (G) = {1, 2, ,|V (G)|} e a estrutura de busca escolhida no passo anterior usada para representar o isomorfismo.
No que segue, sempre que tratamos problemas computacionais sobre grafos estamos assumindo os grafos so definidos sobre o conjunto de
vrtices {1,2,,n}, para algum n . Veremos duas das estruturas de dados mais importantes para a representao de grafos.
6.1. Matriz de adjacncias de G.
a matriz |V ||V | denotada por A(G), ou A simplesmente, definida por

Exemplo 9.Para o G grafo do exemplo do exemplo 8, a matriz de adjacncias

6.2. Lista de adjacncias de G.


um vetor N[ ] de listas ligadas. A lista N[i] contm os vizinhos do vrtice i e cada n dessa lista composto por uma varivel que armazena
um vrtice e um ponteiro que aponta para o prximo n da lista.
Exemplo 10.Para o grafo G do exemplo 8 uma lista de adjacncias representada na figura 8

11/12/2013 10:59

BC1429 Teoria dos Grafos

11 de 40

http://professor.ufabc.edu.br/~jair.donadelli/disciplinas-ufpr/ci065/

Figura 8: Lista de adjacncias do grafo G no exemplo 8.

Observao 6.A representao de uma grafo por lista de adjacncias no nica, pois qualquer permutao dos ns em N[i] define uma lista
vlida.
6.3. Complexidade de algoritmos em grafos.
Neste texto entendemos por complexidade do algoritmo a
complexidade de tempo no pior caso.
Exemplo 11.Sejam A e B dois algoritmos distintos que executam a mesma tarefa sobre um grafo G = (V,E). O algoritmo A gasta, no pior caso, |V |2
passos para executar a tarefa e o algoritmo B gasta (|V | + |E|)log |E| passos no pior caso. Para grafos com |V |24 arestas o primeiro algoritmo
sempre melhor enquanto que para grafos com 1.000|V | arestas o segundo algoritmo assintoticamente melhor (melhor para |V | 16.645,
enquanto que o primeiro melhor para |V | 16.644). Para entradas pequenas (at 25 mil vrtices) a ordem das funes so comparadas nos
grficos da figura 9.

Figura 9: Grfico das funes do exemplo 11.

Usualmente, a expresso que estabelece a complexidade de um algoritmo escrita em funo do tamanho da representao usada e em
notao assinttica: sejam f,g duas funes definidas nos naturais, ento

significa que existem constantes positivas c e n0 tais que para todo n n0 vale

No nosso caso n o tamanho da representao do grafo.


Vejamos a complexidade de alguns algoritmos que executam tarefas simples comparando cada uma das representaes dadas acima para um
grafo fixo G = (V,E)
Tarefa
ij E?
Determine d(i)
Devolva E

Matriz de adjacncias Lista de adjacncias


O(1)
O(|V |)
O(|V |2)

O(|V |)
O(|V |)
O(|E|)

Note que o nmero de arestas satisfaz a desigualdade

11/12/2013 10:59

BC1429 Teoria dos Grafos

12 de 40

http://professor.ufabc.edu.br/~jair.donadelli/disciplinas-ufpr/ci065/

portanto, para Devolva E mais eficiente usar listas quando temos poucas arestas. As vezes a comparao entre o desempenho pode ser mais
complicada.
Observao 7. Um algoritmo em grafo de complexidade polinomial se a complexidade de tempo no pior caso expressa por uma funo
polinomial no tamanho da representao. Complexidade polinomial independente da representao do grafo por matriz ou lista de adjacncias,
ou seja, essas representaes so polinomialmente relacionadas.

Exerccios
Exerccio 40.Mostre que se f(n) = O(g(n)) ento O(f(n)) + O(g(n)) = O(g(n)).
Exerccio 41. verdade que para todo G vale que |E(G)| = O(|V (G)|) para |V (G)| suficientemente grande?
Exerccio 42. verdade que para todo G vale que log |E(G)| = O(log |V (G)|) para |V (G)| suficientemente grande?
Exerccio 43.Prove o afirmao feita na observao 7.
Exerccio 44.Sejam G um grafo, A a sua matriz de adjacncias e b(i,j) as entradas da matriz A2. Que parmetro de G est associado ao nmero
b(i,i), para cada i {1,2,,|V (G)|}? Qual a relao entre b(i,j) e, NG(i) e NG(j) quando i j?
Exerccio 45. Para um grafo dirigido dizemos que a aresta (u,v) E sai de u e chega em v. Os vetores de incidncias de um grafo dirigido D =
(V,E) so os vetores S e C indexados por E tais que para e = (u,v) E temos S[e] = u e C[e] = v, e nesse caso dizemos que e sai de u e chega em v.
Determine o tempo para:
(i) dados e E e v V , determinar se e incide em v;
(ii) dado e E, determinar suas extremidades;
(iii) dado v V , determinar as arestas que saem de v e determinar as arestas que chegam em v.
Uma matriz de incidncias de um grafo dirigido D = (V,E) uma matriz B de dimenso |V ||E| (as linhas so indexadas por V e as colunas
por E) tal que

(a) Determine o tempo para:


(i) dados e E e v V , determinar se e incide em v;
(ii) dado e E, determinar suas extremidades;
(iii) dado v V determinar as arestas que saem de v e determinar as arestas que chegam em v.
(b) Determine o que as entradas da matriz |V ||V | dada por B BT representam, onde BT a matriz transposta de B.
Exerccio 46.Seja G um grafo qualquer e A sua matriz de adjacncias. Como possvel determinar o nmero de tringulos de um grafo G
qualquer a partir de A3?
Exerccio 47.Em 1990, Coppersmith e Winograd mostraram um algoritmo que determina o produto de matrizes duas n n usando O(n2,376)
operaes aritmticas. Como esse pode ser usado para determinar se um grafo tem tringulo?
Exerccio 48.Sejam G um grafo e A sua matriz de adjacncias. Prove que se os autovalores de A so distintos ento o grupo dos automorfismos
abeliano.
Exerccio 49.O trao de uma matriz A, denotado por tr(A), a soma dos elementos na diagonal da matriz. Quanto vale o trao de uma matriz de
adjacncias? Quanto vale tr(A2) em funo de E(G)?
Exerccio 50.Por A ser uma matriz simtrica, sabemos da lgebra Linear que todos os seus autovalores so nmeros reais. Determine os

11/12/2013 10:59

http://professor.ufabc.edu.br/~jair.donadelli/disciplinas-ufpr/ci065/

BC1429 Teoria dos Grafos

13 de 40

autovalores da matriz de adjacncias do grafo completo Kn. Mostre que se G r-regular ento r uma autovalor de A.
Exerccio 51.Dada uma representao por listas de adjacncias de um grafo dirigido D descreva um algoritmo com tempo de execuo O(|V (D)|
+ |E(D)|) para computar a representao por listas de adjacncias do grafo subjacente.
Exerccio 52.Quando uma representao por uma matriz de adjacncias utilizada, muitos algoritmos sobre grafos gastam tempo (|V |2), mas
existem algumas excees. Mostre que determinar se um grafo orientado contm um sorvedouro isto , um vrtice com grau de entrada |V | 1
e grau de sada 0 pode ser determinado em tempo O(|V |) quando uma representao por matriz utilizada.

7. Percursos em grafos
Nessa seo veremos algoritmos que formam a base para muitos algoritmos em grafos (para todos os que sero vistos nesse curso). O objetivo de
um percurso num grafo o seguinte: dado a representao de um grafo G = (V,E), sistematicamente visitar todos os vrtices e todas as arestas
desse grafo.
Dado um vrtice w em V , dizemos que o vrtice u do grafo alcanvel por w em G se existe uma seqncia de vrtices v1 , v2 , ,vm de G tal
que
w = v1 ,
u = vm ,
vi e vi+1 so adjacentes, para todo i {1,2,,m 1}.
Definimos que w alcanvel por w em G, para todo w V .
Uma seqncia de vrtices como acima chamada de passeio em G.
7.1. Percurso genrico.
O percurso num grafo G comea com as seguintes consideraes: cada vrtice est em um de dois estados possveis em qualquer instante da
execuo: no-visitado ou visitado; cada aresta em E(u) est em um de dois estados: no-visitada a partir de u ou visitada a partir de u, para todo
u V (G). De incio todos os vrtices de G esto no-visitado e todas as arestas no-visitada a partir de ambos os extremos.
O seguinte algoritmo, que chamaremos de Visite, recebe um grafo G e um vrtice qualquer v V (G) e visita todos os vrtices alcanveis a
partir de v uma vez e visita todas as arestas induzidas por esses vrtices a partir de cada extremo, portanto, visita cada aresta duas vezes. Para
gerenciar essa visita o algoritmo Visite usa uma lista L na qual a busca, insero e remoo de elementos feita de maneira arbitrria e com
custo constante.
Visite
1
2
3
4
6
7
8
9
10

insira

em

e marque

escolha
;
em
h aresta no-visitada a partir de
escolha
no-visitada a partir de
marque
a partir de ;
no-visitado
insira
em
e marque
;
remova
de .

Anlise e correo do algoritmo Visite(G,v). No que segue faremos uma anlise detalhada do algoritmo Visite(G,v). At o fim da seo fixe um grafo G representado por uma
lista de adjacncias e um vrtice v de G e considere uma execuo de Visite(G,v). O seguinte resultado prova que Visite(G,v) faz o que foi prometido.
Seja A o subconjunto dos vrtice alcanveis a partir de v.

Teorema 3. Aps Visite(G,v) cada vrtice de A foi visitado uma vez e cada aresta de G[A] foi visitada duas vezes.

Como conseqncia obtemos a complexidade de um percurso.

Corolrio 4. A complexidade do algoritmo O(|A| + |E(G[A])|).

A seguir provamos uma seqncia de resultados menores que culminam na prova desses resultados.

Proposio 5. Cada vrtice de G entra em L no mximo uma vez.

Demonstrao. Um vrtice qualquer w V (G) inserido em L na linha 1 ou 9. A condio para essas linhas serem executadas que w seja no-visitado. Aps a insero, na

11/12/2013 10:59

BC1429 Teoria dos Grafos

14 de 40

http://professor.ufabc.edu.br/~jair.donadelli/disciplinas-ufpr/ci065/

linha 1 ou 9, o vrtice w marcado visitado, logo a condio para insero de w em L passa a ser falsa. A proposio segue do fato de que um vrtice visitado nunca se tornar

no-visitado durante uma execuo do algoritmos.

Proposio 6. A linha 3 executada no mximo d (w) + 1 vezes, para cada w V (G).


G

Demonstrao. Fixe um vrtice w e assuma que w L. Para cada execuo da linha 3 com u = w, se vale a condio da linha 4 ento o nmero de arestas no-visitadas a partir
de w em E(w) diminui de um, seno w removido de L. Como conseqncia sero 0 arestas no-visitadas a partir de w aps d(w) execues mais 1 execuo que resulta na

remoo de w da lista L. O resultado segue da proposio anterior.

Corolrio 7. O algoritmo Visite(G,v) termina.

Demonstrao. Por definio |V (G)| finito. Pela proposio 5 cada vrtice entra em L no mximo uma vez. Pela proposio 6 aps no mximo

d(u) + 1 = 2|E| + |V |

uV (G)

iteraes do enquanto na linha 2 temos L = .

Lema 8.Numa execuo de Visite(G,v) todo vrtice alcanvel a partir de v visitado.

Demonstrao. Seja w V (G) um vrtice alcanvel a partir de v. Por definio existe uma seqncia
(16)
de arestas de G tal que

Vamos provar por induo em m que se w alcanvel a partir de v por uma seqncia de m arestas ento w visitado.
Para a base da induo, suponha m = 1 e escreva e = {v,w}. Na linha 1 do algoritmo Visite(G,v) o vrtice v visitado e entra em L. Pelo corolrio7 v removido em algum
1

momento da execuo e antes disso a aresta e vai ser visitada a partir de v na linha 9, nesse ponto ou w j foi visitado ou vale a condio da linha 8 e w visitado.
1

Suponha (hiptese da induo) que todo vrtice alcanvel a partir de v por uma seqncia de m 1 arestas visitado. Seja w um vrtice como em (16) .
Escreva e = {x,w} com x e e . Por hiptese x foi visitado, portanto, antes de ser removido a aresta {x,w} E(x) visitada a partir de x e assim w visitado, pelo mesmo
m

m1

argumento dado na hiptese de induo.

Corolrio 9. Seja A o subconjunto dos vrtices de V (G) alcanveis a partir de v. Ento cada aresta de G[A] visitada duas vezes.

Demonstrao. Seja e = {x,y} uma aresta de G[A]. Como x,y A temos x L em algum momento da execuo de Visite(G,v); antes de x ser removido de L a aresta e visitada a

partir de x. Analogamente, a aresta e visitada a partir de y, logo a aresta visitada duas vezes.
Desse corolrio podemos concluir que a complexidade de Visite(G,v) (linearmente) proporcional ao tamanho da representao, isto , O(|A| + |E(G[A])|) (lembre-se que foi
assumido custo constante para as operaes em L).

Agora, simples mostrar que o seguinte algoritmo percorre o grafo (V,E), visitando cada vrtice uma nica vez e visitando cada aresta duas
vezes e com complexidade de tempo O(|V | + |E|).
Visite

escolha
insira

h vrtice no-visitado em
no-visitado;
em
e marque
;

escolha
;
em
h aresta no-visitada a partir de
escolha
no-visitada a partir de
marque
a partir de ;
no-visitado
insira
em
e marque
;
remova
de .

7.2. Exerccios.
Exerccio 53.Justifique detalhadamente o custo O(1) nas linhas do algoritmo Visite(G,v).
Exerccio 54.Prove que se G est representado por uma matriz de adjacncias ento o algoritmo Visite tem complexidade O(|V (G)|2).

11/12/2013 10:59

BC1429 Teoria dos Grafos

15 de 40

http://professor.ufabc.edu.br/~jair.donadelli/disciplinas-ufpr/ci065/

Exerccio 55.Escreva um algoritmo que recebe um grafo G e um subconjunto de vrtices U e devolve as arestas no corte E(U, U). Determine a
complexidade do algoritmo.
Exerccio 56. Seja G um grafo. Para simplificar, suponha que todo vrtice de G alcanvel a partir de qualquer vrtice dado. Para cada vrtice
temos dois estados possveis: no-visitado ou visitado. De incio todos os vrtices de G esto no-visitado. Prove ou refute: o seguinte algoritmo
visita todos os vrtices de G.
Visite-vertices
escolha um vrtice
no-visitado;
insira
em
e marque
;
houver aresta no corte
escolha uma aresta
no corte
no-visitado
ento insira
em
marque
visitado.

;
;

Exerccio 57.Determine a complexidade do algoritmo do exerccio anterior.

8. Algoritmos de busca
Algoritmo de busca como so chamados, usualmente, alguns dos algoritmos de percurso em grafos.
Observao 8 (leia esse aviso antes). Se voc est interessado em algoritmo de busca, ento pode comear pelos algoritmos de busca descritos na
wikipedia.
Nessa seo veremos dois casos particulares do algoritmo de percurso visto acima obtidos quando definimos a poltica de gerenciamento da
lista L. A estratgia geral de busca , a partir do vrtice v dado, se houver vrtice u no-visitado ento visite u e seus vizinhos no-visitados. Para
visitar os vizinhos de u podemos destacar duas estratgias:
8.1. Busca em Largura.
primeiro visitamos cada vizinho novo de v, percorrendo N(v), e guardamos-o numa fila; quando no houver mais vizinhos marcamos v como
visitado, pegamos o primeiro vrtice da fila e repetimos o processo. Em outras palavras, a lista L administrada como fila.
Visite_em_Largura
1
2
3
4
6
7
8
9
10

insira
seja
em

no fim da fila

e marque

o primeiro vrtice da fila;


h aresta no-visitada a partir de
escolha
no-visitada a partir de
marque
a partir de ;
no-visitado
insira
no fim da fila
e marque
remova
da fila .

Exemplo 12.Na figura 10 mostramos um esquema de percurso em largura supondo que os vrtices esto armazenados em ordem crescente na lista
de adjacncias. As arestas destacadas indicam quando um vrtice com a marca no-visitado foi visitado.

Figura 10: Exemplo de busca em largura.

8.2. Busca em Profundidade.


visitamos cada vizinho novo de v, percorrendo N(v), e guardamos-o numa pilha; quando no houver mais vizinhos marcamos v como visitado,
pegamos o primeiro vrtice da pilha e repetimos o processo.Em outras palavras, a lista L acima administrada como pilha.
Exemplo 13.Na figura 11 mostramos o esquema de um percurso em profundidade. As arestas destacadas indicam quando um vrtice com a marca
no-visitado foi visitado.

11/12/2013 10:59

BC1429 Teoria dos Grafos

16 de 40

http://professor.ufabc.edu.br/~jair.donadelli/disciplinas-ufpr/ci065/

Figura 11: Exemplo de busca em profundidade.

Exemplo 14.Por fim, a figura 12 compara as ordens em que os vrtices foram descobertos em cada uma das buscas, largura e profundidade
respectivamente.

Figura 12: Comparao das buscas em largura e em profundidade.

Observao 9 (leia esse aviso antes). Veja as entradas no Wikipedia para busca em largura e para busca em profundidade.
8.2.1. Busca em profundidade rotulada. A seguinte verso da busca em profundidade ser muito til adiante; chamaremos-a de busca em
profundidade rotulada e a idia manter um contador (global) de operaes na pilha e rotular cada vrtices com dois valores inteiros: o valor do
contador quando o vrtice entrou na pilha e o o valor do contador quando o vrtice saiu da pilha. A seguir damos uma verso recursiva para o
procedimento Visite da busca rotulada, o qual recebe um grafo G dado por uma lista de adjacncias e um vrtice w V (G); no incio temos cont
= sai[v] = chega[v] = 0 e pai[v] = nil, para todo vrtice v de G.
BP
;
;

BP

;
;
;
.

Proposio 10. Aps uma execuo de BP(G,w), dados u,v V (G) alcanveis a partir de w, um e somente um dos itens abaixo vale para esse
par de vrtices
(a) chega[u] < sai[u] < chega[v] < sai[v];
(a) chega[v] < sai[v] < chega[u] < sai[u];
(b) chega[u] < chega[v] < sai[v] < sai[u];
(c) chega[v] < chega[u] < sai[u] < sai[v].
Demonstrao. A prova deixada como exerccio.
Definimos, para todo t , a t-sima iterao do vetor pai, denotada por pai(t), da seguinte maneira
(17)

11/12/2013 10:59

BC1429 Teoria dos Grafos

17 de 40

http://professor.ufabc.edu.br/~jair.donadelli/disciplinas-ufpr/ci065/

8.3. Exerccios.
Exerccio 58.Escreva uma verso no recursiva da busca em profundidade rotulada.
Exerccio 59.Prove a proposio 10.
Exerccio 60. Considere uma execuo da busca rotulada BP(G,w). Para simplificar, considere que todo vrtice de G alcanvel a partir de w.
Prove as seguintes equivalncias. Para quaisquer u,v V (G)
1. chega[v],sai[v] chega[u],sai[u] = se e somente se no existe t tal que pai(t)[u] = v e no existe t tal que pai(t)[v] = u;
2. chega[v],sai[v] chega[u],sai[u] se e somente se existe t tal que pai(t)[v] = u;
3. chega[v],sai[v] chega[u]sai[u] se e somente se existe t tal que pai(t)[u] = v.

Exerccio 61.Adapte o algoritmo do exerccio 56 para que o percurso seja uma busca em largura. Repita para busca em profundidade.

9. Caminhos e Circuitos
Um caminho qualquer grafo ou subgrafo isomorfo a (V,E) dado por
(18)
para algum k . Um caminho pode ser representado, genericamente, pelo diagrama da figura 13.

Figura 13: Representao genrica de um caminho.


O caminho P definido em (18) tambm denotado pela seqncia

de seus vrtices de modo que vrtices consecutivos na seqncia so adjacentes e com o cuidado de todos os vrtices serem distintos. Dizemos
que os vrtices 0 e k so os extremos de P e dizemos que os vrtices 1,,k 1 so os vrtices internos de P.
O nmero de arestas num caminho o comprimento desse caminho. Seguindo notao estabelecida na seo 1, denotamos por Pk+1 um
caminho com k + 1 vrtices, portanto com comprimento k.
Exemplo 15.Considere o grafo G do diagrama na figura 14. O subgrafo induzido pelo conjunto {a,b,f,i} um caminho, P = a,b,f,i, tambm o
subgrafo (U,F) dado por U = {a,d,c,h,i} e F = {ad,dc,ch,hi} um caminho, um P4 e um P5, respectivamente, se quisermos destacar o
comprimento. O subgrafo induzido pelo conjunto de vrtices {m} um P1 e o subgrafo induzido pela aresta {j,l} um P2.

Figura 14: Exemplo de caminhos.

Dizemos que os vrtices u e v num grafo G so ligados por um caminho se existe um caminho P G cujos extremos so u e v.
Em um grafo G = (V,E), a distncia entre dois vrtices quaisquer u,v V , denotada por distG(u,v), definida como o comprimento do menor
caminho que liga esses vrtices, isto
(19)
quando existe algum caminho. Se u e v no so ligados por caminho em G, ento convencionamos distG(u,v) = , de modo que
(20)

11/12/2013 10:59

BC1429 Teoria dos Grafos

18 de 40

http://professor.ufabc.edu.br/~jair.donadelli/disciplinas-ufpr/ci065/

Exemplo 16.No grafo do exemplo 15 temos distG(a,j) = , distG(a,b) = 1, distG(a,i) = 3, distG(m,j) = . Observe que o caminho de comprimento
mnimo pode no ser nico.
Observao 10 (desigualdade triangular). Para todo G e todos u,v V (G) temos distG(u,v) = distG(v,u). Tambm segue da definio que
distG(v,u) = 0 se e somente se u = v, e que vale a desigualdade triangular
(21)
para quaisquer u,v,w V (G) distintos. Portanto, a distncia define uma mtrica em G.
Definimos o dimetro do grafo G como a maior distncia entre dois vrtices quaisquer de G, ou seja
(22)
Naturalmente, diam(G) = se existirem dois vrtices no grafo G que no so ligados por caminho.
Um circuito qualquer grafo (V,E) da forma
(23)
para algum k 2.
Como no caso do caminho, para simplificar, o circuito definido em (23) tambm denotado pela seqncia de seus vrtices

com os cuidados de todos os vrtices a menos do primeiro e do ltimo serem distintos e de vrtices consecutivos serem adjacentes. O nmero de
arestas num circuito o comprimento desse circuito e quando queremos destacar o comprimento denotamos um circuito de comprimento k por
Ck.
Exemplo 17.Consideremos o grafo G do exemplo 15 temos que C4 = G {b,d,e,g} um circuito, bem como o subgrafo C5 = (V,E) definido por V =
{a,b,d,e,g} e E = {ab,be,eg,gd,da}.
Proposio 11. Todo grafo G contm um caminho de comprimento pelo menos (G) e, se (G) 2, um circuito de comprimento pelo menos (G)
+ 1.
Demonstrao. Seja P = x0,x1,,xk o caminho mais longo em G. Temos que
(24)
pois, caso contrrio haveria caminho mais longo que P. Logo, |V (P)| > |NG(xk)| como |NG(xk)| (G) segue que |E(P)| (G), isto , um caminho
do comprimento desejado.
Agora, tratando do caso de circuito, devemos supor que (G) 2. Como o grau mnimo pelo menos dois o vrtice xk tem um vizinho em P
diferente de xk1 e, assim, est bem definido o nmero
(25)
que o menor ndice em {0,1,,k 2} de um vrtice vizinho de xk. Por (24) temos que o circuito xi,xi+1,,xk,xi tem pelo menos (G) + 1 vrtices.

Definimos a cintura do grafo G como o comprimento do menor circuito contido em G, ou seja


(26)
quando existe um, se no existe convencionamos cin(G) = .
9.1. Exerccios.
Exerccio 62. verdade que todo grafo com pelo menos trs vrtices, exatamente dois vrtices de grau 1 e os demais vrtices com grau 2 um
caminho?
Exerccio 63. Sejam P = u1 ,u2,,uk e Q = v1,v2,,v duas seqncias de vrtices de um grafo. Definimos a
concatenao dessas seqncias como a seqncia dos vrtices de P seguidos dos vrtices de Q, denotada P,Q = u1 ,

11/12/2013 10:59

BC1429 Teoria dos Grafos

19 de 40

http://professor.ufabc.edu.br/~jair.donadelli/disciplinas-ufpr/ci065/

u2 , , uk , v1 ,v2,,v. Supondo que P e Q sejam caminhos no grafo, sob que condies a seqncia P,Q caminho?
Exerccio 64.Prove a desigualdade triangular (equao (21)).
Exerccio 65.Escreva um algoritmo que recebe uma grafo G e decide se G um caminho. Estabelea a complexidade do algoritmo.
Exerccio 66.Escreva um algoritmo baseado numa busca em largura que recebe (V,E) e vrtices v,w V e devolve dist G (w,v).
Exerccio 67.Prove que G bipartido se e somente se G no contm circuito de comprimentos mpar.
Exerccio 68.Seja G um grafo onde a distncia entre qualquer par de vrtices finita. Mostre que se existem w V (G) e uv E(G) tais que
dist(w,u) = dist(w,v) ento G contm um circuito de comprimento mpar. Mostre que cin (G) dist(w,u) + dist(w,v) + 1.
Exerccio 69.Mostre que a relao e f em E(G) dada por e = f ou existe um circuito C G tal que e e f pertencem a E(C) uma relao de
equivalncia.
Exerccio 70. Seja k um nmero natural. O k-cubo o grafo cujo conjunto de vrtices so as seqencias binrias de k

bits e dois vrtices so adjacentes se e somente se as k-tuplas correspondentes diferem exatamente em uma posio.
Determine o nmero de vrtices, arestas, o dimetro e a cintura do k-cubo. Determine os parmetros , e do k-cubo.

Figura 15: Exemplo: o 3-cubo.

Exerccio 71. Seja k um nmero natural. O grafo de Fibonacci Fk o grafo cujo conjunto de vrtices so as

seqencias binrias de k bits sem bits 1 consecutivos e dois vrtices so adjacentes se e somente se as k-tuplas
correspondentes diferem exatamente em uma posio. Determine o nmero de vrtices, arestas, o dimetro e a cintura do Fk . Determine os
parmetros , e do Fk.
Exerccio 72.Seja p um nmero primo e tome V = {0,1,,p1}. Defina o grafo bipartido 3-regular G = (AB,E) com A = V {a} e B = V {b} (o
que queremos que A e B sejam duas cpias disjuntas de V , note que isso no possvel tomando A = V e B = V ). Cada vrtice (x,a) A
adjacente aos vrtices (x,b), (x + 1,b) e (x + y, b) de B onde y0,1 fixo e a soma feita mdulo p.
Prove que qualquer subgrafo induzido de G de ordem p + 1 contm um caminho de comprimento 2 quando y = 2, (p + 1)2,p 1.
Repita para qualquer y0,1.

10. Caminhos mnimos em grafos com pesos nas arestas


Nesta seo consideramos grafos com peso nas arestas, esses grafos so definidos por uma terna (V,E,) onde V e E so os usuais conjuntos de
vrtices e arestas, respectivamente, e : E(G) + uma funo que atribui um peso a cada aresta de E (aqui, representando o comprimento da
aresta).
O comprimento de um caminho P = x0,x1,,xk em (V,E,) a soma dos pesos (comprimentos) das arestas no caminho

e a distncia entre dois vrtices u e v o comprimento do menor caminho que os liga,

quando existe algum caminho, caso contrrio convencionamos que dist(u,v) = tal que vale (20). Um caminho que liga u a v de comprimento
dist(u,v) < chamado de caminho mnimo.
Exemplo 18.O diagrama da figura 16 representa um grafo com pesos nas arestas.

11/12/2013 10:59

BC1429 Teoria dos Grafos

20 de 40

http://professor.ufabc.edu.br/~jair.donadelli/disciplinas-ufpr/ci065/

Figura 16: Diagrama de um grafo com peso nas arestas. A distncia entre a e e 10 e um caminho mnimo a, c, b, d, f, e.

No que segue vamos supor que os grafos so dados por lista de adjacncias onde a lista de v contm os vrtices u V (G) tais que {v,u}
E(G) junto com o peso (u,v).
Exemplo 19.Para o grafo G do exemplo 18 uma lista de adjacncias representada na figura 17.

Figura 17: Lista de adjacncias do grafo G no exemplo 18.

10.1. Exerccios.
Exerccio 73.Seja G um grafo com peso nas arestas e s um vrtice de G. Prove a seguinte variante da desigualdade triangular (21) : para todo
{v,u} E(G)
(27)

Exerccio 74. Suponha que v1,v2,,vk um caminho mnimo num grafo D. Prove que vi,,vj um caminho mnimo que liga vi e vj em D para
quaisquer i, j com 1 i < j k.
Exerccio 75.Dados (V,E,) e s V considere o problema de determinar dist(s,x) para todo x V com a seguinte estratgia: declare s visitado e
em cada passo visite o vrtice no visitado mais prximo de um vrtice j visitado. Construa um exemplo de grafo com peso nas arestas que
mostre que essa estratgia no funciona.

11. Algoritmo de Dijkstra para caminhos mnimos


Suponha que so dados G = (V,E,) e um vrtice s V . As estruturas de dados que vamos usar so um vetor d, uma estrutura para representar um
subconjunto S V (pode ser um vetor de bits):
S:
em qualquer ponto da execuo do algoritmo o conjunto S identifica os vrtices v V que j tm a distncia dist(s,v) computada;
d[ ]:
em qualquer ponto da execuo do algoritmo d[v] armazena um valor que significa
(a) ou a distncia dist(s,v) de s para v, caso v S;
(b) ou d[v] = , caso v ainda no tenha sido visitado, ou foi mas no alcanvel;
(c) ou ainda d[v] o comprimento de algum caminho que liga s e v, caso v S;
O algoritmo abaixo recebe G e s como acima, determina distG(s,x), para todo x V (G) e funciona da seguinte forma.
Inicie
seja

subconjunto vazio de

;
;

11/12/2013 10:59

BC1429 Teoria dos Grafos

21 de 40

http://professor.ufabc.edu.br/~jair.donadelli/disciplinas-ufpr/ci065/

No incio d[s] = 0 pois s est a distncia 0 dele mesmo; para qualquer vrtice vs temos d[v] = ; S = .
Num determinado momento da execuo o conjunto S contm os vrtices cujas distncias j esto determinadas. Nesse ponto, escolhemos o
vrtice u S que tem menor valor de d[ ]; u o vrtice de S (conjunto dos vrtices com distncia ainda no determinada pelo algoritmo) mais
prximo do vrtice de sada s, portanto, sua distncia fica determinada pelo valor de d[u] e podemos inseri-lo em S. Em seguida, visitamos cada
vizinho t de u (por (27) dist(s, t) d[u] + (u,t)) e testamos se um caminho de menor comprimento foi encontrado, se for o caso ento atualizamos
d[ ]
Relaxao
1
2

Note que a condio na linha 1 do algoritmo acima sempre falsa para t S. O algoritmo prossegue, at que S = V .
Dijkstra
1
2
3
4
5
6

Inicie

vrtice de
insira
em ;
Relaxao

com

minimo;

Uma demonstrao formal de que o algoritmo funciona, isto , no final d[v] armazena as distncias dist(s,v), para todo v V , segue
facilmente do teorema 14 provado adiante. Esse algoritmo conhecido como algoritmo de Dijkstra.
Observao 11 (leia esse aviso antes). Veja a entrada no Wikipedia sobre o algoritmo de Dijkstra.

Correo do algoritmo. Vamos mostrar que o algoritmo funciona corretamente.

Proposio 12. Em qualquer momento da execuo de Dijkstra(G,s) valem os seguintes fatos


(a) d[v] dist(s,v) para todo v V e uma vez que d[v] = dist(s,v) o valor de d[v] nunca mais muda.
(b) Se dist(s,v) = ento d[v] = durante toda a execuo.

Demonstrao. Para provar (a) vamos supor o contrrio e assumir que u V o primeiro vrtice para o qual ocorreu que d[u] < dist(s,u) durante uma execuo e seja v V o
vrtice que causou a mudana no valor de d[u] numa relaxao, assim a relaxao faz
(28)
e, nesse momento da execuo d[v] + ({u,v}) dist(s,v) + ({u,v}) pois u foi a primeira ocorrncia do fato suposto, ou seja,

contradizendo a desigualdade (27).

Para provar (b) notemos que, por (a), d[v] dist(s,v) = .

Proposio 13. Se P = s,x ,,x ,v um caminho mnimo e d[x ] = dist(s,x ) ento aps Relaxao(x ,v) teremos d[v] = dist(s,v).
1

Demonstrao. Aps Relaxao(x ,v) temos d[v] d[x ]+({x ,v}) = dist(s,x )+({x ,v}). Pelo exerccio 74 dist(s, x ) + ({x ,v}) = dist(s,v), portanto, d[v] dist(s,v). Pela
k

proposio 12(a), d[v] dist(s,v), portanto d[v] = dist (s, v).

Teorema 14. Antes de cada iterao do enquanto d[v] = dist(s,v) para todo v S.

Demonstrao. No incio, antes da primeira iterao, temos S = , portanto o teorema vale trivialmente.
A prova por contradio. Suponha que em algum momento da execuo de Dijkstra(G,s) exista u S tal que d[u] dist (s, u) e, sem perda de generalidade, suponha que u o
primeiro vrtice inserido em S e com d[u]dist(s,u). Seja P um caminho mnimo com extremos s e u em G. Esse caminho existe pela proposio 12(b).
Seja {x, y} E(G) a primeira aresta de P no sentido de s para u com x S e y S no momento da execuo imediatamente anterior a u entrar em S. Notemos que, nesse

11/12/2013 10:59

BC1429 Teoria dos Grafos

22 de 40

http://professor.ufabc.edu.br/~jair.donadelli/disciplinas-ufpr/ci065/

momento da execuo, us, logo S, possvel termos x = s e y = u mas xu.


Agora, quando x entrou em S ocorreu Relaxao(G,x,y) o que fez com que d[y] = dist(s,y) pela proposio 13.
Como os pesos no so negativos e P mnimo dist(s,y) dist(s,u), ou seja

onde a ltima desigualdade vem da proposio 12(a). Mas, d[u] d[y] pois ambos esto em S e u foi escolhido, assim d[u] = dist(s,u) e temos uma contradio.
A correo do algoritmo de Dijkstra segue facilmente do teorema acima; antes da ltima iterao do lao vale S = V (G) e a afirmao do teorema que d[v] est correto para
todo v V (G).

Observao 12 (leia esse aviso antes). A prova desse teorema usa uma tcnica de prova chamada de invariante do lao. Veja mais exemplos aqui e aqui.

Anlise de complexidade. Inicie(G,s) tem complexidade O(|V |) e Relaxao(u,t) custa O(1).


A complexidade do algoritmo de Dijkstra depende de como determinado o mnimo na linha 3. O lao da linha 2 ser excutado uma vez para
cada v V (G); a contribuio do lao da linha 2 para a complexidade do algoritmo

onde Ti (u) o tempo gasto no linha i para u dado na linha 3. Se o mnimo determinado fazendo comparaes ento em cada rodada o custo
|S| 1, portanto,

Ademais uV T4(u) = O(|V |) e

Logo uV T3(u) + T4(u) + T5,6(u) = O(|V |2). Levando em conta a complexidade de da iicializao temos O(|V |) + O(|V |2) = O(|V |2).
Outra possibilidade usar fila de prioridades para determinar o mnimo: No caso de fila de prioridades implementada por heap binria O(|V
|) o tempo para construir uma fila de prioridade, portanto Inicie(G,s) tem complexidade O(|V |). A remoo da linha 3 tem o custo O(log(|S|)) de
refazer a heap, logo T3(u) = O(log |V |) para todo u V . Insero em S pode ser feita em tempo constante, ou seja, T4(u) = O(1). Agora, T5,6(u)
pode ser escrita como

Cada vez que a linha 6 de Dijkstra executada pode ser necessria uma atualizao da heap. Essa operao toma tempo O(log |V |). Logo

11.1. Exerccios.
Exerccio 76.Construa um grafo com pesos que podem ser negativos e no qual algoritmo de Dijkstra devolve resposta errada.
Exerccio 77.Considere o seguinte algoritmo que recebe um grafo com pesos nas arestas e um par w,v de vrtices desse grafo e devolve uma
seqncia de vrtices w = v1,v2,,vk = v.
Imprime_caminho_minimo
seja

subconjunto vazio de

;
;
;
;
construa uma fila de prioridades
no-vazio
;
insira
em ;

com as prioridades dadas por

11/12/2013 10:59

BC1429 Teoria dos Grafos

23 de 40

http://professor.ufabc.edu.br/~jair.donadelli/disciplinas-ufpr/ci065/

;
;
diferente de nil
empilhe
em ;
;
imprima ;
no-vazia
imprima (desempilhe
).

Prove que a resposta de Imprime_caminho_minimo(G,w,v) um caminho mnimo que liga w e v.


Exerccio 78.Dado um grafo D com pesos : E(D) [0,1] que representam a probabilidade de uma aresta no falhar; a probabilidade de um
caminho em D estar operacional o produto das probabilidades das arestas desse caminho (i.e., estamos supondo independncia das
probabilidades de no falhar). Escreva um algoritmo para descobrir o caminho mais seguro entre dois vrtices. Prove que o algoritmo est
correto.
Exerccio 79.Seja D = (V,E,) um grafo com peso : E {0,1,,m} nas arestas, m . Modifique Dijkstra para computar caminhos mnimos em
tempo O(m|V | + |E|).
Exerccio 80 (Algoritmo de BellmanFord). O algoritmo de Bellman-Ford recebe um grafo com pesos G = (V, E, ), onde pode assumir
valores negativos e um vrtice s, devolve um valor booleano indicando a no-existncia em G de um circuito negativo alcanvel a partir de s. No
caso do valor devolvido ser verdadeiro, o algoritmo computou corretamente as distncias distG(s,v) para todo v V .
Bellman--Ford
Inicie
repita

;
vezes
em
em
Relaxao
em
em

;
faca

devolva falso,
devolva verdadeiro.

Seja G um grafo com pesos nas arestas, possivelmente negativo. Prove que independente do nmero de vezes que a Relaxao foi executado,
sempre valem:
(a) dist G (s,w) distG(s,u) + (u,w), para toda aresta {u,w} E(G);
(b) d[v] distG(s,v) para todo v V (G), e uma vez que vale a igualdade o valor de d[v] no muda aps qualquer execuo de Relaxao;
(c) se distG(s,v) = ento d[v] = ;
(d) se s, ,u,w caminho mnimo e d[u] = distG(s,u) ento Relaxao(u,w) resulta em d[w] = distG(s,w);
(e) seja s = v0,v1,v2,,vk1,vk = w um caminho mnimo. Se ocorrem as relaxaes em (v0,v1), (v1,v2),, (vk1 , vk ), nessa ordem e com possveis
outras relaxaes intermedirias, ento teremos no final da seqncia d[w] = distG(s,w).
(f) Prove que o algoritmo de BellmanFord devolve o valor booleano prometido;
(g) conclua que o algoritmo de BellmanFord funciona corretamente.
Observao 13 (leia esse aviso antes). Veja as entradas no Wikipedia para algoritmo de BellmanFord.
Exerccio 81.Prove que a complexidade do algoritmo de BellmanFord O(|V ||E|).
Exerccio 82 (Algoritmo de Floyd-Warshall). Seja G = (V,E,) um grafo com pesos nas arestas representado pela matriz

11/12/2013 10:59

BC1429 Teoria dos Grafos

24 de 40

http://professor.ufabc.edu.br/~jair.donadelli/disciplinas-ufpr/ci065/

A seguinte estratgia determina distG(i,j) para todos i,j V usando uma tcnica para projeto de algoritmos conhecida como programao
dinmica: Para todo k {0,1,,|V |} denotamos por [k] o subconjunto {1,2,,k} V , com [0] = . Dizemos que o caminho P = i,v0,,vt,j um
[k]-caminho se o seus vrtices internos v0,,vt pertencem a [k]. Com isso podemos definir uma variante da distncia que chamaremos de
[k]-distncia entre i e j como o comprimento do menor [k]-caminho que liga i a j e denotada por distk(i,j), com dist0(i,j) = aij.

Figura 18: O nico [0]-caminho que liga 3 e 4 3,4; os [1]-caminhos que ligam 3 e 4 so 3,4 e 3,1,4; os [2]-caminhos que ligam 3 e 4 so
3,4, 3,1,4, 3,2,4, 3,1,2,4 e 3,2,1,4, esses so tambm todos os [3]-caminhos e [4]-caminhos que ligam 3 e 4. No grafo representado
acima, d0(3,4) = 5, d1(3,4) = 4 e d2(3,4) = d3(3,4) = d4(3,4) = 3. Tambm, d0 (1,2) = d1(1,2) = d2(1,2) = 10, d3(1,2) = 4 e d4(1,2) = 3.
Por definio, a [k + 1]-distncia o comprimento do menor [k + 1]-caminho e a [k]-distncia o comprimento do menor [k]-caminho; a
diferena entre esses caminhos que no primeiro, os [k + 1]-caminhos, possvel que o vrtice k + 1 seja vrtice interno e no segundo no, pois
[k + 1] = [k] {k + 1}. Dessa forma,
(29)
Resumindo:
Floyd-Warshall
e
;
e

em V

em V
.

Prove que o tempo de execuo O(|V |3) e que o algoritmo est correto (segue de (29)).
Observao 14 (leia esse aviso antes). Veja a entrada no Wikipedia para algoritmo de FloydWarshall.
Exerccio 83.Determine di(j,k) para toda terna (i,j,k) V 3 no grafo da figura 18.
Exerccio 84.A seguinte verso do algoritmo de FloydWarshall funciona corretamente?
Floyd-Warshall
e

em V
;
e

em V
.

Exerccio 85.Fecho transitivo: Se D = (V,E) um grafo dirigido ento o fecho transitivo de D o grafo D = (V, E ) onde

Escreva um algoritmo de tempo O(|V |3) para determinar o fecho transitivo de um grafo.

12. Conexidade
Um grafo G conexo se no-vazio e quaisquer dois vrtices de G so ligados por um caminho.
Dizemos que H um subgrafo conexo maximal de G se no existe um subgrafo conexo F G tal que H F. Os subgrafos conexo maximais
de um grafo qualquer so os componentes conexos do grafo. Por exemplo, no grafo do exemplo 1 temos quatro componentes conexos, a saber,
induzidas pelos conjuntos de vrtices {1,2,5}, {3,4}, {6,7} e {8}.
Um vrtice v V num grafo conexo G = (V,E) chamado de articulao (ou vrtice de corte) se a remoo do vrtice v e das arestas de E(v)
em G resulta num grafo desconexo, isto , o grafo G v definido por V {v},E E(v) desconexo.

11/12/2013 10:59

BC1429 Teoria dos Grafos

25 de 40

http://professor.ufabc.edu.br/~jair.donadelli/disciplinas-ufpr/ci065/

Um grafo sem articulaes chamado de biconexo. Os subgrafos biconexos maximais de um grafo G qualquer so chamados de
componentes biconexos de G.
Exemplo 20.No grafo do diagrama na figura 19 so articulaes os vrtices 1,3,7,9.

Figura 19: 1, 3,7,9 so articulaes.


Os componentes biconexos so os subgrafos induzidos pelos conjuntos de vrtices: {1,13}, {1,2,3,4,5,6}, {3, 7}, {7, 8}, {9,10} e {3,9,11,12}.

Figura 20: Componentes biconexos.

12.1. Exerccios.
Exerccio 86. Dado G = (V,E) escrevemos u v, para quaisquer vrtices u e v de G, se e somente se u = v ou existe um caminho ligando u a v em
G. Mostre que uma relao de equivalncia sobre V e caracterize as classes de equivalncia dessa relao.
Exerccio 87. Mostre que se G = (V,E) conexo ento G e = (V,E \{e}) conexo para toda aresta e que pertence a
algum circuito de G.

Exerccio 88. Mostre que se (G) 2 ento os componentes conexos de G ou so caminhos ou so circuitos.
Exerccio 89.Seja H um subgrafo gerador de G, isto , H G e V (H) = V (G). Mostre que se H conexo ento G
conexo.
Exerccio 90.Seja G um grafo com n vrtices. Considere os graus dos vrtices em ordem crescente, (G) = d1 d2

dn = (G). Mostre que se

dk k vale para todo k com 0 < k < n (G), ento G conexo.


Exerccio 91.Seja G o grafo definido sobre o conjunto de vrtices {0,1,,n 1} com {u,v} E(G) se, e somente se, u v k mod n.
1. D um condio necessria e suficiente sobre n e k para que G seja conexo.
2. Determine o nmero de componentes conexos em funo de n e k.
Exerccio 92.Mostre que se G conexo ento LG (veja exerccio 16) conexo.
Exerccio 93.Mostre que se u no articulao num grafo conexo G ento toda aresta que incide em u pertence a um circuito de G.
Exerccio 94.Prove ou d um contra-exemplo para: dado n existe n tal que todo grafo com n e grau mnimo n biconexo.
Exerccio 95.Se u uma articulao de um grafo conexo G ento G[N(u)] conexo?
Exerccio 96.Dado um subconjunto U V (G) denotamos por G U o subgrafo induzido por V (G) \ U. Para todo k
, dizemos que um grafo G k-conexo se

11/12/2013 10:59

BC1429 Teoria dos Grafos

26 de 40

http://professor.ufabc.edu.br/~jair.donadelli/disciplinas-ufpr/ci065/

|V (G)| > k e
no existe um U V (G) de cardinalidade |U| < k tal que G U desconexo.
Assim, todo grafo no-vazio 0-conexo, todo grafo no-trivial e conexo 1-conexo e todo grafo biconexo com pelo menos trs vrtices
2-conexo. A conexidade de G o maior inteiro k para o qual G k-conexo
(30)
(i) Prove que todo grafo k-conexo tambm -conexo para todo < k.
(ii) Prove ou refute: para todo G vale (G) (G).
(iii) Prove que para todo G k-conexo vale |E(G)| k|V (G)|2.
Exerccio 97.Dados k 2 e n > k vamos construir o grafo Hn,k = (V,E) sobre V = 0,1,,n 1 com conjunto de arestas que depende da paridade
de k:
1. Se k par, digamos k = 2r, ento
(31)
2. Se k mpar, digamos k = 2r + 1, ento
(2.1) Se n par,
(32)
(2.2) Se n mpar,
(33)
Abaixo temos, respectivamente, os diagramas dos grafos H8,4, H8,5 e H9,5.

(i) Prove que o nmero de arestas de Hn,k

(ii) Prove que Hn,k k-conexo.

13. rvores e Florestas


Uma floresta um grafo sem circuitos. Os componentes conexos de uma floresta so rvores, ou seja, uma rvore um grafo conexo sem
circuitos.
Denotamos por G + xy o grafo (V (G),E(G) {{x,y}}), supondo que x,y V (G).
Teorema 15. As seguintes afirmaes so equivalentes para todo grafo G = (V,E):
1.
2.
3.
4.

G rvore;
para quaisquer x,y V existe um nico caminho em G ligando x a y;
G conexo minimal: G conexo e G e desconexo, para qualquer e E;
G acclico maximal: G acclico e G + xy contm circuito, para quaisquer x,y V no adjacentes.

Na prova do teorema usaremos o fato de o grau mnimo de toda rvore com pelo menos trs vrtices ser 1. Isso porque se o grau mnimo fosse
pelo menos 2 ento a proposio 11 garante que o grafo teria circuito.
Chamamos de folha todo vrtice de grau 1 numa rvore.
Demonstrao do Teorema 15. Para G trivial o teorema vale trivialmente. Se G tem ordem 2 ento G = K2 e a verificao fcil. Vamos supor
que G tem pelo menos 3 vrtices.
Vamos mostrar (1)(2)(3)(4)(1).
[(1)(2)] Seja G uma rvore. Suponha que existam dois caminhos distintos x = x1,x2,,xn = y e x = y1 , y2 ,,ym = y ligando x a y e defina

11/12/2013 10:59

BC1429 Teoria dos Grafos

27 de 40

http://professor.ufabc.edu.br/~jair.donadelli/disciplinas-ufpr/ci065/

Esses ndices esto bem definidos, como os caminhos so distintos 1 p < min{m,n} e p < j n. Agora, xp , xp+1 , ,xq,y1,y2,,yp um
circuito em G, uma contradio. Assim, o caminho que liga x a y nico.
[(2)(3)] Seja G tal que (2) vale. Por hiptese G conexo. Para toda aresta e = xy E temos que P = x,y o nico caminho que liga x a y,
portanto, G e desconexo.
[(3)(4)] Seja G conexo minimal. Se G contm circuito, ento para qualquer e E(G) que pertena a um circuito temos que G e conexo
(exerc. 87), uma contradio. Agora, seja x,y V no adjacentes em G; como G conexo existe um caminho, digamos P = x,v1,,vk,y, ligando x
a y. Em G + xy temos o circuito x, v1 , , vk ,y,x.
[(4)(1)] Seja G um grafo acclico maximal. Como G acclico s precisamos mostrar que conexo. Observamos que se no existe
caminho ligando x a y, ento G + xy no contm circuito, uma contradio.
Dessa forma, fica estabelecida a equivalncia das proposies.
Como conseqncia do teorema 15 temos o seguinte corolrio.
Corolrio 16. Uma rvore com n vrtices um grafo conexo com o menor nmero possvel de arestas dentre todos os grafos conexos com n
vrtices.

Finalmente, vamos mostrar quantas arestas tem um grafo conexo minimal sobre n vrtices.
Lema 17.Toda rvore com n vrtices tem n 1 arestas.
Demonstrao. Vamos provar por induo em n 1 que a seguinte afirmao vale: se um grafo com n vrtices uma rvore ento o nmero
de arestas n1. No grafo com 1 vrtice o nmero de arestas 0 (base da induo). Vamos assumir que a afirmao acima vale para n 1, onde
n 2.
Agora, seja G uma rvore com n vrtices. Tome v V (G) uma folha de G. O grafo Gv uma rvore (justifique) com n 1 vrtices e pela
hiptese indutiva |E(G v)| = n 2. Como |E(v)| = 1 temos que |E(G)| = n 1. Portanto, pelo Princpio de Induo Finita a afirmao acima vale
para todo n 1.
13.1. rvores geradoras.
Se o subgrafo gerador T G uma rvore ento chamamos T de rvore geradora de G.
Todo grafo conexo tem uma rvore geradora: Seja G um grafo conexo e seja T G um subgrafo gerador de G conexo e com o menor nmero
de arestas possvel. Se T contm circuito ento para qualquer aresta e de um circuito T e conexo e tem menos arestas que T, uma contradio.
Desse fato, podemos concluir que a recproca do lema 17: suponha que G conexo, com n vrtices e n 1 arestas. Seja T G uma subrvore
geradora de G. Como acabamos de mostrar T tem n 1 arestas, logo T = G. Decorre que G uma rvore.
Teorema 18.Um grafo com n vrtices uma rvore se, e somente se, conexo e o nmero de arestas n 1.

Determinar uma rvore geradora de um grafo conexo fcil e rpido e j sabemos como fazer: o subgrafo induzido pelo conjunto de arestas
(34)
onde o vetor pai como no algoritmo 8.2.1.
Exemplo 21.Um grafo conexo e uma rvore geradora determinada por uma busca em profundidade.

Figura 21: T a rvore geradora de G definida pelo vetor pai de uma busca em profundidade rotulada.

13.2. Exerccios.

11/12/2013 10:59

BC1429 Teoria dos Grafos

28 de 40

http://professor.ufabc.edu.br/~jair.donadelli/disciplinas-ufpr/ci065/

Exerccio 98.Determine o nmero de arestas de uma floresta com n vrtices e com k componentes conexos.
Exerccio 99.Desenhe todas as rvores no-isomorfas com 5 vrtices e todas as rvores no-isomorfas com 7 vrtices e com grau mximo pelo
menos 4.
Exerccio 100. Mostre que toda rvore T tem pelo menos (T) folhas.
Exerccio 101. Prove que o conjunto de arestas {pai[v],v} definido por uma busca em profundidade rotulada induz uma rvore.
Exerccio 102. Seja G um grafo. Mostre que as seguintes afirmaes so equivalentes:
(a) G conexo e |E(G)| = |V (G)| 1;
(b) |E(G)| = |V (G)| 1 e G no contm circuito.
(c) G uma rvore;
Exerccio 103. Uma floresta um grafo acclico. Considere uma floresta F com n vrtices e m arestas.
(a) Qual o nmero mximo de vrtices num componente conexo de F?
(b) Mostre que h pelo menos max{n 2m,0} vrtices de grau zero.
(c) Mostre que se m < n2 ento resta pelo menos um vrtice de grau zero.

14. rvores geradoras de custo mnimo em grafos com peso nas arestas
Dado um grafo conexo com pesos nas arestas G = (V,E,), onde : E , definimos o custo de um subgrafo H G como

O problema no qual estaremos interessados a partir de agora : qual o custo do subgrafo gerador conexo de G mais barato? Em outras
palavras, queremos determinar S E(G) tal que

Uma rvore geradora de G de custo mnimo tambm chamada de rvore geradora mnima do grafo G.
14.1. Exerccios.
Exerccio 104. Mostre que se e uma aresta de peso mnimo em G ento e pertence a alguma rvore geradora mnima.
Exerccio 105. Mostre que se e uma aresta de peso mximo em G e pertence a um circuito de G ento existe uma rvore geradora mnima de (V
(G),E(G) \{e}) que tambm uma rvore geradora mnima de G. Mostre que o mesmo vale para toda aresta de peso mximo de todo circuito de
G.
Exerccio 106. Mostre que para qualquer U V (G) no-vazio, a aresta de menor custo em E(U,U) tem que pertencer a toda rvore geradora
mnima de G.
Exerccio 107. Considere a seguinte estratgia para computar uma rvore geradora de custo mnimo: dado um grafo conexo G = (V,E,),
mantemos um conjunto S (inicialmente vazio) de arestas e a cada passo escolhemos em {u, v} E \ S uma aresta boa para S, onde aresta boa para
S significa que S {{u,v}} est contido no conjunto de arestas de alguma rvore geradora mnima de G. O objetivo desse exerccio e mostrar que
no final as arestas de S induzem uma rvore geradora mnima de G.
AGM(G)
enquanto G[S] no uma rvore geradora faa
descubra uma aresta f boa para S em E(G)\S,
inserir f em S;
devolva S.

Suponha que sempre existe pelo menos uma aresta boa pra ser escolhida em cada iterao do enquanto. Prove que para qualquer G conexo,
AGM(G) constri uma rvore geradora mnima de G. (Dica: use o invariante S subconjunto de alguma rvore geradora mnima de G antes de
cada iterao do lao.)

11/12/2013 10:59

http://professor.ufabc.edu.br/~jair.donadelli/disciplinas-ufpr/ci065/

BC1429 Teoria dos Grafos

29 de 40

Exerccio 108. Agora, o objetivo provar a hiptese assumida no exerccio acima de que sempre h uma aresta boa pra ser escolhida. Prove que
se T uma rvore geradora mnima de G e S E(T) ento para todo U V (G) tal que o corte E(U,U) no contm arestas de S vale o seguinte:
uma aresta {u,v} de custo mnimo no corte E(U, U ) boa para S. (Dica: dados G,S,T como no enunciado, tome U e e E(U,U) como enunciado
e considere 2 casos, se e E(T) e se e E(T).)
Exerccio 109. Seja T G uma rvore geradora de um grafo G com peso nas arestas. Mostre que T uma rvore geradora mnima se e somente se
para toda e E(G) \ E(T), o nico circuito C de T + e tal que todas as arestas de C custam no mais que (e).
Exerccio 110. Mostre que se para todo corte em G existe uma nica aresta de custo mnimo no corte, ento a rvore geradora de custo mnimo
nica. A recproca dessa afirmao vale? Justifique.
Exerccio 111. Seja G um grafo conexo com pesos positivos nas arestas. Para todo T rvore geradora mnima e todo caminho P em T, P um
caminho mnimo em G?

15. Algoritmo de Kruskal para rvore geradora mnima


A idia do algoritmo de Kruskal bastante simples, ele um algoritmo guloso: dado um grafo conexo com pesos nas arestas, a cada passo
escolhemos a aresta mais barata dentre as que ainda no esto em S, desde que ela no forme circuito com as arestas j escolhidas:
Kruskal(G)
1
2
3
4
5

<- fila das arestas em ordem no-decrescente de peso;


no induz circuito ento
insira
em ;
devolva

Correo do algoritmo de Kruskal. Vamos provar


Teorema 19.O conjunto S devolvido pelo algoritmo de Kruskal induz uma rvore geradora mnima de G.
Demonstrao. Considere a seqncia S = (e1,e2,,en1) em que as arestas foram inseridas no conjunto S. Seja T uma rvore geradora mnima
de G com o maior nmero possvel de arestas em comum com S e vamos mostrar que E(T) = S.
Se E(T) S tomamos m = min{j : ej E(T)}. Por definio T + em contm um circuito, nesse circuito deve existir uma aresta f que no est em
S.
S {f} induz um circuito que no tem todas as arestas de e1,,em1, pois essas tambm pertencem a T. Como f no foi escolhida pelo
algoritmo tem-se (f) (em).
Logo c(T f + em) c(T) e como T de custo mnimo tambm T f + em de custo mnimo e, ainda, com mais arestas em comum com S que
T, contrariando a escolha de T.

Anlise de complexidade. Notemos que enquanto S evolui de at definir uma rvore geradora, esse conjunto sempre uma subfloresta de G, ou seja, uma coleo de conjuntos
disjuntos de vrtices (componentes conexos) e o teste na linha 3 acima verifica se a aresta e = {x,y} no liga vrtices do mesmo conjunto (caso contrrio, teremos um circuito) e
nesse caso, na linha 4, une o conjunto onde est o vrtice x com o conjunto do vrtice y. Assim, precisamos de estruturas de dados que, dinamicamente, representem e manipulem
conjuntos disjuntos de modo eficiente. Estruturas como essa so conhecidas na literatura como estruturas para unio-e-busca (union-find) ou estruturas de dados para conjuntos
disjuntos. Essa estruturas mantm dinamicamente uma famlia de subconjuntos disjuntos onde um elemento de cada subconjunto eleito como o representante do subconjunto e
temos as operaes
make(x):
cria o conjunto unitrio {x};
find(x):
devolve o representante do conjunto ao qual x pertence;
union(x,y):
une os conjuntos que contm x e y.
Kruskal(G)
F fila das arestas em ordem no-decrescente de peso;
para cada v em V(G) faa
make(v);
para cada u,v em F faa
se find(u) diferente de find(v) ento
insira u,v em S;

11/12/2013 10:59

BC1429 Teoria dos Grafos

30 de 40

http://professor.ufabc.edu.br/~jair.donadelli/disciplinas-ufpr/ci065/

union(u,v);
devolva S.
Dentre as estruturas de dados mais conhecidas para representar conjuntos disjuntos, chamamos a ateno para uma delas: a representao por floresta com unio por rank e busca
com compresso de caminhos. Essa representao com as heursticas mencionadas tem um timo desempenho assinttico:

Teorema 20. O tempo gasto com m operaes num universo com n elementos O((m + n) lg (n)).

16

Denotamos por lg (n) o nmero de vezes que temos que iterar lg at que o valor obtido seja menor ou igual a 1, por exemplo, lg 2 = 4.

Nesse caso, o nmero de operaes make, find e union no algoritmos de Kruskal menor que 2(|E| + |V |), portanto o tempo do algoritmo O((|E| + |V |) lg |V |) para as
operaes (teorema 20) mais O(|E| log |E|) para a ordenao das arestas; resultando O(|E| log |E|).

Exerccios.
Exerccio 112. Mostre que para toda rvore geradora mnima T G existe uma ordenao nas arestas de G tal que T a rvore devolvida pelo
algoritmo de Kruskal.
Exerccio 113. Suponha que todos os pesos das arestas de G so positivos. Mostre que qualquer subconjunto de arestas que induz um subgrafo
conexo e tem peso total mnimo uma rvore. D um exemplo com pesos no-positivos onde a concluso no vale.
Exerccio 114. Escreva uma verso do algoritmo de Kruskal que, ao invs de ordenar as arestas por custo, usa uma fila de prioridades (heap, por
exemplo) onde a maior prioridade da aresta fora de S de menor custo. Determine a complexidade dessa implementao. Essa verso do
algoritmo mais eficiente?
Exerccio 115. Suponha que os pesos das arestas so inteiros de 1 at |V |. Quo rpido voc consegue fazer o algoritmo de Kruskal? E se os pesos
das arestas so inteiros de 1 at uma constante m?
Exerccio 116. Escreva um algoritmo que constri uma rvore geradora mnima cuja aresta de maior peso tem peso mnimo dentre todas as
rvores geradoras do grafo.

16. Algoritmo de Prim para rvore geradora mnima


O algoritmo de Prim recebe G = (V,E,) e devolve S E tal que G[S] uma rvore geradora mnima de um grafo conexo com pesos nas arestas
G. O algoritmo de Prim parte de um conjunto unitrio, digamos U = {v} para algum v V , e a cada rodada o algoritmo acrescenta a U o vrtice
de U que extremo da aresta de menor custo em E(U, U), at que U = V . No final, as arestas escolhidas induzem uma rvore geradora mnima.
Prim(G)
1
2
3
4
5
6
7

escolha ;
;
seja
insira
insira
devolva .

uma aresta de peso mnimo em


em ;
em ;

, com

Exerccio 117. Prove que o algoritmo de Prim est correto.


Exerccio 118. Com base na anlise do algoritmo de Dijkstra, mostre que Prim tem complexidade O(|E|log|V |).

17. Emparelhamento
Num grafo G = (V,E), dizemos que M E um emparelhamento se as arestas de M so duas-a-duas no-adjacentes, ou seja, e f = para
quaisquer e,f M. De modo equivalente, chamamos M de emparelhamento se G[M] um subgrafo 1-regular.
Exemplo 22.Considere o grafo dado pelo diagrama da figura 22 abaixo. O conjunto M = {2,4},{5,6} um emparelhamento. Observamos que
pode haver vrtices nos quais no h arestas do emparelhamento incidindo, como o caso dos vrtices 1 e 3.

11/12/2013 10:59

BC1429 Teoria dos Grafos

31 de 40

http://professor.ufabc.edu.br/~jair.donadelli/disciplinas-ufpr/ci065/

Figura 22: Emparelhamento M = {2,4},{5,6} .

Quando um vrtice v pertence a alguma aresta e de um emparelhamento M dizemos que v coberto por M. Dessa forma, pela definio de
emparelhamento, quando v coberto por M existe uma nica aresta e E(v) M. Se um emparelhamento cobre V (G) ento ele chamado de
emparelhamento perfeito em G.
H grafos que no admitem emparelhamento perfeito como, por exemplo, os circuitos de comprimento mpar; de fato, qualquer
emparelhamento em C tem no mximo
arestas, logo circuitos de comprimento par admitem emparelhamento perfeito, mas os de
comprimento mpar no. No exemplo da figura 22 o emparelhamento {1, 2}, {4, 5}, {3,6} perfeito, assim como o emparelhamento {1,2},
{3,5},{4,6} .
Um emparelhamento em G com o maior nmero possvel de arestas chamado de emparelhamento mximo, isto , um emparelhamento
com
(35)
arestas.
Exemplo 23.No caso dos circuitos C fcil ver que (C) =
(P

21

. O mesmo vale para grafos completos (Kn ) =

. No caso de caminhos,

) = (P ) = para todo > 0.

No estudo de emparelhamentos surge um tipo especial de caminho, onde as arestas alternam entre aresta do emparelhamento e aresta fora do
emparelhamento. Um caminho P = x1,x2,,xk, para k 1, em G cujas arestas alternam entre as arestas de E(G) \ M e as arestas de M isto ,

chamado de M-alternante.
Se os vrtices extremos do caminho M-alternante no so cobertos por M ento chamamos esse caminho de M-aumentante. Como o nome
sugere, a existncia de um caminho M-aumentante P em G significa que podemos obter um emparelhamento em G com mais arestas que M. De
fato, a diferena simtrica M E(P) = (M E(P)) \ (M E(P)) um emparelhamento que cobre todos os vrtices cobertos por M e ainda cobre os
extremos de P.
Exemplo 24.Na figura 22 temos M = {2,4},{5,6} e o caminho M-aumentante P com E(P) = {1,2},{2,4},{4,5},{5,6},{6,3} . A diferena
simtrica desses conjuntos

que um emparelhamento com uma aresta a mais que M.


O seguinte teorema uma caracterizao de emparelhamento mximo em funo dos caminhos aumentantes. Esse resultado fundamental no
projeto de um algoritmo eficiente que determina emparelhamentos mximos; mais adiante veremos esse algoritmo para grafos bipartidos.
Teorema 21 (Teorema de Berge, 1957). Um emparelhamento M em G mximo se, e somente se, G no contm caminho M-aumentante.
Demonstrao. Seja M um emparelhamento que no mximo e M um emparelhamento mximo. Considere o subgrafo induzido pelas
arestas dos dois emparelhamentos H = G[M M]. Como (H) 2 os componentes conexos de H so circuitos e caminhos (exerccio 88).
Os circuitos tm que ser de comprimento par, por definio de emparelhamento. Se todos os caminhos tiverem comprimento par ento
teremos |M| = |M|, logo existe um caminho P de comprimento mpar e com mais arestas de M o que implica que os extremos do caminho no
so cobertos por M. Esse caminho M-aumentante em G.
Se P M-aumentante ento

11/12/2013 10:59

BC1429 Teoria dos Grafos

32 de 40

http://professor.ufabc.edu.br/~jair.donadelli/disciplinas-ufpr/ci065/

Resta provar que M E(P) emparelhamento. Suponha que no, ento existem duas arestas de M E(P) adjacentes, digamos que e,f M
E(P) com e f = x. Dessa forma, x deve ser um vrtice interno em P, portanto, deve estar coberto por uma aresta g M, logo x e g e ambas
arestas esto em M, absurdo.

Exerccios.
Exerccio 119. Prove a igualdade |M E(P)| = |(M \ E(P)) (E(P) \ M)| usada na demonstrao do teorema de Berge.
Exerccio 120. Determine o nmero de arestas num emparelhamento mximo nos grafos: Kn, Cn, Pn e Km,n.
Exerccio 121. Se M um emparelhamento em um grafo G qualquer e se P um caminho M-aumentante em G, mostre que M E(P) tambm
um emparelhamento.
Exerccio 122. Prove que uma rvore qualquer tem no mximo um emparelhamento perfeito.
Exerccio 123. Considere um grafo qualquer G de n vrtices. Mostre que um emparelhamento em G tem no mximo n2 arestas.
Exerccio 124. Mostre que o k-cubo admite emparelhamento perfeito, para todo k 2.
Exerccio 125. Duas pessoas jogam um jogo sobre um grafo G alternadamente selecionando vrtices distintos v0 , v1 , v2 , tais que, para i > 0, vi
adjacente a vi1. O ltimo jogador que conseguir selecionar um vrtice vence o jogo.
Mostre que o primeiro jogador tem uma estratgia para vencer o jogo se e somente se o grafo G no tem um emparelhamento perfeito.
Exerccio 126. Mostre que (G) = (LG) (veja a definio de LG no exerccio 16).
Exerccio 127. Prove que se M emparelhamento em G ento existe um emparelhamento mximo que cobre todos os vrtices cobertos por M.
Exerccio 128. Denotemos ci(G) o nmero de componentes conexos do grafo G com um nmero mpar de vrtices. Mostre que se G tem um
emparelhamento perfeito ento ci(G S) |S| para todo conjunto S de vrtices.

18. Emparelhamentos em grafos bipartidos


Por toda esta seo adotaremos que as partes de vrtices independentes de um grafo bipartido G so denotadas por A e B.
Oo teorema de Hall (1935), tambm conhecido como o teorema do casamento devido ao matemtico Philip Hall; um resultado que d uma
condio necessria e suficiente que permite a seleo de um elemento distinto de cada um de uma coleo de conjuntos finitos: Seja S um
conjunto de conjuntos finitos. Um sistema de representates de S um conjunto X pro qual existe uma bijeo f : X S tal que x f(x). Ento S
admite tal sistema se e s se

O teorema tem muitas aplicaes interessantes. Por exemplo, se dividimos um baralho em 13 montes de 4 cartas cada, ento, usando o
teorema de casamento, podemos mostrar que sempre possvel selecionar exatamente uma carta de cada pilha de modo que as 13 cartas
selecionadas contm exatamente uma carta de cada valor (s, 2, 3, , rainha, rei). Mais abstratamente, seja G um grupo e H subgrupo finito de
G. Ento, o teorema de casamento pode ser usado para mostrar que existe um conjunto X tal que X um tanto para o conjunto das classes laterais
esquerda quantoa direita de H em G.
O seguinte resultado d a condio necessria e suficiente para que exista um sistema de representantes reescrito em linguagem de teoria dos
grafos.
Teorema 22 (Teorema de Hall, 1935). Em todo grafo bipartido G = (AB,E) existe um emparelhamento que cobre A se, e somente se,
(36)

11/12/2013 10:59

BC1429 Teoria dos Grafos

33 de 40

http://professor.ufabc.edu.br/~jair.donadelli/disciplinas-ufpr/ci065/

Demonstrao. Sejam G = (A B,E) um grafo bipartido, M um emparelhamento que cobre A e S A. Para cada x S denote por vx o vrtice
de B tal que {x,vx} M. Certamente, vx N(S). Ainda, se x S e y S com x y ento vxvy, logo |N(S)||S|.
Vamos provar por induo em |A| que se |N(S)||S| para todo S A ento existe um emparelhamento que cobre A.
Se |A| = 1 ento facilmente constatamos que existe um emparelhamento que cobre A. Seja G = (AB,E) um grafo bipartido que satisfaz (36) e
suponha que todo grafo bipartido (A B,E) com |A| < |A| que satisfaz a condio de Hall (36) tem um emparelhamento que cobre A.
Caso 1: |NG (S)| > |S| para todo S A no-vazio. Escolha uma aresta {a,b} E e considere o grafo bipartido G = G a b sobre A = A \{a} e
B = B \{b}. Nesse caso, para cada S A A vale que |NG(S)||S| e pela hiptese indutiva conclumos que existe M que cobre A. Portanto M
{{a,b}} cobre A.
Caso 2: |N(S)| = |S| para algum S A no-vazio. O grafo bipartido induzido H = G[S N(S)] satisfaz a condio de Hall (os vizinhos de S em
H so os mesmo vizinhos em G) e pela hiptese indutiva podemos concluir que existe um emparelhamento M em H que cobre S. Agora,
considere o subgrafo bipartido induzido J = G[S NG (S)] e suponha que exista X S tal que no grafo J vale |NJ(X)| < |X|. Teremos no grafo G

contrariando a hiptese de G satisfazer a condio de Hall. Assim |NJ(X)| |X| para todo X S e, pela hiptese indutiva, existe um
emparelhamento M em J que cobre S. Para concluir a demonstrao suficiente observar que M M um emparelhamento em G que cobre A.
Corolrio 23 (Forma defectiva do teorema de Hall). Em todo grafo bipartido G = (AB,E) existe um emparelhamento que cobre A a menos de d
vrtices se, e somente se,
(37)

Exerccios.
Exerccio 129. Como foi dito na observao 2, determinar (G) um problema NP-difcil. Supoha que exista um algoritmo que recebe um grafo
G e computa (G) em tempo polinomial e mostre como computar (G) em tempo polinomial.
Exerccio 130. Prove que se G bipartido ento existe um emparelhamento que cobre todos os vrtices de grau (G).
Exerccio 131. Prove que se G bipartido e regular ento G tem emparelhamento perfeito.
Exerccio 132. Seja G = (A B,E) um grafo bipartido com |A| = |B| = n. Mostre que se no existe um emparelhamento perfeito em G ento existe
um subconjunto S com |S|
tal que |N(S)| = |S| 1 e ou S A ou S B.(Dica: considere um conjunto T minimal violando a condio de Hall,
dada pela equao (36).)
Exerccio 133. Prove a seguinte implicao da forma defectiva do teorema de Hall: Se |N(S)||S|d para todo S A, ento G contm um
emparelhamento de cardinalidade |A| d.
Exerccio 134. Prove que se o grafo bipartido G = (A B,E) conexo contm exatamente um emparelhamento perfeito ento contm uma aresta
e tal que G e desconexo.
Exerccio 135. Seja G = (A B,E) um grafo bipartido e {A1,A2} uma partio de A e {B1,B2} uma partio de B. Mostre que se N(A1) B1 ento
N(B2) A2.
Exerccio 136. Seja G = (A B,E) um grafo bipartido e {A1,A2} uma partio de A e {B1,B2} uma partio de B. Mostre que se N(A1) B1 ento
B1 A2 uma cobertura.
Exerccio 137. Seja G = (AB,E) um grafo bipartido e M um emparelhamento em G. Seja U V (G) o conjunto dos vrtices cobertos por M e W
o conjunto dos vrtices de todos os caminhos M-alternantes que tm um dos extremos em A \ U. Prove que (B W) (A \ W) uma cobertura
em G.
Exerccio 138. Prove que todo emparelhamento mximo em G = (A B,E) tem cardinalidade

11/12/2013 10:59

BC1429 Teoria dos Grafos

34 de 40

http://professor.ufabc.edu.br/~jair.donadelli/disciplinas-ufpr/ci065/

Exerccio 139. Seja G = (A B,E) um grafo bipartido tal que |A| = |B|. Seja M a matriz indexada por A B e definida por M(u,v) = 1 se uv uma
aresta de G e M(u,v) = 0 caso contrrio. O permanente da matriz M o nmero

onde a soma se estende a todas as bijees : A B. Mostre que o permanente de M igual ao nmero de emparelhamentos perfeitos em G.
18.1. Algoritmo de Edmonds.
O algoritmo abaixo recebe um grafo bipartido G = (A B,E) e devolve um emparelhamento que cobre A ou um subconjunto S A tal que
|N(S)| < |S| cuja existncia garantida pelo teorema de Hall. Assumimos que caminhos M-alternante tm um extremo descoberto em A.
A idia do algoritmo construir caminhos alternantes a partir de um vrtice no-coberto em A. Por exemplo, no grafo da figura abaixo, o
algoritmo comea pelo vrtice a1 no-coberto por M. O prximo passo escolher um vizinho de a1. Se existir algum vizinho no coberto, ento
achamos um caminho aumentante, caso contrrio uma aresta de M incide nesse vizinho e temos um caminho alternante, no exemplo a1,b1,a3. O
prximo passo continuar a busca a partir de um vizinho dos vrtices da forma ai j escolhidos. Notemos, entretanto, que basta buscar tais
vizinhos dentre os vrtices ainda no escolhidos, no nosso exemplo, aps o estgio representado pela figura (e) abaixo no h necessidade de
considerar a aresta {a3,b5} pois o novo caminho alternante definido por essa aresta seria redundante para nossos propsitos. No estgio dado pela
figura (f) chegamos a um caminho aumentante.

Quando o algoritmo descobre um caminho aumentante, usa-o para obter um emparelhamento com mais arestas e recomea o processo. Caso
contrrio, teremos construdo caminhos alternantes que comeam num vrtice descoberto e todos terminam num vrtice coberto. Os vrtices
desses caminhos definem um conjunto que viola a condio de Hall. Por exemplo, na figura abaixo o algoritmo comea pelo vrtice no-coberto
a4. Esse vrtice tem os vizinhos b2 e b3 que esto cobertos pelas arestas a1b2 e a3b3 respectivamente. O vrtice a1 j tem todos os seus vizinhos
escolhidos, assim como a3, e no se pode mais estender os caminhos. Nesse caso N({a1,a3,a4}) = {b1,b2} e {a1,a3,a4} um obstculo para um
emparelhamento cobrir A.

Essa idia est formalizada na seguite prova do teorema de Hall.


Segunda demonstrao do Teorem de Hall. Seja M um emparelhamento que cobre A e S A. Para cada x S denote por vx o vrtice de B tal
que {x,vx} M. Certamente, vx N(S). Ainda, x S e y S com xy implicam em vxvy, logo |N(S)||S|.
Agora, para a recproca, sejam G = (A B,E) um grafo bipartido tal que |N(S)||S| para todo S A e M um emparelhamento mximo em G.
Suponha que M no cobre A e seja v A no coberto por M. Denote por C o subconjunto de AB formado por todos os vrtices alcanveis a
partir de v por caminho M-alternante. Tome S = C A e T = C B.
Certamente, T N(S). Agora, se existe x S com um vizinho fora de T, digamos y B \ T, ento x e y so ligados por um caminho
M-aumentante, contrariando o fato de M se mximo, portanto, T = N(S) e |T| = |N(S)|.
Como T e S {v} so cobertos por M (justifique), temos |T| = |S| 1, logo |N(S)| = |S| 1 < |S| o que contraria a hiptese sobre G, logo M cobre
A.
Em linguagem de algoritmos
Edmonds

11/12/2013 10:59

BC1429 Teoria dos Grafos

35 de 40

2:

existe

http://professor.ufabc.edu.br/~jair.donadelli/disciplinas-ufpr/ci065/

no coberto por
;
;

devolva

7:
devolva S;
escolha
existe
insere
em ;
insere
em ;
volte para 7;
caminho

;
tal que

-aumentante de
;

at

volte para 2;

A correo do algoritmo segue da terceira prova do teorema de Hall.


Anlise da complexidade. O tempo para a busca de um caminho M-aumentante O(|V | + |E|) (uma busca) no pior caso. Fazendo uma busca pra
cada vrtice resulta em O(|V |(|V | + |E|)).
Exerccios.
Exerccio 140. Refaa os exerccios 2 e 18.
Exerccio 141. Uma escola secundria abriu vagas para contratao de 6 docentes para as seguintes reas: Matemtica, Qumica, Fsica, Biologia,
Psicologia e Ecologia. Para que um(a) candidato(a) se inscreva ele(a) deve informar a rea em que se graduou e as reas correlatas em que se
sente vontade para lecionar. A escola recebeu seis inscries para estas posies, da seguinte maneira:
Candidato
Antnio
Bernardo
Cssia
Dbora
Evandro
Fernanda

reas
Matem. Qumica Fsica Biol. Psicol. Ecol.

Execute um algoritmo conhecido que determine o maior nmero de professores que a escola pode contratar.
Exerccio 142. Faa uma anlise detalhada da complexidade do algoritmo de Edmonds.
Exerccio 143. Modifique o algoritmo Edmonds(A,B,E) para que ele devolva um emparelhamento mximo.
Exerccio 144. Seja B um grafo bipartido com bipartio A,B. Construa um grafo orientado D a partir de B orientando as arestas no sentido de X
para Y . Agora, acrescente aos vrtices de D dois novos vrtices s e t, com s ligado a todos os vrtices de X, no sentido de s para X, e com t ligado
a todos os vrtices de Y no sentido de Y para t.
Suponha que esse grafo orientado D que voc construiu modela uma rede de computadores onde cada aresta tem a capacidade de 1 unidade
de transmisso. Mostre que o fluxo mximo de s para t igual ao nmero mximo de arestas num emparelhamento em B.

19. Cobertura
Uma cobertura por vrtices em um grafo G um subconjunto U V (G) tal que eU para toda aresta e E, ou seja, toda aresta de G
encontra U.
Exemplo 25.No exemplo da figura abaixo temos o diagrama de um grafo bipartido, as arestas em destaque definem um emparelhamento M. O
subconjunto de vrtices {a1,a2,b3,b4} uma cobertura pois todas as arestas do grafo incidem em pelo menos um desses vrtices.

11/12/2013 10:59

BC1429 Teoria dos Grafos

36 de 40

http://professor.ufabc.edu.br/~jair.donadelli/disciplinas-ufpr/ci065/

Uma cobertura mnima uma cobertura com o menor nmero possvel de vrtices que denotado por (G),
(38)

Teorema 24 (Teorema de Knig, 1931). Num grafo bipartido G = (A B,E) o tamanho de um emparelhamento mximo igual ao tamanho de
uma cobertura mnima, ou seja
(39)

Demonstrao. Para qualquer cobertura U e qualquer emparelhamento M vale que toda aresta de M tem que ter pelo menos um extremo em
U, portanto |M||U|. Em particular,
(40)
Agora, considere M um emparelhamento mximo em G e vamos construir uma cobertura C V (G) da seguinte maneira: para cada aresta
{a,b} M, onde a A e b B, escolhemos b para C se b extremo de algum caminho M-alternante, caso contrrio, escolhemos a. Note que
dessa forma temos |C| = |M|.
Se C for uma cobertura ento |C| e como |M| temos .
Vamos mostrar que C uma cobertura. Considere uma aresta qualquer {a,b} E(G), onde a A e b B, e vamos mostrar que essa aresta
encontra C. Se {a,b} M ento a aresta encontra C. Vamos supor que {a,b} no aresta de M. Como M mximo, ou a ou b ou ambos so
cobertos por M.
Se M no cobre a ento b pertence ao um caminho M-alternante P = a,b e como b coberto por M, nesse caso, b C.
Vamos supor que M cobre a e {a,b} M para algum b B, bneqb. Agora, se a C ento b C, mas isso significa que b est no extremo de
algum caminho M-alternante que chamamos de P. Se b est em P ento b extremo de algum caminho M-alternante e com isso b C. Caso
contrrio, tambm haver um caminho M-alternante com extremo b: ou P, a, b no caso a V (P), ou P,b caso a pertence a P, onde P denota um
subcaminho alternante de P com extremo em a. Em ambos os casos teremos b C pois no pode haver caminho M-aumentante G. Em todos os
casos a aresta {a,b} encontra C, portanto,
(41)
Das equaes (40) e (41) conclumos que (G) = (G).

Demonstrao. Se existe um emparelhamento M que cobre A ento tome H = (V (G),M). Para todo S A temos |NG (S)||NH(S)| = |S|.
Agora, suponha que |N(S)||S| para todo S A. Seja U uma cobertura mnima em G e tome com A = A U e B = B U. Se no existe um
emparelhamento que cobre A ento |U| < |A| pelo teorema 24. Essa ltima desigualdade implica que |B| < |A \ A|. Ainda, no h arestas de A \ A
para B \ B, pois elas no estariam cobertas por U, ou seja N(A \ A) B. Portanto
(42)
contrariando a hiptese.

Essa demonstrao bastante simples pois todo o trabalho j foi feito no Teorema de Knig. Vejamos uma demonstrao que no depende de
outros resultados.
Observao 15. O teorema de Knig no vale para grafo no-bipartido, o motivo computar a cobertura mnima um problema NP-difcil
(exerccio 129) enquanto que pode ser computado em tempo polinomial (veja notas de aula do professor Richard Karp, um notvel cientista da
computao).
Exerccios.
Exerccio 145. Na primeira prova que apresentamos do teorema de Hall deduzimos o resultado do teorema de Knig. Esses teoremas so, de fato,
equivalentes. Demonstre o teorema de Knig ( > ) a partir do teorema de Hall.

20. Circuitos hamiltonianos


Um circuito C G um circuito hamiltoniano em G se V (C) = V (G).
Exemplo 26.Um grafo que pode ser representado pelo seguinte diagrama chamado de dodecaedro. O dodecaedro um grafo hamiltoniano, em
particular, foi o grafo que deu origem ao termo.

11/12/2013 10:59

BC1429 Teoria dos Grafos

37 de 40

http://professor.ufabc.edu.br/~jair.donadelli/disciplinas-ufpr/ci065/

Um grafo G que contm circuito hamiltoniano chamado grafo hamiltoniano.


Uma condio necessria para um grafo ser hamiltoniano que a remoo de um subconjunto de vrtices resulta num nmero limitado de
componentes conexas.
Proposio 25. Se G hamiltoniano, ento c(G S) |S| para todo S V (G) no-vazio.
Demonstrao. Basta notar que c(G S) c(C S) |S| para todo circuito hamiltoniano C G.
Vejamos um contra-exemplo para a recproca do resultado acima. O grafo de Petersen, mostrado na figura abaixo, no hamiltoniano.
Podemos verificar, caso-a-caso, que a remoo de qualquer subconjunto prprio e no-vazio de vrtices S, o nmero de componentes do grafo
obtido sempre menor ou igual a |S|.

Figura 23: Grafo de Petersen.


Uma condio suficiente para um grafo ser hamiltoniano o seguinte teorema.
Teorema 26 (Teorema de Dirac, 1952). Para todo grafo G = (V,E) com n 3 vrtices, se (G) n2 ento G hamiltoniano.
Demonstrao. Seja P = v0,,vm o maior caminho em G e defina os conjuntos
(43)
Observamos que A e B so subconjuntos de {v0,v1,vm1} com pelo menos n2 > (m 1)2 vrtices e pelo Princpio da Casa dos Pombos A
B. Escolha vk A B

e considere o circuito C = v0,vk+1,,vm,vk,,v0.


Se C no hamiltoniano ento existem u V (G) V (C) e vj V (C) tais que uvj E(G), pois G conexo (exerccio 12). Reescrevendo o
circuito C acima como u0 = vj,u1,,um,u0 ento temos o caminho u,u0,u1,,um com uma aresta a mais que P, absurdo. Logo C hamiltoniano.
Como j foi dito anteriormente, grafos hamiltonianos no so, at o momento, bem caracterizados por uma propriedade no-trivial que possa
ser verificada eficientemente; decidir se um grafo hamiltoniano um problema NP-completo.

Exerccios
Exerccio 146. Mostre que se G no 2-conexo ento G no hamiltoniano.
Exerccio 147. Prove que se G bipartido com bipartio V (G) = A B onde |A||B|, ento G no hamiltoniano.

11/12/2013 10:59

BC1429 Teoria dos Grafos

38 de 40

http://professor.ufabc.edu.br/~jair.donadelli/disciplinas-ufpr/ci065/

Exerccio 148. Mostre que o n-cubo hamiltoniano.


Exerccio 149. Um caminho hamiltoniano em G um caminho que passa por todos os vrtices de G. Mostre que se G contm um caminho
hamiltoniano ento c(G S) |S| + 1 para todo subconjunto prprio de vrtices S.
Exerccio 150. Prove que se G tal que todo par de vrtices u,v no-adjacentes vale d(u) + d(v) |V (G)| 1, ento G contm um caminho
hamiltoniano.
Exerccio 151. Prove: d(u) + d(v) |V (G)| para todo par u,v de vrtices no adjacentes, ento G hamiltoniano se e somente se G + uv
hamiltoniano.
Exerccio 152. D um exemplo de grafo com n vrtices, grau mnimo

e no-hamiltoniano.

Exerccio 153. Suponha que existe um algoritmo (G,u,v) que determina em tempo polinomial um (u v)-caminho mnimo no grafo dirigido
com pesos reais nas arestas G. Mostre como usar esse algoritmo para determinar se G tem um circuito (orientado) hamiltoniano em tempo
polinomial. (Dica: atribua peso 1 a todas as arestas do grafo e compute (G,u,v) para todo (v,u) E(G).)
Exerccio 154. Observamos que o problema de determinar se um grafo hamiltoniano NP-completo, portanto a existncia de uma algoritmo
como acima estabelece que P=NP.

21. Trilhas eulerianas


possvel desenhar a figura abaixo sem tirar o lpis do papel e sem repetir nenhum trao?

Vamos reformular essa pergunta na terminologia de Teoria dos Grafos. Dizemos que num grafo G = (V,E) uma seqncia alternada vrtice
arestavrtice que no repete arestas
(44)
com ei = {vi1 ,vi} E, para todo i {1,2,,k}, e eiej para todo ij, chamada de trilha.

Figura 24: Exemplo: 1a2b3c4d2 e 4d2b3c4e5f3 so trilhas no grafo.


Se em (44) temos v0 = vk, ento dizemos que a trilha uma trilha fechada.
Uma trilha que passa por todas as arestas do grafo chamada de trilha euleriana e uma trilha fechada que passa por todas as arestas do grafo
chamada de trilha euleriana fechada.
Um grafo que contenha uma trilha euleriana fechada dito grafo euleriano.
Teorema 27 (Teorema de Euler, 1735). Um grafo conexo euleriano se, e somente se, todo vrtice tem grau par.
Demonstrao. Se um grafo conexo euleriano, ento um vrtice que ocorre k vezes na trilha euleriana fechada tem grau 2k.
Por outro lado, suponha que um grafo conexo tem todos os seus vrtice de grau par. Seja T = v0e1v1v1ev uma trilha com o maior nmero
possvel de arestas. Como todos os vrtices tm grau par e a trilha contm todas as arestas que incidem nos vrtices dos extremos da trilha T,

11/12/2013 10:59

BC1429 Teoria dos Grafos

39 de 40

http://professor.ufabc.edu.br/~jair.donadelli/disciplinas-ufpr/ci065/

temos que v0 = v.
Agora suponha que e uma aresta que no aparece na trilha. Note que podemos assumir e = uvi para algum vi T, pois o grafo conexo.
Mas, isso implica que ueviei+1eve1v1ei1vi uma trilha com mais arestas que T. Portanto, T passa por todas as arestas do grafo.

Exerccios
Exerccio 155. Mostre que se G tem no mximo dois vrtices de grau mpar ento contem uma trilha euleriana.
Exerccio 156. Mostre que se G euleriano ento LG (veja exerccio 12.16, na pgina 13, para a definio de LG) euleriano.
Exerccio 157. Mostre que se G euleriano ento LG hamiltoniano.
D um exemplo onde a recproca no vale.
Exerccio 158. Um grafo euleriano pode ter uma aresta de corte?
Exerccio 159. Prove que um grafo conexo euleriano se pode ser particionado em circuitos aresta-disjuntos.
Exerccio 160. O caso a fortuna do bilionrio Bob Leo Marinho. Ele foi assassinado em sua manso e Ed Mort, o detetive internacionalmente
conhecido, que nas horas vagas estuda Teoria dos Grafos, foi chamado para investigao. O mordomo afirma que viu o faxineiro entrar no salo
da piscina (onde aconteceu o assassinato) e ento, logo em seguida, saiu do salo da piscina pela mesma porta. O faxineiro, entretanto, diz que ele
no pode ser o homem que o mordomo alega ter visto, j que ele entrou na manso por uma das portas do salo da piscina, atravessou cada
aposento, passando por cada cada porta da manso exatamente uma vez, e deixou a casa pela outra porta do salo da piscina. Ed Mort verifica a
planta da casa (veja figura abaixo). Dentro de algumas horas ele declara o caso resolvido. Quem voc acredita ter matado Bob Leo Marinho?

Exerccio 161. O algoritmo de Fleury, de 1883, descobre uma trilha euleriana fechada se o grafo dado for euleriano.
Fleury
escolha

insira
no final de
escolha
;
.

;
e, se for possvel, de forma que

tenha o mesmo nmero de componentes conexos que

Prove que se G euleriano ento a trilha definida pela seqncia vrtices adjacentes S = u1,u2,,u construda pelo algoritmo euleriana.
Determine a complexidade do algoritmo.
Exerccio 162. A figura abaixo mostra a planta da Casa dos Espelhos, um labirinto em um parque de diverses que funciona de forma inusitada:
depois que um visitante passa por uma porta, ela automaticamente trancada. Considerando que todas as portas esto inicialmente abertas,
determine se sempre possvel escapar da Casa dos Espelhos ou se algum pode ficar trancafiado para sempre em algum quarto. Se este perigo
for real, execute um algoritmo que ajuda a projetar um brinquedo mais seguro, mostrando que haver sempre a possibilidade de escapar da Casa
dos Espelhos. Voc pode alterar a planta de acordo com o algoritmo e deve mostrar um percurso completo nesta nova planta em que um visitante
pode escapar da Casa dos Espelhos de forma segura. (Dica: no modele cada porta da casa como um vrtice de um grafo.)

11/12/2013 10:59

BC1429 Teoria dos Grafos

40 de 40

http://professor.ufabc.edu.br/~jair.donadelli/disciplinas-ufpr/ci065/

11/12/2013 10:59

Você também pode gostar