Buscar

Teoria dos Grafos

Prévia do material em texto

Mario Leston
Teoria dos Grafos
Sumário
1 Noções básicas 5
1 Para um conjunto X e um inteiro não-
negativo k,
(X
k
)
é o conjunto cujos ele-
mentos são os subconjuntos de X de ta-
manho k, i.e.,(X
k
)
= {Y ⊆ X | |Y | = k}.
Por exemplo,({1, 2, 3}
2
)
= {{1, 2}, {1, 3}, {2, 3}}.
Note que (∅, ∅) é um grafo; tal grafo é
chamado de vazio.
|G|
||G||
Assim, por exemplo,
|{1, 5, 2, 3}| = 4.
2 Cuidado! Essa notação não é padrão!
1
Noções básicas
Grafos
Um grafo é um objeto constituído de três ingredientes: um conjunto
de vértices, um conjunto de arestas, e uma função que leva cada aresta
num par de vértices. Formalmente, um grafo é uma tripla (V,E, ι) em
que
• V é um conjunto finito cujos elementos são chamados de vértices;
• E é um conjunto finito cujos elementos são chamados de arestas;
• ι, a função de incidência, é uma função que leva cada aresta num par
(não-ordenado) 1 de vértices, isto é, ι : E →
(
V
2
)
.
Além disso, V e E são conjuntos disjuntos, ou seja, V ∩ E = ∅. Vamos
tecer alguns comentários sobre a notação que, às vezes, pode se tornar
uma chateação por diversos motivos, inclusive o estético. Um grafo
G é uma tripla. Logo, é conveniente definir uma notação para extrair
cada componente da tripla. Escrevemos, assim, V (G) para denotar o
conjunto dos vértices de G. De forma similar, escrevemos E(G) e ι(G)
para denotar o conjunto das arestas de G e a função de incidência de G.
Às vezes, por uma questão puramente estética, vamos alternativamente
escrever VG, EG e ιG em vez de V (G), E(G) e ι(G), respectivamente.
Esta convenção será utilizada com frequência para outras funções que
vamos definir. Além disso, quando houver um único grafo no contexto
da discussão evidentemente vamos simplesmente escrever V,E e ι em
vez de suas versões mais longas. O número de vértices de G, |V (G)|,
é denotado mais simplesmente por |G|, e o número de arestas, |E(G)|,
por ||G||. Para cada aresta e, ι(e) é um objeto da forma {u, v} em que u e
v são vértices distintos de V . Por brevidade, escrevemos
uv
no lugar de {u, v}. Para pesar menos na notação, vamos adotar a se-
guinte convenção: escrevemos 2
6 TEORIA DOS GRAFOS
3 É claro que tal convenção pode carre-
gar uma certa ambiguidade quando uma
mesma aresta estiver envolvida em mais
de um grafo.
4 Duas funções f, g : X → Y são iguais
se
f(x) = g(x)
para cada x ∈ X .
e ≃ uv
quando ι(e) = {u, v}.3 Os vértices u e v são as pontas de e. Dizemos
também que u e v incidem, ou são incidentes, em e e que u e v são vizinhos.
Vamos abusar um pouco da notação e escrever
u ∈ e
em vez de u ∈ ι(e) quando o vértice u é uma das pontas da aresta e.
v1 v2
v3v4
v5e1
e2
e3 e8
e4
e5
e6 e7
Figura 1.1: A figura exibe um dese-
nho de um grafo cujo conjunto de vérti-
ces é {v1, v2, v3, v4, v5}, e cujo conjunto
de arestas é {e1, e2, e3, e4, e5, e6, e7, e8},
onde e1 ≃ v1v4, e2 ≃ v3v4, e3 ≃ v2v3,
e4 ≃ v1v2, e5 ≃ v1v5, e6 ≃ v4v5,
e7 ≃ v3v5, e8 ≃ v2v3.
Observe que e3 e e8 têm as mesmas pon-
tas. O corte de v2, ∇(v2), é o conjunto
{e3, e4, e8}.
A noção de igualdade é fundamental na matemática. Não seria, en-
tão, diferente aqui. Dizemos que os grafos G e H são iguais, denotado
não surpreendentemente por G = H , se VG = VH , EG = EH e ιG = ιH .4
Um momento de reflexão o fará constatar que a noção de igualdade en-
volvendo grafos é um tanto quanto sem graça. No momento apropri-
ado, vamos introduzir a noção de isomorfismo. Esta, sim, muito mais
interessante e de fundamental importância uma vez que decidir se dois
grafos são isomorfos é um problema ainda não muito bem compreen-
dido.
Alguns conceitos envolvendo grafos são extremamente intuitivos e
formalizam relações corriqueiras envolvendo entidades da realidade.
Essa é uma das motivações que tornam o conceito tão atraente e reche-
ado de aplicações práticas.
Vamos fixar um grafo G na discussão que segue cujo propósito é o
de definir uma série de funções sobre o conjunto dos vértices de um
grafo.
Corte e grau de um vértice
Seja u um vértice de G. O corte de u, denotado ∇G(u), é o conjunto
das arestas de G que incidem em u. Formalmente,
∇G(u) = {e ∈ E | u ∈ e}.
A notação ∇G(u) é um tanto quanto pesada, por isso, quando não hou-
ver possibilidade de confusão e para simplificar, vamos escrever ∇(u)
ou ainda, mais simplesmente,
∇u.
NOÇÕES BÁSICAS 7
u
v1 v2 v3
e1
e2
e3 e4
Figura 1.2: A figura ilustra o vértice
u com ∇u = {e1, e2, e3, e4}. Assim,
d(u) = 4.
O tamanho (ou a cardinalidade) de ∇u, denotada d(u), é chamado de
grau de u. O grau mínimo de G, denotado δ(G), é o número min{d(v) |
v ∈ V }.
Os dois próximos fatos costumam ser os primeiros destacados em
introduções à Teoria dos Grafos. Vamos, então, manter a tradição. No
entanto, vamos aproveitar a oportunidade para introduzir uma notação
que será útil.
Seja U um conjunto universo e X uma parte de U , ou seja, X ⊆ U . A
função característica de X em relação a U é a função
χXU : U → {0, 1}
tal que
χXU (u) =
1, se u ∈ X0, se u /∈ X
para cada u ∈ U . Observe que |X| =
∑
u∈U χ
X
U (u). O gosto pela brevi-
dade nos fará escrever
χX
em vez de sua versão mais longa, deixando, então, subjacente o con-
junto universo em questão. A prova do lema que segue adota esta ati-
tude e escreve χ∇u no lugar de χ∇uE para cada vértice u.
Lema 1.1. Se G é um grafo, então
∑
v∈V d(v) = 2||G||.
Prova. Suponha que G é um grafo. Observe, primeiro, que
d(v) =
∑
e∈E
χ∇v(e)
para cada v ∈ V . Ademais, ∑
v∈V
χ∇v(e) = 2
para cada e ∈ E. Assim,∑
v∈V
d(v) =
∑
v∈V
∑
e∈E
χ∇v(e) =
∑
e∈E
∑
v∈V
χ∇v(e) =
∑
e∈E
2 = 2|E|.
Corolário 1.1. Todo grafo possui um número par de vértices de grau
ímpar.
Prova. Seja G um grafo, P o conjunto dos vértices de grau par de G e I o
conjunto dos vértices de grau ímpar de G. É evidente que
∑
v∈V d(v) =∑
v∈P d(v) +
∑
v∈I d(v). Ora, pelo Lema 1.1,
∑
v∈V d(v) é par. Mas,∑
v∈P d(v) também é par. Segue assim que
∑
v∈I d(v) é par e, portanto,
|I| é par.
8 TEORIA DOS GRAFOS
u
v1 v2 v3
Figura 1.3: A figura ilustra o vértice u
com Γu = {v1, v2, v3}, donde γ(u) = 3.
5 Note que aqui, mais uma vez, estamos
fazendo uso da convenção implícita –
agora não mais implícita – de omitir o
nome do grafo e os parênteses na nota-
ção, convenção esta que permeará este
texto sempre que não houver possibili-
dade de confusão.
6 Uma função f : X → Y pode ser en-
carada como um conjunto de pares da
forma (x, f(x)) para cada x ∈ X :
f = {(x, f(x)) | x ∈ X}.
Desta forma, para funções f e g, estamos
autorizados a escrever
f ⊆ g
uma vez que f e g são conjuntos. Para
uma função
f : X → Y
e uma parte Z de X ,
f|Z : Z → Y
é a restrição de f aos elementos de Z:
f|Z = {(z, f(z)) | z ∈ Z}.
Exercício 1.1. Mostre que se G é um grafo e |E| ⩾ |V | + 1, então
existe v ∈ V tal que d(v) ⩾ 3.
Vizinhança de um vértice
Seja u um vértice de G. Um vértice v de G é vizinho de u se uma das
arestas de G tem pontas u e v. Vamos coletar esses elementos em um
conjunto, denotado por ΓG(u), e chamá-lo de vizinhança (ou de conjunto
dos vizinhos) de u. Mais formalmente,
ΓG(u) = {v ∈ V | ∃e ∈ E : e ≃ uv}.
Reiterando, para tornar a notação mais leve vamos escrever
Γu
sempre que possível e esteticamente agradável. A função ΓG é cha-
mada de função de vizinhança de G. O número de vizinhos de u, denotado
por γ(u), é o tamanho (ou a cardinalidade) do conjunto Γu. Assim,
γu = |Γu| para cada u ∈ V .5 Convém observar que, em geral, γ ̸= d.
Subgrafos
Sejam G e H grafos. Dizemos que H é um subgrafo de G, escrito
H ⊆ G, se 6
VH ⊆ VG, EH ⊆ EG e ιH ⊆ ιG.
Em palavras, um grafo H é subgrafo de um grafo G se as seguintes
condições são satisfeitas:
• todo vértice de H é vértice de G, e
• se e é uma aresta de H com pontas x e y, então e é uma aresta de
G e suas pontas são também x e y.
Um subgrafo H de G é dito gerador se V (H) = V (G).
Subgrafo induzido
Seja X ⊆ V . Cada aresta que possui ambas as pontas em X é dita
induzida por X . O conjunto das arestas induzidas por X é denotado por
EG[X] (ou simplesmente E[X]), isto é,
E[X] = {e ∈ E | ∃x1, x2∈ X : e ≃ x1x2}.
O subgrafo de G induzido por X , denotado G[X], é o grafo
(X,E[X], ι|E[X]).
NOÇÕES BÁSICAS 9
7 Xc é o conjunto V −X .
Seja, agora, F ⊆ E. O subgrafo de G induzido por F , denotado G[F ],
é o grafo
(
⋃
f∈F
ι(f), F, ι|F ),
ou seja, é o grafo cujo conjunto dos vértices é constituído dos vérti-
ces que incidem em alguma aresta de F , e cujo conjunto das arestas é
F . Neste último caso costuma se conveniente confundir o conjunto de
arestas F com o grafo G[F ], hábito este que será recorrente durante o
texto sempre que não houver possibilidade de confusão.
Remoção de vértices e arestas
Para um conjunto de vértices X ⊆ V , denotamos por G−X o grafo
induzido por 7 Xc, isto é, G[Xc], e dizemos que G−X é o grafo obtido
de G através da remoção dos vértices em X . Para um vértice v de G,
escrevemos G − v no lugar de G − {v}. De forma similar, para cada
F ⊆ E, denotamos por G − F o grafo (V,E − F, ι|E−F ) e dizemos que
G− F é o grafo obtido de G através da remoção das arestas em F . Para
uma aresta e de G, escrevemos, por simplicidade, G − e em vez de
G− {e}.
Como ilustração vamos provar por indução em ||G|| que se G é um
grafo, então
∑
v∈V d(v) = 2||G||. Suponha que G é um grafo. Se ||G|| = 0,
então
∑
v∈V d(v) = 0, e não há mais nada a verificar. Suponha, então,
que ||G|| ⩾ 1. Selecione uma aresta e de G, e suponha que x e y são
as pontas de e. Considere o grafo H = G − e (tanto G quanto H tem
conjunto de vértices V ). Note que ||H|| = ||G|| − 1. Assim, por hipótese
de indução, ||H|| =
∑
v∈V dH(v). Ora, dH(x) = d(x)−1, dH(y) = d(y)−1
e dH(v) = d(v) para cada v ∈ V − {x, y}. Então∑
v∈V
d(v) =
∑
v∈V−{x,y}
d(v) + d(x) + d(y)
=
∑
v∈V−{x,y}
dH(v) + dH(x) + 1 + dH(y) + 1
=
∑
v∈V
dH(v) + 2
= 2||H||+ 2
= 2(||H||+ 1)
= ||G||.
Exercício 1.2. Prove o Corolário 1.1 por indução no número de
arestas.
10 TEORIA DOS GRAFOS
P
Figura 1.4: A figura ilustra um caminho
simples.
8 Para um inteiro não-negativo k,
[k] = {1, 2, . . . , k}.
Além disso, para inteiros ℓ, k, escreve-
mos [ℓ : k] para denotar o conjunto
{i ∈ Z | ℓ ⩽ i ⩽ k}.
Observe que [0] = ∅.
9 Com frequência, quando não houver
possibilidade de confusão, vamos escre-
ver v0vk-caminho.
10 Ou ainda outras variantes linguísticas
equivalentes.
11 Note que ℓ(P ) é, em geral, diferente de
|EP |, salvo se P for uma trilha.
12 Assim, por exemplo, vamos escrever
v0v1 . . . vk para destacar a sequência de
vértices de um caminho de v0 até vk .
P (vi, vj)
P1 · P2
Caminhos e outros animais
A noção de grafo e sua representação gráfica sugerem imediatamente
a noção de caminho. Vamos lidar com diversas variantes desta noção.
Seja G um grafo. Um caminho em G é uma sequência que alterna vérti-
ces e arestas de tal forma que as pontas de cada aresta na sequência são
os vértices que imediatamente precedem e sucedem a aresta na sequên-
cia.
Formalmente, um caminho é uma sequência, digamos P ,
v0e1v1 . . . ekvk
em que8
• k ⩾ 0,
• v0, . . . , vk ∈ V ,
• e1, . . . , ek ∈ E, e
• ei ≃ vi−1vi para cada i ∈ [k].
Vamos escrever V (P ) (ou VP ) para denotar o conjunto dos vértices de
P , isto é, {v0, . . . , vk}, e E(P ) (ou EP ) para denotar o conjunto das ares-
tas de P , isto é, {e1, . . . , ek}. Dizemos que P é um9 (v0, vk)-caminho (ou
um caminho de v0 até vk ou, ainda, um caminho que une v0 e vk10) e que
v0 é o início (ou a ponta inicial) de P e vk é o término (ou a ponta final) de
P . O comprimento de P , denotado por ℓ(P ), é o número k.11 É conveni-
ente muitas vezes confundir um caminho P com o grafo (VP , EP , ι|EP ).
Assim, por exemplo, se u ∈ VP , então dP (u) é o grau de u no grafo P .
Com esta identificação, podemos escrever |P | em vez de |V (P )| e ||P ||
em vez de |E(P )|. Às vezes, vamos nos interessar tão somente pelos
vértices de um caminho quando, então, vamos enumerar tão somente
os vértices.12 De forma similar, quando o interesse residir somente nas
arestas de um caminho, vamos, pois, tão somente enumerar as arestas.
No primeiro caso dizemos que um tal caminho é um caminho de vértices;
no segundo, um caminho de arestas. Muitas vezes vamos nos interessar
por certos segmentos de P . Assim, para 0 ⩽ i ⩽ j ⩽ k escrevemos
P (vi, vj) para denotar a sequência viei+1vi+1 . . . ejvj que constitui um
caminho que une os vértices vi e vj .
Caminhos são sequências finitas e estas podem ser concatenadas. A
concatenação dos caminhos P1 = v0e1v1 . . . ekvk e P2 = w0f1w1 . . . flwl
tais que vk = w0, denotada P1 · P2, é o caminho
v0e1v1 . . . ekvkf1w1 . . . flwl.
Trilhas e caminhos simples Dizemos que P é uma trilha se não repete
arestas, ou seja, ||P || = k = ℓ(P ). Dizemos que P é um caminho sim-
ples se não repete vértices, ou seja, |P | = k + 1. Naturalmente, se P é
um caminho simples, então P é uma trilha, mas, evidentemente, a re-
cíproca não é em geral verdadeira. A mesma nomenclatura usada para
NOÇÕES BÁSICAS 11
Figura 1.5: A figura ilustra um grafo que
é um caminho simples.
Figura 1.6: A figura ilustra um grafo que
é um ciclo.
13 Lembre-se que dada uma coleção não-
vazia X de subconjuntos de um certo
conjunto, dizemos que um elemento X ∈
X é maximal se
Y ⊇ X ⇒ Y = X
para cada Y ∈ X.
14 Ou, ainda, G[Y ] não é conexo sempre
que Y ⊆ V é tal que Y ⊃ X .
Figura 1.7: A figura ilustra um grafo co-
nexo.
Figura 1.8: Um grafo e suas duas compo-
nentes conexas.
caminhos é estendida para trilhas e caminhos simples. É conveniente,
como já fizemos anteriormente, identificar uma trilha P com o grafo
(VP , EP , ι|EP ).
Exercício 1.3. Seja G um grafo, e u, v ∈ V . Se P é um uv-caminho,
então existe um uv-caminho simples Q tal que
VQ ⊆ VP e EQ ⊆ EP .
Circuitos e ciclos Uma trilha P é um circuito se ℓ(P ) ⩾ 2 e o início
e o fim de P coincidem. Um ciclo é um circuito no qual, exceto pelo
início e pelo fim, nenhum outro vértice se repete na sequência. As-
sim, o circuito v0e1v1 . . . ekvk (donde k ⩾ 2 e v0 = vk) é um ciclo se
v0e1 . . . ek−1vk−1 é um caminho simples. A cintura de um grafo G que
possui pelo menos um ciclo é o comprimento de um ciclo de compri-
mento mínimo de G.
Finalmente, dizemos que um grafo G é um caminho simples (um ci-
clo) se existe um caminho simples (um ciclo) P em G tal que G =
(VP , EP , ι).
Exercício 1.4. Mostre que se um grafo possui um circuito de com-
primento ímpar, então também possui um ciclo de comprimento
ímpar.
Componentes conexas
Um grafo G é conexo se para cada u, v ∈ V existe um caminho que
une u e v. Uma componente conexa (ou, simplesmente, componente) de
um grafo G é uma parte maximal13X ⊆ V tal que o grafo G[X] é co-
nexo, isto é, é uma parte X ⊆ V tal que G[X] é conexo e se Y ⊆ V é
tal que Y ⊇ X e G[Y ] é conexo, então Y = X .14 Observe que se X
é uma componente de um grafo não-vazio G, então X ̸= ∅ uma vez
que G[{v}] é obviamente conexo para cada vértice v de G. É conveni-
ente, muitas vezes, confundir uma componente conexa X de um grafo
G com o grafo G[X]. Como de costume, tal convenção será utilizada
sempre que não houver possibilidade de confusão.
Lema 1.2. Seja G um grafo e X1, X2 ⊆ V . Se G[X1] e G[X2] são
conexos e X1 ∩X2 ̸= ∅, então G[X1 ∪X2] também é conexo.
Prova. É suficiente mostrar que existe um caminho de x1 até x2 para
cada x1 ∈ X1 e cada x2 ∈ X2. Sendo assim, seja x1 ∈ X1 e x2 ∈ X2.
Seja, também, x ∈ X1 ∩X2. Como G[X1] é conexo e x, x1 estão em X1,
então existe um caminho P1 de x1 até x. De forma similar, existe um
12 TEORIA DOS GRAFOS
Uma partição de um conjunto U é
um conjunto de partes não-vazias, e
duas a duas disjuntas, de U cuja
união é igual a U . Por exemplo,
{{1, 4}, {2, 5}, {3, 6, 7}} é uma partição
do conjunto [7].
c(G)
caminho P2 de x até x2. Segue daí que P1 · P2 é um caminho de x1 até
x2. Concluímos, assim, que G[X1 ∪X2] é conexo.
Corolário 1.2. Se X1 e X2 são componentes conexas de um grafo G,
então X1 = X2 ou X1 ∩X2 = ∅.
Prova. Suponha que X1 ∩X2 ̸= ∅. Pelo Lema 1.2, G[X1 ∪X2] é conexo.
A maximalidade de X1 implica que X1 = X1 ∪X2. A maximalidade de
X2 implica que X2 = X1 ∪X2. Logo, X1 = X2.
Corolário 1.3. O conjunto das componentesconexas de um grafo G é
uma partição de V .
O número de componentes conexas de um grafo G é denotado por
c(G). Todo vértice de um grafo pertence a uma e só uma componente
conexa do grafo; a componente conexa que contém um certo vértice x
é chamada de território de x.
Exercício 1.5. Suponha que um grafo G tem exatamente dois vér-
tices, digamos u e v, de grau ímpar. Mostre que existe um caminho
em G que une os vértices u e v.
Proposição 1. Se G é um grafo conexo e e ∈ E, então c(G− e) ⩽ 2.
Prova. Suponha que G é um grafo conexo e e ≃ xy é uma das arestas
de G. Seja X o território de x em G−e e Y o território de y em G−e. Os
grafos (G − e)[X] e (G − e)[Y ] são conexos. Logo, é suficiente mostrar
que V = X ∪ Y . Suponha que v ∈ V . Como G é conexo, então existe
um caminho simples P de v até x em G. Se e /∈ E(P ), então P é um
caminho de v até x em G − e, donde v ∈ X . Se e ∈ E(P ), então e é
a última aresta de P uma vez que P é simples. Assim, P (v, y) é um
caminho de v até y em G− e, donde v ∈ Y .
Corolário 1.4. Se G é um grafo e e ∈ E, então
c(G− e) ⩽ c(G) + 1.
Corolário 1.5. Se G é um grafo não-vazio, então c(G) ⩾ |G| − ||G||.
Prova. Vamos provar por indução em ||G|| que se G é não-vazio, então
c(G) ⩾ |G| − ||G||. Suponha que G é um grafo não-vazio. Se ||G|| = 0,
então c(G) = |G|, e não há mais nada a provar. Suponha ||G|| ⩾ 1.
NOÇÕES BÁSICAS 13
∇(X)
;; X
∇X
Xc
Figura 1.9: As arestas de cor azul consti-
tuem um corte ∇X . As margens do corte
são os conjuntos X e Xc. É claro que
∇X = ∇Xc. Note que todo caminho
de X até Xc usa uma aresta de ∇(X).
Figura 1.10: A remoção das arestas de cor
azul desconecta o grafo. No entanto, tais
arestas não constituem um corte.
15 Tal notação é uma abreviatura para as
afirmações
• v0v1v2 . . . vk é um caminho, e
• x = v0 e y = vk .
Escolha uma aresta e ∈ E. Por hipótese de indução, c(G − e) ⩾ |G −
e|+ ||G− e||. Segue daí que
c(G) ⩾ c(G− e)− 1
⩾ |G− e| − ||G− e|| − 1
= |G| − (||G|| − 1)− 1
= |G| − ||G||.
Corte de um conjunto de vértices
Seja G um grafo e X ⊆ V . O conjunto das arestas que têm uma
ponta em X e a outra em Xc é denotado por ∇(X). É evidente que
∇X = ∇Xc. Os conjuntos X e Xc são margens de ∇X . Uma parte K
de E é um corte se K = ∇X para algum X ⊆ V . Um corte é dito trivial
se uma de suas margens é vazia. Para cada X ⊆ V , a cardinalidade de
∇X , |∇X|, é denotada por dG(X) ou, como de hábito, simplesmente
d(X).
É claro que todo caminho que leva de um vértice x ∈ X até um
vértice y ∈ Xc usa uma aresta de ∇X . Logo, se G é conexo e ∇X ̸= ∅,
então G − ∇X não é conexo. Note, entretanto, que não é verdade que
num grafo conexo G se G −K não é conexo para algum K ⊆ E, então
K é um corte.
Lema 1.3. Se X é o território de um vértice s em um grafo G, então
∇X = ∅.
Prova. Suponha que X é o território de s e que x ∈ X . Então existe um
sx-caminho (de vértices), digamos P , em G. Admita que e ∈ ∇x e seja
y a ponta de e distinta de x. Ora, P · xy é um sy-caminho em G, donde
y ∈ X e, portanto, e /∈ ∇X . Concluímos, assim, que ∇X = ∅.
Teorema 1.1. Um grafo G é conexo se, e só se,
∇X ̸= ∅
sempre que ∅ ⊂ X ⊂ V .
Prova. (⇒) Suponha que G é conexo e que ∅ ⊂ X ⊂ V . Tome um
vértice x ∈ X e um vértice y ∈ Xc. Como G é conexo, então existe um
caminho 15
(x = v0)e1v1 . . . ek(vk = y)
tal que k > 0. Tome o maior i ∈ [0 : k] tal que vi ∈ X . De v0 ∈ X e
vk ∈ Xc vem que 0 ⩽ i < k. Ademais, a maximalidade de i implica que
vi+1 ∈ Xc, donde ei+1 ∈ ∇X e, portanto, ∇X ̸= ∅.
14 TEORIA DOS GRAFOS
(⇐) Suponha agora que ∇X ̸= ∅ sempre que ∅ ⊂ X ⊂ V . Seja X o
território de x. Pelo Lema 1.3, ∇X = ∅, donde X = ∅ ou X = V . Ora,
x está em X e, assim, X = V . Logo, existe um xy-caminho em G e,
portanto, G é conexo.
O próximo lema exibe uma condição suficiente que garante a cone-
xidade de um grafo.
Proposição 2. Se G é um grafo simples e γv ⩾ |G|/2 para cada
v ∈ V , então G é conexo.
Prova. Suponha que G é um grafo simples e γv ⩾ |G|/2 para cada v ∈
V . Suponha que ∅ ⊂ X ⊂ V . Observe que ∇X = ∇Xc. Renomeie X ,
se necessário, de tal forma que |X| ⩽ |Xc|. Neste caso, |X| ⩽ |G|/2.
Tome x ∈ X . Como γx ⩾ |G|/2, então x tem ao menos um vizinho em
Xc, donde ∇X ̸= ∅. Portanto, G é conexo.
Para um grafo conexo G, dizemos que um conjunto de arestas F ⊆ E
desconecta G se o grafo G − F não é conexo. Um conjunto minimal de
arestas que desconecta G é uma parte F de E tal que
• F desconecta G, e
• se F ′ ⊂ F , então G− F ′ é conexo.
O próximo lema estabelece que um tal conjunto F nada mais é que
um corte de G. Note, entretanto, que a recíproca não é verdadeira, ou
seja, não é verdade que todo corte é um conjunto minimal de arestas
que desconecta G salvo se as margens do corte induzirem subgrafos
conexos, como mostra a próxima proposição.
Proposição 3. Seja G um grafo conexo. Uma parte F de E é um
conjunto minimal de arestas que desconecta G se, e só se, existe
∅ ⊂ X ⊂ V tal que ∇X = F , e os grafos G[X] e G[Xc] são ambos
conexos.
Prova. (⇒) Suponha que F é um conjunto minimal de arestas que des-
conecta um grafo conexo G. Seja X uma componente conexa de G−F .
De G−F não conexo vem que ∅ ⊂ X ⊂ V . Vamos provar que F ⊆ ∇X .
Suponha que f é uma aresta em F . Como X é uma componente de
G− F , então ∇G−F (X) = ∅. A minimalidade de F implica que o grafo
H = G − (F − {f}) é conexo, donde ∇H(X) ̸= ∅, o que, combinado
com ∇G−F (X) = ∇H(X) − {f} = ∅, implica que ∇H(X) = {f}. Mas,
∇H(X) ⊆ ∇X . Segue daí que f ∈ ∇X e, portanto, F ⊆ ∇X . Por
outro lado, ∇G−FX = ∅ implica que ∇X ⊆ F . Logo, ∇X = F , como
queríamos.
(⇐)Vamos provar a contra-positiva: se G[X] ou G[Xc] não é co-
nexo, então ∇X não é um conjunto minimal de arestas que desco-
necta G. Ajuste a notação de tal forma que H = G[X] não é conexo.
NOÇÕES BÁSICAS 15
16 Isto quer dizer que não existe X ⊆ V
tal que ∇X = L.
bom
17 Verifique!
18 Verifique!
F
R
Figura 1.11: A figura ilustra um par bom
(S, F ). Se um vértice está em S − F , en-
tão todos os seus vizinhos estão em S.
Pelo Lema 1.1, existe ∅ ⊂ Y1 ⊂ X tal que ∇HY1 = ∅. Ponha Y2 = X−Y1.
Segue daí que não existe aresta de G com uma ponta em Y1 e a outra
em Y2 o que, por sua vez, implica que ∇X = ∇Y1 ∪∇Y2. Por hipótese,
G é conexo, donde ∇Y1 ̸= ∅ e ∇Y2 ̸= ∅. Logo, ∇Y1 ⊂ ∇X e ∇Y2 ⊂ ∇X .
Segue daí que existem partes próprias de ∇X que desconectam G. Por-
tanto, ∇X não é um conjunto minimal de arestas que desconecta G.
Exercício 1.6. Suponha que G é um grafo conexo e X é uma parte
própria e não-vazia de V tal que G[X] e G[Xc] são ambos conexos.
Mostre que se Z é uma parte própria e não-vazia de V tal que
∇Z = ∇X , então Z = X ou Z = Xc.
Um corte K ⊆ E em um grafo G é minimal se L não é um corte para
cada L ⊂ K 16. O próximo lema caracteriza quando um corte é minimal
em um grafo conexo.
Corolário 1.6. Seja G um grafo conexo e X uma parte própria e não-
vazia de V . Então ∇X é um corte minimal se, e só se, G[X] e G[Xc] são
conexos.
Exercício 1.7. Seja G um grafo. Mostre que se X é uma parte mini-
mal e não-vazia de V que é Γ -fechada, então X é uma componente
conexa de G.
Algoritmo de busca
O propósito agora é exibir um algoritmo que determina o território
de um vértice de um grafo e, consequentemente, uma das componentes
conexas de tal grafo. Vamos admitir que um grafo G é dado pela sua
função de vizinhança Γ . Seja s um dos vértices de G. A correção do
algoritmo depende da seguinte noção. Dizemos que um par (S, F ) é
bom se
• s ∈ S e S é uma parte do território de s em G,
• F ⊆ S, e
• Γx ⊆ S para cada x ∈ S − F .
Note que ({s}, {s}) é um par bom. Suponha que (S, F ) é bom. Admita,
primeiro, que F = ∅. Neste caso, Γx ⊆ S para cada x ∈ V , donde
∇S = ∅. Como S é uma parte do território de s e ∇S = ∅, então S é
uma componente conexa de G. Admita, agora, que F ̸= ∅. Seja x ∈ F .
Há duas possibilidades. Se Γx ⊆ R, então (R,F − {x}) é também
bom.17 Se Γx − R ̸= ∅, então selecione y ∈ Γx − R e note que o par
(S ∪ {y}, F ∪ {y}) também é bom.18
16 TEORIA DOS GRAFOS
X
Xc
Figura 1.12: A figura ilustra um grafo bi-
partido G com bipartição X,Xc. Note
quetoda aresta tem exatamente uma das
pontas no conjunto X , assim, não há
arestas com ambas as pontas em X ou
com ambas as pontas em Xc.
C ∩Xc
C ∩X Cc ∩X
Cc ∩Xc
C
e
Figura 1.13: Toda aresta, exceto e, tem
uma ponta em X e a outra em Xc. As-
sim. Y = (C ∩ X) ∪ (Cc ∩ Xc) é uma
bipartição de G.
Grafos bipartidos
Um grafo G é bipartido se existe X ⊆ V tal que toda aresta tem uma
ponta em X e a outra em Xc; o par X,Xc é chamado de bipartição de
G e X e Xc são os lados da bipartição. No entanto, vamos abreviar e
dizer simplesmente que X é uma bipartição de G uma vez que o outro
participante da bipartição, o conjunto Xc, pode ficar subentendido.
Dizemos que um ciclo C em um digrafo D é ímpar se o seu compri-
mento, ℓ(C), é ímpar. O próximo teorema caracteriza grafos biparti-
dos.
Teorema 1.2. Um grafo G é bipartido se, e só se, G é livre de ciclos
ímpares.
Prova. (⇒) Suponha que X é uma bipartição de G. Note que se P é
uma trilha que começa e termina num mesmo lado da bipartição, então
P tem comprimento par. De fato, suponha que P = v0v1 . . . vk é tal que
v0 ∈ X ⇔ vk ∈ X . Então
vi−1 ∈ X ⇔ vi ∈ Xc
para cada i ∈ [k] o que implica que k é par. Portanto, se G tem um ciclo,
então tal ciclo tem comprimento par.
(⇐)Vamos mostrar por indução em ||G|| que se G é um grafo livre de
ciclos ímpares, então G é bipartido. O grafo vazio é bipartido. Suponha,
então, que G é um grafo livre de ciclos ímpares e que ||G|| ⩾ 1. Seja
e ≃ xy uma aresta de G, e considere o grafo H = G − e. É claro que H
é livre de ciclos ímpares e ||H|| < ||G||.
Assim, por hipótese de indução, H é bipartido. Seja X uma biparti-
ção de H e suponha que x ∈ X . Se y ∈ Xc, então X é uma bipartição de
G, e não há mais nada a provar. Suponha, então, que y ∈ X . Note que
todo caminho simples cuja origem e destino está num mesmo lado da
bipartição tem comprimento par. Isso, aliado a e ∈ E, implica que não
existe um caminho de x até y em G. Seja C a componente de G− e que
contém x. Então y ∈ Cc. Considere o conjunto Y = (C∩X)∪(Cc∩Xc).
Então Y c = (C∩Xc)∪(Cc∩X). Vamos mostrar que Y é uma bipartição
de G. Note primeiro que a ponta x de e está em C ∩X e a ponta y de e
está Cc ∩X , donde x ∈ Y e y ∈ Y c. Suponha que f ∈ E − {e}. Temos
dois casos. Suponha, primeiro, que f é uma aresta de G[C]. Como X é
uma bipartição de G, então f tem uma de suas pontas, digamos u, em
X e, a outra, digamos v, em Xc. Mas, u, v ∈ C, donde u ∈ C ∩ X e
v ∈ C ∩ Xc e, portanto, u ∈ Y e v ∈ Y c. Suponha que f é uma aresta
de G[Cc]. Como X é bipartição de G, então f tem uma de suas pontas,
digamos u, em Xc e, a outra, digamos v, em X . Mas, u, v ∈ Cc, donde
u ∈ Cc ∩Xc e v ∈ Cc ∩X e, portanto, u ∈ Y e v ∈ Y c. Logo, Y é uma
bipartição de G.
NOÇÕES BÁSICAS 17
Figura 1.14: A figura ilustra uma árvore.
Vamos exibir uma prova alternativa da recíproca. Suponha, então, que
G é um grafo não-vazio livre de ciclos ímpares. Podemos supor que G
é conexo uma vez que o argumento que segue pode ser aplicado a cada
uma das componentes de G quando G é desconexo. Seja s ∈ V e
dist(s, x) = min{ℓ(P ) | P é um sx-caminho em G}
para cada x ∈ V e
X = {x ∈ V | dist(s, x) é par}.
Vamos mostrar que X é uma bipartição de G. Para isso, é suficiente
mostrar que não há arestas com ambas as pontas em X ou ambas as
pontas em Xc. Suponha que x1 ̸= x2 são vértices de G tais que x1, x2 ∈
X ou x1, x2 ∈ Xc. Vamos mostrar que G não possui uma aresta com
pontas x1 e x2. Seja Pi um sxi-caminho simples de comprimento mí-
nimo de s até xi para i = 1, 2. Escreva
P1 = (s = v0)v1v2 . . . (vk = x1).
Seja i ∈ {0, 1, . . . , k} o maior índice tal que vi ∈ P2. A escolha de
i implica P1(vi, x1) ∩ P2(vi, x2) = {vi}. A minimalidade de P1 im-
plica que ℓ(P1(s, vi))+ ℓ(P1(vi, x1)) ⩽ ℓ(P2(s, vi))+ ℓ(P1(vi, x1)), donde
ℓ(P1(s, vi)) ⩽ ℓ(P2(s, vi)). De forma similar, a minimalidade de P2 im-
plica que ℓ(P2(s, vi)) ⩽ ℓ(P1(s, vi)). Assim,
ℓ(P1(s, vi)) = ℓ(P2(s, vi)).
Ora, como ℓ(P1) e ℓ(P2) têm a mesma paridade, então as paridades de
ℓ(P1(vi, x1)) e ℓ(P2(vi, x2)) também são iguais. Isto, combinado com a
ausência de ciclos ímpares em G, implica que não há aresta em G com
pontas x1 e x2.
Árvores
Um grafo é dito acíclico (ou uma floresta) se não possui ciclos. Não
é difícil ver que se um grafo G é acíclico, então existe no máximo um
único caminho simples unindo dois vértices arbitrários de G. De fato,
suponha que x, y são vértices de G e que P1 e P2 são dois caminhos
simples distintos unindo x e y. Observe que, neste caso, ℓ(P1) ⩾ 1 e
ℓ(P2) ⩾ 1. Escreva P1 = v0v1 . . . vk com k ⩾ 1 e seja i o menor inteiro
em {1, . . . , k} tal que vi ∈ P2. Então P1(v0, vi) · P−12 (vi, v0) é um ciclo,
como queríamos.
Os grafos conexos e acíclicos têm um papel fundamental na Teoria
dos Grafos e, por isso, recebem um nome especial: árvores. Em virtude
da discussão acima, em uma árvore existe exatamente um caminho sim-
ples unindo cada par de vértices. A recíproca, ou seja, que em um grafo
18 TEORIA DOS GRAFOS
19 Justifique!
no qual cada par de vértices é unido por exatamente um caminho sim-
ples é uma árvore também é verdadeira: o fato de existir um caminho
entre cada par de vértices implica que o grafo é conexo; o fato de existir
exatamente um implica que o grafo é acíclico. Portanto, é uma árvore.
As verificações formais desses fatos são bem simples e, por isso, são
deixadas para o leitor. Vamos, entretanto, destacar este último resul-
tado.
Teorema 1.3. Um grafo é uma árvore se, e só se, cada par de vértices é
unido por exatamente um único caminho simples.
Corolário 1.7. Se T é uma árvore e e ∈ ET , então T − e não é conexo.
Prova. Suponha que T é uma árvore e e ≃ xy ∈ ET . Ora xey é um
caminho simples de x até y em T e, portanto, é único. Segue daí que
T − e não contém nenhum caminho de x até y, donde T − e não é
conexo.
O seguinte exercício será útil para o próximo teorema.
Exercício 1.8. Se C é um ciclo e K é um corte de um grafo G, então
|EC ∩K| mod 2 = 0.
Teorema 1.4. Um grafo conexo T é uma árvore se, e só se, T − e não é
conexo para cada e ∈ ET .
Prova. (⇒) Suponha que T é uma árvore e e ∈ ET . O Corolário 1.7
implica que se T − e não é conexo, como queríamos.
(⇐) Suponha agora que T é um grafo conexo para o qual T − e não
é conexo para cada e ∈ ET . Vamos provar por indução em |T | que T
é uma árvore. Se |T | ⩽ 1, o resultado segue por vacuidade. Suponha,
então, que |T | ⩾ 2. Como T é conexo, então ET ̸= ∅. Tome, assim, uma
aresta e ∈ ET e considere o grafo T − e. Ora, a conexidade de T e a
desconexidade de T − e implicam que c(T − e) = 2. Sejam, pois, T1
e T2 as componentes conexas de T − e. Agora, para cada i ∈ {1, 2} e
para cada aresta f ∈ E(Ti), o grafo Ti − f não é conexo.19 Assim, por
hipótese de indução, T1 e T2 são árvores o que, por sua vez, implica que
T é uma árvore. De fato, suponha, por um momento, que C é um ciclo
de T . Como T1 e T2 são árvores, então C não é um ciclo de T1 e nem de
T2. Logo, C deve usar a aresta e. No entanto, EC ∩∇(VT1) = {e}, o que
contraria o exercício anterior. Portanto, T é uma árvore.
Há uma relação simples envolvendo o número de vértices e o nú-
mero de arestas de uma árvore.
NOÇÕES BÁSICAS 19
20 Uma vez que um grafo conexo com um
vértice e nenhuma aresta é uma árvore, e
o grafo vazio não satisfaz as hipóteses da
afirmação.
21 Verifique!
x
y z
Figura 1.15: Os vértices x, y e z são folhas
da árvore ilustrada na figura.
Teorema 1.5. Um grafo T é uma árvore não-vazia se, e só se, T é conexo
e ||T || = |T | − 1.
Prova. (⇒)Vamos provar por indução em |T | que se T é uma árvore
não-vazia, então ||T || = |T |−1. Seja T uma árvore não-vazia. Se |T | = 1,
então ||T || = 0 e, portanto, ||T || = |T | − 1. Suponha, então, que |T | ⩾ 2.
Como T tem pelo menos dois vértices e T é conexo, então ET ̸= ∅.
Selecione uma aresta e ∈ ET . Ora, o grafo T − e não é conexo. Pelo
Lema 1.4, c(T − e) = 2. Cada uma das componentes de T − e, digamos
T1 e T2, é acíclica pois T é acíclico. Ademais, tanto T1 quanto T2 são
conexas. Logo, T1 e T2 são árvores e, portanto, por hipótese de indução,||T1|| = |T1| − 1 e ||T2|| = |T2| − 1. Agora,
||T || = ||T1||+ ||T2||+ 1 = |T1| − 1 + |T2| − 1 + 1 = |T | − 1,
como queríamos.
(⇐)Vamos provar por indução em |T | que se T é conexo e ||T || =
|T | − 1, então T é uma árvore. O resultado vale quando |T | ⩽ 1.20
Suponha que |T | > 1. Como T é conexo, então δ(T ) ⩾ 1. Vamos mos-
trar que δ(T ) = 1. Para isso, vamos mostrar que se um grafo G é tal
que δ(G) ⩾ 2, então ||G|| ⩾ |G|. De fato, 2||G|| =
∑
v∈VG d(v) ⩾ 2|G| e,
portanto, ||G|| ⩾ |G|, como queríamos. Ora, ||T || = |T | − 1, logo, pela
afirmação anterior, δ(T ) ⩽ 1. Assim, δ(T ) = 1. Selecione um vértice x
de T que d(x) = 1. Como o grafo T é conexo, então T − x também é
conexo, e ||T − x|| = ||T || − 1 = |T | − 1 − 1 = |T − x| − 1. Além disso,
|T − x| < |T |, donde T − x, por hipótese de indução, é uma árvore o
que, por sua vez, acarreta que T é também uma árvore.21
Vamos esboçar no exercício abaixo uma prova alternativa para a afir-
mação se T é uma árvore não-vazia, então ||T || = |T | − 1. Para isso, é
conveniente introduzir a seguinte definição. Uma folha em uma árvore
T é um vértice v de T tal que d(v) = 1.
Exercício 1.9. Primeiro, você vai provar que se T é uma árvore e
|T | ⩾ 2, então T possui uma folha. Sugestão: escolha um caminho
simples de comprimento máximo de T e observe as suas pontas.
Agora, você pode tentar provar o Teorema 1.5. Sugestão: faça uma
prova por indução em |T | no qual o passo da indução consiste em
remover uma folha de T .
Exercício 1.10. Prove que um grafo não-vazio T é uma árvore se,
e só se, T é acíclico e ||T || = |T | − 1.
Árvores geradoras Dizemos que um grafo T é uma árvore geradora de
um grafo G se
20 TEORIA DOS GRAFOS
22 Uma vez que se t1, t2 ∈ VT , então
existe um caminho de T de t1 até t2; tal
caminho é também um caminho de U .
23 Poderíamos argumentar de uma forma
menos construtiva. A prova é por indu-
ção no número de ciclos de G. Se G não
possui ciclos, então G é uma árvore gera-
dora, e não há mais nada a provar. Supo-
nha, então, que G possui ao menos um
ciclo e seja e uma aresta em um de tais
ciclos. Você, agora, deve verificar que o
grafo G−e é conexo, donde, por hipótese
de indução, possui uma árvore geradora
T ; é claro que T é também uma árvore
geradora de G. Isto completa a prova.
r
t1 t2
C1 C2
Figura 1.16: As arestas pretas são arestas
de T ; as vermelhas, de EG − T .
• T é uma árvore, e
• T é um subgrafo gerador de G.
Observe que se T é uma árvore geradora de G, então a conexidade T
implica na conexidade de G. Não é difícil intuir que todo grafo conexo
possui uma árvore geradora.
Teorema 1.6. Um grafo G possui uma árvore geradora se, e só se, G é
conexo.
Prova. A discussão precedente mostra que se G possui uma árvore ge-
radora, então G é conexo. Vamos, então, provar a recíproca. Suponha
que G é conexo. Admita que ∅ ≠ X ⊆ V é tal que G[X] possui uma
árvore geradora. Um tal X evidentemente existe uma vez que G[{v}]
é uma árvore para cada v ∈ V . Suponha, ademais, que X ⊂ V . Seja
T uma árvore geradora de G[X]. Como G é conexo, então ∇X ̸= ∅.
Seja e ∈ ∇X e considere o subgrafo U = G[ET ∪ {e}]. Seja x a ponta
de e em X e y a ponta de e em Xc. Vamos mostrar que U é uma ár-
vore geradora de G[X ∪ {y}]. Ora, U é um grafo conexo. Para verificar
isso, basta provar22 que existe um caminho em U que une t e y para
cada t ∈ VT . Por hipótese, existe um caminho P que une t e x em T ,
donde P · xey é um caminho de t até y em U . Logo, U é conexo. Além
disso, U é acíclico uma vez que T é acíclico e dU (y) = 1. Portanto, U é
uma árvore geradora de G[X ∪ {y}]. Assim, se X é uma parte maximal
de V tal que G[X] possui uma árvore geradora, então X = V , como
queríamos.23
Árvores de busca em profundidade
Seja T uma árvore não-vazia e r um de seus vértices. Como de cos-
tume, para simplificar, vamos confundir uma árvore com o seu con-
junto de arestas. Podemos definir uma ordem parcial sobre os vértices
de T da seguinte forma. Para cada x, y ∈ VT , dizemos que x e y são
comparáveis em (T, r) se x ∈ V (T (r, y)), ou seja, se x está no caminho de
r até y em T ou y ∈ V (T (r, x)), ou seja, se y está no caminho de r até x
em T .
Seja T uma árvore geradora de um grafo G e r ∈ V . Dizemos que T é
uma árvore de busca em profundidade com raiz r se x e y são comparáveis
em (T, r) sempre que e ≃ xy ∈ E − T .
Teorema 1.7. Se G é um grafo conexo e r ∈ V , então G possui uma
árvore de busca em profundidade com raiz r.
Prova. A prova é por indução em |G|. Suponha que G é um grafo co-
nexo e r ∈ V . Se |G| = 1, então G é uma árvore de busca em profundi-
dade com raiz r.
NOÇÕES BÁSICAS 21
24 Isto é, ℓ(P ) ⩾ 1.
Suponha, então, que |G| ⩾ 2. Sejam C1, . . . , Ck com k ⩾ 1 as com-
ponentes conexas de G − r. Para cada i ∈ [k], seja ti um vizinho de
r em Ci e ei uma aresta com pontas r e ti. Por hipótese de indução,
existe uma árvore de busca em profundidade Ti de G[Ci] com raiz ti
para cada i ∈ [k]. É claro que T = {ei | i ∈ [k]} ∪
⋃
i∈[k] Ti é uma ár-
vore geradora de G. Vamos mostrar que (T, r) é uma árvore de busca
em profundidade. Note que não há arestas cujas pontas estão em di-
ferentes componentes de G − r. Seja e ∈ EG − T . Então (i) ou ambas
as pontas de e, digamos x e y, estão em Ci para algum i, donde x e y
são comparáveis em (Ti, ti) e, assim, x e y também são comparáveis em
(T, r) ou (ii) uma das pontas de e é r e, neste caso, evidentemente r e s
são comparáveis em (T, r), onde s é a outra ponta de e. Portanto, T é
uma árvore de busca em profundidade de G com raiz r.
Vamos, agora, fornecer uma prova alternativa deste último teorema.
A prova depende do conceito de H-caminho simples que passaremos a
definir. Seja G um grafo e H um subgrafo de G. Dizemos que um ca-
minho simples P , não-trivial,24 é um H-caminho simples se P e H com-
partilham tão somente o vértice inicial e o vértice final de P .
Transversal de um conjunto Vamos definir a noção de transversal de um
conjunto. Este será o primeiro contato com esta noção que terá um pa-
pel fundamental nos capítulos futuros. Suponha que U é um conjunto
e que X ⊆ 2U . Dizemos que T ⊆ U é uma transversal de X se
T ∩X ̸= ∅
para cada X ∈ X. Uma transversal T de X é dita minimal se U não é
transversal de X para cada U ⊂ T .
Exemplo 1. Considere o conjunto U = {1, 2, 3, 4} e
X = {{1, 2}, {1, 3}, {2, 3, 4}} ⊆ 2U .
Os conjuntos {1, 2} e {1, 4} são exemplos de transversais minimais
de X. Note que qualquer superconjunto de uma transversal é tam-
bém uma transversal.
Suponha que T é uma árvore geradora de um grafo G. Se ∅ ̸= X ⊂
V , então a conexidade de T implica que ET ∩ ∇X ̸= ∅. Portanto, as
arestas de uma árvore geradora de G constituem uma transversal do
conjunto
{∇X | ∅ ≠ X ⊂ V }.
Exercício 1.11. Seja G um grafo conexo, e x, y vértices de G. Mostre
que se P é um caminho de G que une x e y, então as arestas de P
22 TEORIA DOS GRAFOS
são uma transversal do conjunto
{∇X | X ⊆ V, x ∈ X, y ∈ Xc}.
Note, no enunciado do próximo teorema, a identificação de um con-
junto de arestas com o grafo induzido por este conjunto de arestas.
Teorema 1.8. Seja G um grafo conexo e C = {∇X | ∅ ≠ X ⊂ V }. Uma
parte T de E é uma árvore geradora de G se, e só se, T é uma transversal
minimal de C.
Prova. O resultado é claro se |G| = 1. Logo, vamos supor que |G| ⩾ 2.
Suponha que T é uma transversal minimal de C. Vamos mostrar que T é
um subgrafo conexo e gerador de G. Para isso, tome ∅ ≠ X ⊂ V . Como
T é uma transversal de C, então T ∩ ∇X ̸= ∅, mas T ∩ ∇X = ∇T (X)
donde, pelo Lema 1.1, T é conexo. Além disso, a escolha de X como
uma parte própria e não-vazia de V implica que T é gerador. Logo, T
é um subgrafo gerador e conexo de G. Seja e uma aresta de T . Como
T é uma transversal minimal de C, então T − e não é uma transversal.
Logo, existe ∅ ≠ X ⊂ V tal que
∇T−e(X) = (T − e) ∩∇(X) = ∅,
donde T − e não é conexo. Concluímos, assim, que T é conexo e T − e
não é conexo para cada e ∈ T o que, de acordo com o Teorema 1.4,
implica que T é uma árvore.
Exercício 1.12. Seja G um grafo conexo, e x, y vérticesde G. Mostre
que o conjunto das arestas de um caminho P de G que une x e y é
uma transversal minimal de
{∇X | X ⊆ V, x ∈ X, y ∈ Xc}
se, e só se, P é simples
Grafos simples
Um grafo G é simples se para cada e, f ∈ E se e ̸= f , então ι(e) ̸= ι(f),
ou seja, não existem duas arestas com as mesmas pontas. Neste caso,
por simplicidade, convém dispensar a função de incidência, e conside-
rar um grafo simples como um par (V,E) tal que V é, como de cos-
tume, um conjunto finito e E ⊆
(
V
2
)
. Assim, cada aresta é um par
não-ordenado de vértices distintos.
Cliques e conjuntos independentes Seja G um grafo e X ⊆ V . Dizemos
que X é um clique se G[X] é completo, ou seja, se para cada x1, x2 ∈ X ,
NOÇÕES BÁSICAS 23
Figura 1.17: Um grafo simples e com-
pleto com 6 vértices, K6.
X
Xc
v
Γv
se x1 ̸= x2 então existe e ∈ E tal que e ≃= x1x2. Para cada k ∈ N, uma
parte X de V é um k-clique se X é um clique e |X| = k. Um 3-clique é
também chamado de triângulo. Dizemos que uma parte X de V é um
conjunto independente se E(G[X]) = ∅, ou seja, se não existe aresta de G
com ambas as pontas em X . Por outro lado, dizemos que um conjunto
C de vértices de G é uma cobertura de vértices se toda aresta de G tem ao
menos uma de suas pontas em C. Assim, se X é independente, então
toda aresta de G tem ou as duas pontas em Xc ou exatamente uma
ponta em Xc e, portanto, Xc é uma cobertura de vértices.
Um grafo G é completo se V é um clique. Se G é um grafo simples e
completo, então
||G|| =
∣∣∣(V
2
)∣∣∣ = |G|(|G| − 1)
2
.
Usualmente escrevemos Kn para denotar um grafo simples e completo
com n vértices.
Teorema 1.9 (Mantel). Se G é um grafo simples livre de triângulos,
então ||G|| ⩽ |G|2/4.
Primeira prova. A prova depende do seguinte lema.
Lema 1.4. Para todo natural n, max{k(n− k) | k ∈ [0 : n]} ⩽ n2/4.
Prova. O resultado é óbvio se n = 1. Assim, vamos supor que n ⩾ 2. É
evidente que existe a ∈ [0 : n] tal que a(n− a) = max{k(n− k) | k ∈ [0 :
n]}. É fácil ver que n ⩾ 2 implica 0 < a < n. Note que
(a−1)(n−(a−1)) ⩽ a(n−a) ⇔ an−n−a2−1+2a ⩽ an−a2 ⇔ 2a ⩽ n+1,
donde a ⩽
n+ 1
2
⩽
⌊n+ 1
2
⌋
=
⌈n
2
⌉
. Além disso,
(a+ 1)(n− (a+ 1)) ⩽ a(n− a) ⇔ 2a ⩾ n− 1,
donde a ⩾
n− 1
2
⩾
⌈n− 1
2
⌉
=
⌊n
2
⌋
. Logo, a =
⌊n
2
⌋
ou a =
⌈n
2
⌉
. Final-
mente,
a(n− a) =
⌈n
2
⌉⌊n
2
⌋
⩽
n2
4
,
como queríamos.
Suponha que G é um grafo simples livre de triângulos. Seja v um
vértice de grau máximo de G, digamos k. Como G é livre de triângulos,
24 TEORIA DOS GRAFOS
então Γv é um conjunto independente. Seja X = {v} ∪ Γv. Então,
||G|| ⩽ k +
∑
v∈Xc
d(x)
⩽ k +
∑
v∈Xc
k
= k + k(|G| − k − 1) = k(|G| − k)
⩽
|G|2
4
,
onde a última desigualdade segue do Lema 1.4.
Segunda prova. Vamos fornecer uma prova alternativa do Teorema de
Mantel. Desta vez vamos provar por indução em |G| que
se G é um grafo simples e ||G|| > |G|2/4,
então G possui triângulos.
Suponha que G é um grafo simples e ||G|| > |G|2/4. O resultado segue
imediatamente se |G| ⩽ 2 em virtude da ausência de grafos com não
mais que dois vértices satisfazendo a hipótese do teorema. Suponha,
então, que |G| ⩾ 3. É claro que, neste caso, E ̸= ∅. Seja, então, xy uma
aresta de G e G′ o grafo G− {x, y}. Temos dois casos:
Caso 1 ||G′|| > |G′|2/4.
Por hipótese de indução, G′ tem um triangulo, e tal triângulo é tam-
bém um triângulo de G, pois G′ é subgrafo de G.
Caso 2 ||G′|| ⩽ |G′|2/4.
Seja n = |G|. Note que
||G|| − ||G′|| > n
2
4
− (n− 2)
2
4
= n− 1.
Então existem pelo menos n − 1 arestas com uma das pontas em
{x, y} e a outra em V − {x, y}. Mas |V − {x, y}| = n − 2, donde,
pelo Princípio da Casa de Pombos, existe z ∈ V − {x, y} tal que
z ∈ Γx ∩ Γy. Portanto, G[{x, y, z}] é um triângulo.
Lema 1.5. Se G é um grafo simples e δ(G) ⩾ 2, então G possui ciclo.
Prova. Seja P := x0x1 . . . xk um caminho maximal de G. Como δ(G) ⩾
2 vem que d(x0) ≥ 2, ou seja, x0 possui um vizinho distinto de x1. Ade-
mais, todo vizinho de x0 está em P caso contrário poderíamos estender
P contrariando, assim, a maximalidade de P . Portanto, existe i tal que
2 ≤ i ≤ k e xi é vizinho de x0. Agora, x0x1 . . . xix0 é um ciclo de G.
NOÇÕES BÁSICAS 25
25 Considere o conjunto C cujos elemen-
tos são os grafos simples G tais que
||G|| ⩾ |G|+ 4 e G não possui dois ciclos
disjuntos nas arestas. Queremos mostrar
que C = ∅. Para isso, vamos admitir que
C ̸= ∅. Considere o conjunto Z = {||G||+
|G| | G ∈ C}. Como C é não-vazio,
então Z é um conjunto não-vazio de in-
teiros não-negativos e, portanto, possui
um menor elemento, digamos m. Seja,
então, G ∈ C tal que ||G|| + |G| = m.
Este é o tal contra-exemplo minimal. Ob-
serve que se H é um grafo simples tal que
||H|| + |H| < m, então H /∈ C, donde H
possui dois ciclos disjuntos nas arestas.
26 Lembre-se que a cintura de um grafo
que contém ciclos é o comprimento de
um menor ciclo.
Lema 1.6. Se G é um grafo simples e ||G|| ⩾ |G|, então G possui ciclo.
Prova. Vamos provar por indução em |G| que se ||G|| ⩾ |G|, então G
possui um ciclo. Seja, então, G um grafo tal que ||G|| ⩾ |G|. Se δ(G) ⩾ 2
então, pelo Lema 1.5, G possui um ciclo. Assim, suponha que δ(G) < 2.
Seja x um vértice de G com d(x) ⩽ 1 e considere o grafo H = G − x.
Então
||H|| ⩾ ||G|| − 1 ⩾ |G| − 1 = |H|.
Sendo assim, por hipótese de indução, H possui um ciclo C. Como H
é um subgrafo de G segue que C também é um ciclo de G. Isto finaliza
a prova do lema.
Proposição 4. Se G é um grafo simples e ||G|| ⩾ |G| + 4, então G
possui dois ciclos disjuntos nas arestas.
Prova. A prova é por contradição. Seja G um contra-exemplo para o
lema com ||G||+ |G| mínimo25. Observe, primeiro, que
|G| ⩾ 5 (1.1)
uma vez que nenhum grafo com menos de 5 vértices satisfaz a hipótese
da proposição. Afirmamos que
||G|| = |G|+ 4. (1.2)
Suponha que ||G|| > |G| + 4. Seja e uma aresta de G e H o grafo G − e.
Então ||H|| ⩾ |H|+ 4. O grafo H não pode ser um contra-exemplo pois
||H|| + |H| < ||G|| + |G|. Assim, H satisfaz o lema, ou seja, H possui
dois ciclos disjuntos nas arestas. Mas, H é um subgrafo de G donde
tais ciclos também são ciclos de G. Esta contradição prova (1.2).
Agora, mostraremos26 que
a cintura de G é pelo menos 5. (1.3)
Suponha que G possua um ciclo C tal que ||C|| ⩽ 4. Considere o grafo
H := G − E(C). Temos que ||H|| ⩾ ||G|| − 4 = |G| = |H|. Logo, pelo
Lema 1.6, H possui um ciclo C ′. Portanto, C e C ′ são ciclos disjuntos
nas arestas de G. Esta contradição prova (1.3).
Temos, também, que
δ(G) ⩾ 3. (1.4)
Suponha que δ(G) ⩽ 2. Seja x um vértice de G com d(x) ⩽ 2. Suponha,
inicialmente, que d(x) ⩽ 1. O grafo H = G − x é tal que ||H|| ⩾ ||G|| −
1 = |G| + 4 − 1 = |H| + 4. Logo, H satisfaz as condições do lema.
Como H tem menos vértices que G, segue que H possui dois ciclos,
digamos C e C ′, disjuntos nas arestas. No entanto, H é um subgrafo
26 TEORIA DOS GRAFOS
x
y z y z=⇒
Figura 1.18: A figura ilustra a operação
envolvida na construção de H quando
d(x) = 2.
de G donde C e C ′ são ciclos de G, uma contradição. Suponha, agora,
que d(x) = 2. Denote por y e z os vizinhos de x. Note que, em virtude
de (1.3), yz não é uma aresta de G. O grafo H = (G− x) + yz é tal que
||H|| = ||G|| − 1 = |G|+ 4− 1 = |H|+ 4. Assim, H satisfaz a hipótese do
lema e H é menor que G. Vem daí que H possui ciclos C,C ′ disjuntos
nas arestas. Se tanto C quanto C ′ não incluem a aresta yz então C e C ′
também são ciclos disjuntos de G o que é uma contradição.
Suponha, pois, que um dos ciclos, digamos C, inclua yz. Então tro-
que na sequência que determina C o segmento yz pelo segmento yxz
e seja C ′′ o ciclo assim obtido. Com isto, temos que C ′ e C ′′ são ciclos
disjuntos nas arestas de G. Novamente uma contradição. Isto completa
a prova de (1.4).
Afirmamos que
|G| ⩽ 8. (1.5)
De fato. Suponha que |G| ⩾ 9. Como ||G|| = |G|+ 4 vem que
d(G) = 2
||G||
|G|
= 2
|G|+ 4
|G|
= 2 +
8
|G|
.
Agora, |G| ⩾ 9 implica d(G) < 3 donde δ(G) ⩽ 2. No entanto, isto
contraria (1.4). Isto prova (1.5).
Para completar a prova do lema basta mostrar que não existe ne-
nhum grafo G satisfazendo simultaneamente as seguintesproprieda-
des:
• ||G|| = |G|+ 4,
• cintura de pelo menos 5,
• δ(G) ⩾ 3 e
• 5 ⩽ |G| ⩽ 8.
A prova disto é deixada para o leitor.
Exercício 1.13. Mostre que se G é um grafo simples e G possui k
componentes conexos, então
||G|| ⩽ (|G| − k + 1)(|G| − k)
2
.
	Noções básicas
	Grafos
	Corte e grau de um vértice
	Vizinhança de um vértice
	Subgrafos
	Caminhos e outros animais
	Componentes conexas
	Corte de um conjunto de vértices
	Algoritmo de busca
	Grafos bipartidos
	Árvores
	Árvores de busca em profundidade
	Grafos simples

Continue navegando