Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

Introdução à Teoria dos Grafos
Edson Prestes
2020
Dedico este livro à minha famı́lia e amigos.
O importante é o ser e não o vir a ser; um não é o oposto do outro, havendo
o oposto ou a oposição, cessa o ser. Ao findar o esforço para vir-a-ser, surge
a plenitude do ser, que não é estático; não se trata de aceitação; o vir-a-ser
depende do tempo e do espaço. O esforço deve cessar; disso nasce o ser que
transcende os limites da moral e da virtude social, e abala os alicerces da
sociedade. Esta maneira de ser é a própria vida, não mero padrão social.
Lá, onde existe vida, não existe perfeição; a perfeição é uma idéia, uma
palavra; o próprio ato de viver e existir transcende toda forma de
pensamento e surge do aniquilamento da palavra, do modelo, do padrão.
Jiddu Krishnamurti (1895-1986)
Prefácio
Este livro é resultado das minhas notas de aulas da cadeira de Teoria dos
Grafos e Análise Combinatória que ministro desde 2005 no Instituto de In-
formática na Universidade Federal do Rio Grande do Sul. Ao longo dos anos,
tenho observado a necessidade de um livro nesta área escrito em português
com linguagem acesśıvel. Assim nas minhas horas vagas detive-me a escrever
este livro. Esta primeira versão demorou vários anos para ser finalizada de-
vido aos meus inúmeros compromissos dentro e fora do Páıs. Ela contou com
o apoio dos meus alunos Renata Neuland e Gean Stein, à Jéssica Dagostini,
Vińıcius Lazzari no processo de revisão.
Espero que este livro motive os alunos da graduação em ciência da com-
putação e também de áreas correlatas a se interessarem pela área de teoria
dos grafos. É claro que esta área é muito mais ampla e densa do que o
conteúdo discutido nas páginas seguintes, porém penso neste livro como um
passaporte de entrada para esta área magńıfica. Além das notas, este livro
foi ancorado em obras magńıficas listadas abaixo :
• F. Harary. Graph Theory. Addison-Wesley Publishing Company,
1969.
• J. A. Bondy e U.S.R. Murty. Graph Theory with Applications.
Elsevier Science Ltd/North-Holland. 1979.
• J. Clark e D.A. Holton. A First Look at Graph Theory. World
Scientific Pub Co Inc. 1991.
• D. West. Introduction to Graph Theory. Prentice-Hall, Inc. 1996.
• R. Diestel. Graph Theory. Springer-Verlag. 2005.
• J. M. Harris, J. L. Hirst e M. J. Mossinghoff. Combinatorics and
Graph Theory.Springer Science+Business Media, LLC. 2005.
• J. Bang-Jensen e G. Gutin. Digraphs - Theory, Algorithms and
Applications . Springer-Verlag. 2008.
v
Além de oferecer aos estudantes um livro com linguagem acesśıvel, eu
o ofereço como um presente a todos aqueles que precisam adquirir conheci-
mento nesta área e muitas vezes não possuem ou conhecimento básico ade-
quado ou recursos financeiros. Por isso tentei ser o mais didático posśıvel
neste texto e escrevi este trabalho sob a poĺıtica do Creative Commons.
Acredito que qualquer pessoa mereça acesso ao conhecimento. Assim barrei-
ras precisam ser quebradas e uma das formas de fazermos isso é através de
publicações abertas. Já fui um estudante de graduação e sei a dificuldade
que é adquirir uma obra na área.
Espero que apreciem o trabalho, e desfrutem dele sem moderação :)
Edson Prestes
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
vi
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
Conteúdo
1 Fundamentação Teórica 1
1.1 Conceitos Básicos . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 Relação de Vizinhança . . . . . . . . . . . . . . . . . . . . . . 7
1.3 Matrizes de Adjacência e de Incidência . . . . . . . . . . . . . 11
1.4 Passeios e Circuitos . . . . . . . . . . . . . . . . . . . . . . . . 13
1.5 Grafos Eulerianos e Hamiltonianos . . . . . . . . . . . . . . . 18
1.6 Isomorfismo e Automorfismo . . . . . . . . . . . . . . . . . . . 22
1.7 Aplicações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
1.7.1 Associação de Tarefas . . . . . . . . . . . . . . . . . . 26
1.7.2 Robótica . . . . . . . . . . . . . . . . . . . . . . . . . . 27
1.7.3 Nichos Ecológicos . . . . . . . . . . . . . . . . . . . . . 27
1.7.4 Rede de Telefonia Móvel . . . . . . . . . . . . . . . . . 28
1.7.5 Reconhecedores de sentenças . . . . . . . . . . . . . . . 29
1.7.6 Redes Neurais Artificiais . . . . . . . . . . . . . . . . . 29
1.8 Exerćıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2 Tipos de Grafos e Operações 35
2.1 Grafos Especiais . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.2 Operações com grafos . . . . . . . . . . . . . . . . . . . . . . . 39
2.2.1 União . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.2.2 Junção . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
2.2.3 Intersecção . . . . . . . . . . . . . . . . . . . . . . . . 40
2.2.4 Produto . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2.2.5 Complemento . . . . . . . . . . . . . . . . . . . . . . . 41
2.2.6 Remoção . . . . . . . . . . . . . . . . . . . . . . . . . . 43
2.2.7 Contração . . . . . . . . . . . . . . . . . . . . . . . . . 43
2.2.8 Supressão e Subdivisão . . . . . . . . . . . . . . . . . . 44
2.2.9 Decomposição . . . . . . . . . . . . . . . . . . . . . . . 45
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
viii CONTEÚDO
2.2.10 Operador Linha L . . . . . . . . . . . . . . . . . . . . 46
2.3 Exerćıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
3 Conectividade 51
3.1 Relação de Vizinhança Estendida e Fechamento Transitivo . . 52
3.2 Grafos Conexos e Desconexos . . . . . . . . . . . . . . . . . . 55
3.3 Vértice de Corte . . . . . . . . . . . . . . . . . . . . . . . . . 56
3.4 Aresta de Corte . . . . . . . . . . . . . . . . . . . . . . . . . . 59
3.5 Conectividade em Dı́grafos . . . . . . . . . . . . . . . . . . . . 61
3.6 Cálculo de Componentes . . . . . . . . . . . . . . . . . . . . . 67
3.7 Exerćıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
4 Relacionamentos V-A 73
4.1 Clique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
4.2 Conjunto Independente . . . . . . . . . . . . . . . . . . . . . . 77
4.3 Cobertura de Vértices . . . . . . . . . . . . . . . . . . . . . . 81
4.4 Conjunto Dominante . . . . . . . . . . . . . . . . . . . . . . . 84
4.5 Emparelhamento . . . . . . . . . . . . . . . . . . . . . . . . . 88
4.6 Exerćıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
5 Enumeração 97
5.1 Método de Maghout . . . . . . . . . . . . . . . . . . . . . . . 97
5.2 Enumeração em Grafos . . . . . . . . . . . . . . . . . . . . . . 101
5.2.1 Coberturas de Vértices e Conjuntos Independentes . . 101
5.2.2 Cliques . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
5.2.3 Conjuntos dominantes . . . . . . . . . . . . . . . . . . 104
5.2.4 Emparelhamentos . . . . . . . . . . . . . . . . . . . . . 106
5.3 Enumeração em Dı́grafos . . . . . . . . . . . . . . . . . . . . . 111
5.3.1 Coberturas de Vértices e Conjuntos Independentes . . 111
5.3.2 Coberturas de Fonte e Sumidouro . . . . . . . . . . . . 114
5.3.3 Cliques . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
5.3.4 Conjuntos Dominantes . . . . . . . . . . . . . . . . . . 116
5.3.5 Emparelhamentos . . . . . . . . . . . . . . . . . . . . . 121
5.4 Exerćıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
6 Árvores 125
6.1 Conceitos Básicos . . . . . . . . . . . . . . . . . . . . . . . . . 125
6.2 Árvores Enraizadas . . . . . . . . . . . . . . . . . . . . . . . . 128
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
CONTEÚDO ix
6.3 Árvores de Espalhamento . . . . . . . . . . . . . . . .. . . . 133
6.4 Exerćıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
7 Planaridade 147
7.1 Multigrafos Planares . . . . . . . . . . . . . . . . . . . . . . . 147
7.2 Teorema de Euler . . . . . . . . . . . . . . . . . . . . . . . . . 150
7.3 Teorema de Kuratowski . . . . . . . . . . . . . . . . . . . . . 154
7.4 Exerćıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
8 Coloração 157
8.1 Grafos Coloŕıveis . . . . . . . . . . . . . . . . . . . . . . . . . 157
8.2 Grafos Aresta-Coloŕıveis . . . . . . . . . . . . . . . . . . . . . 162
8.3 Polinômio Cromático . . . . . . . . . . . . . . . . . . . . . . . 163
8.4 O teorema das quatro cores . . . . . . . . . . . . . . . . . . . 168
8.5 Exerćıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
x CONTEÚDO
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
Caṕıtulo 1
Fundamentação Teórica
A Teoria dos Grafos surgiu com os trabalhos de L. Euler, G. Kirchhoff e A.
Cayley. O primeiro e mais famoso problema, chamado o problema das pontes
de Königsberg foi enunciado por Euler em 1736. Na cidade de Königsberg Problema das
Pontes de
Königsberg
(antiga Prússia), existiam sete pontes que cruzavam o rio Pregel estabele-
cendo ligações entre diferentes partes da cidade e as ilhas Kneiphof e Lomse
(ver Figura 1.1). O problema consistia em determinar se era posśıvel ou não
fazer um passeio pela cidade começando e terminando no mesmo lugar, cru-
zando cada ponte exatamente uma única vez. Veremos na Seção 1.5 que a
resposta para esta pergunta é não.
A Teoria dos Grafos possui aplicação direta em áreas como f́ısica, qúımica,
engenharias, psicologia, etc. Em particular, ela é de fundamental importância
aos cursos de Ciência e Engenharia da Computação. Isto se deve a inúmeros
motivos, entre eles, o fato de servir de modelo matemático para alguns dos
problemas mais importantes e dif́ıceis da computação. Estes problemas estão
associados à classe de problemas NP-Completos, cuja solução em tempo po-
linomial por uma máquina de turing determińıstica não é conhecida.
Vários problemas do mundo real podem ser analisados usando a Teoria
dos Grafos, por exemplo, o escalonamento de processos pode ser visualizado
como um aplicação direta do problema de coloração de grafos; o problema de
reconhecimento de padrões pode ser visto como uma instância do problema
de isomorfismo em grafos; o problema de roteamento é o problema de verificar
se um grafo é Hamiltoniano ou não, e se for determinar o ciclo hamiltoniano
de custo mı́nimo.
Este livro introduz a base teórica da área de Teoria dos Grafos, apresen-
tando os principais conceitos (definições, propriedades, classes, teoremas) e
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
2 Fundamentação Teórica
problemas. Exemplificaremos sempre que posśıvel o uso destes conceitos em
problemas do mundo real. Além disso, será dada ênfase ao aspecto combina-
torial da área apresentando o uso da análise combinatória em problemas de
enumeração e contagens.
Figura 1.1: Pontes de Königsberg
1.1 Conceitos Básicos
Definição 1.1. Um grafo simples G = (V,A) é uma estrutura discreta for-Grafo Simples
mada por um conjunto não vazio de vértices V e um conjunto de arestas
A ⊆ P(V ), onde P(V ) = {{x, y} : x, y ∈ V } é o conjunto de todos os pares
não ordenados1 não necessariamente distintos gerados a partir de V . Cada
aresta {x, y} ∈ A é formada por um par de vértices distintos, i.e., x 6= y.
Para cada par de vértices existe no máximo uma aresta associada.
Dois vértices x e y são adjacentes se e somente se existe uma aresta
{x, y} ∈ A. Neste caso, dizemos que a aresta {x, y} é incidente aos vérticesVértices Adja-
centes x e y. Quando um vértice não é adjacente a outro, dizemos que ele é um
vértice isolado.
Um grafo deixa de ser simples quando possui múltiplas arestas entre o
mesmo par de vértices e/ou quando possui uma aresta, chamada laço, inci-
dente a um par de vértices não distintos. Se o grafo possuir múltiplas arestas
e não possuir laços então ele é chamado multigrafo , caso contrário, se eleMultigrafo
possuir laços então é chamado de pseudografo. A existência de múltiplasPseudografo
1Um par não ordenado formado pelos vértices x e y é representado por {x, y}, onde
{x, y} = {y, x}. Se x = y, então {x, y} = {x, x} = {x}.
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
1.1 Conceitos Básicos 3
arestas, leva à definição da função φ : A → P(V ), chamada de função de Função de In-
cidênciaincidência do grafo, que mapeia cada aresta ao par de vértices associado.
Isto permite distinguir cada aresta individualmente. Baseado nisto, temos a
seguinte definição que inclui multigrafos, pseudografos e grafos simples.
Definição 1.2. Um grafo G = (V,A, φ) é um conjunto não vazio de vértices
V , um conjunto de arestas A, e uma função de mapeamento φ : A → P(V )
que mapeia cada aresta a um par não ordenado formado pelos vértices de G.
O número de vértices de G, denotado por |V | indica a ordem de G, enquanto
que o número de arestas, denotado por |A|, indica o tamanho de G2.
(a) (b)
Figura 1.2: Exemplos de (a) grafo simples e (b) pseudografo
A Figura 1.2 mostra um (a) grafo simples e um (b) pseudografo, onde as li-
nhas representam as arestas e os ćırculos escuros representam os vértices. Em
(a), cada aresta une um par de vértices distintos e não existem múltiplas ares-
tas unindo um mesmo par. Logo, cada aresta é representada pelos vértices
os quais incide, por exemplo, a aresta unindo os vértices 1 e 2 é representada
por {1, 2}. Assim, φ({1, 2}) = {1, 2}, i.e., φ({x, y}) = {x, y}, ∀{x, y} ∈ A.
Em (b) existem múltiplas arestas unido os vértices 1 e 2, e os vértices 3 e 4.
Para distingui-las, as arestas são rotuladas com as letras de a a h. Observe
que φ(f) = φ(g) = φ(h) = {3, 4} e φ(a) = φ(b) = {1, 2}, porém f 6= g 6= h
2Alguns autores usam |G| e ||G|| para indicar a ordem e o tamanho de G, respectiva-
mente
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
4 Fundamentação Teórica
e a 6= b. Quando um dado par de vértices está associado a k arestas distin-
tas, dizemos que ele possui multiplicidade igual a k, i.e., µ(x, y) = k. NesteMultiplicidade
de Arestas caso, a multiplicidade do par {3, 4} é igual a µ(3, 4) = 3, enquanto que a
multiplicidade do par {1, 2} é igual a µ(1, 2) = 2. Em um grafo simples a
multiplicidade de cada par de vértices é no máximo igual a 1. Em (a), existe
um vértice isolado representado pelo vértice 5, enquanto que em (b), existe
um laço representado pela aresta e. Se (b), não possúısse o laço e, então seria
um multigrafo. A existência de laço indica que o grafo é um pseudografo.
Neste livro iremos apenas distinguir o grafo simples dos demais grafos, que
serão chamados apenas por grafos.
Para este exemplo, o grafo da Figura 1.2(a) é representado por Ga =
(Va, Aa, φa) ou apenas por Ga = (Va, Aa), pois como ele é simples, a função
φa(.) se torna a função identidade podendo ser suprimida. Os conjuntos de
vértices e arestas são definidos por Va = {1, 2, 3, 4, 5} e Aa = {{1, 2}, {1, 3},
{3, 2}, {3, 4}}, respectivamente. Por outro lado, o grafo da Figura 1.2(b) é
definido por Gb = (Vb, Ab, φb) com Vb = {1, 2, 3, 4}, Ab = {a, b, c, d, e, f, g, h}
e
φb =
(
a b c d e f g h
{1, 2} {1, 2} {1, 3} {2, 3} {2} {3, 4} {3, 4} {3, 4}
)
Se retirarmos os laços e todas as múltiplas arestas entre cada par de
vértice, mantendoapenas uma, transformaremos um pseudografo em umGrafo Subja-
cente a Pseudo-
grafos e Multi-
grafos
grafo simples. O mesmo pode ser feito no caso de multigrafos, porém não
existem laços para serem removidos. O grafo simples encontrado é chamado
de grafo simples subjacente, ou apenas, grafo subjacente ao multigrafo ou
ao pseudografo. Realizando este procedimento no grafo da Figura 1.3(a),
encontramos o grafo simples mostrado em (b).
As arestas de um grafo possuem a função de indicar o relacionamento
entre os elementos que o grafo representa, que podem ser do mundo real
ou não, de forma simétrica. Este relacionamento pode corresponder a uma
propriedade espacial, comportamental, temporal ou outra. Em diversas si-
tuações esta relação não é simétrica, por exemplo, o sentido do fluxo de carros
nas ruas de uma cidade. Se representarmos cada entrocamento (cruzamento)
desta cidade como sendo um vértice em um grafo e o fluxo permitido como
sendo a relação entre os entrocamentos, veremos que em diversas situações
a ida de um entrocamento A para o entroncamento B não implica a volta,
ou seja, a ida do entroncamento B para o entrocamento A. Nesta situação
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
1.1 Conceitos Básicos 5
(a) (b)
Figura 1.3: Exemplo de (a) pseudografo e seu (b) grafo simples subjacente.
precisamos ter uma forma de indicar esta restrição no grafo. Isto é feito
determinando uma direção para cada aresta.
A inserção desta informação faz com que o grafo se torne orientado. As-
sociando pares ordenados de vértices às arestas do grafo, teremos um grafo
direcionado ou d́ıgrafo. Cada par ordenado3 (x, y) define um arco com ori-
gem em (ou adjacente em) x e destino em (ou adjacente para) y, ou seja,
(x, y) 6= (y, x). É comum dizermos que o vértice x domina y, e que o vértice
y é dominado por x. De forma similar ao exposto anteriormente para grafos, Dominância
um d́ıgrafo pode conter laços e múltiplos arcos entre um mesmo par ordenado
de vértices. Quando um d́ıgrafo não possui laços tão pouco múltiplos arcos
entre um mesmo par ordenado de vértices, ele é chamado d́ıgrafo simples ou
grafo direcionado simples. Quando um d́ıgrafo possui múltiplos arcos de um Dı́grafo Simples
vértice a outro, então ele é chamado de multigrafo direcionado. Quando k Multigrafo Dire-
cionadoarcos têm origem no vértice x e destino no vértice y, então dizemos que o
arco (x, y) tem multiplicidade igual a k, i.e., µ(x, y) = k. Em pseudografos e
multigrafos, µ(x, y) = µ(y, x), o que não é garantido nos casos de multigrafos
direcionados. Quando o d́ıgrafo não possui laços, múltiplas arestas entre um
mesmo par ordenado de vértices, nem pares simétricos de arcos então ele é
chamado de grafo orientado. Quando laços são permitidos laços, o d́ıgrafo é Grafo Orientado
chamado de pseudografo direcionado. Pseudografo Di-
recionado
Definição 1.3. Um d́ıgrafo D = (Vd, Ad, φd) é um conjunto não vazio de
vértices Vd, um conjunto de arcos Ad, e uma função de mapeamento φd :
Ad → Vd × Vd que mapeia cada arco a um par ordenado formado pelos
3Um par ordenado formado pelos vértices x e y é representado de maneira tradicional
por (x, y), onde, (x, y) 6= (y, x).
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
6 Fundamentação Teórica
vértices de D. De forma similar à definição usada para grafos, o número
de vértices de D, denotado por |Vd| indica a ordem de D, enquanto que o
número de arcos, denotado por |Ad|, indica o tamanho de D4.
A Figura 1.4(a) ilustra um grafo orientado, enquanto que (b) ilustra um
pseudografo direcionado. (b) possui múltiplos arcos entre um mesmo par
ordenado, entre eles podemos destacar, os arcos a e b que têm origem no
vértice 1 e destino no vértice 2. Além disso, ele possui o laço e. Se este
d́ıgrafo não possúısse os arcos b, g e e, ele seria classificado como d́ıgrafo
simples. Se removêssemos desse d́ıgrafo simples o arco h ou f , estaŕıamos
eliminando o único par simétrico existente, e este d́ıgrafo passaria a ser um
grafo orientado. Neste livro iremos apenas distinguir o grafo orientado dos
demais d́ıgrafos, os quais serão chamados apenas por d́ıgrafos.
(a) (b)
Figura 1.4: Exemplos de (a) d́ıgrafo simples e (b) pseudografo direcionado
De forma similar aos grafos, um d́ıgrafo possui um grafo subjacente. EleGrafo Subja-
cente ao Dı́grafo é obtido substituindo cada arco por uma aresta, i.e., removendo a orientação
de cada arco. Por exemplo, a Figura 1.2(b) mostra o grafo subjacente ao
d́ıgrafo ilustrado na Figura 1.4(b).
Definição 1.4. Um grafo G1 = (V1, A1) é um subgrafo de G2 = (V2, A2),
denotado por G1 ⊆ G2 se e somente se V1 ⊆ V2 e A1 ⊆ A2. Neste caso
4Alguns autores usam |D| e ||D|| para indicar a ordem e o tamanho de D, respectiva-
mente
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
1.2 Relação de Vizinhança 7
G2 é supergrafo de G1.(definição similar para sub- e superd́ıgrafos, porém
considerando a orientação dos arcos).
Se G1 é subgrafo de G2, então G2 é supergrafo de G1. Quando G1 6= G2, Subgrafo e
Subd́ıgrafo de
Espalhamento
então G1 é um subgrafo próprio de G2. Quando V1 = V2, então G1 é chamado
subgrafo gerador ou subgrafo de espalhamento de G2. Para um d́ıgrafo D1,
um subd́ıgrafo D2 que contém um conjunto de vértices igual ao conjunto de
vértices do d́ıgrafo original é chamado de subd́ıgrafo de espalhamento ou fator Fator
do d́ıgrafo.
Considerando um grafo G = (V,A) e um subconjunto não vazio Sv ⊆ V ,
um subgrafo de G induzido por Sv, denotado por G[Sv], é aquele que tem Grafo Induzido
como conjunto de vértices Sv e como conjunto de arestas todas as arestas de
G que possuam ambas extremidades em Sv. Se Sa ⊆ A é um subconjunto
não vazio de arestas, G[Sa] é um subgrafo de G induzido por Sa que tem
como conjunto de arestas Sa e como conjunto de vértices as extremidades
das arestas de Sa(Os mesmo conceitos se aplicam aos d́ıgrafos, porém temos
a expressão d́ıgrafo induzido). A Figura 1.5 ilustra (a) um grafo G e os
subgrafos induzidos (b) G[Sv] e (c) G[Sa], assumindo Sv = {0, 4, 5, 6} e Sa =
{{0, 4}, {0, 5}, {0, 1}, {2, 6}}.
(a) (b) (c)
Figura 1.5: Exemplo de grafo induzido por vértices e por arestas. (a) grafo G,
(b) grafo induzido G[Sv] por um conjunto de vértices Sv e (c) grafo induzido
G[Sa] por um conjunto de arestas Sa
1.2 Relação de Vizinhança
Tanto as arestas de um grafo quando os arcos de um d́ıgrafo definem uma
relação de vizinhança entre os vértices. Para um grafo G = (V,A, φ), o
conjunto de vértices adjacentes a um vértice v ∈ V é definido pela função Função Multiva-
lorada de Vizi-
nhança
multivalorada de vizinhança, τ : V ; 2V ,
τ(v) = {w : {v, w} = φ(e) ∧ e ∈ A}
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
8 Fundamentação Teórica
onde v pode ou não ser igual a w. Quando v = w teremos v ∈ τ(v). O
conjunto 2V é chamado conjunto das partes e contém todos os subconjuntos
que podem ser formados usando os elementos de V . Se V = {1, 2, 3} então
2V = {∅, {0}, {1}, {2}, {0, 1}, {0, 2}, {1, 2}, {0, 1, 2}}. Portanto |2V | = 2|V |.
Para um d́ıgrafo D = (Vd, Ad, φd), as funções multivaloradas de vizinhança
direta τ+ : Vd ; 2
Vd e inversa τ− : Vd ; 2
Vd são definidas porFunções Multi-
valoradas de Vi-
zinhança Direta
e Inversa
τ+(v) = {w : (v, w) = φd(e) ∧ e ∈ Ad}
e
τ−(v) = {w : (w, v) = φd(e) ∧ e ∈ Ad}.
A função τ+(v) retorna todos os vértices atinǵıveis diretamente a partir de v
através dos arcos que têm origem em v, enquanto que τ−(v) retorna todos os
vértices que atingem diretamente v através dos arcos que têm como destino
v. Lembrando que φ(e)= e (ou φd(e) = e) para o caso de não existirem
múltiplas arestas(ou arcos) entre um mesmo par de vértices.
A quantidade de vizinhos de um vértice permite determinar o que é cha-
mado grau de um vértice. Para um grafo simples, o grau de qualquer vértice
v, denotado por d(v), é definido por d(v) = |τ(v)|5. Para um grafo qualquerGrau
G = (V,A), o grau de um vértice v é definido pela quantidade n de arestas
que unem v aos outros vértices do grafo(exceto ele próprio) e pela quantidade
p de laços em v, ou seja,
d(v) = n+ 2p.
Quando um vértice v é isolado, ou seja, τ(v) = ∅, seu grau d(v) = 0. A partir
dáı, podemos definir o menor e maior graus dentre todos os seus vérticesMenor Grau
Maior Grau como, respectivamente,
∆(G) = max
v∈V
d(v) e δ(G) = min
v∈V
d(v).
Note que
δ(G) ≤ d(v) ≤ ∆(G), ∀v ∈ V.
Na Figura 1.2(a),
d(1) = 2, d(2) = 2, d(3) = 3, d(4) = 1, d(5) = 0, δ(G) = 0 e ∆(G) = 3.
Enquanto que na Figura 1.2(b),
d(1) = 3, d(2) = 5, d(3) = 5, d(4) = 3, δ(G) = 3 e ∆(G) = 5.
5O grau de um vértice é denotado por d devido a palavra grau ser em inglês chamada
degree.
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
1.2 Relação de Vizinhança 9
Teorema 1.1 (Handshaking Problem). Para um grafo G=(V,A), temos∑
v∈V
d(v) = 2|A|
Em um d́ıgrafo qualquer, cada vértice v possui um grau de entrada, d−(v), Graus de En-
trada e de Sáıdae um grau de sáıda, d+(v). O grau de entrada de um vértice v é o definido
pelo número de arcos que possuem como destino v (incluindo o laço) en-
quanto que o grau de sáıda é o número de arcos que possuem como origem v
(incluindo o laço). Um laço em vértice v é contado uma única vez no grau de
entrada de v e uma única vez no grau de sáıda de v. Para d́ıgrafos simples
(e grafos orientados), podemos usar as funções de vizinhança τ−(v) e τ+(v)
para calcular os graus de sáıda e de entrada de cada vértice. Neste caso, para
qualquer vértice v temos d−(v) = |τ−(v)| e d+(v) = |τ+(v)|.
De forma similar ao exposto anteriormente, podemos definir para um
d́ıgrafo D os graus de entrada máximo e mı́nimo, ∆−(D) e δ−(D), respecti-
vamente, e os graus de sáıda máximo e mı́nimo, ∆+(D) e δ+(D), respectiva-
mente. Na Figura 1.4(a), o d́ıgrafo tem
d−(1) = 1, d−(2) = 2, d−(3) = 0, d−(4) = 1, δ−(D) = 0,∆−(D) = 2,
d+(1) = 1, d+(2) = 0, d+(3) = 3, d+(4) = 0, δ+(D) = 0,∆+(D) = 3.
Enquanto que na Figura 1.4(b), o d́ıgrafo tem
d−(1) = 1, d−(2) = 3, d−(3) = 2, d−(4) = 2, δ−(D) = 1,∆−(D) = 3
d+(1) = 2, d+(2) = 2, d+(3) = 3, d+(4) = 1, δ+(D) = 1,∆+(D) = 3.
Teorema 1.2. Para um d́ıgrafo D = (Vd, Ad) temos∑
v∈Vd
d−(v) =
∑
v∈Vd
d+(v) = |Ad|
Quando um vértice v de um d́ıgrafo possui grau d−(v) = 0, ele é chamado
de vértice fonte e quando ele possui grau de sáıda d+(v) = 0, ele é chamado
de vértice sumidouro . A Figura 1.4(a) mostra um vértice fonte represen- Vértices Fonte e
Sumidourotado pelo vértice 3 e dois vértices sumidouros representados pelos vértices
2 e 4. Se este d́ıgrafo está associado à uma rede de transmissão de dados,
podemos relacionar o vértice fonte a um emissor que não é receptor, pois
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
10 Fundamentação Teórica
ele apenas emite informações sem ter a capacidade de recebê-las de volta.
Por outro lado, o vértice sumidouro é um receptor que não é emissor, ou
seja, ele apenas recebe informações, porém sem ser capaz de propagá-la adi-
ante para outros computadores. Os outros vértices conseguem tanto receber
informações quanto propagá-la adiante.
A seqüência não crescente d(G) = d1, d2, . . . , dn, com di ≥ dj para j ≥ i
formada pelo grau dos vértices de um grafo G de n vértices é chamada deSeqüência de
Graus Seqüência de Graus. Cada grafo possui uma única seqüência de graus, porém
uma mesma seqüência pode estar associada a grafos distintos. A Figura 1.6
mostra dois grafos distintos estruturalmente com a mesma seqüência de graus
igual a 4, 3, 2, 2, 1. Tanto a soma dos elementos desta seqüência quanto a
quantidade de valores ı́mpares são pares.
(a) (b)
Figura 1.6: Grafos com mesma seqüência de graus.
Teorema 1.3. Toda seqüência não negativa d1, d2, . . . , dn é uma seqüência
de graus de um grafo(simples ou não) se e somente se
∑n
i=1 di é par.
Existem seqüências que podem não estar associados a grafos simples.
Por exemplo, com a seqüência 3, 3, 3, 1 não é posśıvel construir um grafo
simples, mesmo tendo a soma de seus termos um valor par (Verifique!). Se
a seqüência permitir a construção de um grafo simples então ela é chamada
seqüência gráfica. Para verificar se uma dada seqüência é gráfica ou nãoSeqüência
Gráfica usamos o seguinte Teorema .
Teorema 1.4 ([1]). Para n > 1, uma seqüência d de inteiros com n elementos
é uma seqüência gráfica se e somente se d′ é uma seqüência gráfica, onde d′ é
obtido a partir de d removendo seu maior elemento ∆ e subtraindo 1 de seus
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
1.3 Matrizes de Adjacência e de Incidência 11
∆ maiores elementos seguintes. Assumimos que a única seqüência gráfica
com 1 elemento é d1 = 0.
A aplicação do Teorema 1.4 na seqüência s1 = 3, 3, 3, 1 leva aos seguintes
passos. Inicialmente removemos o maior elemento ∆1 = 3 e subtraimos de 1
os ∆1 maiores elementos seguintes. Isto resulta na seqüência s2 = 2, 2, 0. Em
s2, repetimos o processo, removendo o maior elemento ∆2 = 2, e subtraindo
de 1 os ∆2 maiores elementos seguintes. Isto resulta na seqüência s3 = 1,−1,
que não corresponde a uma seqüência gráfica, já que um dos requisitos para
que uma seqüência seja gráfica é que ela seja formada apenas por valores não
negativos.
1.3 Matrizes de Adjacência e de Incidência
Um grafo G = (V,A), com |V | = n e |A| = m, pode ser representado
usando dois tipos de matriz, chamados de matriz de adjacência e matriz de
incidência. A matriz de adjacência é uma matriz M = [mi,j] simétrica n× n
que armazena o relacionamento entre os vértices do grafo. Cada entrada mi,j
é igual a
mi,j =

0 , se i não é adjacente a j
m , se i é adjacente a j (com i 6= j), m corresponde à quantidade
de arestas conectando i e j.
p , se i = j, p é a quantidade de laços incidentes ao vértice i.
Por outro lado, a matriz de incidência B = [bi,j] é uma matriz n×m, que
associa os vértices às arestas de G. Cada entrada bi,j relaciona o vértice i à
aresta j assumindo os seguinte valores
bi,j =
{
0 , se j não é incidente em i
1 , se j é ou não um laço e i é uma de suas extremidades.
As matrizes de adjacência e de incidência para o grafo da Figura 1.2(b) são
mostradas nas Tabelas 1.1 e 1.2.
De forma similar, um d́ıgrafo D pode ser representado usando matrizes de
incidência e de adjacência. A matriz de adjacência é uma matriz A = [ai,j],
não necessariamente simétrica, onde cada entrada ai,j é igual a
ai,j =
{
0 , se i não é adjacente a j
m , onde m é a quantidade de arcos com origem em i e destino em j
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
12 Fundamentação Teórica
1 2 3 4
1 0 2 1 0
2 2 1 1 0
3 1 1 0 3
4 0 0 3 0
Tabela 1.1: Matriz de Adjacência do grafo da Figura 1.2(b).
a b c d e f g h
1 1 1 1 0 0 0 0 0
2 1 1 0 1 1 0 0 0
3 0 0 1 1 0 1 1 1
4 0 0 0 0 0 1 1 1
Tabela 1.2: Matriz de incidência do grafo da Figura 1.2 (b)
A matriz de adjacência para o d́ıgrafo da Figura 1.4(b) é mostrada na ta-
bela 1.3
1 2 3 4
1 0 2 0 0
2 0 1 1 0
3 1 0 0 2
4 0 0 1 0
Tabela 1.3: Matriz de Adjacência do d́ıgrafo da Figura 1.4(b).
Por sua vez, na matriz de incidência B = [bi,j] cada entrada bij relaciona
o vértice i à aresta j assumindoos valores
bi,j =

−1 , se j tem origem em i.
0 , se j não é incidente em i
1 , se j tem destino em i.
A matriz de incidência para o d́ıgrafo da Figura 1.4(b) é mostrada na
Tabela 1.4
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
1.4 Passeios e Circuitos 13
a b c d e f g h
1 -1 -1 1 0 0 0 0 0
2 1 1 0 -1 1 0 0 0
3 0 0 -1 1 0 1 -1 -1
4 0 0 0 0 0 -1 1 1
Tabela 1.4: Matriz de incidência do d́ıgrafo da Figura 1.4 (b)
Muitas vezes a matriz de adjacência do grafo é esparsa, ou seja, a mai-
oria dos seus elementos é igual a 0. Neste caso, para um grafo que possui
n vértices, estaŕıamos utilizando um espaço de armazenamento proporcional
a n2, sendo que apenas uma pequena quantidade de memória, associadas às
arestas do grafo, estaria efetivamente sendo usada. Para resolver este pro-
blema, podemos representar a matriz de adjacência na forma de uma lista
de adjacência, onde cada elemento desta lista possui referência a um vértice
do grafo e um ponteiro para uma sub-lista contendo todos os vértices adja-
centes associados. Se considerarmos que a maior sub-lista possui tamanho
igual a c << n (ou seja, c é muito menor que n), então no máximo estaremos
usando um espaço de armazenamento proporcional a cn, que é muito menor
que n2. Entretanto, se a matriz não for esparsa, ou seja, δ(G) ≥ n/2, então
a lista de adjacência não é uma boa escolha. Pois neste caso, a verificação da
adjacência entre dois vértices u e v consistirá em realizar uma busca linear
na sub-lista associada a um dos dois vértices. Se o grafo é muito denso, por
exemplo um Kn, isto envolverá no máximo n comparações. Por outro lado,
esta verificação em uma matriz de adjacência consiste em apenas checar a
entrada correspondente. Se a entrada for igual a 0 então os vértices não
são adjacentes, caso contrário são adjacentes. Estes aspectos relacionados à
eficiência valem também para d́ıgrafos.
1.4 Passeios e Circuitos
Definição 1.5. Em um grafo, um passeio entre os vértices v e w é uma
seqüência alternada de vértices e arestas v = v0, a1, v1, a2, v2, . . . , an, vn = w
que começa em v e termina em w, de forma que cada aresta ai é incidente
aos vértices vi−1 e vi. Tanto as arestas quanto os vértices podem ou não ser
distintos. Se apenas as arestas forem distintas, então o passeio é chamado
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
14 Fundamentação Teórica
de trilha. Se tanto as arestas quando os vértices forem distintos então, ele é
chamado de caminho. Observe que
caminhos ⊂ trilhas ⊂ passeios
Se os vértices de origem e destino forem o mesmo, então o passeio é cha-
mado de passeio fechado; a trilha é chamada de circuito; enquanto que oPasseio Fechado
Circuito caminho é chamado apenas de ciclo. Em um grafo simples, um ciclo é des-
Ciclo crito apenas por seus vértices já que a ordem dos vértices define exatamente
que aresta foi visitada. Um d́ıgrafo possui conceitos similares com a restrição
de que orientação dos arcos deve ser obedecida.
É posśıvel entre um mesmo par de vértices em um grafo G existirem
diversos passeios, trilhas e caminhos. Considerando o grafo da Figura 1.2(b),
entre os vértices 1 e 2 podemos ter os seguintes:
• Passeios:(1, c, 3, d, 2), (1, c, 3, g, 4, h, 3, g, 4, f, 3, d, 2), . . .
• Trilhas: (1, c, 3, d, 2),(1, c, 3, g, 4, h, 3, d, 2), . . .
• Caminhos: (1, c, 3, d, 2),(1, b, 2), . . ..
Dois caminhos entre um par de vértices u e v são vértice-disjuntos (ou
apenas disjuntos) se eles compartilharem apenas os vértices u e v e nenhuma
aresta. De forma similar, dois caminhos entre u e v são chamados aresta-
disjuntos se eles não compartilharem aresta (Definição similar se aplica aos
d́ıgrafos). Estes conceitos são importantes quando estivermos analisando a
conectividade de grafos no Caṕıtulo 3.
Definição 1.6. Em um d́ıgrafo, um passeio direcionado entre os vértices
v e w é uma seqüência alternada de vértices e arcos v = v0, a1, v1, a2, v2
, . . . , an, vn = w que começa em v e termina em w, de forma que cada arco
ai tenha origem em vi−1 e destino em vi. Se apenas as arcos forem distintos,
então o passeio direcionado é chamado de trilha direcionada. Se tanto os
arcos quando os vértices forem distintos então, ele é chamado de caminho
direcionado. Note que
caminhos direcionados ⊂ trilhas direcionadas ⊂ passeios direcionados
Se os vértices de origem e destino forem o mesmo, então o passeio direci-Passeio Direci-
onado Fechado,
Circuito Dire-
cionado, Ciclo
Direcionado
onado é chamado de passeio direcionado fechado; a trilha é chamada de
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
1.4 Passeios e Circuitos 15
circuito direcionado, enquanto que o caminho é chamado apenas de ciclo
direcionado.
Além destas classificações, temos a noção de semi-caminho, semi-passeio
e semi-trilha. Se considerarmos a seqüência alternada de vértices e arcos
v = v0, a1, v1, a2, v2, . . . , an, vn = w que começa em v e termina em w, um
semi-passeio é aquele onde o arco ai tem origem em vi−1 e destino em vi Semi-Passeio
ou tem origem em vi e destino em vi−1. Se apenas as arcos forem distintos,
então o semi-passeio é chamado de semi-trilha. Se tanto os arcos quando Semi-Trilha
os vértices forem distintos então, ele é chamado de semi-caminho. Note que Semi-Caminho
não precisamos enfatizar que eles são direcionados, já que estes conceitos se
aplicam apenas aos d́ıgrafos. Podemos pensar que em todos os casos, esta-
mos desconsiderando a orientação dos arcos e focando apenas nos caminhos,
passeios e trilhas no grafo subjacente ao d́ıgrafo. Analogamente, podemos
definir semi-passeio fechado, semi-circuito e semi-ciclo.
Em vários momentos, passeios, caminhos e trilhas, direcionadas ou não, Passeio de Espa-
lhamento, Cami-
nho de Espalha-
mento, Trilha de
Espalhamento
serão chamadas de passeio de espalhamento, caminho de espalhamento e tri-
lha de espalhamento, respectivamente. Isto ocorrerá quando estiverem sendo
considerados todos os vértices do d́ıgrafo ou grafo. Por exemplo, na Fi-
gura 1.2(b), o caminho 1, a, 2, d, 3, g, 4 possui todos os vértices do grafo sendo,
portanto, um caminho de espalhamento. Passeio fechado, circuito, e ciclo,
direcionado ou não, são de espalhamento, quando considerarem todos os
vértices do grafo ou d́ıgrafo.
O comprimento de um passeio(ou passeio direcionado) é igual a quanti-
dade quantidade de arestas(ou arcos) entre os vértices inicial e final. Um
caminho(ou caminho direcionado) com n vértices possui n − 1 arestas, logo
seu comprimento é igual a n − 1. Por conseguinte, um ciclo(ou ciclo dire-
cionado) composto por n vértices possui comprimento exatamente igual a
n.
Em grafos simples, os ciclos devem ter comprimento ≥ 3 , enquanto que
em multigrafos, este comprimento deve ser ≥ 2, pois podem existir múltiplas
arestas entre um mesmo par de vértices. Em pseudografos, laços são ciclos
especiais de comprimento igual a 1 chamados de ciclos simples. Para que
haja um ciclo, que não seja simples, o número de vértices tem que ser igual
ao número de arestas.
O comprimento do menor ciclo pertencente a um grafo G é chamado
cintura e denotado por g(G). Enquanto que o comprimento do maior ciclo Cintura
é chamado de circunferência sendo denotado por c(G). Um grafo que não Circunferência
possui ciclos, como por exemplo árvores, tem g(G) = ∞ e c(G) = 0. Uma
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
16 Fundamentação Teórica
aresta ou arco que une dois vértices em um ciclo, mas que não pertence ao
ciclo é chamada corda.Corda
Entre um par de vértices v e w em um grafo(ou d́ıgrafo) G = (V,A),podem existir inúmeros caminhos. Cada caminho representa um subgrafo(ou
subd́ıgrafo) de G, ou seja, considerando Pv,w = (Vp, Ap) um caminho entre
os vértices v e w, temos Pv,w ⊆ G. O comprimento de Pv,w, denotado aqui
por |Pv,w| é igual ao seu número de arestas, i.e., |Pv,w| = |Ap|. Se não existe
caminho entre v e w, então |Pv,w| = ∞. Usando esta notação, a distância
entre v e w é igual a
d(v, w) = min
Pv,w⊆G
|Pv,w|
Note que a distância entre v e w é definida pelo comprimento do menor
caminho entre v e w. Este cálculo é muito importante em áreas como a
robótica, já que o robô deve sempre que posśıvel se deslocar no ambiente
seguindo o caminho de menor comprimento. A partir da informação de
distância, podemos calcular o diâmetro de G porDiâmetro
diam(G) = max
v,w∈V
d(v, w)
que corresponde à distância entre os vértices mais afastados de G, e também
a excentricidade de cada vértice v de G que informa a maior distância posśıvelExcentricidade
entre v e todos os outros vértices do grafo,
e(v) = max
w∈V
d(v, w).
Usando a informação sobre a excentricidade dos vértices é posśıvel calcu-
lar o raio de G porRaio
raio(G) = min
v∈V
e(v)
que indica o menor valor de excentricidade presente em um grafo conside-
rando todos os seus vértices; e reescrever a expressão que define o diâmetro
de G como
diam(G) = max
v∈V
e(v)
A partir dáı, definimos um vértice v como sendo central quando seu valor
de excentricidade é igual ao raio do grafo, i.e., e(v) = raio(G). Por conse-Centro de um
Grafo guinte, o centro de um grafo G, denotado por, C(G), é um subgrafo induzido
pelos seus vértices centrais, i.e.,
C(G) = G[V ′], tal que V ′ = {v ∈ V : e(v) = raio(G)}
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
1.4 Passeios e Circuitos 17
Figura 1.7: Grafo com diam(G) = 4, raio(G) = 2 e C(G) = G[{2}].
Como exemplo, considere o grafo G mostrado na Figura 1.7. Seus vértices
possuem as seguintes excentricidades:
e(1) = 4, e(2) = 2, e(3) = 4, e(4) = 3, e(5) = 3, e(6) = 3 e e(7) = 4.
O diâmetro e o raio deste grafo são iguais a diam(G) = 4 e raio(G) = 2,
respectivamente. O centro é definido apenas pelo vértice 2, i.e., C(G) =
G[{2}]. Fazendo G′ = G − {1, 4}, i.e., eliminando a aresta {1, 4}, o grafo
passa a ter as seguintes excentricidades :
e(1) = 5, e(2) = 3, e(3) = 4, e(4) = 3, e(5) = 3, e(6) = 4 e e(7) = 5.
O diâmetro e o raio de G′ são iguais a diam(G′) = 5 e raio(G′) = 3, respecti-
vamente. O centro é definido pelos vértices 2, 4 e 5, i.e., C(G) = G[{2, 4, 5}].
Estas informações podem ser utilizadas por um administrador de uma
rede de computadores para saber quais são os nós centrais da rede que estão
com sobrecarga de comunicação, ou os nós mais distantes a fim de aproximá-
los através da inserção de outros pontos de comunicação. Note que uma rede
ideal é aquela onde a comunicação entre pares de computadores ocorre dire-
tamente. Em geral, redes com grandes diâmetros são mais lentas do ponto de
vista de comunicação do que redes com baixos diâmetros. Entretanto, uma
rede deste tipo é aceitável se a maioria dos seus computadores se comunicar
através de conexões de curta distância. Portanto, convém avaliar uma rede
não apenas pelo seu diamêtro, mas pela distância média entre pares de com-
putadores. Isto leva ao ı́ndice de Wiener definido para um grafo G = (V,A) Índice
de Wienerpor
W (G) =
∑
u,v∈V
d(u, v)
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
18 Fundamentação Teórica
Este valor não corresponde a uma distância média pois não está sendo
dividido pelo número de pares posśıveis dado por
(
|V |
2
)
. Entretanto, esta
medida é válida pois para redes com mesmo número de nodos, a quantidade
posśıvel de pares é a mesma independente da topologia da rede. Logo, o
número de pares pode ser suprimido do cálculo.
1.5 Grafos Eulerianos e Hamiltonianos
Como visto anteriormente no ińıcio deste caṕıtulo, o primeiro e mais famoso
problema na área de Teoria dos Grafos é chamado o problema das pontes de
Königsberg. Ele foi enunciado por Euler em 1736 e consistia em determinarProblema das
Pontes de
Königsberg
se era posśıvel ou não fazer um passeio pela cidade Königsberg começando e
terminando no mesmo lugar, cruzando cada ponte exatamente uma única vez.
A Figura 1.1 mostra as sete pontes que cruzavam o rio Pregel estabelecendo
ligações entre diferentes partes da cidade e as ilhas Kneiphof e Lomse.
O grafo associado ao mapa mostrado na Figura 1.1 é ilustrado na Fi-
gura 1.8. Note que cada aresta é rotulada com uma das pontes mostradas na
Figura 1.1 enquanto que os vértices de v1 a v4 estão associados às diferentes
partes da cidade. O problema então consiste em determinar se é posśıvel ou
não fazer um circuito pelo grafo cruzando cada aresta uma única vez. Se
isto for posśıvel, então o grafo é chamado de grafo euleriano e ao circuito é
dado o nome de circuito euleriano. A principal caracteŕıstica que define umCircuito Euleri-
ano multigrafo euleriano é dada pelo seguinte Teorema.
Figura 1.8: Multigrafo associado ao mapa mostrado na Figura 1.1.
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
1.5 Grafos Eulerianos e Hamiltonianos 19
Teorema 1.5 (Teorema dos Multigrafos Eulerianos). Um multigrafo conexo
G = (V,A) é Euleriano sse todos os vértices de G tiverem grau par. Multigrafos Eu-
lerianos
A demonstração deste teorema, deixada como exerćıcio, além de mostrar
que todo multigrafo Euleriano é um multigrafo par, i.e., possui todos os seus Multigrafo Par
vértices com grau par, mostra também que todo multigrafo par pode ser
decomposto em circuitos. O problema de verificar se um multigrafo possui ou
não um circuito Euleriano está intimamente relacionado a outros problemas
na área de teoria dos grafos, como o problema do Carteiro Chinês. Neste Problema do
Carteiro Chinêsproblema, o carteiro deve entregar cartas da forma mais eficiente posśıvel
visitando cada rua apenas uma única vez. Se o grafo subjacente à região de
entrega das cartas for euleriano então qualquer circuito Euleriano escolhido
será ótimo, porém se o grafo não for euleriano, o carteiro deverá encontrar
um passeio fechado de custo mı́nimo revistando algumas das arestas do grafo.
Se mudarmos sutilmente o problema e ao invés de tentarmos encontrar
um circuito euleriano, tentarmos encontrar uma trilha euleriana, ou seja,
uma trilha que começa em um vértice v e termina em um vértice u passando
por cada aresta do multigrafo uma única vez, seremos levados ao seguinte
teorema.
Teorema 1.6 (Teorema de Multigrafos Semi-Eulerianos). Um multigrafo co-
nexo G = (V,A) possui uma trilha euleriana e consequentemente é chamado Multigrafos
Semi-Eulerianosde semi-euleriano sse tem no máximo dois vértices de grau impar.
A Figura 1.9 ilustra em (a) um grafo euleriano e em (b) um grafo semi-
euleriano. Em (b), as trilhas Eulerianas obrigatoriamente começam em um
dos vértices de grau ı́mpar (vértices cinza), e terminam no outro vértice de
grau ı́mpar (Verifique!).
(a) (b)
Figura 1.9: Exemplo de grafo (a) Euleriano e (b) Semi-Euleriano.
De forma similar aos multigrafos não direcionados, um multigrafo dire-
cionado é euleriano se ele tiver um circuito direcionado euleriano. Note que
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
20 Fundamentação Teórica
embora estejamos fazendo referência a multigrafos direcionados, o teorema
se aplica a pseudografos direcionados, já que estes são diferentes dos multi-
grafos direcionados apenas pela presença de laços. Assim, similarmente ao
Teorema 1.5, temos o seguinte teorema
Teorema 1.7 (Teoremados Multigrafos Direcionados Eulerianos). Um mul-
tigrafo direcionado conexo D = (V,A) é euleriano sse para qualquer vértice
v ∈ V , temos d+(v) = d−(v), i.e, o grau de entrada de v é igual ao seu grau
de sáıda.
A Figura 1.10 mostra o pseudografo direcionado euleriano, comumente
chamado de d́ıgrafo de Bruijn.Dı́grafo de
Bruijn
Figura 1.10: Pseudografo direcionado euleriano - d́ıgrafo de Bruijn.
Se ao invés de focarmos nossa atenção nas arestas ou arcos, focarmos
nos vértices, teremos um outro tipo de problema, que embora aparentemente
seja mais simples, já que ele foca na visita dos vértices e não nas visitas das
arestas ou arcos, é muito mais complexo e que não possui solução eficiente.
Este problema é chamado problema do ciclo hamiltoniano.
Definição 1.7. Um multigrafo é hamiltoniano se ele possuir um ciclo hamil-
toniano, ou seja, um ciclo de espalhamento.Ciclo Hamiltoni-
ano
Um ciclo de espalhamento possui todos os vértices do multigrafo, o qualCiclo de Espa-
lhamento pode ser direcionado ou não. No caso do multigrafo direcionado, um ciclo ha-
miltoniano será um ciclo direcionado. A primeira pessoa a estudar este tipo
de estrutura foi o matemático irlandês Sir W. R. Hamilton. A Figura 1.11
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
1.5 Grafos Eulerianos e Hamiltonianos 21
mostra um exemplo de grafo hamiltoniano, com o ciclo hamiltoniano desta-
cado em vermelho. Este grafo foi a base do jogo chamado Dodecaedro do
Viajante concebido por Sir. Hamilton.
Figura 1.11: Grafo Hamiltoniano.
O problema do ciclo hamiltoniano está intimamente relacionado ao pro-
blema do caixeiro viajante, o qual consiste em encontrar um ciclo de custo Problema do
Caixeiro Via-
jante
mı́nimo que passe por uma série de cidades uma única vez retornando à
cidade de partida. Observe que este problema é muito mais dif́ıcil do que
simplesmente verificar se o grafo associado é hamiltoniano ou não, pois en-
volve a análise de todos os posśıveis ciclos hamiltonianos em busca do ciclo
de menor custo.
Se o multigrafo em análise não contiver um ciclo hamiltoniano, mas con-
tiver um caminho hamiltoniano, ou seja, um caminho que passe por to-
dos vértices do multigrafo porém com o vértice de chegada diferente do
vértice de destino então a este multigrafo é dado o nome de multigrafo
semi-hamiltoniano. Para multigrafos ou pseudografos direcionados, o ca- Multigrafo
Semi-
Hamiltoniano
minho hamiltoniano deve ser direcionado. A Figura 1.12 ilustra um grafo
semi-hamiltoniano. O caminho destacado em vermelho é um caminho ha-
miltoniano. Se existisse uma aresta entre os vértices v e u, este grafo seria
hamiltoniano. Este grafo também é semi-euleriano.
Diferentemente dos grafos eulerianos, não existem condições necessárias
e suficientes para caracterizar um grafo genérico como hamiltoniano ou não.
Alguns resultados são apresentados abaixo
Teorema 1.8 ([2]). Um grafo G = (V,A) com |V | ≥ 3 é hamiltoniano se
δ(G) ≥ |V |/2
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
22 Fundamentação Teórica
Figura 1.12: Grafo Semi-Hamiltoniano.
Teorema 1.9 ([3]). Um grafo G = (V,A) com |V | ≥ 3 é hamiltoniano se
para todo par v e u de vértices não adjacente d(v) + d(u) ≥ |V |.
1.6 Isomorfismo e Automorfismo
Muitas vezes nos deparamos com grafos diferentes mas que possuem a mesma
estrutura, i.e., um poderia estar associado à relação ecológica de diferentes
seres vivos enquanto outro poderia estar associado à relação entre átomos
de um composto qúımico. A identificação e verificação se eles possuem ou
não a mesma estrutura, i.e., se um pode ser mapeado no outro, é muito
relevante para diversos tipos de problemas. Já que se este mapeamento
existe então podemos dizer que estes grafos possuem as mesmas propriedades.
Assim, se um grafo G com propriedades conhecidas consegue ser mapeado
para um grafo D desconhecido, então podemos dizer que D possui as mesmas
propriedades que G. Estas propriedades podem dizer respeito a aspectos
relacionados à planaridade, coloração, cobertura de vértices, entre outros.
Definição 1.8. Dois grafos G1 = (V1, A1) e G2 = (V2, A2) são isomorfos, i.e.,
G1 ∼= G2, se existe uma função bijetora f : V1 → V2, tal que (u, v) ∈ A1 sse
(f(u), f(v)) ∈ A2.
Grafos isomorfos apresentam as mesmas propriedades estruturais que pre-
servam a adjacência entre seus vértices. Por exemplo, os grafos ilustrados
na Figura 1.13 são diferentes entretanto apresentam as mesmas propriedades
estruturais. A Tabela 1.5 mostra um posśıvel mapeamento dos vértices de
G1 para os vértices de G2. Isso faz com que a aresta (0, 5) ∈ A1 seja mapeada
para a aresta (e, d) ∈ A2, e a aresta (0, 4) ∈ A1 seja mapeada para a aresta
(e, c) ∈ A2. Cada aresta em G1 possui uma aresta correspondente em G2
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
1.6 Isomorfismo e Automorfismo 23
(Verifique!). Se pelo menos uma das aresta de G1 não possuir uma corres-
pondente em G2 então a função escolhida não define o isomorfismo entre G1
e G2. Notem que existem inúmeros mapeamentos posśıveis. Outro mape-
amento posśıvel que garante o isomorfismo entre G1 e G2 é a partir desta
tabela alterar as linhas 3 e 4, associando o vértice 2 ao vértice f e o vértice
3 ao vértice a.
(a) (b)
Figura 1.13: Exemplo de grafos isomorfos. O grafo (a) G1 é isomórfico ao
grafo (b) G2 .
Assim entre os requisitos básicos para que dois grafos sejam isomorfos
é que eles possuam a mesma quantidade de vértices e a mesma quantidade
de arestas, i.e., |V1| = |V2| e |A1| = |A2|. Porém verificar se dois grafos
são ou não isomorfos nem sempre é uma tarefa trivial. Suspeita-se que este
problema seja NP-Completo.
V1 V2
0 e
1 b
2 a
3 f
4 c
5 d
Tabela 1.5: Matriz de incidência do d́ıgrafo da Figura 1.4 (b)
Um fato importante é que a função de isomorfismo define uma relação de
equivalência possui as seguintes propriedades:
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
24 Fundamentação Teórica
• Propriedade reflexiva. Uma permutação da identidade dos vértices de
um grafo G1 leva a um grafo G2 que é isomorfico a G1, i. .e, G1 ∼= G2
• Propriedade simétrica. Sejam G1 = (V1, A1) e G2 = (V2, A2), se a
função f : V1 → V2 é uma função que define o isomorfismo entre
G1 e G2, então f
−1 é a função inversa que define o isomorfismo en-
tre G2 e G1. Logo (u, v) ∈ A1 sse (f(u), f(v)) ∈ A2 e (x, y) ∈ A2 sse
(f−1(x), f−1(y)) ∈ A1.
• Propriedade Transitiva. Sejam G1 = (V1, A1), G2 = (V2, A2) e G3 =
(V3, A3), e as funções f : V1 → V2 e h : V2 → V3 sejam funções que
definam a relação de isomorfismo entre os grafos G1 e G2; e G2 e G3,
respectivamente. Como (u, v) ∈ A1 sse (f(u), f(v)) ∈ A2 e (x, y) ∈ A2
sse (h(x), h(y)) ∈ A3, se (x, y) ∈ A2, então existe uma aresta (u, v) ∈ A1
tal que f(u) = x e f(v) = y. Logo, (u, v) ∈ A1 sse (h(f(u)), h(f(v))) ∈
A3. Portanto, a função composta h ◦ f define a relação de isomorfismo
entre G1 e G3, ou seja, G1 ∼= G3.
Logo, a função de isomorfismo define uma classe de equivalência para um
conjunto de grafos, onde dois grafos pertencem a mesma classe sse eles são
isomorfos. Um exemplo de classe isomórfica é a classe chamada “grafos de
Petersen” . Um grafo pertencente a esta classe é ilustrado na Figura 1.14(a).Grafo de
Petersen Este grafo possui vértices que estão associados a subconjuntos de dois elemen-
tos formado a partir do seguinte conjunto S = {1, 2, 3, 4, 5}. Dois vértices são
adjacentes se seus subconjuntos correspondentes forem disjuntos, por exem-
plo, os vértices associados aos subconjuntos {1, 2} e {3, 4} são adjacentes.
Note que o grafo da Figura 1.14(b) éisomorfo ao grafo (a). Grafos de Pe-
tersen são comumente usados como contra-exemplos em provas de teoremas
devido às suas propriedades, as quais serão apresentadas mais adiante. Note
que os grafos ilustrados na Figura 1.14 são formados por dois ciclos disjuntos
de tamanho 5 destacados em preto e vermelho.
A noção de isomorfismo se aplica a multigrafos direcionados, porém ela é
focada na multiciplidade dos arcos dos grafos envolvidos.
Definição 1.9. Dois multigrafos direcionados M1 = (V1, A1) eM2 = (V2, A2)Isomorfismo de
Multigrafos Di-
recionados
são isomorfos, i.e., M1 ∼= M2, se existe uma função bijetora f : V1 → V2, tal
que µ(u, v) = µ(f(u), f(v)), onde (u, v) ∈ A1, (f(u), f(v)) ∈ A2 e µ(u, v) é a
multiplicidade do arco (u, v).
Outro conceito associado ao isomorfismo é o automorfismo.
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
1.6 Isomorfismo e Automorfismo 25
(a) (b)
Figura 1.14: Grafo de Petersen. O grafo (a) G1 é isomórfico ao grafo (b) G2.
Definição 1.10. Um automorfismo de um grafo G = (V,A) é uma per- Automorfismo
mutação dos vértices de G definida por uma função f : V → V de forma que
para cada aresta (v, u) ∈ A implica (f(v), f(u)) ∈ A. Ou seja, a permutação
definida por f não muda a adjacência entre os vértices de G.
Considere um grafo G = (V,A), ilustrado a partir de sua matriz de ad-
jacência mostrada na Tabela 1.6, constitúıdo do seguinte conjunto de vértices
V = {1, 2, 3, 4} e do seguinte conjunto de arestas A = {(1, 2), (2, 3), (3, 4)}.
Se permutarmos os vértices de V fazendo com que o vértice 1 passe a ser o
vértice 4, e o vértice 2 passe a ser o vértice 3, teremos a matriz de adjacência
ilustrada na Tabela 1.7. Reordenando as linhas e colunas desta matriz en-
contramos a matriz original mostrada na Tabela 1.6.
Se por ventura permutarmos apenas o vértice 1 com o vértice 4 mantendo
os vértices 2 e 3 como estão não teremos um automorfismo de G. Esta per-
mutação é ilustrada na Tabela 1.8. Se reordenarmos as linhas e colunas desta
matriz não obteremos a matriz original mostrada na Tabela 1.6 (Verifique!).
Embora este mapeamento leve a um grafo isomorfo ao grafo original, ele não
define um automorfismo. Isto decorre do fato que o conjunto de arestas ge-
rado é {(4, 2), (2, 3), (1, 3)} o que é diferente do conjunto de arestas original,
já que o vértice 4 não era adjacente ao vértice 2 no grafo original.
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
26 Fundamentação Teórica
1 2 3 4
1 0 1 0 0
2 1 0 1 0
3 0 1 0 1
4 0 0 1 0
Tabela 1.6: Matriz de adjacência do Grafo G=(V,A), com V = {1, 2, 3, 4},
A = {(1, 2), (2, 3), (3, 4)})
4 3 2 1
4 0 1 0 0
3 1 0 1 0
2 0 1 0 1
1 0 0 1 0
Tabela 1.7: Matriz de adjacência resultante da permutação dos vértices de
grafo ilustrado na Tabela 1.6.
1.7 Aplicações
Esta seção apresenta alguns exemplos de aplicações do mundo real que en-
volvem Grafos.
1.7.1 Associação de Tarefas
Uma empresa precisa distribuir um conjunto de n tarefas T entre seus n
empregados E, considerando que cada empregado j consegue realizar cada
tarefa i em um dado tempo mij. Qual é a melhor associação entre tarefa e
empregado de forma a minimizar o tempo de realização de todas as tarefas.
Uma instância do problema é mostrada no grafo da Figura 1.15(a). Para faci-
litar a visualização os tempos mij não foram apresentados. A Figura 1.15(b)
mostra a associação escolhida através de arestas mais grossas.
Este problema é um t́ıpico problema de emparelhamento, onde tanto as
tarefas quanto os empregados são os vértices do grafo, e as arestas correspon-
dem a associação entre os empregados e as tarefas. Cada aresta é rotulada
com o tempo de realização da tarefa pelo empregado ao qual está associ-
ada. O objetivo é encontrar a melhor associação entre tarefas e empregados
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
1.7 Aplicações 27
4 2 3 1
4 0 1 0 0
2 1 0 1 0
3 0 1 0 1
1 0 0 1 0
Tabela 1.8: Matriz de adjacência resultante da permutação apenas dos
vértices 1 e 4 de G.
de forma a minimizar a soma dos tempos de realização de todas as tare-
fas. Como não existem arestas entre os empregados nem entre as tarefas,
temos dois conjuntos compostos por vértices não adjacentes entre si. Con-
juntos com esta caracteŕıstica são chamados de conjuntos independentes e
serão discutidos apropriadamente no Caṕıtulo 4.2.
1.7.2 Robótica
Vários problemas da área de robótica estão associados às tarefas de navegação
de robôs em ambientes do tipo escritório. Neste tipo de tarefa, o robô pos-
sui um mapa do ambiente e deve planejar um caminho que o leve de uma
posição a outra evitando colisões com obstáculos. Entre os diversos tipos de
mapas, existe o mapa topológico, que consiste em uma representação do am-
biente utilizando grafos. A Figura 1.16(a) mostra um ambiente e seu grafo
subjacente. Os vértices estão associados às grandes regiões do ambiente e as
arestas indicam como navegar entre estas regiões. Neste exemplo, se o robô
precisar ir da sala A até a sala G, ele pode seguir por vários caminhos, que
podem ser visualizados através dos vértices e arestas do grafo associado. A
Figura 1.16(b) mostra um caminho posśıvel através de arestas mais grossas.
1.7.3 Nichos Ecológicos
Grafos podem ser usados para modelar o relacionamento competitivo en-
tre diferentes espécies de animais em um ecosistema. A competição ocorre
quando indiv́ıduos de uma mesma espécie ou de espécies diferentes disputam
por algum recurso, como por exemplo, alimento. Quando a competição é
grande e desigual, uma espécie pode mudar seus hábitos, migrar para outra
região ou até mesmo ser extinta. Logo, estudar o relacionamento entre as
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
28 Fundamentação Teórica
(a) (b)
Figura 1.15: Associação de tarefas ti ∈ T aos empregados ej ∈ E. (a)
todas as associações (b) a associação escolhida, representada por arestas mais
grossas.
espécies é fundamental para a preservação do ecossistema. Usando grafos,
cada espécie pode ser modelada como um vértice e a competição entre duas
espécies é indicada no grafo através de uma aresta entre os vértices corres-
pondentes. A Figura 1.17 mostra um grafo que modela o relacionamento
competitivo entre diferentes espécies do ecosistema de uma floresta.
1.7.4 Rede de Telefonia Móvel
Veremos no Caṕıtulo 8 que um mapa pode ser desenhado no plano e colorido
propriamente com apenas quatro cores, ou seja, regiões vizinhas possuem
cores diferentes. Para que isto seja posśıvel, as regiões do mapa são associadas
aos vértices do grafo enquanto que a adjacência entre as regiões define as
arestas entre os vértices correspondentes. A partir dáı, cada vértice é colorido
de forma que vértices adjacentes tenham cores distintas. Em um primeiro
instante, pode-se pensar em usar uma cor diferente para cada vértice, porém
problemas de coloração de grafos são problemas de otimização, onde a adição
de uma nova cor implica aumento de custos. Logo, busca-se sempre a menor
quantidade de cores posśıvel.
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
1.7 Aplicações 29
Em 1982, o Groupe Spécial Mobile (GSM) foi criado para desenvolver um
padrão a ser adotado pela telefonia móvel, e em 1991 surgiu a primeira rede
GSM na Finlândia com o apoio da Ericsson. As redes GSM dividem as suas
regiões de cobertura em células hexagonais. Cada célula possui uma torre de
comunicação que gerencia a conexão dos celulares na sua área de cobertura.Os celulares por sua vez procuram células em sua vizinhança imediata de
acordo com sua freqüência de operação. Células adjacentes que possuem
mesma freqüência devem ser evitadas pois uma gera interferência no sinal
da outra. Este fato faz com que o uso de coloração de grafos, em especial
a coloração de mapas, tenha aplicabilidade direta. Por isso, as redes GSM
usam apenas quatro freqüências diferentes devido serem necessárias apenas
quatro cores para colorir propriamente o mapa das regiões das células. Neste
caso, as cores são representadas pelas freqüências de operação.
1.7.5 Reconhecedores de sentenças
Uma máquina teórica para reconhecer sentenças de uma linguagem, como
autômatos finitos determı́nisticos ou finitos não determińısticos, é represen-
tada graficamente através de um d́ıgrafo. Neste d́ıgrafo os vértices represen-
tam os estados da máquina enquanto que os arcos representam as transições
da máquina de um estado para o outro. Por exemplo, o d́ıgrafo da Figura 1.18
representa um autômato finito determińıstico capaz de reconhecer sentenças
formadas pelos śımbolos a e b com uma quantidade ı́mpar de a’s e uma quan-
tidade ı́mpar de b’s. Os vértices são representados por S1, S2, S3 e S4 e os
arcos têm origem e destino neste conjunto. Note que a seta que não possui
origem em um destes estados e tem destino em S1, tem a função apenas de
indicar o estado inicial da máquina, portanto não é um arco do d́ıgrafo.
1.7.6 Redes Neurais Artificiais
Uma rede neural artificial é um modelo computacional utilizado na área de
Inteligência Artificial para simular o funcionamento do cérebro humano. Ela
é representada graficamente na forma de um d́ıgrafo, onde cada vértice cor-
responde a um neurônio artificial e os arcos representam as conexões entre
os neurônios, chamadas sinapses. As sinapses possuem um peso associado
que pondera o sinal que flui entre os neurônios. Existem inúmeras formas de
organização destes neurônios sendo a mais comum a estrutura multicamada
mostrada na Figura 1.19. Nela a rede é organizada em camada de entrada,
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
30 Fundamentação Teórica
camadas escondidas e camada de sáıda. Na figura, estas camadas são re-
presentadas pelas letras A, B e C, respectivamente. O sinal flui da camada
de entrada até a camada de sáıda de acordo com a orientação das sinapses.
Portanto, o padrão de entrada é fornecido para a rede na camada de entrada
e a rede produz um padrão de sáıda. O padrão de entrada poderia ser a
postura (x, y, θ) de um robô em um ambiente e a sáıda poderia ser a variação
angular ϕ a ser aplicada em suas rodas dianteiras para fazê-lo atingir uma
posição destino.
1.8 Exerćıcios
Exerćıcio 1.1. Mostre usando prova por indução que a soma total dos graus
de todos os vértices de um grafo é sempre par
Exerćıcio 1.2. Mostre que para qualquer grafo, o número de vértices com
grau ı́mpar é par.
Exerćıcio 1.3. Verifique se a seqüência de graus 3, 3, 3, 3, 3, 2, 2, 1 é gráfica.
Se for desenhe o grafo simples correspondente.
Exerćıcio 1.4. Dado um grafo simples G = (V,A), com |V | = n qual é o
significado de
∑n
j=1 ai,j para uma dada linha i da matriz de adjacência de G?
Exerćıcio 1.5. Sendo M a matriz de adjacência de um grafo G, qual é o
significado combinatorial de M2, ou seja, do produto M.M?
Exerćıcio 1.6. Mostre que todo passeio de v até w contém um caminho de
v até w.
Exerćıcio 1.7. Mostre que todo grafo G simples com um caminho de compri-
mento δ(G) ≥ 2 possui um ciclo de comprimento igual a no mı́nimo δ(G)+1.
Exerćıcio 1.8. Mostre que se D é um d́ıgrafo com δ+(D) ≥ 1 (ou δ−(D) ≥
1), então D contém um ciclo.
Exerćıcio 1.9. Mostre que um grafo G de raio(G) ≤ k e ∆(G) ≥ 3 tem um
número de vértices inferior a 1 + ∆(G)
∆(G)−2(∆(G)− 1)
k.
Exerćıcio 1.10. Mostre que com um conjunto de n vértices distintos é
posśıvel gerar 2
(
n
2
)
grafos simples.
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
1.8 Exerćıcios 31
Exerćıcio 1.11. Mostre que todo d́ıgrafo aćıclico(sem ciclos) possui vértice
fonte e um vértice sumidouro.
Exerćıcio 1.12. Mostre que um grafo simples G = (V,A) com δ(G) > 0 e
|A| < |V | possui pelo menos dois vértices de grau 1.
Exerćıcio 1.13. Mostre que todo grafo com dois ou mais vértices tem pelo
menos dois vértices de mesmo grau.
Exerćıcio 1.14. Mostre que um multigrafo conexo G = (V,A) é Euleriano
sse o grau de todos os vértices de G for par.
Exerćıcio 1.15. Mostre que dois vértices não adjacentes em um grafo de
Petersen tem exatamente 1 vizinho em comum.
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
32 Fundamentação Teórica
(a)
(b)
Figura 1.16: Mapa topológico de um ambiente do tipo escritório. (a) mostra o
ambiente e o mapa topológico na forma de um grafo (b) destacada o caminho
escolhido para ir da sala A até a sala G.
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
1.8 Exerćıcios 33
Figura 1.17: Relacionamento competitivo entre espécies. Figura traduzida
do Livro [4].
Figura 1.18: Representação gráfica de um autômato finito determińıstico
para reconhecer sentenças.
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
34 Fundamentação Teórica
Figura 1.19: Rede neural multicamada composto por 1 camada de entrada,
1 camada oculta e 1 camada de sáıda.
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
Caṕıtulo 2
Tipos de Grafos e Operações
Este caṕıtulo apresenta diversos tipos especiais de grafos e a notação utili-
zada, algumas operações unárias e binárias e exemplos de aplicações. Ini-
cialmente, apresentamos conceitos referentes a grafos completos, vazios, to-
talmente desconexo, entre outros. Em seguida, serão apresentadas algumas
operações como complemento, união, remoção de vértices e arestas.
2.1 Grafos Especiais
Esta seção apresenta algumas classes de grafos comumente usados em diversas
aplicações e também como contra-exemplos.
Grafo Trivial
Um grafo trivial é um grafo com 1 ou nenhum vértice. Quando o grafo não
possui vértices, ele é chamado de grafo vazio. Este tipo de grafo é tipicamente Grafo Vazio
usado como passo inicial em provas por indução e como contra exemplo em
alguns tipos de problemas.
Grafo Totalmente Desconexo
Um grafo totalmente desconexo não possui arestas unindo seus vértices.
Grafo Completo ou Totalmente Conexo
Um grafo completo com n vértices, denotado por Kn, é um grafo simples
que possui uma aresta entre qualquer par de vértices. Devido a isto, este
grafo possui exatamente 1
2
n(n − 1) arestas. A Figura 2.1 mostra alguns
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
36 Tipos de Grafos e Operações
grafos completos com (a) 4 (b) 3 (c) 2 e (d) 1 vértices.
(a) (b) (c) (d)
Figura 2.1: Grafos Completos (a)K4 (b) K3 (c) K2 e (d) K1.
Uma definição similar pode ser aplicada aos d́ıgrafos. Um d́ıgrafo é com-
pleto se para qualquer par de vértices x e y, como x 6= y existem os doisDı́grafo Com-
pleto arcos simétricos (x, y) e (y, x). Vários autores usam a mesma notação de
grafo completo para d́ıgrafo completo, ou seja, Kn para um d́ıgrafo ou grafo
completo com n vértices. Neste livro adotaremos esta prática e enfatizaremos
se Kn refere-se a um d́ıgrafo ou a grafo. Um d́ıgrafo é semicompleto se paraDı́grafo Semi-
completo cada par de vértices distintosx e y, existe ou o arco (x, y) ou o arco (y, x)
ou ambos.
Grafo Regular
Um grafo G = (V,A) é regular de ordem r se todos os seus vértices
tiverem o grau r, ou seja, ∀v ∈ V,
δ(G) = ∆(G) = d(v) = r
Este tipo de grafo também é chamado de grafo r-regular. Note que todo
grafo completo Kn é um grafo (n− 1)-regular.
Grafo caminho
Um grafo G = (V,A) é um grafo caminho, Pn, composto por n vértices
se ele corresponder a exatamente um caminho de comprimento n− 1. Neste
caso, os vértices inicial e final do caminho possuem grau igual a 1, enquanto
que os demais possuem grau igual a 2.
Grafo Ciclo
Um grafo ciclo Cn, com n ≥ 3, é composto por n vértices e n arestas que
juntos formam um ciclo de tamanho n. Todos os vértices de Cn possuem
grau igual a 2, logo, ele é um grafo 2-regular. A Figura 2.1(b) mostra um
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
2.1 Grafos Especiais 37
grafo completo K3 que é também um grafo ciclo C3. A Figura 2.2 mostra os
grafos (a) C4, (b) C5 e (c) C6 .
(a) (b) (c)
Figura 2.2: Grafos Ciclo (a) C4 (b) C5 e (c) C6.
Grafo Roda
Um grafo roda Wn, com n ≥ 3, é igual ao grafo Cn adicionado de mais
um vértice, o qual é adjacente a todos os demais. Um grafo Wn possui n+ 1
vértices e 2n arestas, onde o vértice adicionado ao Cn possui grau igual a n
e os demais vértices grau igual a 3. A Figura 2.3 mostra os grafos (a) W4 e
(b) W5.
(a) (b)
Figura 2.3: Grafos Roda (a) W4 e (b) W5.
Grafo Estrela
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
38 Tipos de Grafos e Operações
Um grafo estrela Sn, com n > 1, é igual a um grafo Wn sem as arestas
que compõem o grafo Cn. Um grafo Sn possui n+1 vértices e n arestas, onde
o vértice central possui grau igual a n, enquanto que os demais vértices grau
possuem igual a 1. A Figura 2.4 mostra os grafos (a) S3 e (b) S5.
(a) (b)
Figura 2.4: Grafos Estrela (a) S3 e (b) S5.
Grafo k-cubo
Um grafo k-cubo, ou hipercubo k-dimensional, denotado por Qk, é um
grafo cujos vértices são formados por seqüências binárias de tamanho k. Dois
vértices são adjacentes neste grafo se suas seqüências correspondentes diferi-
rem em apenas uma posição. Além disso, ele é um grafo regular de grau k.
A Figura 2.5 mostra (a) um grafo Q1 (b) um grafo Q2 e (c) um grafo Q3 .
(a) (b) (c)
Figura 2.5: Grafos k-Cubo (a) Q1 (b) Q2 e (c) Q3.
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
2.2 Operações com grafos 39
2.2 Operações com grafos
Em diversos momentos, é necessário realizar algumas operações em grafos
isolados ou pares de grafos. Elas podem ser desde operações para remoção
de vértice/aresta até contrações. Abaixo, apresentamos as operações co-
mumente utilizadas. Nas definições, utilizaremos os seguintes grafos G =
(V,A, φ), G1 = (V1, A1, φ1) e G2 = (V2, A2, φ2). Como na maioria das vezes,
a função de incidência φ destes grafos será a função identidade, então ela será
omitida por conveniência.
2.2.1 União
Dados dois grafos (ou d́ıgrafos) G1 e G2, definimos a operação de união
por G1 ∪ G2. O grafo resultante G = (V1 ∪ V2, A, φ), tem seu conjunto de
vértices oriundo da união dos conjuntos de vértices dos grafos originais. Por
outro lado, o conjunto de arestas A inicialmente é igual a A1, i.e., A = A1 e
φ(e) = φ1(e) ∀e ∈ A1. Cada aresta e′ ∈ A2 deve analisada cuidadosamente
antes de ser inserida em A, pois uma aresta rotulada e′ pode pertencer tanto
a A2 quanto a A1 com φ1(e) pode ser diferente de φ2(e). Sendo assim, para
cada e′ ∈ A2, temos as seguintes situações
• se e′ /∈ A, adicionamos e′ em A e assumimos φ(e′) = φ2(e′).
• se e′ ∈ A e φ(e′) 6= φ2(e′), criamos uma nova aresta em A para e′, por
exemplo e′′ e a adicionamos em A fazendo φ(e′′) = φ2(e
′).
A Figura 2.6(c) ilustra a união de dois grafos (a) G1 e (b) G2.
(a) (b) (c)
Figura 2.6: A aplicação da operação de união dos grafos (a) G1 e (b) G2
resulta no grafo (c) G = G1 ∪G2.
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
40 Tipos de Grafos e Operações
2.2.2 Junção
A operação de junção, representada por + ou ∗, é efetuada em dois grafos G1
e G2 com conjuntos disjuntos de vértices e gera um novo grafo G = G1 +G2,
onde G = (V,A), V = V1 ∪ V2 e A = A1 ∪ A2 ∪ A3, onde A3 é formado
por todos pares não ordenados {v, w}, onde v ∈ V1 e w ∈ V2. Note que
|V | = |V1|+ |V2| e |A| = |A1|+ |A2|+ |V1||V2|. A Figura 2.7 ilustra a junção
dos grafos G1 e G2 produzindo o grafo G. As arestas mais grossas em (c) são
as arestas novas, enquanto que as arestas mais finas são as arestas originais
de G1 e G2.
(a) (b) (c)
Figura 2.7: A aplicação da operação de junção os grafos (a) G1 e (b) G2
resulta no grafo (c) G = G1 +G2.
2.2.3 Intersecção
A intersecção de dois grafos G1 com G2 é denotada por G1 ∩ G2 e gera
um grafo G = G1 ∩ G2, onde G = (V1 ∩ V2, A1 ∩ A2). Note que G possui
conjuntos de vértices e de arestas que pertencem tanto a G1 quanto a G2. Se
G = ∅ então G é um grafo trivial (ver Seção 2.1), caso contrário se V1 ⊂ V2
e A1 ⊂ A2, então G = G1, tendo G1 como subgrafo de G2. A Figura 2.8
ilustra a intersecção de G1 e G2 produzindo G = G1 ∩G2.
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
2.2 Operações com grafos 41
(a) (b) (c)
Figura 2.8: Operação de intersecção dos grafos (a) G1 e (b) G2 resulta no
grafo (c) G = G1 ∩G2.
2.2.4 Produto
O produto de dois grafos, G1 e G2, é denotado por G1 ×G2 e gera um grafo
G = G1 × G2, onde V = V1 × V2 é o conjunto de todos os pares formados
pelos vértices de V1 e V2 e A é o conjunto de arestas geradas da seguinte
maneira. Considere pi = (ui, wi) e pj = (uj, wj) dois vértices do conjunto V ,
i.e., pi, pj ∈ V , onde ui, uj ∈ V1 e wi, wj ∈ V2. Eles são adjacentes se ui = uj
e (wi, wj) ∈ A2 ou wi = wj e (ui, uj) ∈ A1. O grafo G resultante possui
|V | = |V1||V2| vértices e |A| = |V1||A2|+ |V2||A1| arestas.
A Figura 2.9 mostra (c) o grafo resultante do produto dos grafos (a) e
(b). Note que os vértices em (c) são os pares ordenados dos vértices dos
grafos (a) e (b), enquanto que as arestas foram geradas a partir da análise
dos componentes dos pares associados às suas extremidades. Por exemplo,
a aresta {(u1, w1), (u1, w2)} existe pois os primeiros componentes dos pares
(u1, w1) e (u1, w2) são iguais e existe aresta entre w1 e w2 no grafo mostrado
em (b).
2.2.5 Complemento
O complemento de um grafo G = (V,A), denotado por Ḡ = (V,A1) é um
grafo cujo conjunto de vértices é o mesmo de G, e com um conjunto de arestas
definido da seguinte maneira A1 = {{u, v} : ({u, v} ∈ P(V )−A)∧ (u 6= v)},
ou seja, o conjunto A1 é formado por todas as arestas que correspondem aos
pares não ordenados que não pertencem ao conjunto de arestas de G e não
correspondem a laços. O complemento de um grafo Kn é um grafo com n
vértices totalmente desconexo, e o complemento de um grafo desconexo de n
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
42 Tipos de Grafos e Operações
(a) (b) (c)
Figura 2.9: Operação de produto. (c) mostra o resultado do produtos dos
grafos em (a) e (b).
vértices é um grafo completo Kn. O complemento dos grafos mostrados nas
Figuras 2.8(b) e (c) é apresentado nas Figuras 2.10 (a) e (b), respectivamente.
(a) (b)
Figura 2.10: Operação de complemento. (a) e (b) mostram o complemento
dos grafos das Figuras 2.8(b) e (c), respectivamente.
Quando um grafo é isomórfico ao seu complemento, então ele é chamado
de grafo autocomplementar. Grafos Isomórficos são discutidos em detalhes no
Caṕıtulo 1.6.Porém podemos adiantar informalmente, que dois grafos são
isomórficos se eles possuem a relação de adjacência (estrutural) entre seus
vértices. Figura 2.11(a) mostra um grafo G autocomplementar, e (b) seu
complemento, Ḡ. Observe que tanto G quanto Ḡ correspondem a um C5.
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
2.2 Operações com grafos 43
(a) (b)
Figura 2.11: Grafo autocomplementar. (a) grafo exemplo e (b) seu comple-
mento.
2.2.6 Remoção
A operação de remoção aplicada a um grafo G = (V,A) retira ou um con-
junto de arestas ou um conjunto de vértices e as arestas incidentes neste
conjunto. Para um grafo G, a remoção de um vértice v, representada por
G − v, causa a remoção tanto de v quanto das arestas incidentes a v. En-
quanto que a operação G − e, com e = {u, v}, leva à retirada da aresta
{u, v}.
Seja Sv ⊆ V , então G1 = G−Sv é o grafo resultante da retirada de todos
os vértices v ∈ Sv e de suas arestas incidentes. Logo, G1 = (V1, A1) onde
V1 = V − Sv e A1 = {(u,w) ∈ A : u,w ∈ V1}. Observe que G1 = G[V − Sv],
ou seja, é G1 é o subgrafo de G induzido por V − Sv.
Seja Sa ⊆ A, então G2 = G − Sa é o grafo resultante da retirada das
arestas a ∈ Sa. Logo, G2 = (V2, A2) onde V2 = V e A2 = A − Sa, i.e.,
G2 = G[A − Sa] é o subgrafo de G induzido por Sa. A Figura 2.12 ilustra
(a) um grafo G e os grafos (b) G − Sv e (c) G − Sa, onde Sv = {1, 2}
e Sa = {{1, 2}, {1, 4}, {1, 5}, {4, 5}, {2, 5}}. Note que os grafos (b) e (c)
correspondem aos grafos induzidos G[V − Sv] e G[A− Sa], respectivamente.
2.2.7 Contração
Uma operação de contração, também chamada de arco-contração, em um
grafo G afeta uma aresta a, em particular, a transformando em um novo
vértice v. Esta operação é representada por G/a e consiste na remoção da
aresta a = {u,w} e de seus vértices u e w e subsequente inserção de um novo
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
44 Tipos de Grafos e Operações
(a) (b) (c)
Figura 2.12: Exemplo da aplicação da operação de remoção. (a) grafo
G, (b) grafo G − Sv e (c) grafo G − Sa, onde Sv = {1, 2} e Sa =
{{1, 2}, {1, 4}, {1, 5}, {4, 5}, {2, 5}}.
vértice v e re-ligação das arestas incidentes tanto a u quanto a w em G a
este novo vértice. Esta operação é particularmente importante para verificar
a planaridade de certos grafos e para o cálculo do número de árvores de
espalhamento de um grafo, como será discutido adiante no Caṕıtulo 7 e 6.3.
Dependendo do grafo e da aresta escolhida é posśıvel que um grafo simples
passe a ser multigrafo, ou um multigrafo passe a ser pseudografo.
A Figura 2.13 ilustra (a) um grafo G e (b) a operação arco-contração G/a
aplicada à aresta a. A aresta a deu origem ao vértice v, e todas as arestas
incidentes às extremidades de a são agora incidentes em v. Enquanto G é
simples, G/a é um multigrafo. (c) mostra a operação de arco-contração no
grafo G/a aplicada à aresta b, produzindo (G/a)/b. A aresta b deu origem
ao vértice m e a um laço. O multigrafo G/a passou a ser um pseudografo
(G/a)/b.
2.2.8 Supressão e Subdivisão
A operação de supressão de um vértice é realizada apenas em vértices de
grau 2 e consiste no seguinte processo. Seja G = (V,A) um grafo qualquer
e v um vértice adjacente a dois vértices u e w. A operação de supressão
de v, remove v do conjunto V e cria uma aresta entre u e w produzindo
um novo grafo G′ = (V ′, A′). O grafo G′ é chamado grafo reduzido de G
ou grafo homeomorficamente reduzido de G. Ele possui V ′ = V − v eGrafo Homeo-
morficamente
Reduzido
A′ = A− A1 + {u,w}, com A1 = {(v, u), (v, w)}.
A operação inversa é chamada subdivisão de arestas. Ela consiste em
Subdivisão de
Grafo
inserir vértices de grau 2 nas arestas do grafo criando subdivisões de ares-
tas. Esta operação funciona da seguinte maneira. Seja G = (V,A) um grafo
qualquer, v um vértice novo e uma aresta a = {u,w}. A operação de sub-
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
2.2 Operações com grafos 45
(a) (b) (c)
Figura 2.13: Operação de arco-contração aplicada (a) ao grafo G na aresta a,
resultado em (b) no grafo G/a. A figura (c) mostra o resultado da operação
(G/a)/b.
divisão de a, remove a aresta a, i.e., G − {u,w}, e cria duas novas arestas
{u, v} e {v, w}. produzindo um novo grafo G′ = (V ′, A′). Este grafo possui
V ′ = V ∪ {v} e A′ = A − {u,w} + A1, com A1 = {(v, u), (v, w)}. Logo,
dizemos que G′ é uma subdivisão de G.
As Figuras 2.14(a) e (b) ilustram os resultados das operações de subdi-
visão e de supressão, respectivamente. (a) é subdivisão de (b) obtida a partir
da subdivisão da aresta {4, 3} de (b). Enquanto que (b) é um grafo reduzido
de (a), obtido a partir da supressão do vértice 7.
2.2.9 Decomposição
A operação de decomposição de um grafo G gera um conjunto de subgrafos
G1, G2, . . . tal que cada aresta de G aparece exatamente uma única vez em um
único subgrafo, ou seja, considerando que o conjunto de arestas do grafo Gi
é Ai, temos Ai ∩Aj = ∅, ∀ i 6= j. Os subgrafos gerados podem compartilhar
vértices, entretanto não podem compartilhar arestas. Em algumas áreas, a
decomposição é uma ferramenta útil, pois é posśıvel isolar cada parte do
grafo, estudá-las separamente e em seguida combinar os resultados obtidos.
O grafo 3-cubo, Q3, mostrado na Figura 2.15(a) é decomposto em 4
caminhos P4 ilustrados em (b). Estes caminhos são mostrados através de
arestas grossas e finas. Considerando apenas os vértices temos os caminhos
(1, 2, 6, 5), (3, 1, 5, 7), (2, 4, 8, 6) e (8, 7, 3, 4).
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
46 Tipos de Grafos e Operações
(a) (b)
Figura 2.14: Operações de Supressão e Subdivisão. (a) é uma subdivisão do
grafo em (b), e (b) é um grafo reduzido de (a).
2.2.10 Operador Linha L
Para facilitar a solução de certos problemas, convém realizar o mapeamento
das linhas do grafo para vértices e vice-versa. Este mapeamento é realizado
pelo operador L, o qual recebe como operando um grafo(ou um d́ıgrafo) e
retorna um novo grafo (ou digrafo), chamado grafo linha (ou d́ıgrafo linha).Grafo Linha
Dı́grafo Linha Dado um grafo G = (V,A), o grafo linha L(G) = (VL, AL) correspondente
é constrúıdo da seguinte maneira. Cada aresta {v, u} ∈ A dá origem a um
vértice vu em L(G), i.e., um vértice vu ∈ VL se e somente se {v, u} ∈ A. A
adjacência entre os vértices em L(G) é definida da seguinte maneira. Dois
vértices distintos uv, xw ∈ VL são adjacentes se as arestas correspondentes
em G são adjacentes, i.e., {u, v} ∩ {x,w} 6= ∅.
A Figura 2.16(a) mostra um grafo simples G composto de arestas com
rótulos a − f , enquanto que (b) mostra o grafo linha L(G) correspondente.
Cada aresta em (a) é mapeada para um vértice em (b). A adjacência dos
vértices em L(G) é dada pela adjacência das arestas em G. Por exemplo,
o vértice a em L(G) é adjacente aos vértices b, e, f , pois em G a aresta a é
adjacente às arestas b, e, f , ou seja, ela compartilha vértices com as arestas
b, e, f . O mesmo ocorre com o vértice c em L(G). Ele é adjacente aos vértices
b, d, f , pois a aresta c no grafo G compartilha vértices com as arestas b, f, d.
Um d́ıgrafo linha é constrúıdo a partir de idéias similares levando em
consideração a orientação dos arcos do d́ıgrafo original. Dado um d́ıgrafo
D = (V,A), o d́ıgrafo linha L(D) = (VL, AL) correspondente é constrúıdo da
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
2.3 Exerćıcios 47
(a) (b)
Figura 2.15: Decomposição do (a) grafo Q3 em (b) quatro grafos P4.
seguintemaneira. Cada arco (v, u) ∈ A dá origem a um vértice vu em L(D)
e existe um arco com origem em vu ∈ AL e destino em xw ∈ AL se e somente
se para os arcos correspondentes (v, u) e (x,w) em D, u = x, ou seja, se o
vértice destino u do arco (v, u) for igual ao vértice origem do arco (x,w).
A Figura 2.17(a) mostra um d́ıgrafo simples D = (V,A) composto de
arestas com rótulos a− f , enquanto que (b) mostra o d́ıgrafo linha L(D) =
(VL, AL) correspondende. Cada arco em (a) é mapeado para um vértice em
(b). A adjacência entre os vértices em L(D) é dada considerando a orientação
dos respectivos arcos.
Grafos Linha são importantes em diversos problemas, como o problema
de coloração de arestas. Para colorir as arestas de um grafo G podemos usar
as técnicas padrão de coloração de vértices porém no grafo L(G). O cálculo
dos emparalhemanto maximais segue a mesma idéia. Para encontrar os em-
parelhamentos maximais de um grafo G, podemos empregar o método para
encontrar os conjuntos independente em L(G). Estes problemas serão discu-
tidos nas Seções 4.5 e 8, sobre emparelhamento e coloração, respectivamente.
2.3 Exerćıcios
Exerćıcio 2.1. Determine o número de arcos de um d́ıgrafo completo Kn.
Exerćıcio 2.2. Mostre que um grafo Kn possui
1
2
n(n− 1) arestas.
Exerćıcio 2.3. Determine quantas arestas e quantos vértices possui um Qk.
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
48 Tipos de Grafos e Operações
(a) (b)
Figura 2.16: Grafo linha (b) L(G) do grafo G em (a).
Exerćıcio 2.4. Determine o grafo resultante da operação K2 +K3.
Exerćıcio 2.5. Determine o grafo resultante da operação de arco contração
na aresta {4, 7} no grafo na Figura 2.14(a). Em seguida o compare com o
grafo mostrado na Figura 2.14(b).
Exerćıcio 2.6. Mostre que o número máximo de aresta entre todos os p
vértices de um grafo com nenhum triângulo é dp2/4e
Exerćıcio 2.7. Dado um grafo G(V,A), mostre que para qualquer vértice v,
dG(v) + dḠ(v) = n− 1, onde dG(v) é o grau do vértice v no grafo G.
Exerćıcio 2.8. Prove ou refute : Se todo vértice de um grafo simples G =
(V,A), com |V | = n, tiver grau 2, então G é um grafo Cn.
Exerćıcio 2.9. Mostre que se G é um grafo simples então diam(G) ≥ 3
implica diam(Ḡ) ≤ 3.
Exerćıcio 2.10. Mostre que Kn+p = Kn +Kp, i.e., a junção de dois grafos
completos Kn e Kp é um grafo completo Kn+p.
Exerćıcio 2.11. Mostre que o complemento de um caminho de comprimento
3 é um caminho de comprimento 3.
Exerćıcio 2.12. Mostre que para qualquer Grafo G com 6 vértices, G ou Ḡ
possui um triângulo.
Exerćıcio 2.13. Prove que G ∼= H sse Ḡ ∼= H̄.
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
2.3 Exerćıcios 49
(a) (b)
Figura 2.17: Dı́grafo linha (b) L(D) do d́ıgrafo D em (a).
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
50 Tipos de Grafos e Operações
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
Caṕıtulo 3
Conectividade
Em vários problemas do mundo real é necessário verificar se existe ou não
pelo menos um caminho entre um par de vértices u e v. Se este caminho
existe e caso venha a ser bloqueado, é posśıvel ir de u para v (ou o contrário)
através de um caminho alternativo? Se sim, por quantos caminhos alternati-
vos? Responder estas e outras perguntas deste tipo é do interesse de diversas
áreas, entre elas robótica e redes de computadores. Na robótica móvel, exis-
tem diversos algoritmos baseados em busca em grafos que encontram um
caminho ou o caminho mais curto entre duas posições desejadas a partir de
um mapa dado, como discutido na Seção 1.7.2. Algoritmos, como estes, po-
dem ser utilizados para planejar caminhos para robôs não-tripulados aéreos
ou aquáticos; ou na área de redes de computadores, para a transmissão de
dados entre computadores geograficamente distante.
Nos exemplos acima, comentamos brevemente apenas a descoberta de ca-
minhos entre dois pontos, porém de igual importância é considerarmos esta
descoberta de caminhos quando ocorrem falhas. Por exemplo, se o cami-
nho que um robô está seguindo estiver bloqueado por um obstáculo móvel, é
posśıvel atingir a posição desejada por um caminho alternativo? Se durante
a transmissão de um pacote, um computador, que faz parte do caminho que
o pacote deverá seguir, falhar, este pacote será perdido ou seguirá por um
caminho alternativo? Notem que em ambos os casos, é importante sabermos
se existem ou não vários caminhos entre qualquer par de vértices e se não
existirem, quais pares de vértices poderão ser afetados caso surja algum im-
previsto? No caso da rede de computadores, a falha em um computador pode
fazer com que uma parte da rede não se comunique mais com a(s) outra(s).
Este seria o mesmo caso de um rompimento de um cabo de fibra ótica que
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
52 Conectividade
liga dois servidores. Identificar o(s) computador(es) que gera(m) esta des-
conexão é extremamente importante, pois é posśıvel tomar uma providência
de forma a aumentar a tolerância a este tipo de falha. No caso de um robô
móvel, este poderá ficar parado economizando energia ou retornar ao seu
ponto de partida. Este caṕıtulo apresenta os aspectos teóricos subjacentes
aos questionamentos apresentados.
3.1 Relação de Vizinhança Estendida e Fe-
chamento Transitivo
Na Seção 1.2 definimos as funções multivaloradas τ , τ+ e τ−, onde a função
τ permite calcular os vértices vizinhos a um dado vértice em um grafo, en-
quanto que as funções τ+ e τ− permitem determinar os vértices atinǵıveis e
que atingem um dado vértice em um d́ıgrafo, respectivamente. Estas funções
podem ser estendidas para considerar ao invés de um único vértice um sub-
conjunto de vértices.
Dados um grafo G = (V,A) e um d́ıgrafo D = (Vd, Ad), definimos a
extensão das funções multivaloradas τ , τ+ e τ−, como
Γ(S) =
⋃
v∈S
τ(v), Γ+(Sd) =
⋃
v∈Sd
τ+(v) e Γ−(Sd) =
⋃
v∈Sd
τ−(v)
onde S e Sd são subconjuntos não-vazio de vértices, S ⊆ V , Sd ⊆ Vd; Γ : 2V ;
2V é a função estendida de vizinhança; Γ+ : 2Vd ; 2Vd é a função estendidaFunções Esten-
didas de Vizi-
nhança em Gra-
fos e Dı́grafos
de vizinhança direta; e Γ− : 2Vd ; 2Vd é a função estendida de vizinhança
inversa. A função Γ(S) mapeia S para o conjunto de vértices vizinhos aos
vértices v ∈ S, enquanto que as funções Γ+(Sd) e Γ−(Sd) mapeiam Sd para o
conjunto dos vértices atinǵıveis a partir de e que atingem os vértices vd ∈ Sd,
respectivamente. Por definição Γ(∅) = Γ+(∅) = Γ−(∅) = ∅.
Estas funções podem ser aplicadas sucessivamente para calcular os vizi-
nhos de um vértice v a uma dada distância. Por exemplo, a composição
Γ(Γ({v})) = Γ2({v}) fornece todos os vértices atinǵıveis por um passeio de
comprimento 2 a partir de v, enquanto que Γn({v}), retorna todos os vértices
atinǵıveis por um passeio de comprimento n. Analogamente, podemos apli-
car sucessivamente as funções Γ+ e Γ−. Por exemplo, Γ+n({v}) fornece todos
os vértices atinǵıveis por um passeio direcionado de comprimento n a partir
de v, enquanto que Γ−n({v}) retorna todos os vértices que atingem v através
de um passeio direcionado de comprimento n.
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
3.1 Relação de Vizinhança Estendida e Fechamento Transitivo 53
Considere o grafo da Figura 3.1(a) e os seguintes conjuntos de vértices
V1 = {1}, V2 = {2, 3} e V3 = {3, 4}. Abaixo são listados os resultados da
aplicação da função Γ nestesconjuntos.
Γ(V1) = Γ({1}) = τ(1) = {5};
Γ(V2) = Γ({2, 3}) = τ(2) ∪ τ(3) = {5, 6} ∪ {5, 4} = {4, 5, 6}
Γ(V3) = Γ({3, 4}) = τ(3) ∪ τ(4) = {5, 4} ∪ {3, 6} = {3, 4, 5, 6}
Usando o resultado anterior, calculamos Γ2 para cada conjunto novamente
Γ2(V1) = Γ(Γ(V1)) = Γ({5}) = {1, 2, 3, 6};
Γ2(V2) = Γ(Γ(V2)) = Γ({4, 5, 6}) = τ(4) ∪ τ(5) ∪ τ(6) = {1, 2, 3, 4, 5, 6}
Γ2(V3) = Γ(Γ(V3)) = Γ({3, 4, 5, 6}) = τ(3)∪τ(4)∪τ(5)∪τ(6) = {1, 2, 3, 4, 5, 6}
(a) (b)
Figura 3.1: Aplicação da função multivalorada no grafo em (a) e no d́ıgrafo
em (b).
Para o d́ıgrafo da Figura 3.1(b), encontramos os resultados abaixo para a
aplicação das funções Γ+ e Γ− nos conjuntos de vértices V1 = {1}, V2 = {2, 3}
e V3 = {3, 4}.
Γ+(V1) = τ
+(1) = {3, 5}
Γ+(V2) = τ
+(2) ∪ τ+(3) = {6} ∪ {5} = {5, 6}
Γ+(V3) = τ
+(3) ∪ τ+(4) = {5} ∪ {3} = {3, 5}
Γ−(V1) = τ
−(1) = ∅
Γ−(V2) = τ
−(2) ∪ τ−(3) = {5} ∪ {1, 4} = {1, 4, 5}
Γ−(V3) = τ
−(3) ∪ τ−(4) = {1, 4} ∪ {6} = {1, 4, 6}
A aplicação das funções Γ+2 e Γ−2 nos conjuntos V1, V2 e V3 resulta em
Γ+2(V1) = Γ
+({3, 5}) = τ+(3) ∪ τ+(5) = {2, 5, 6}
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
54 Conectividade
Γ+2(V2) = Γ
+({5, 6}) = τ+(5) ∪ τ+(6) = {2, 4, 6}
Γ+2(V3) = Γ
+({3, 5}) = τ+(3) ∪ τ+(5) = {2, 5, 6}
Γ−2(V1) = Γ
−(∅) = ∅;
Γ−2(V2) = Γ
−({1, 4, 5}) = τ−(1) ∪ τ−(4) ∪ τ−(5) = {1, 3, 6}
Γ−2(V3) = Γ
−({1, 4, 6}) = τ−(1) ∪ τ−(4) ∪ τ−(6) = {2, 5, 6}
A partir das funções estendidas de vizinhança para grafos e d́ıgrafos,
podemos definir a função de fechamento transitivo Γ̂ : V ; 2V para grafos,Função de Fe-
chamento Tran-
sitivo
e as funções de fechamento transitivo direto Γ̂+ : Vd ; 2
Vd e inverso Γ̂− :
Vd ; 2
Vd para d́ıgrafos. Dado um vértice v, a função Γ̂(v) é definida por
Γ̂(v) = {v} ∪ Γ({v}) ∪ Γ2({v}) ∪ . . . ∪ Γn({v}) ∪ . . .
e retorna todos os vértices que são atinǵıveis a partir de v através de um
passeio de qualquer comprimento. A função Γ̂+(v) é definida por
Γ̂+(v) = {v} ∪ Γ+({v}) ∪ Γ+2({v}) ∪ . . . ∪ Γ+n({v}) ∪ . . .
e retorna o conjunto de todos os vértices que v consegue atingir a partir de
um passeio direcionado de qualquer comprimento. Enquanto que a função
Γ̂−(v) é definida por
Γ̂−(v) = {v} ∪ Γ−({v}) ∪ Γ−2({v}) ∪ . . . ∪ Γ−n({v}) ∪ . . .
e retorna todos os vértice que atingem v através de um passeio direcionado
de qualquer comprimento.
Aplicando a função Γ̂ no vértice 1 do grafo ilustrado na Figura 3.1(a),
temos
Γ̂(1) = {1} ∪ Γ({1}) ∪ Γ2({1}) ∪ . . . = {1, 2, 3, 4, 5, 6}
Observe que temos Γ̂(v) = V para todo v ∈ V .
A função Γ̂+ quando aplicada aos vértices do d́ıgrafo ilustrado na Fi-
gura 3.1(b) resulta em
Γ̂+(1) = {1} ∪ Γ+({1}) ∪ Γ+2({1}) ∪ . . . = {1, 2, 3, 4, 5, 6}
Γ̂+(2) = Γ̂+(3) = Γ̂+(4) = Γ̂+(5) = Γ̂+(6) = {2, 3, 4, 5, 6}
Como todos os vértices com exceção do vértice 1 estão dentro de um ciclo
direcionado, um pode atingir o outro dentro do ciclo através de um caminho
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
3.2 Grafos Conexos e Desconexos 55
direcionado. Em relação à função Γ̂−, sua aplicação nos vértices do d́ıgrafo
da Figura 3.1(b) resulta em
Γ̂−(1) = {1} ∪ Γ−({1}) ∪ Γ−2({1}) ∪ . . . = {1}
Γ̂−(2) = Γ̂−(3) = Γ̂−(4) = Γ̂−(5) = Γ̂−(6) = {1, 2, 3, 4, 5, 6}
De forma similar ao apresentado anteriormente, com exceção do vértice 1,
todos os vértices são atinǵıveis a partir dos demais vértices do d́ıgrafo. Em
um d́ıgrafo se v é um vértice fonte então Γ̂−(v) = {v}, enquanto que se v for
um vértice sumidouro, temos Γ̂+(v) = {v}.
3.2 Grafos Conexos e Desconexos
Um grafo não vazio é chamado grafo conexo se existe um caminho entre Grafo Conexo
qualquer par de vértices, caso contrário, ele é chamado grafo desconexo. A Grafo Desco-
nexoFigura 3.2(a) mostra um exemplo de grafo conexo G1 = (V1, A1) onde existe
um caminho1 entre cada par de vértices, por exemplo, existe um caminho de
comprimento 1 entre os vértices 1 e 2, um caminho de comprimento 3 entre
os vértices 2 e 5, etc. Observe que a função de fechamento transitivo quando
aplicada a qualquer vértice de G1 retorna todo o seu conjunto de vértices,
i.e., Γ̂(v) = V1, para todo v ∈ V1. Por outro lado, o grafo G2 = (V2, A2)
ilustrado na Figura 3.2(b) mostra que existem vértices que não são atinǵıveis
a partir de outros, por exemplo, não existe caminho entre os vértices 1 e 5,
tão pouco entre os vértices 2 e 6. Logo, este grafo é desconexo, pois para
qualquer vértice v ∈ V2, temos Γ̂(v) 6= V2.
Qualquer grafo G = (V,A) possui um subgrafo G[V ′], induzido2 por um
conjunto de vértices V ′ ⊆ V , que é conexo. Se V ′ não está contido pro-
priamente em outro conjunto de vértices V ′′ de forma que o grafo, G[V ′′] ,
seja conexo, então G[V ′] é um subgrafo conexo maximal, sendo chamado de
componente conexo de G. Componente
Conexo
Definição 3.1. Um componente conexo de um grafo G é um subgrafo
conexo de G que não é um subgrafo próprio de outro subgrafo conexo de G.
1Para que um grafo seja conexo é importante que exista um caminho de qualquer
comprimento entre cada par de vértices
2O conceito de grafo induzido é apresentado na Seção 1.1
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
56 Conectividade
(a) (b)
Figura 3.2: Conectividade: (a) grafo conexo e (b) grafo desconexo.
Considere o grafo G1 = (V1, A1) na Figura 3.2(a), o grafo induzido,G1[V
′],
pelo conjunto de vértices V ′ = {1, 2} é conexo. Porém, este grafo não é
maximal, pois o grafo G1[V
′′] com V ′′ = {1, 2, 3} é conexo, i.e., G1[V ′] ⊂
G1[V
′′]. Entretanto G1[V
′′] ainda não é maximal pois o grafo G1[V1] é conexo,
i.e., o grafo G1 induzido por todos os vértices de V1 ainda é conexo. Logo,
G1 possui um único componente conexo que é o próprio grafo. Por outro
lado, o grafo G2 = (V2, A2) na Figura 3.2(b) possui 2 componentes conexos,
formados pelos grafos induzidos G2[V
′] e G2[V
′′], com V ′ = {1, 2, 3, 4} e
V ′′ = {5, 6}. Observe que Γ̂(v′) = V ′, ∀v′ ∈ V ′ e Γ̂(v′′) = V ′′,∀v′ ∈ V ′′.
Dado um grafo G, podemos então particionar seu conjunto de vértices V
em subconjuntos V1, V2, . . . , Vn tal que⋃
i
Vi = V e Vi ∩ Vj = ∅, ∀i 6= j
de forma que G[V1], G[V2],. . . G[Vn] sejam subgrafos conexos maximais de G.
Cada G[Vi] é um componente conexo e Ω(G) = n é o número de componentes
conexos de G. Se G é um grafo conexo então Ω(G) = 1, caso contrário se
G é desconexo, então Ω(G) > 1. Se G é um grafo vazio, então Ω(G) = 0.
Usando o exemplo anterior, temos Ω(G1) = 1 e Ω(G2) = 2.
3.3 Vértice de Corte
Em alguns grafos simples, a remoção de apenas um único vértice, chamado
vértice de corte, faz com que o grafo se torne desconexo. Entretanto o au-
mento do número de componentes conexo não é condição necessária para
que um vértice seja de corte. Formalmente, um vértice de corte é qualquer
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
3.3 Vértice de Corte 57
vértice v de um grafo genérico G que permite particionar o conjunto de ares-
tas de G em E1 e E2 de maneira que os grafos induzidos G[E1] e G[E2] por
estes conjuntos tenham apenas v em comum. A Figura 3.3(a) mostra um
grafo simples com os vértices de corte 4 e 5, enquanto que (b) mostra um
pseudografo com os vértices de corte 2, 4, 5 e 6.
(a) (b)
Figura 3.3: Conectividade.(a) grafo simples com os seguintes vértices de corte
{4, 5} e (b) pseudo grafo com os seguintes vértices de corte: {2, 4, 5, 6}.
Quando o grafo é simples, a remoção de um vértice de corte apenas au-
menta o número de seus componentes conexos. Se o grafo é um pseudografo,
esta remoção pode não resultar no aumento do número de componentes co-
nexos. Por exemplo, a remoção do vértice 6 no grafo 3.3(b) nãoaumenta a Vértice de Corte
× Pseudografoquantidade de componentes conexo, porém este vértice permite particionar
o conjunto de arestas em dois subconjuntos, um formado pelo laço em 6 e o
outro formado pelas demais arestas, de maneira que tenham apenas o vértice
6 em comum. Para um grafo não trivial simples, um vértice v é chamado
vértice de corte se e somente se Ω(G− v) > Ω(G).
Quando um grafo não possui um vértice corte então ele é chamado grafo
não separável. Um bloco de um grafo G é um subgrafo não separável maxi- Grafo não se-
parável
Bloco
mal, i.e., este subgrafo não está contido propriamente em outro subgrafo não
separável de G. Se todo o grafo é não separável então ele próprio é um bloco.
O grafo da Figura 3.3(a) pode ser decomposto em 3 subgrafos, ilustrados
na Figura 3.4, onde cada subgrafo é um bloco. Enquanto que o grafo da
Figura 3.3(b) possui 4 blocos, ilustrados na Figura 3.5.
Teorema 3.1. Para um vértice v de um grafo simples conexo G = (V,A),
as seguintes afirmações são equivalentes:
1. o vértice v é um vértice de corte de G.
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
58 Conectividade
Figura 3.4: Blocos do grafo mostrado na Figura 3.3(a).
Figura 3.5: Blocos do grafo mostrado na Figura 3.3(b).
2. existem vértices w e u distintos de v tal que todo caminho entre w e u
passa por v.
3. existe um particionamento do conjunto de vértices V − v em dois sub-
conjuntos V1 e V2 tal que qualquer caminho entre u ∈ V1 e w ∈ V2 passa
obrigatoriamente pelo vértice v.
Alguns grafos não possuem vértice de corte, porém possuem um subcon-
junto de vértices cuja remoção resulta ou em um grafo desconexo ou em um
grafo trivial. Para um grafo G, este subconjunto é chamado de conjunto
separador de G. Um grafo é chamado k-conexo (ou k-vértice conexo) se oConjunto Sepa-
rador tamanho do menor conjunto separador é k. Neste caso, dizemos que a co-
nectividade de vértice ou apenas conectividade do grafo, representada porConectividade
de Vértice κ(G), é igual a k, i.e., κ(G) = k. Por definição κ(G) = 0, se o grafo G é
trivial ou desconexo, e κ(Kn) = n − 1, ∀n ≥ 1. Os conjuntos separadores
que são minimais são comumente chamados de conjunto de corte de vértices,
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
3.4 Aresta de Corte 59
i.e., conjuntos separadores que não possuem um subconjunto próprio que é
separador. Conjunto
de Corte de
Vértices
O grafo G ilustrado na Figura 3.3(a) possui vários conjuntos separadores,
entre eles, temos, V1 = {2, 3, 4}, V2 = {3, 4} e V3 = {5}. Apenas o conjunto
V3 é um conjunto de corte de vértices, pois tanto V1 quanto V2 possuem
subconjuntos próprios que são separadores. Por exemplo, V1 possui dois
subconjuntos {2, 3} e {4} que são separadores e também conjunto de corte
de vértices, sendo que o último possui um vértice de corte. Eles têm tamanho
2 e 1, respectivamente. Por outro lado, V2 possui o subconjunto {4} que é
separador e também de corte de vértices. A conectividade de vértice deste
grafo é κ(G) = 1, pois o menor conjunto de corte de vértices tem tamanho
igual a 1. Logo, este grafo é um grafo 1-conexo ou 1-vértice conexo.
Podemos definir a conectividade entre dois vértices não adjacentes u e v, Conectividade
entre Vérticesdenotada por κ(u, v), como o menor número de vértices cuja remoção separa
u de v, i.e., faz com que não exista um caminho entre u e v. Menger mostrou
que esta conectividade está intimamente relacionada ao número de caminhos
disjuntos que unem u e v no grafo. Baseado nisto temos abaixo uma das
versões do Teorema do Menger.
Teorema 3.2 ([5]). Considere um grafo G = (V,A) e dois vertices u, v ∈ V
não adjacentes, o número mı́nimo de vértices que separam u de v é igual a
número máximo de caminhos disjuntos entre u e v em G.
A partir dáı temos o seguinte teorema sobre conectividade de vértices de
um grafo qualquer.
Teorema 3.3. Um grafo é k-vértice conexo se e somente se existem k cami-
nhos disjuntos entre qualquer par de vértices.
Para um grafo que não é completo G = (V,A), temos κ(G) = minκ(u, v)
considerando todos os pares de vértices não adjacentes u, v ∈ V .
3.4 Aresta de Corte
Uma aresta a de um grafo G é chamada de aresta de corte, ou ponte, se Ponte
sua remoção aumentar o número de componentes conexos de G, ou seja,
Ω(G−a) > Ω(G). A principal caracteŕıstica de uma aresta de corte é que ela
não está contida nos ciclos de G. As Figuras 3.3(a) e (b) mostram as arestas
de corte através de arestas mais grossas.
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
60 Conectividade
Teorema 3.4. Para uma aresta a de um grafo conexo G = (V,A), as se-
guintes afirmações são equivalentes:
1. a aresta a é uma aresta de corte de G.
2. a aresta a não está contida nos ciclos de G.
3. existem vértices w e u distintos tal que todo caminho entre w e u passa
por a.
4. existe um particionamento do conjunto de vértices V em dois subcon-
juntos V1 e V2 tal que qualquer caminho entre u ∈ V1 e w ∈ V2 passa
obrigatoriamente pela aresta a.
De forma similar ao exposto para vértices de corte, alguns grafos não
possuem aresta de corte, porém possuem um subconjunto de aresta cuja
remoção resulta ou em um grafo desconexo ou em um grafo trivial. Para um
grafo G, este conjunto é chamado de conjunto desconector de G. Portanto,Conjunto Desco-
nector um grafo é chamado k-aresta conexo se o tamanho do menor conjunto des-
conector é k. Neste caso, dizemos que a conectividade de aresta do grafo,Conectividade
de Aresta representada por λ(G), é igual a k, i.e., λ(G) = k. Por definição λ(G) = 0,
se o grafo for trivial ou desconexo e λ(G) = 1 se o grafo for conexo e possuir
uma aresta de corte. Os conjuntos desconectores minimais são chamados deConjunto de
Corte de Ares-
tas
conjunto de corte de arestas, i.e., conjuntos desconectores que não possuem
um subconjunto próprio que é desconector.
O grafo G ilustrado na Figura 3.3(a) possui vários conjuntos desconecto-
res, entre eles, temos, D1 = {{2, 4}, {3, 4}, {2, 3}}, D2 = {{2, 4}, {3, 4}, {4, 5}}
e D3 = {{5, 6}}. Apenas o conjunto D3 é um conjunto de corte de arestas,
pois tanto D1 quanto D2 possuem subconjuntos próprios que são desconecto-
res. Por exemplo, D1 possui o subconjunto {{2, 4}, {3, 4}} que é desconector
e também um conjunto de corte de arestas de tamanho 2. D2 possui dois
subconjuntos {{2, 4}, {3, 4}} e {{4, 5}} que são desconectores. O primeiro
tem tamanho igual a 2 enquanto o segundo tem tamanho igual a 1. Este
último é composto por uma aresta de corte. A conectividade de aresta deste
grafo é λ(G) = 1, pois o menor conjunto de corte de arestas tem tamanho
igual a 1. Logo, este grafo é um grafo 1-aresta conexo.
Podemos definir a conectividade de aresta entre dois vértices u e v, deno-Conectividade
de Aresta entre
Vértices
tada por λ(u, v), como o menor número de arestas cuja remoção separa u de
v, i.e., que faz com que u não seja atingido por v (vice-versa). De forma simi-
lar ao apresentado para vértices, a conectividade de aresta está intimamente
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
3.5 Conectividade em Dı́grafos 61
relacionada ao número de caminhos aresta-disjuntos que unem vértices u e
v. Baseado nisto temos o seguinte Teorema.
Teorema 3.5 ([5]). Considere um grafo G=(V,A) e dois vertices distintos
v1, v2 ∈ V , o número mı́nimo de arestas que separam v1 de v2 é igual a
número máximo de caminhos aresta-disjuntos entre v1 e v2 em G.
A partir dáı temos o seguinte teorema sobre conectividade de aresta de
um grafo qualquer.
Teorema 3.6. Um grafo G = (V,A) é k-arestaconexo se e somente se ele
possuir no k caminhos aresta-disjuntos entre qualquer par de vértices.
Portanto para um grafo G = (V,A) não trivial, temos λ(G) = minλ(u, v)
para qualquer par de vértices distintos u, v ∈ V . A relação entre a conecti-
vidade de vértice, a conectividade de arestas e o menor grau de um grafo G
é dada pelo seguinte Teorema.
Teorema 3.7 ([6]). Para qualquer grafo G,
κ(G) ≤ λ(G) ≤ δ(G)
3.5 Conectividade em Dı́grafos
Quanto à conectividade, um d́ıgrafo pode ser classificado de três formas dis-
tintas:
• fracamente conexo ou fraco se seu grafo subjacente é conexo, ou seja, Dı́grafo Fraca-
mente Conexopara cada par de vértices existe um semi-caminho. Note que todo
d́ıgrafo conexo é fracamente conexo.
• unilateralmente conexo ou unilateral se para cada par v e u de vértices Dı́grafo Uni-
lateralmente
Conexo
existe um caminho direcionado ou de v para u ou de u para v ou ambos.
• fortemente conexo ou forte se existe um caminho direcionado entre cada Dı́grafo Forte-
mente Conexopar de vértices.
Usando as funções de fechamento transitivo inverso e direto, um d́ıgrafo
D = (V,A) é fortemente conexo se e somente se Γ̂+(v) = Γ̂−(v) = V , para
todo v ∈ V . Ou seja, qualquer vértice pode atingir ou ser atingido pelos
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
62 Conectividade
demais vértices do d́ıgrafo através de um caminho direcionado. A relação
entre os diferentes tipos de d́ıgrafos é a seguinte
d́ıgrafos fortes ⊂ d́ıgrafos unilaterais ⊂ d́ıgrafos fracos.
De forma análoga aos grafos quantos aos componentes conexos, um d́ıgrafo
pode possuir três diferentes tipos de componentes:
• componente forte de um d́ıgrafo é um subd́ıgrafo forte maximal.Componente
Forte
• componente unilateral de um d́ıgrafo é um subd́ıgrafo unilateral maxi-Componente
Unilateral mal.
• componente fraco de um d́ıgrafo é um subd́ıgrafo fraco maximal.Componente
Fraco
A Figura 3.6(a) mostra um d́ıgrafo D e seus componentes fortes, delimita-
dos por uma região pontilhada. Para cada componente forte é posśıvel plane-
jar um caminho entre qualquer par de vértices do componente. O subd́ıgrafo
formado pelos vértices 5 e 6 juntamente com os arcos (5, 6) e (6, 5) não for-
mam um componente forte, mesmo existindo um caminho direcionado entre
5 e 6, e entre 6 e 5. Isto se deve ao fato de não ser maximal, pois ele é um
subd́ıgrafo próprio do subd́ıgrafo formado pelos vértices 4, 5 e 6 e os arcos
associados.
(a) (b)
Figura 3.6: Componentes fortes de um d́ıgrafo. (a) mostra um d́ıgrafo e seus
componentes fortes delimitados por uma região pontilhada. (b) mostra o
digrafo condensado de (a).
De todos os tipos de componentes, os componentes fortes são os mais
importantes, pois eles permitem gerar um novo d́ıgrafo através do processo
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
3.5 Conectividade em Dı́grafos 63
de condensação que mantém algumas das propriedades estruturais do d́ıgrafoCondensação
original. Por exemplo, um d́ıgrafo D = (V,A) pode ter seu conjunto de
vértices particionado em V1, V2, . . . , Vn, com⋃
i
Vi = V e Vi ∩ Vj = ∅, ∀i 6= j,
de forma que os subd́ıgrafos induzidos D[V1], D[V2], . . . , D[Vn] sejam os com-
ponentes fortes de D. Se aplicarmos a função de fechamento transitivo direto
e inverso a um vértice v ∈ Vi veremos que Γ̂+(v) pode ou não ser igual Γ̂−(v).
Isto ocorre por que v pode atingir (e ser atingido por) vértices que não per-
tençam ao seu componente forte. Como em um componente forte qualquer
vértice tem que atingir os demais, se calcularmos a interseção do resultado
das funções de fechamento transitivo direto e inverso para v ∈ Vi obtere-
mos Vi, i.e., veremos que Γ̂
+(v) ∩ Γ̂−(v) = Vi, para qualquer v ∈ Vi. Na
Seção 3.6 veremos como calcular de forma sistemática os componentes fortes
de d́ıgrafos usando as funções de fechamento transitivo inverso e direto.
Definição 3.2. Um d́ıgrafo condensado D(D) = (V(D),A(D)) do d́ıgrafo D Dı́grafo Conden-
sadopossui um conjunto de vértices V(D) associados aos componentes fortes de D
e um conjunto de arcos A(D) onde existe um arco entre os vértices de V(D)
se existir pelo menos um arco entre os vértices dos respectivos componentes
em D.
A Figura 3.6(b) mostra o d́ıgrafo condensado D = (V ,A) do d́ıgrafo D
mostrado em (a), onde V = {D[V1], D[V2], D[V3]}3 e A(D) = {(D[V1], D[V2]),
(D[V1], D[V3]), (D[V2], D[V3])}. Existe um arco com origem em D[V1] e des-
tino em D[V2], pois existe um arco com origem no vértice 2 e destino no
vértice 4 em D.
Definição 3.3. Um d́ıgrafo inverso I(D) = (V ,A) de um d́ıgrafo D = (V,A) Dı́grafo Inverso
é um d́ıgrafo que possui os mesmos vértices de D e um arco (v, w) ∈ A se e
somente se (w, v) ∈ A.
Se cada aresta de um grafo simples G é substitúıda por um arco e o
d́ıgrafo resultante D é forte então dizemos que D é uma orientação forte de
G. Assim, um grafo é fortemente orientável, ou seja pode ser transformado
em um d́ıgrafo fortemente conexo, se ele tem uma orientação forte. Baseado
nisto, temos o seguinte teorema.
3D[Vi] é apenas um rótulo que representa o subd́ıgrafo induzido.
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
64 Conectividade
Teorema 3.8 ([7]). Um grafo conexo G é fortemente orientável se e somente
se ele é conexo e não possui pontes.
Para que um grafo G conexo e sem pontes seja transformado em um
d́ıgrafo fortemente conexo D, devemos orientar suas arestas de forma a criar
ćıclos direcionados. Inicialmente, selecionamos um ciclo e orientamos suas
arestas de maneira a produzir um ciclo direcionado. Se todas as arestas
estiverem neste ciclo então G foi transformado em D, caso contrário devemos
orientar as arestas restantes considerando a orientação feita anteriormente.
Isto irá gerar um conjunto de ciclos onde um vértice de um ciclo pode alcançar
qualquer vértice do mesmo ou de outro ciclo. A Figura 3.7(a) mostra um
grafo conexo G sem pontes sendo transformado em (d) um d́ıgrafo fortemente
conexo D. Inicialmente, (b) um ciclo direcionado é constrúıdo definindo uma
orientação para as arestas do ciclo (1, 2, 4, 7, 3) em (a). Em (c) constrúımos
o novo ciclo direcionado (4, 7, 3, 6, 5) aproveitando a orientação dos arcos
definida previamente. Finalmente em (d), orientamos as arestas restantes de
forma a fechar ciclos direcionados.
A transformação exemplificada acima é apenas um simples exemplo, já
que existem inúmeras maneiras de transformar G em D. Quando escolhemos
uma orientação para as arestas de um grafo completo, o d́ıgrafo resultante
é chamado de torneio. A Figura 3.8 ilustra dois torneios obtidos orientandoTorneio
as arestas de um grafo K5. As diferenças entre estes torneios estão nos arcos
entre os vértices 1 e 2, 1 e 4 e 2 e 3. Se o torneio possuir um ciclo direcionado
de espalhamento então ele é chamado torneio forte. Os torneios apresentadosTorneio Forte
na Figura 3.8 são fortes. Para (a), temos o seguinte ciclo de espalhamento
(1, 5, 2, 3, 4, 1) enquanto que para (b) temos o ciclo (1, 3, 4, 5, 2, 1).
Para um torneio, o grau de sáıda de um vértice é chamado escore e a
seqüência dos graus de sáıda de todos vértices define a seqüência de escores. ASeqüência de Es-
cores partir desta seqüência é posśıvel determinar a seqüência de graus de entrada,
pois para um vértice v, temos δ+(v)+δ−(v) = n−1. Note que se eliminarmos
a orientação dos arcos que têm origem e destino em v, temos n − 1 arestas
incidentes a v. A seqüência de escore para o torneio ilustrado na Figura 3.8(a)
é (3, 2, 1, 2, 2). Quando um vértice consegue alcançar qualquer vértice através
de um caminho direcionado de comprimento no máximo igual a 2, então eleVértice Rei
é chamado vértice rei.
Em relaçãoà conectividade de vértices e arestas para grafos apresentada
nas seções 3.3 e 3.4, os d́ıgrafos possuem conceitos similares. Um conjunto
separador é um conjunto de vértices de um d́ıgrafo D que quando removido
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
3.5 Conectividade em Dı́grafos 65
(a) (b)
(c) (d)
Figura 3.7: Transformação de (a) um grafo conexo sem pontes em (d) um
d́ıgrafo fortemente conexo. (b) e (c) são os passos intermediários.
faz com que D deixe de ser fortemente conexo. Um conjunto de corte de
vértices de um d́ıgrafo é o conjunto separador minimal, ou seja, que não
possui subconjunto próprio que seja um conjunto separador. A conectividade
forte de vértice de um d́ıgrafo D = (V,A), definido por κ(D) corresponde ao Conectividade
Forte de Vérticemenor conjunto de vértices S ⊆ V tal que D − S não é fortemente conexo
ou tem apenas um vértice. Se κ(D) = k, então dizemos que D é um k-
vértice conexo ou k-conexo. Analogamente ao conceito de grafos, um d́ıgrafo
completo Kn possui κ(Kn) = n − 1. Se um d́ıgrafo D não é forte, então
κ(D) = 0.
Um conjunto desconector é um conjunto de arcos de um d́ıgrafo D que
quando removido faz com que D deixe de ser fortemente conexo. Um con-
junto de corte de arcos de um d́ıgrafo é o conjunto desconector minimal, ou
seja, que não possui subconjunto próprio que seja um conjunto separador. A
conectividade forte de arco de um d́ıgrafo D = (V,A), definido por λ(D) cor- Conectividade
Forte de Arco
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
66 Conectividade
(a) (b)
Figura 3.8: Exemplos de torneio forte para o grafo K5.
responde ao menor conjunto de corte S ⊆ A tal que D− S não é fortemente
conexo. Se λ(D) = k, então dizemos que D é k-arco conexo. Se D não é
forte, então λ(D) = 0.
Existe relação entre a conectividade de arco e vértices para d́ıgrafos da
mesma forma que para grafos. Esta relação de dada pela seguinte desigual-
dade.
Teorema 3.9 ([8]). Para qualquer d́ıgrafo D,
κ(D) ≤ λ(D) ≤ min{δ−(D), δ+(D)}
As variações do Teorema de Menger para conectividade de vértice e arcos
em d́ıgrafos são apresentadas abaixo. De forma similar ao apresentado para
grafos, estas conectividades estão intimamente relacionadas ao número de ca-
minhos direcionados disjuntos e arco-disjuntos para qualquer par de vértices
no d́ıgrafo.
Teorema 3.10 ([5]). Considere um d́ıgrafo D = (V,A) e dois vertices u, v ∈
V não adjacentes, o número mı́nimo de vértices que separam u de v, i.e.,
vértices cuja remoção elimina todos os caminhos direcionados de u para v, é
igual a número máximo de caminhos direcionados disjuntos de u para v em
D.
Teorema 3.11. Um d́ıgrafo é k-vértice conexo se e somente se existem k
caminhos direcionados disjuntos entre qualquer par de vértices.
Teorema 3.12 (Teorema de Menger(Dı́grafos)[5]). Considere um d́ıgrafo
D=(V,A) e dois vertices distintos u, v ∈ V , o número mı́nimo de arcos cuja
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
3.6 Cálculo de Componentes 67
remoção separam u de v, i.e., vértices cuja remoção eliminam todos os ca-
minhos direcionados de u para v, é igual a número máximo de caminhos
direcionados arcos-disjuntos de u para v em D.
Teorema 3.13. Um d́ıgrafo D = (V,A) é k-arco conexo se e somente se ele
possui k caminhos direcionados arco-disjuntos entre qualquer par de vértices.
Em um d́ıgrafo, a conectividade entre dois vértices não adjacentes u e v, Conectividade
entre Vérticesdenotada por κ(u, v), corresponde ao número máximo de caminhos direcio-
nados disjuntos de u para v, enquanto que a conectividade de arco entre dois
vértices u e v não adjacentes, denotada por λ(u, v) é o número máximo de Conectividade
de Arco entre
Vértices
caminhos arco-disjuntos de u para v. Para qualquer d́ıgrafo D, temos
κ(D) = minκ(u, v) e λ(D) = minλ(u, v)
considerando todos os pares de vértices não adjacentes u e v.
3.6 Cálculo de Componentes
Como comentado na seção anterior, as funções de fechamento transitivo po-
dem ser utilizada para calcular os componentes conexos de grafos e os com- Método
Malgrangeponentes fortes de d́ıgrafos. O seu uso neste cálculo dá origem ao método
chamado Malgrange. Inicialmente, será apresentada a aplicação do método
em d́ıgrafos e em seguida em grafos.
Dado um d́ıgrafo D = (V,A) realizamos os seguintes passos:
• selecionamos um vértice v1 ∈ V e calculamos as funções de fechamento
transitivo direto, Γ̂+(v1), e inverso, Γ̂
−(v1), e em seguida calculamos a
interseção destes resultados, ou seja, Γ̂+(v1)∩Γ̂−(v1). Esta interseção dá
origem ao conjuntos de vértices V1 ⊆ V que está associado ao primeiro
componente forte D[V1].
• se V1 = V então o d́ıgrafo é fortemente conexo tendo como componente
forte ele próprio, i.e., D[V1] = D[V ]. Caso contrário, selecionamos um
vértice v2 ∈ V −V1 e repetimos o processo calculando Γ̂+(v2)∩ Γ̂−(v2).
Isto dá origem ao segundo conjunto de vértices V2 e consequentemente
ao segundo componente forte D[V2].
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
68 Conectividade
• na i-ésima iteração, selecionamos
vi ∈ V −
i−1⋃
j=1
Vj
repetindo o processo descrito anteriormente.
• O método pára quando após a n-ésima iteração temos
n⋃
i=1
Vi = V.
Neste momento os d́ıgrafos induzidos D[V1], D[V2], . . . , D[Vn] corres-
pondem a todos os componentes fortes de D.
A aplicação do método no d́ıgrafo D = (V,A) da Figura 3.9 é como segue.
Sorteamos um vértice v1 do conjunto V , por exemplo, v1 = 3. Calculamos
Γ̂+(v1) e Γ̂
−(v1) que correspondem respectivamente a
Γ̂+(v1) = {2, 3, 6, 8, 9} e Γ̂−(v1) = {3, 5, 6}
Figura 3.9: Dı́grafo fracamente conexo com quatro componentes fortes.
A interseção destes resultados Γ̂+(v1) ∩ Γ̂−(v1) = V1 = {3, 6} e D[V1]
é o subd́ıgrafo induzido pelos vértices em V1 que corresponde ao primeiro
componente forte de D. Como V1 6= V , então selecionamos o vértice v2 do
conjunto V −V1 = {1, 2, 4, 5, 7, 8, 9}, por exemplo v2 = 2. Calculamos Γ̂+(v2)
e Γ̂−(v2) que correspondem respectivamente a
Γ̂+(v2) = {2, 8, 9} e Γ̂−(v2) = {2, 3, 5, 6, 8, 9}
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
3.6 Cálculo de Componentes 69
O resultado da interseção Γ̂+(v1)∩ Γ̂−(v1) = V2 = {2, 8, 9} dá origem a D[V2]
que é segundo componente forte de D. Selecionando v3 do conjunto V −
(V1 ∪ V2) = {1, 4, 5, 7}, por exemplo v3 = 5, temos Γ̂+(v3) = {2, 3, 5, 6, 8, 9},
Γ̂−(v3) = {5} e V3 = {5}, onde D[V3] é o terceiro componente forte. Repe-
tindo o processo anterior, selecionamos v4 de V − (V1 ∪ V2 ∪ V3) = {1, 4, 7},
por exemplo, v4 = 1, obtendo Γ̂
+(v4) = {1, 4, 7} e Γ̂−(v4) = {1, 4, 5, 7}. Logo
temos V4 = {1, 4, 7} e o quarto componente forte D[V4]. Como
V1 ∪ V2 ∪ V3 ∪ V4 = V,
o processo pára e temos D[V1], D[V2], D[V3], D[V4] como os componentes for-
tes de D.
A aplicação do método de Malgrange em um grafo é sutilmente diferente
da utilizada em d́ıgrafos. Se analisarmos atentamente uma aresta {a, b} em
um grafo, ela tem a mesma funcionalidade que a presença de ambos os arcos
(a, b) e (b, a) em um d́ıgrafo. Portanto, em grafos é usada apenas a função
de fechamento transitivo Γ̂ ao invés das funções Γ̂+ e Γ̂− usadas em d́ıgrafos.
Considere um grafo G = (V,A), realizamos os seguintes passos:
• selecionamos um vértice v1 ∈ V e calculamos a função de fechamento
transitivo Γ̂(v1). O conjunto de vértices resultante V1 dá origem ao
primeiro componente conexo G[V1].
• se V1 = V então o grafo é conexo tendo como único componente conexo,
o próprio grafo. Caso contrário, selecionamosum vértice v2 ∈ V − V1
e repetimos o processo. Calculando Γ̂(v2) que dá origem ao segundo
conjunto de vértices V2 e consequentemente ao segundo componente
G[V2].
• na i-ésima iteração, selecionamos
vi ∈ V −
i−1⋃
j=1
Vj
repetindo o processo descrito anteriormente.
• O método pára quando após a n-ésima iteração temos
n⋃
i=1
Vi = V.
Neste momento os grafos induzidos G[V1], G[V2], . . . , G[Vn] correspon-
dem a todos os componentes de G.
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
70 Conectividade
A aplicação do método no grafo G = (V,A) representado na Figura 3.10
é como segue. Sorteamos um vértice v1 do conjunto V , por exemplo, v1 = 3
e calculamos Γ̂(v1). O conjunto resultante V1 = {2, 3, 6, 8, 9} dá origem ao
primeiro componente G[V1] do grafo.
Figura 3.10: Grafo desconexo com três componentes conexos.
Como V1 6= V , selecionamos outro vértice v2 do conjunto V − V1 =
{1, 4, 5, 7}, por exemplo v2 = 5 e calculamos V2 = Γ̂(v2) dando origem ao
conjunto V2 = {5} e portanto ao segundo componente G[V2]. Repetindo o
processo anterior, selecionamos v3 ∈ V − (V1 ∪ V2) = {1, 4, 7}, por exemplo,
v3 = 4 e calculamos V3 = Γ̂(v3), o que nos leva a V3 = {1, 4, 7} e ao terceiro
componente G[V3]. Como V1 ∪V2 ∪V3 = V, o processo pára com G[V1], G[V2]
e G[V3] como os componentes conexos de G.
3.7 Exerćıcios
Exerćıcio 3.1. Mostre que se G = (V,A) é um grafo simples e δ(G) >
d|V |/2e − 1 então G é conexo.
Exerćıcio 3.2. A partir do grafo mostrado na Figura 3.2(a), determine
os grafos induzidos pelo particionamento das arestas que possuam apenas
o vértice 4 em comum. Faça o mesmo para Figura 3.2(b) considerando um
a um os vértices 4, 5 e 6.
Exerćıcio 3.3. Determine a conectividade de vértice e de aresta do grafo da
Figura 3.2(b)
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
3.7 Exerćıcios 71
Exerćıcio 3.4. Existe alguma relação entre conjunto de corte de arestas e
conjunto de corte de vértices? Se sim, comente.
Exerćıcio 3.5. Mostre que uma aresta é uma aresta de corte se e somente
se ela não pertence aos ciclos do grafo.
Exerćıcio 3.6. Mostre que se G possui p vértices e δ(G) ≥ dp/2e, então
λ(G) = δ(G).
Exerćıcio 3.7. Mostre que para todos os grafos com p vértices e q arestas,
a conectividade máxima é 0 quando q < p− 1 e é d2q/pe, quando q ≥ p− 1.
Exerćıcio 3.8. Qual o significado de κ(G) = 1 para o grafo G subjacente a
uma rede de computador?
Exerćıcio 3.9. Quantas ruas bloqueadas são necessárias para fazer com que
um robô partindo de uma posição p1 não consiga atingir p2, considerando que
o grafo subjacente G ao mapa do ambiente possui λ(G) = 4. Existe alguma
situação onde uma quantidade de cruzamento de ruas menor que λ(G) pode
fazer o robô deixar de atingir seu objetivo? Se sim, desenhe um mapa que
ilustre esta situação.
Exerćıcio 3.10. Mostre que se G é um grafo k-aresta conexo, com k > 0, e
se A′ é um subconjunto de arestas de G de tamanho k, então Ω(G−A′) ≤ 2.
Exerćıcio 3.11. Mostre que se G é um grafo r-regular com κ(G) = 1 então
λ(G) ≤ dr/2e.
Exerćıcio 3.12. Mostre que um d́ıgrafo sem ciclos ou laços possui pelo me-
nos um vértice fonte (ou sumidouro).
Exerćıcio 3.13. Mostre que um d́ıgrafo condensado D(D) não possui ciclos
direcionados.
Exerćıcio 3.14. Determine a quantidade de d́ıgrafos simples fracamente co-
nexo que podemos obter a partir de um grafo simples conexo G = (V,A).
Exerćıcio 3.15. Dado V = {1, 2, . . . , n}, um conjunto de vértices, determine
a quantidade de d́ıgrafos fracamente conexos ou não (com no máximo 1 laço
por vértice) que podemos gerar usando V .
Exerćıcio 3.16. Determine a quantidade de torneios que podemos obter a
partir de um grafo Kn.
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
72 Conectividade
Exerćıcio 3.17. Mostre que todo grafo simples G = (V,A) com |V | > |A|
implica Ω(G) ≥ |V | − |A|.
Exerćıcio 3.18. Mostre que um grafo simples G = (V,A) tem uma quanti-
dade de arestas que satisfaz a seguinte desigualdade
|V | − Ω(G) ≤ |A| ≤ 1
2
(|V | − Ω(G))(|V | − Ω(G) + 1)
Exerćıcio 3.19. Utilize o método de Malgrange para calcular os componentes
fortes do d́ıgrafo ilustrado na Figura 3.11 e encontre o digrafo condensado
correspondente.
Figura 3.11: Dı́grafo Exemplo
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
Caṕıtulo 4
Relacionamentos V-A
Neste caṕıtulo apresentamos alguns dos inúmeros conceitos associados ao
relacionamento entre vértices e arestas, ou vértice e arco, que chamaremos
de relacionamento V-A. Inicialmente apresentaremos o relacionamento entre
vértices que dá origem ao conceito de clique, i.e, de subgrafos completos ma-
ximais, seguido do conceito de conjunto independente que está associado a
subgrafos totalmente desconexos. Em seguida mostraremos o relacionamento
entre arestas que dá origem ao conceito de emparelhamento ou acoplamento,
finalizando com o conceito de cobertura de vértices que mostra o relaciona-
mento entre arestas e vértices de maneira espećıfica. Tentaremos sempre que
posśıvel fazer ligações com exemplos do mundo real.
4.1 Clique
O primeiro relacionamento V-A diz respeito ao relacionamento vértice-vértice
intitulado clique. Um clique em um grafo G é um subgrafo completo de
G. O fato de um clique ser um subgrafo completo implica que todos os
vértices no clique são adjacentes entre si. Um clique é maximal quando
ele não é um subgrafo próprio de outro subgrafo completo. O estudo de
cliques foca principalmente em cliques que são maximais e máximos, portanto
vários autores quando fazem referência a cliques estão considerando cliques
maximais. Adotaremos esta mesma referência neste livro. Quando um clique
não for maximal deixaremos expĺıcita esta informação. Um subgrafo é um
clique em um pseudografo(ou multigrafo) se e somente se ele for um clique
no grafo subjacente ao pseudografo(ou multigrafo). Em um d́ıgrafo(simples
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
74 Relacionamentos V-A
ou não), um clique maximal é um subd́ıgrafo completo maximal, onde para
cada par de vértices u e v, existem dois arcos (u, v) e (v, u). Como um clique
é um subgrafo(ou subd́ıgrafo) completo, ele pode ser descrito apenas pelos
seus vértices.
A Figura 4.1 mostra (a) um grafo e seus (b) quatro cliques formados
pelos seguintes conjuntos de vértices {1, 5}, {5, 6}, {1, 2, 3} e {2, 3, 4, 6}, e
destacados usando linhas de diferentes espessuras e formatos. Observe que
uma aresta é um subgrafo completo, e em diversos casos ela é clique não
maximal. Este é o motivo para que a aresta {1, 5} seja um clique maximal
e a {2, 3} não seja. Note que {2, 3} está contida propriamente no subgrafo
completo formado pelos vértices {1, 2, 3}, enquanto que {1, 5} não está con-
tida em nenhum subgrafo completo. Outro ponto importante é que cliques
podem compartilhar tanto arestas quanto vértices. Este é o caso dos cliques
formados pelos vértices {1, 2, 3} e {2, 3, 4, 6} que compartilham os vértices 2
e 3 e aresta {2, 3}.
A Figura 4.2(b) mostra os cliques do d́ıgrafo em (a). Estes cliques estão
marcados com arestas grossas e pontilhadas e são formados pelos seguintes
conjuntos de vértices {1, 3, 5} {2, 3, 4, 6} de tamanhos 3 e 4, respectivamente.
Diferente do exemplo anterior, apenas um único arco entre um par de vértices
não forma um clique. Este é o caso dos pares de vértices 1 e 2, e 5 e 6.
Para que eles fossem candidatos a cliques maximais, eles teriam que ter não
somente o arco (2, 1), mas também o arco (1, 2). O mesmo se aplica aos
vértices 5 e 6.
Um grafo oud́ıgrafo G pode possuir vários cliques de diferentes tamanhos,
como foi posśıvel ver nos exemplos acima. O maior clique em G é chamado
clique máximo e define o número de clique de G, representado por ω(G). EsteClique Máximo
Número
de Clique
número é igual ao tamanho do clique máximo, o qual é dado pelo número
de vértices do clique. Mais formalmente ω(G) = r onde r é o maior inteiro
tal que Kr ⊆ G. Esta medida é muito importante em problemas, como o de
coloração de grafos como veremos no Caṕıtulo 8. O grafo G na Figura 4.1 e
o d́ıgrafo D na Figura 4.2 possuem ambos número de clique igual a 4, i.e.,
ω(G) = 4 e ω(D) = 4. Um grafo ou d́ıgrafo Kn possui um único clique,
representado por si próprio. Logo, ω(Kn) = n.
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
4.1 Clique 75
(a)
(b)
Figura 4.1: Exemplo de cliques em grafos. (b) destaca através de linhas de
diferentes espessuras e estilos os quatro cliques do grafo em (a).
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
76 Relacionamentos V-A
(a)
(b)
Figura 4.2: Exemplo de cliques em d́ıgrafos. (b) destaca através de linhas
grossa e pontilhada os cliques do d́ıgrafo em (a).
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
4.2 Conjunto Independente 77
4.2 Conjunto Independente
Este relacionamento V-A é outro exemplo de relacionamento vértice-vértice,
porém oposto ao apresentado na seção anterior. Ele está associado aos sub-
grafos totalmente desconexos maximais chamados conjuntos independentes,
ou simplesmente, co− clique. Um conjunto independente é um conjunto de Co-Clique
vértices que não são adjacentes entre si. Ele é maximal se não é subconjunto
próprio de outro conjunto independente. De forma análoga, um grafo ou Conjunto
Independente
Máximo
d́ıgrafo G pode possuir vários conjuntos independentes de diferentes tama-
nhos, sendo este tamanho definido pela cardinalidade do conjunto. O maior
conjunto independente é chamado conjunto independente máximo e sua car-
dinalidade é usada para definir o número de independência de G, denotado Número de In-
dependênciapor α(G). Analogamente ao número de clique, α(G) = r onde r é o maior
inteiro tal que K̄r ⊆ G. Um grafo ou d́ıgrafo Kn possui α(Kn) = 1.
A Figura 4.3(b) ilustra um exemplo de conjunto independente dado pelos
vértices brancos do grafo em (a). Este grafo possui os seguintes conjuntos
independentes maximais: {1, 2, 3, 6, 7, 8}, {1, 3, 5, 7} e {4, 6}. O conjunto
independente máximo é definido por {1, 2, 3, 6, 7, 8}, logo o número de inde-
pendência do grafo é igual a 6. Note que o subconjunto de vértices {1, 3, 7}
não é um conjunto independente maximal, pois ele está contido nos subcon-
juntos {1, 2, 3, 6, 7, 8} e {1, 3, 5, 7}.
Existe uma ı́ntima relação entre conjuntos independentes e cliques. Um
clique maximal em um grafo G é um subgrafo completo, que no complemento
de G se torna um subgrafo totalmente desconexo, i.e., um conjunto indepen-
dente maximal. Esta constatação permite usar algoritmos aplicados a cliques
em conjuntos independentes e vice-versa.
A presença de vários conjuntos independentes maximais dá origem a um
tipo especial de grafo chamado grafo K-partido. Um grafo G = (V,A) é
chamado k-partido se os seguintes critérios forem obedecidos Grafo k-partido
• for posśıvel particionar o conjunto de vértices em k conjuntos não vazios
V1, V2, . . . , Vk, de forma que eles sejam disjuntos dois a dois, i.e., Vi ∩
Vj = ∅, para i 6= j, e a união dos elementos destes conjuntos seja o
conjunto de vértices original, ou seja, V1 ∪ V2 ∪ . . . ∪ Vk = V .
• cada aresta a ∈ A, tem extremidades em conjuntos distintos, i.e., se
a = {v, u}, então v ∈ Vi e u ∈ Vj, onde i 6= j, ou seja, os vértices de
cada conjunto não são adjacentes entre si.
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
78 Relacionamentos V-A
(a)
(b)
Figura 4.3: Exemplo de conjunto independente em grafos.(b) ilustra um
conjunto independente, denotado pelos vértices branco, do grafo em (a).
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
4.2 Conjunto Independente 79
(a) (b)
Figura 4.4: Exemplos de particionamento dos vértices do grafo na Fi-
gura 4.3(a) em três conjuntos independentes, mostrados em cores distintas.
• k é o menor inteiro que ainda garante os critérios anteriores, caso
contrário qualquer grafo com n vértices seria um grafo n partido.
Cada conjunto Vi é chamado partição do conjunto de vértices e corres-
ponde a um conjunto independente que pode ou não ser maximal. Se existem
arestas entre qualquer par de vértices de conjuntos distintos então temos o
que é chamado de grafo k-partido completo, denotado por Kn1,n2,...,nk , onde Grafo K-partido
Completocada ni = |Vi|. Ele pode ser visto como o resultado da junção de vários
complementos de grafos completos, i.e.,
Kn1,n2,...,nk = K̄n1 + K̄n2 + . . .+ K̄nk
A Figura 4.4(a) e (b) ilustram o particionamento dos conjuntos de vértices
do grafo na Figura 4.3(a), através de cores distintas, onde vértices com a
mesma cor pertencem ao mesmo conjunto independente. Este grafo é um 3-
partido, possuindo em cada exemplo três partições onde algumas correspon-
dem a conjuntos independentes maximais. Por exemplo, na Figura 4.4(a),
temos {4, 6} como conjunto independente maximal, porém {1, 3, 5} não é
um conjunto independente maximal, já que está contido propriamente no
conjunto independente {1, 3, 5, 7}. A mesma análise pode ser feita na Fi-
gura 4.4(b).
Um caso particular de um grafo k-partido, é o grafo 2-partido. Este grafo
é composto por apenas duas partições, sendo comumente chamado de grafo
bipartido. O uso deste tipo de grafo é amplo e é focado em problemas de
emparelhamento. Um exemplo foi já mostrado anteriormente na Seção 1.7.1
e corresponde ao problema de associação de tarefas. Neste problema temos
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
80 Relacionamentos V-A
(a) (b)
Figura 4.5: Exemplos de (a) grafo 3-partido completo e (b) grafo biclique.
que associar pessoas e tarefas de forma que cada tarefa seja realizada e cada
pessoa esteja vinculada a uma dada tarefa. Este problema é analisado uti-
lizando grafos bipartidos, onde um conjunto de vértices está associado às
pessoas enquanto que o outro conjunto está associado às tarefas. Existem
arestas apenas entre vértices de diferentes conjuntos, já que o emparelha-
mento deve ser constitúıdo por elementos de conjuntos diferentes.
Quando um grafo bipartido possui aresta entre qualquer par de vértices
de conjuntos distintos ele é chamado de grafo bipartido completo ou biclique,Grafo Bipartido
Completo
Biclique
sendo denotado por Kr,s , onde r e s são os tamanhos dos dois particiona-
mentos. O termo biclique é curioso e não é facilmente identificado olhando
diretamente para o grafo, porém calculando K̄r,s, observaremos que os dois
conjuntos independentes serão ambos cliques. As Figuras 4.5(a) e (b) ilus-
tram um grafo 3-partido completo K3,3,3 e um biclique K3,3 respectivamente.
Em ambos os casos, temos um particionamento do conjunto de vértices, onde
cada partição é um conjunto independente.
O seguinte Teorema permite verificar rapidamente se um grafo é ou não
bipartido.
Teorema 4.1. Um grafo G é bipartido se e somente se ele não possui ciclos
de comprimento ı́mpar.
A definição de d́ıgrafo k-partido é similar ao exposto anteriormente paraDı́grafo
k-partido grafos, com a diferença que estamos lidando com arcos ao invés de arestas.Portanto, a origem e destino de cada arco devem situar-se em partições dis-
tintas. A relação entre grafos e d́ıgrafos k-partidos é a seguinte. Um d́ıgrafo
D é k-partido se e somente se seu grafo simples subjacente G é k-partido. Um
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
4.3 Cobertura de Vértices 81
(a) (b)
Figura 4.6: Exemplos de (a) d́ıgrafo 3-partido e (b) d́ıgrafo 3-partido com-
pleto.
d́ıgrafo é k-partido completo se para cada par de vértices v ∈ Vi e u ∈ Vj, com Dı́grafo
k-partido
Completo
i 6= j, existe pelo menos um arco entre u e v [9]. Ele usa a mesma notação
empregada em grafos, i.e., Kn1,n2,...,nk , onde cada ni = |Vi|. A Figura 4.6
ilustra (a) um d́ıgrafo 3-partido, onde os vértices de uma mesma partição
possuem mesma cor. Enquanto que (b) é um d́ıgrafo 3-partido completo,
K3,1,1 pois existe pelo menos um arco entre cada par de vértices oriundos de
partições diferentes. O que difere entre os d́ıgrafos em (a) e em (b), é que
em (a) estão faltando alguns arcos entre vértices de partições distintas, por
exemplo, falta um arco entre o vértice preto mais à direita e o vértice cinza.
Um d́ıgrafo D = (V,A) é d́ıgrafo bipartido direcionado se o grafo subjacente Dı́grafo Bipar-
tido Direcionadoé bipartido com partições V1 e V2, tal que para cada arco (u, v) ∈ A, u ∈ V1
e v ∈ V2, ou seja, u é uma fonte e v é um sumidouro.
A adaptação do Teorema 4.1 para d́ıgrafos é a seguinte
Teorema 4.2. Um d́ıgrafo fortemente conexo D é bipartido se e somente se
ele não possui ćıclos direcionados de comprimento ı́mpar.
4.3 Cobertura de Vértices
Este relacionamento V −A lida simultaneamente com vértices e arestas. Ele
é chamado cobertura de vértices e está intimamente associado aos conceitos
anteriores. Dizemos que um vértice cobre uma aresta quando ele é uma de
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
82 Relacionamentos V-A
suas extremidades. Dado um grafo G = (V,A), sabemos que V cobre todas
as arestas no conjunto A, porém o que é de interesse prático é saber o menor
número de vértices que conseguem cobrir todas as arestas.
Uma cobertura de vértices de um grafo G é um subconjunto S dos vérticesCobertura Mini-
mal de G, S ⊆ V , que cobrem todas as arestas de G, i.e., todas as arestas são inci-
dentes a pelo menos um vértice de S. De forma similar, ao apresentado ante-
riormente, buscamos as coberturas minimais de vértices, ou seja, coberturasCobertura
Mı́nima de vértices que não possuem subconjunto próprio que seja uma cobertura
de vértices. A menor cobertura de vértices é chamada cobertura mı́nima de
vértices e sua cardinalidade define o número de cobertura de vértices, β(G).Número de
Cobertura de
Vértices
O relacionamento entre cobertura de vértices e conjunto independente
é direta. Considere o conjunto independente maximal I ⊆ V . Todos os
vértices em v ∈ V − I são adjacentes a pelo menos um vértice em I, pois
se existe um vértice v que não é adjacente a outro em I, então o conjunto I
não é maximal. Portanto podemos pensar que cada aresta de G possui uma
extremidade em V − I e outra em I. Porém algumas arestas são incidentes a
vértices apenas do conjunto V − I. Logo, os vértices em I não cobrem todas
as arestas de G, porém os vértices em V − I cobrem. Este fato dá origem ao
seguinte Teorema.
Teorema 4.3. Dado um grafo G = (V,A), um conjunto S ⊆ V é um con-
junto independente maximal de G se e somente se V − S é uma cobertura
minimal de vértices.
Este Teorema nos leva ao seguinte corolário
Corolário 4.1. Dado um grafo G = (V,A),
β(G) = |V | − α(G)
A Figura 4.7 mostra um grafo roda W5 = (V,A) e exemplos de conjuntos
independentes maximais e coberturas de vértices. O conjunto I1 formado
apenas pelo vértice f , destacado em cinza, é um conjunto independente ma-
ximal de tamanho |I1| = 1, enquanto que V − I1 é uma cobertura de vértices
de tamanho |V − I1| = 5. Por outro lado, os vértices b e e, destacados em
branco, correspondem a um conjunto independente maximal I2 de tamanho
|I2| = 2, enquanto que V − I2 é uma cobertura de vértices de tamanho
|V −I2| = 4. O conjunto I2 é um exemplo de conjunto independente máximo
e consequentemente V −I2 é uma cobertura mı́nima de vértices. Observe que
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
4.3 Cobertura de Vértices 83
os vértices em I2 são adjacentes a todos os demais vértices do grafo, porém
eles não correspondem a uma cobertura, já que as arestas que unem vértices
do conjunto V − I2, como a aresta {d, c}, não são cobertas pelos vértices em
I2.
Figura 4.7: Exemplos de Conjunto Independente e Cobertura de Vértices.
O cálculo da cobertura mı́nima tem várias aplicações práticas. Por exem-
plo, imagine que queiramos descobrir a quantidade mı́nima de guardas que
devemos colocar no cruzamento de ruas em uma rede de estradas de forma
que cada estrada seja vigiada por pelo menos um guarda. A rede seria re-
presentada por um grafo, tendo como vértices os cruzamentos entre as ruas e
como arestas as ruas. Um guarda em um cruzamento seria capaz de monito-
rar as ruas que interceptam o cruzamento. A quantidade de guardas afetam
diretamente o custo da solução, por isso, a quantidade mı́nima é o foco prin-
cipal do problema. Caso contrário, podeŕıamos pensar em associar à cada
cruzamento um guarda. Esta solução é direta, porém é a que causa maior
impacto financeiro. Outro exemplo é o problema para determinar o menor
número de câmeras a serem utilizadas em um ambiente estruturado de forma
a inspecioná-lo completamente. O ambiente seria representado pelo grafo e
os vértices estariam associados às regiões de monitoramento. Similarmente,
queremos a solução de menor custo. Em ambos os exemplos, buscamos mi-
nimizar uma função de custo, que é representada ou pelo número de câmeras
ou pelo número de guardas, portanto, estes problemas são de minimização.
Para um d́ıgrafo, a definição de cobertura mı́nima é a mesma da usada
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
84 Relacionamentos V-A
para um grafo, porém todos os cálculos são realizados utilizando seu grafo
subjacente. Notem que nesta definição a orientação dos arcos está sendo
totalmente desconsiderada, pois o que importa é saber a menor quantidade de
vértices que cobrem todos os arcos. Em geral, esta definição de cobertura de
vértices, para d́ıgrafos tem pouca importância prática, já que caracteŕısticas
importantes sobre d́ıgrafos estão sendo desconsideradas.
Para contornar este problema, Ferro e Ferrarello [10] definem os conceitos
cobertura de fonte e cobertura de sumidouro. Dado um digrafo D = (V,A),Cobertura de
Fonte
Cobertura de
Sumidouro
uma cobertura de fonte para D é um conjunto de vértices S ⊆ V , tal que cada
arco em D parte de algum vértice em S, i.e., para cada vértice v ∈ S existe
pelo menos um arco a = (v, u) ∈ A. De forma análoga, uma cobertura de
sumidouro para D é um conjunto de vértices S ⊆ V , tal que para cada u ∈ S
existe pelo menos um arco a = (v, u) ∈ A. Como buscamos sempre conjuntos
mı́nimais, temos que considerar a menor cobertura de fonte(ou de sumidouro)
que não está contida propriamente em outra cobertura de fonte(ou de sumi-
douro). A partir dáı definimos para um d́ıgrafo D, o número de cobertura de
fonte, β+(D) e o número de número de cobertura de sumidouro, β−(D). ONúmero de Co-
bertura de Fonte
Número de Co-
bertura de Su-
midouro
primeiro está associado ao tamanho da cobertura mı́nima de fonte, ou seja,
à menor cobertura de fonte, enquanto que o segundo está associado ao ta-
manho da cobertura mı́nima de sumidouro.Considerando S e S ′ coberturas
de fonte e sumidouro respectivamente para um d́ıgrafo D, se S ∩ S ′ = ∅,
com S 6= ∅ e S ′ 6= ∅, então D é um d́ıgrafo bipartido direcionado, conformeDı́grafo Bipar-
tido Direcionado discutido na Seção 4.2.
Problemas de cobertura de vértices, fonte e sumidouro em d́ıgrafos, resi-
dem em problemas de contagem. Por exemplo, a partir de um d́ıgrafo quantos
ciclos direcionados de um dado comprimento são necessários para cobrir to-
dos os vértices[11] ou a quantidade de maneiras que i caminhos direcionados
podem cobrir todos os vértices do d́ıgrafo[12].
Um problema similar ao de cobertura de vértices, independente se é em
grafos ou não, é ao invés de focar nas arestas/arcos para serem cobertos
focar nos vértices. Isto dá origem ao conceito de conjunto dominante que
será apresentado na próxima seção.
4.4 Conjunto Dominante
Este relacionamento V −A é um relacionamento vértice-vértice similar àquele
definido pela cobertura de vértices, porém com um foco sutilmente diferente.
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
4.4 Conjunto Dominante 85
Uma cobertura de vértice é um subconjunto de vértice que cobrem todas as
arestas de um grafo. Por sua vez, um conjunto dominante é também um
subconjunto de vértices, porém, com a diferença de que estes vértices devem
cobrir (ou dominar) todos os vértices do grafo que não participam do con-
junto. A dominância entre vértices em um grafo é definida pela relação de Relação de Do-
minância em
Grafos
adjacência entre eles. Se um vértice v é adjacente a outro vértice u, então
v, além de dominar a si próprio, também domina u e vice-versa. Portanto,
dizemos que v domina a si próprio e seus vizinhos, τ(v). De forma análoga
ao apresentado na seção anterior, os problemas associados aos conjuntos do-
minantes objetivam encontrar sempre os conjuntos dominantes minimais e
mı́nimos.
Formalmente um conjunto dominante S para um grafo G = (V,A) é um
subconjunto de vértices S ⊆ V , tal que todo vértice v ∈ V − S é dominado
por pelo menos um vértice de S, i.e., τ(v)∩S 6= ∅, ∀v ∈ (V −S). A Figura 4.8
ilustra dois conjuntos dominantes minimais, através dos vértices brancos e
cinzas, para um grafo G. O tamanho do menor conjunto define o número
de dominância de um grafo G, o qual é denotado por γ(G). Portanto, os Número de Do-
minânciavértices em cinza compõe o conjunto dominante mı́nimo e definem o número
de dominância γ(G) = 3.
Figura 4.8: Exemplos de Conjuntos Dominantes.
Como é posśıvel observar neste exemplo, todos os vértices que não partici-
pam do conjunto dominante são dominados por pelo menos um vértice deste
conjunto. Por exemplo, considerando o conjunto dominante S = {e, c, i},
cada vértice em V − S = {a, b, d, f, g, h, j} possui um vizinho em S. Como
o conjunto dominante foca nos vértices, podem existir arestas descobertas,
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
86 Relacionamentos V-A
como as arestas {a, g} e {b, h}.
Os números de dominância e de cobertura de vértices possuem a seguinte
relação γ(G) ≤ β(G) para qualquer grafo G que não possua vértices isolados.
Neste caso, qualquer cobertura é um conjunto dominante que pode ou não
ser minimal. As Figuras 4.9(a) e (b) mostram uma cobertura de vértices e
um conjunto dominante, respectivamente, destacados pelos vértices em cinza.
Notem que o conjunto dominante é um subconjunto próprio da cobertura de
vértices, logo γ < β. Em grafos estrelas Sn, γ = β, pois apenas o vértice
central é necessário para cobrir todos os vértices do grafo e todas as arestas.
A diferença entre os tamanhos da cobertura de vértices e do conjunto de
dominante por variar bastante. Por exemplo, para um grafo completo Kn,
temos γ(Kn) = 1 e β(Kn) = n− 1.
(a) (b)
Figura 4.9: Exemplos de Conjuntos Dominantes.
Em um d́ıgrafo, a relação de dominância é definida pela orientação de
cada arco. Em um arco (v, u), dizemos que o vértice v domina o vértice
u e u é dominado por v. Notem que esta relação não é necessariamenteRelação de Do-
minância em
Dı́grafos
simétrica, diferente da dominância em grafos, onde em uma aresta qualquer,
um vértice domina o outro e (vice-versa). Devido a isso temos os conceitos
de dominância de sáıda e dominância de entrada [13].
Dado um d́ıgrafo D = (V,A), um conjunto dominante de entrada S é umConjunto Do-
minante de
Entrada
subconjunto de vértices S ⊆ V , tal que todo vértice v ∈ V − S domina pelo
menos um vértice de S, i.e., τ+(v) ∩ S 6= ∅, ∀v ∈ (V − S). Enquanto que,
um conjunto dominante de sáıda S é um subconjunto de vértices S ⊆ V , talConjunto Domi-
nante de Sáıda que todo vértice v ∈ V −S é dominado por pelo menos um vértice de S, i.e.,
τ−(v) ∩ S 6= ∅, ∀v ∈ (V − S). Os tamanhos do menor conjunto dominante
de entrada e do menor conjunto dominante de sáıda de um d́ıgrafo D são
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
4.4 Conjunto Dominante 87
chamados de números de dominância de entrada e de sáıda, respectivamente, Números de Do-
minância de En-
trada e de Sáıda
e denotados por γ−(D) e γ+(D). A partir da idéia de dominância, um vértice
v ∈ V de D é k-rei se todos os vértices puderem ser alcançados a partir de
v por um caminho de comprimento no máximo k. Se k = 1, v domina todos
os vértices.
A Figura 4.10 ilustra um d́ıgrafo D = (V,A) e dois conjuntos dominantes
minimais de entrada. Os vértices em cinza compõem o conjunto D1 = {b, c}
e os vértices em branco compõem o conjunto dominante D2 = {a, d, f}.
Todos os vértices que não estão no conjunto D1(ou D2) dominam pelo menos
um vértice do conjunto D1(ou D2). Por exemplo, considerando o conjunto
D1, o vértice b é dominado pelos vértices a, c, d e f . Enquanto que o
vértice c é dominado pelos vértices a, b e e. Notem que os vértices que
V −D1 = {a, d, e, f} dominam pelo menos um vértice de D1. Em relação ao
conjunto D2, todos os vértices em V − D2 = {b, c, e} dominam pelo menos
um vértice em D2 = {a, d, f}.
A partir de um conjunto dominante de entrada podemos extrair um con-
junto dominante de sáıda, porém este pode não ser minimal. Por exemplo,
V −D1 = {a, d, e, f} é um conjunto dominante de sáıda porém não é mini-
mal, já que ele possui um subconjunto próprio {a, e} que é dominante. O
mesmo acontece com o conjunto V − D2 = {b, c, e} que possui um subcon-
junto próprio formado pelos vértices c e e que é minimal. A obtenção de
um conjunto não minimal não é o único problema. É posśıvel que em al-
guns casos, um conjunto dominante de sáıda fique de fora do resultado. Esta
situação será ilustrada na Seção 5.3.4. Os vértices c e e são vértices 2-rei.
Uma variação destas relações de dominância para d́ıgrafos foi proposta
por Chartrand[14]. Ela é chamada relação de dominância gêmea, e é definida Relação de Do-
minância Gêmeacomo segue. Dado um d́ıgrafo D = (V,A), um conjunto dominante gêmeo S é
Conjunto Domi-
nante Gêmeo
um subconjunto de vértices S ⊆ V , tal que todo par de vértices u, v ∈ S(onde
u pode ou não ser igual a v), existem dois arcos (u,w), (w, v) ∈ A para
todo w ∈ V − S. Ou seja, todo vértice em V − S domina e é dominado
por vértices do conjunto S. Notem que esta dominância é uma combinação
das dominâncias de entrada e a de sáıda. O tamanho do menor conjunto
dominante gêmeo de entrada de um d́ıgrafo D é chamado de número de
dominância gêmea, sendo denotado por γ∗(D). A relação entre a dominância Números de Do-
minância Gêmeagêmea e as outras dominâncias é dada por
max{γ+(D), γ−(D)} ≤ γ∗(D) ≤ γ+(D) + γ−(D)
A dominância gêmea é fortemente motivada por aplicações em redes de
This work is licensedunder CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
88 Relacionamentos V-A
Figura 4.10: Exemplos de Conjuntos Dominantes de Entrada.
computadores. Como exemplo, considere que cada vértice no conjunto domi-
nante S esteja associado a um servidor que forneça serviços espećıficos para
outros computadores da rede. A comunicação entre os vértices fora e dentro
do conjunto dominante é bidirecional, i.e., existindo a dominância gêmea,
pois, dados u e w, onde u ∈ S e w ∈ V − S, temos os arcos (u,w) e (w, u)
que denotam a direção da comunicação entre u e w. Como um servidor em
geral é muito caro, objetiva-se encontrar o menor número de servidores que
atendam todos os computadores da rede, ou seja, minimizar o tamanho do
conjunto dominante gêmeo.
Ainda considerando o d́ıgrafo D ilustrado na Figura 4.10, um exemplo de
conjunto dominante gêmeo minimal é o conjunto S = {b, c, d}. Observem que
os vértices em V −S = {a, e, f} dominam e são dominados pelos vértices do
conjunto S. Por exemplo, os vértices a e e dominam e são dominados pelo
vértice c; enquanto que o vértice f domina o vértice b e é dominado pelo
vértice d, que participam de S. Para este d́ıgrafo γ∗(D) = 3.
4.5 Emparelhamento
Outro relacionamento V-A importante é o emparelhamento1, também cha-
mado de acoplamento ou casamento. Ele é um relacionamento aresta-arestaAcoplamento
Casamento
1Emparelhamento é a tradução do inglês da palavra Matching.
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
4.5 Emparelhamento 89
similar ao relacionamento vértice-vértice definido através dos conjuntos in-
dependentes. Ele considera a adjacência entre as arestas2 e visa encontrar o
maior conjunto de arestas não adjacentes entre si. Portanto, um emparelha-
mento M em um grafo G = (V,A) é um subconjunto de arestas, M ⊆ A, que
não correspondem a laços e que não compartilham vértices entre si. Portanto
duas arestas ai, aj ∈ A, onde ai = {vi, ui} e aj = {vj, uj} e i 6= j, pertencem
ao emparelhamento M , se vi 6= vj 6= ui 6= uj. Esta mesma definição serve
para d́ıgrafos porém consideramos arcos e não arestas. De forma análoga aos Emparelhamentos
em Dı́grafosrelacionamentos anteriores, temos interesse em saber os emparelhamentos
maximais e máximo, ou seja, nos emparelhamentos que não são subcon- Emparelhamento
Máximojuntos próprios de outros emparelhamento e nos maiores emparelhamentos
existentes. O tamanho de um emparelhamento M é definido pela quantidade
de arestas e representado por |M |, e o tamanho do maior emparelhamento
de um grafo G é denotado por α′(G).
Quando uma aresta de M é incidente a um vértice v ∈ V , então dizemos
que v é saturado por M . Quando o emparelhamento satura todos os vértices Vértice
Saturadodo grafo, então dizemos que o emparelhamento é perfeito. A Figura 4.11(a)
mostra um exemplo de emparelhamento maximal de tamanho 2 em um grafo
W5. Todas as arestas do grafo compartilham vértices com as arestas do
emparelhamento, porém este emparelhamento não é perfeito pois existem Emparelhamento
Perfeitovértices que não são saturados, como os vértices b e d. A Figura 4.11(b)
mostra um emparelhamento máximo de tamanho α′(G) = 3 que satura todos
os vértices.
Na Seção 1.7.1, apresentamos um exemplo de emparelhamento envol-
vendo um conjunto de pessoas e um conjunto de tarefas. As arestas mais
grossas destacadas na Figura 1.15(b) compõem um posśıvel emparelhamento
do grafo mostrado em (a). Notem que ele é perfeito pois todos os vértices
estão saturados, i.e., as arestas são incidentes a todos os vértices do grafo.
Este emparelhamento é máximo de tamanho igual a α′(G) = 4. Existem
outros emparelhamentos posśıveis, como os mostrados nas Figuras 4.12(a) e
(b) através de arestas mais grossas. O que diferencia um emparelhamento
do outro, neste problema, é a soma dos tempos associados às suas arestas.
Portanto cada emparelhamento tem uma soma que pode ou não ser diferente
da soma dos outros emparelhamentos. Como buscamos aquele com a menor
soma posśıvel, este problema em particular pode ser visto com um problema
de minimização.
2Duas arestas são adjacentes se compartilham vértices.
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
90 Relacionamentos V-A
(a) (b)
Figura 4.11: Exemplos de emparelhamentos de um grafo W5.
Um ponto importante é como saber se um emparelhamento é maximal
ou máximo. Ele é maximal se não for posśıvel adicionar mais arestas deEmparelhamento
Máximo × Em-
parelhamento
Perfeito
forma a garantir que as arestas não compartilham vértices. Portanto, apenas
o conjunto formado pela aresta {t1, e4} na Figura 4.12(a) não representa um
emparelhamento maximal, já que é posśıvel adicionar a aresta {t2, e1} neste
conjunto. Para saber se o emparelhamento é máximo, podemos inicialmente
verificar se ele é perfeito. Se for então o emparelhamento é máximo, caso
contrário temos que verificar a existência de caminhos de aumento. Por
exemplo, nas Figuras 4.12 (a) e (b) os emparelhamentos são perfeitos, logo
são máximos.
Antes de definirmos um caminho de aumento, precisamos definir o con-
ceito de caminho alternante. Um caminho alternante em um emparelhamentoCaminho
Alternante M é um caminho cujas arestas alternam entre aquelas que estão e aquelas que
não estão em M . Por exemplo, o grafo 4.11(a) possui vários caminhos alter-
nantes como p1 = {d, {d, e}, e, {e, a}, a, {a, b}, b} e p2 = {b, {b, c}, c, {c, f}, f,
{f, e}, e, {e, a}, a}. Notem que tanto em p1 quanto em p2, as arestas do
caminho alternam entre aquelas que estão e aquelas que não estão em M .
Quando as extremidades de um caminho alternante não são saturadas, então
ele é chamado caminho de aumento. Por exemplo, as extremidades d e b doCaminho
de Aumento caminho p1 não são saturadas. Logo, temos um caminho de aumento.
Quando um emparelhamento possui um caminho de aumento P , basta
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
4.5 Emparelhamento 91
(a) (b)
Figura 4.12: Exemplos de Emparelhamentos Perfeito.
substituir em M as arestas de P que estão pelas que não estão em M . Isto
irá aumentar em uma unidade o tamanho de M . Se M não possuir mais
caminhos de aumento então M é máximo. Usando esta estratégia, a partir do
caminho p1, obtemos o emparelhamento ilustrado na Figura 4.13 de tamanho
3, enquanto que com a presença do caminho de aumento p1 o emparelhamento
tinha tamanho 2. A relação entre caminho de aumento e emparelhamento
máximo foi mostrada por Berge, em 1957 através do seguinte Teorema.
Teorema 4.4 ([15]). Um emparelhamento M em um grafo G é máximo se
e somente se M não possui caminhos de aumento.
Em problemas de emparelhamento envolvendo grafos bipartidos, podemos
ter situações onde os conjuntos independentes têm tamanhos diferentes. Por
exemplo, no caso ilustrado na Seção 1.7.1 o conjunto de tarefas e de pessoas
possuem o mesmo tamanho, porém podemos ter casos, onde o número de
tarefas é muito maior que de pessoas. Nesta situação o que nos interessa
saber é se todo emparelhamento maximal nesta instância do problema irá
associar todas as pessoas a alguma tarefa, i.e., se os vértices associados às
pessoas serão saturados. Para responder a este problema, Hall em 1935
provou o seguinte Teorema.
Teorema 4.5 ([16]). Um grafo bipartido, com dois conjuntos independentes
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
92 Relacionamentos V-A
Figura 4.13: Emparelhamento Máximo
X e Y , tem um emparelhamento que satura X se e somente se para todo
S ⊆ X, |Γ(S)| ≥ |S|.
Quando |X| = |Y |, este teorema é chamadoTeorema de Casamento (Mar-
riage Theorem).
Existe um relacionamento interessante entre cobertura de vértices e em-
parelhamento. Como foi visto anteriormente, uma cobertura de vértices é
um conjunto de vértices que cobre todas as arestas do grafo, i.e., as arestas
do grafo possuem pelo menos uma das extremidades na cobertura, enquanto
que um emparelhamento consiste em um conjunto de arestas que não com-
partilham vértices3 e que são adjacentes a todas as arestas do grafo. Como
as arestas no emparelhamento são adjacentes a todas as arestas do grafo,
então podemos imaginar que a cobertura pode ser constrúıda selecionando
pelo menos um vértice de cada aresta. Isso nos leva a concluir que o tamanho
de qualquer cobertura de vértices de um grafo G é no mı́nimo o tamanho do
menor emparelhamento maximal de G. Para grafos bipartidos existe uma
prova matemática, que mostra que obtendo um emparelhamento e uma co-
bertura de vértices de mesmo tamanho, então tem-se um resultado ótimo
para cada um deles. Esta prova segue os prinćıpios da relação min-max.
Uma relação min-max prova que quando temos dois problemas duais sobre
a mesma classe de instâncias(neste caso, grafos), a igualdade de resultados
3Notem que nenhum vértice pode cobrir duas arestas de um emparelhamento, já que
nesse caso as arestas seriam adjacentes
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
4.5 Emparelhamento 93
destes problemas prova que ambos são ótimos para a instância analisada.
Neste caso, os problemas tratados são o de maximização, associado ao empa-
relhamento, e o de minimização, associado à cobertura de vértices. Portanto,
se dado um grafo obtivermos como resultado o mesmo valor para ambos os
problemas, então o que temos é um resultado ótimo. As Figuras 4.12(a) e
(b) mostram a aplicação deste Teorema. Observe que o tamanho do empa-
relhamento máximo é igual ao de cobertura mı́nima para ambos os grafos.
Logo, os resultados são ótimos.
Isto nos leva à relação min-max definida pelo Teorema 4.6, chamado
König-Egervary.
Teorema 4.6 ([17]). Se G é um grafo bipartido, então o tamanho do empare-
lhamento máximo de G é igual ao tamanho da cobertura mı́nima de vértices
de G, i.e., α′(G) = β(G).
As Figuras 4.14(a) e (b) mostram o emparelhamento através de arestas
grossas e a cobertura de vértices através dos vértices cinza. Cada vértice
da cobertura foi escolhido a partir das arestas do emparelhamento. Note
que neste exemplo, qualquer uma das coberturas terá dois vértices de pelo
menos uma aresta do emparelhamento. Em ambos os casos a cobertura tem
tamanho igual a 4 que é igual ao β(W5) = 4, discutido através do exemplo
da Figura 4.7
(a) (b)
Figura 4.14: Emparelhamento e Cobertura
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
94 Relacionamentos V-A
Os conceitos de conjunto independente e de emparelhamento possuem
uma relação interessante. O primeiro é um conjunto maximal(ou máximo)
de vértice que não são adjacentes entre si, enquanto que o último corres-
ponde a um conjunto maximal(ou máximo) de arestas que não compartilham
vértices, ou seja, não são adjacentes entre si. O fato de um lidar com vértices
e o outro com arestas faz com que ambos consigam usar o mesmo método
de enumeração. Por exemplo, o método que lista os conjuntos independentes
maximais em um grafo G é o mesmo método que lista os emparelhamentos
maximais de G, porém neste último recebe como entrada L(G), que cor-
responde ao grafo linha de G, ao invés de G. Na Seção 2.2.10 mostramos
que qualquer grafo G possui um grafo linha correspondente L(G), onde as
arestas de G são mapeadas para vértices em L(G). Portanto, um conjunto
independente em L(G) está associado a um conjunto de arestas em G que
não são adjacentes. Isto nos leva a α′(G) = α(L(G)), i.e., o tamanho do
emparelhamento máximo em G é igual a tamanho do conjunto independente
máximo em L(G). Usaremos este prinćıpio na Seção 5.2.4 para enumerarmos
os emparelhamentos maximais de grafos.
4.6 Exerćıcios
Exerćıcio 4.1. Mostre que um grafo completo Kn pode ser expresso como a
união de k grafos bipartidos sse n ≤ 2k
Exerćıcio 4.2. Mostre que o grafo de Petersen não é um grafo bipartido, e
determine seu número de independência e seu número de clique.
Exerćıcio 4.3. Mostre que qualquer grafo k-cubo é um grafo bipartido.
Exerćıcio 4.4. Mostre que α(G) ≥ |V |
∆(G)+1
para qualquer grafo G.
Exerćıcio 4.5. Mostre que qualquer árvore T tem no máximo um empare-
lhamento que é perfeito.
Exerćıcio 4.6. Encontre a menor árvore onde o número de dominância e o
número de cobertura de vértices seja diferente.
Exerćıcio 4.7. Determine o número de dominância de um grafo Cn
Exerćıcio 4.8. Prove que se o diamêtro de um grafo G é no mı́nimo igual a
3, então o número de dominância do complemento de G será menor ou igual
a 2.
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
4.6 Exerćıcios 95
Exerćıcio 4.9. Mostre que qualquer grafo G = (V,A) k-regular, tem um
conjunto dominante com no mı́nimo |V |/(k + 1) vértices.
Exerćıcio 4.10. Determine quantos emparelhamentos perfeitos um biclique
Kr,s possui.
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
96 Relacionamentos V-A
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
Caṕıtulo 5
Enumeração
Neste caṕıtulo apresentamos o método de Maghout que é utilizado para cal- Método
de Maghoutcular os relacionamentos V-A discutidos no caṕıtulo anterior. Este método
usa as leis da álgebra booleana para encontrar os conjuntos minimais e ma-
ximais do problema de interesse o qual pode ter sido modelado usando tanto
grafos quanto d́ıgrafos. O método explora as inter-relações existentes entre
os relacionamentos V-A para a obtenção do resultado desejado. Por exemplo,
sabemos que um conjunto independente maximal em um grafo G é um clique
em Ḡ. Portanto, o mesmo método pode ser utilizado tanto para enumerar
os cliques maximais quanto os conjuntos independentes de um grafo G. O
que difere é o grafo fornecido como entrada para o método que pode ser o
próprio G ou Ḡ.
5.1 Método de Maghout
Para facilitar a compreensão, focaremos inicialmente no problema de cober-
tura minimal de vértices. A obtenção dos conjuntos independentes maximais
e cliques é direta, tendo sido discutida anteriormente nas respectivas seções.
Todavia, o cálculo dos conjuntos dominantes e dos emparelhamentos, exige
uma pequena modificação do método a qual discutiremos oportunamente nas
seções subsequentes.
Considere um grafo simples G = (V,A) composto pelos seguintes conjun-
tos de vértices V = {v1, v2, v3} e de arestas A = {{v1, v2}, {v2, v3}}. Como
queremos saber as coberturas minimais de vértices deste grafo, então deve-
mos selecionar para cada aresta uma de suas extremidades. Neste caso, para
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
98 Enumeração
a aresta a1 = {v1, v2}, podemos escolher ou o vértice v1 ou o vértice v2, e
para a aresta a2 = {v2, v3}, a escolha pode ser feita entre os vértices v2 e
v3. Notem que no nosso exemplo, existem apenas duas coberturas minimais
posśıveis: {v2} e {v1, v3}.
A escolha do vértice que irá cobrir cada aresta pode ser modelada pelo
operador lógico ou. Considerando v̇i a variável lógica associada ao vértice vi,
podemos associar as seguintes somas lógicas às arestas a1 e a2, respectiva-
mente
(v̇1 + v̇2) e (v̇2 + v̇3)
O produto destas duas somas (v̇1 + v̇2).(v̇2 + v̇3) combinatodas as possi-
bilidades existente de escolha de vértices, onde . representa o operador lógico
e. Portanto realizando este produto encontramos,
v̇1.v̇2 + v̇1.v̇3 + v̇2.v̇2 + v̇2.v̇3
Cada um destes termos é uma posśıvel cobertura. Por exemplo, o termo
v̇1.v̇2 está associado aos vértices v1 e v2 e representa uma cobertura, porém
que não é minimal. Por outro lado, o termo v̇1.v̇3 contém uma cobertura
minimal definida pelos vértices v1 e v3. A importância da álgebra booleana
aparece neste momento. O termo v̇2.v̇2 possui uma referência repetida ao
vértice v2. Isto indica que v2 é extremidade de ambas as arestas. Para
eliminar esta repetição aplicamos a lei da idempotência1 no termo v̇2.v̇2 que
leva ao termo v̇2. Logo, o novo resultado intermediário é
v̇1.v̇3 + v̇1.v̇2 + v̇2 + v̇2.v̇3
O termo v̇2 já representa nossa primeira cobertura de vértices. Todavia,
existem as coberturas v̇1.v̇2 e v̇2.v̇3 que não são minimais e que devem ser
eliminadas do resultado final. Para eliminar estas coberturas utilizamos a lei
da absorção2 nos três últimos termos do resultado anterior encontrando
v̇1.v̇3 + v̇2
Logo, para o primeiro termo temos a seguinte cobertura {v1, v3} e para
o segundo termo temos a cobertura {v2}. A obtenção do conjunto inde-
pendente é direta, pois sabemos que se V é o conjunto de vértices e C é a
1A lei da idempotência diz que p ∧ p ⇔ p e que p ∨ p ⇔ p para qualquer proposição
lógica p.
2A lei da absorção diz que p∨(p∧q)⇔ p e que p∧(p∨q)⇔ p para quaisquer proposições
lógicas p e q.
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
5.1 Método de Maghout 99
cobertura, o conjunto independente associado à C é igual a I = V −C. Logo,
o conjunto independente associado ao primeiro termo é {v2} e ao segundo
termo é {v1, v3}. Casualmente os conjuntos independentes e as coberturas
são iguais ao resultado encontrado anteriormente, porém invertidos. Vale
ressaltar que isto não é uma regra.
A versão geral deste processo é definida da seguinte maneira. Se G =
(V,A) é um pseudografo ou multigrafo, devemos considerar seu grafo simples
subjacente. Para cada vértice v ∈ V , é criada uma variável lógica v̇ e para
cada aresta a = {vi, vj} ∈ A é criada a seguinte soma lógica (v̇i + v̇j) a partir
das variáveis lógicas associadas aos vértices da aresta. Usando o produto de
variáveis lógicas definido por
n∧
i=m
v̇i = v̇m.v̇m+1. . . . .v̇n−1.v̇n
calculamos ∧
(vi,vj)∈A
(v̇i + v̇j) (5.1)
Lembrando que as operações . e + correspondem às operações lógicas e
e ou, respectivamente. Esta expressão possuirá vários produtos do seguinte
tipo (v̇i + v̇j).(v̇k + v̇m), que através da lei da distributividade
3 da operação
e, se tornará v̇i.v̇k + v̇i.v̇m + v̇j.v̇k + v̇j.v̇m, ou simplesmente, v̇iv̇k + v̇iv̇m +
v̇j v̇k + v̇j v̇m, para facilitar a visualização.
Quando um vértice vi for adjacente a vários vértices, ele participará de
várias somas lógicas neste produto. Sem perda de generalidade, considere os
vértices ordenados w1, w2,. . . , wm que correspondem aos m vizinhos
4 de vi,
i.e., wi ∈ τ(vi). Focando apenas em vi e sua vizinhança teremos o seguinte
produto lógico
m∧
j=1
(v̇i + ẇj) = v̇i +
m∧
j=1
ẇj (5.2)
Em algumas situações, teremos várias variáveis lógicas participando de
diversas somas ao invés de apenas uma. Este é o caso do cálculo dos conjuntos
3A lei da distributividade diz que p ∨ (r ∧ q) ⇔ (p ∨ r) ∧ (p ∨ q) e que p ∧ (r ∨ q) ⇔
(p ∧ r) ∨ (p ∧ q) para quaisquer proposições lógicas p, r e q.
4A ordem é imposta apenas para facilitar a compreensão do processo, pois dois vértices
consecutivos wi e wi+1 podem corresponder a dois vértices no grafo original vk e vl, com
|k − l| > 1, i.e., com ı́ndices não consecutivos.
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
100 Enumeração
dominantes minimais como veremos na Seção 5.2.3. Neste caso, teremos o
seguinte produto lógico
k∧
j=1
(Ṡ + Ṙj) = Ṡ +
k∧
j=1
Ṙj (5.3)
onde
Ṡ =
s∑
i=1
ṡi e Ṙj =
rj∑
l=1
ṙj,l
e k é a quantidade de termos que possuem em comum a soma lógica Ṡ
constitúıda das variáveis lógicas ṡi, com 1 ≤ i ≤ s. Enquanto que o termo Ṙj
representa a soma das variáveis restantes no j-ésimo termo composta pelas
variáveis ṙj,l, com 1 ≤ l ≤ rj, onde rj representa a quantidade de variáveis
que não participam de Ṡ no j-ésimo termo. Esta quantidade pode variar para
cada termo, pois podemos encontrar termos distintos cujas somas restantes
possuem tamanhos diferentes. A ordem imposta nos ı́ndices das variáveis
constituintes de Ṡ e Ṙj visa apenas facilitar a compreensão do processo pois
duas variáveis consecutivas, como por exemplo, ṡi e ṡi+1 podem corresponder
a dois vértices no grafo original vk e vl com ı́ndices não consecutivos. Um
caso particular deste produtório é o seguinte
Ṡ
k−1∧
j=1
(Ṡ + Ṙj) = Ṡ (5.4)
onde Ṡ participa como sub-soma em vários termos e como um termo inte-
gralmente.
Após sucessivas aplicações das leis da álgebra booleana(distributividade,
absorção, idempotência, etc.) no produtório da Equação 5.1, encontramos
um somatório de termos, onde cada termo permite extrair as coberturas
minimais de vértices. Considere o n-ésimo termo Pn = {p1, p2, p3, . . . , pl},
representado na forma de conjunto, onde pk é a k-ésima variável do termo.
A cobertura de vértices minimal Cn associada ao conjunto Pn é formada por
todos os vértices vj ∈ V , tal que a variável v̇j ∈ Pn, ou seja, a variável
associada ao vértice vj aparece no termo. Formalmente, a cobertura Cn é
definida como
Cn = {v ∈ V | v̇ ∈ Pn}
De forma similar ao ilustrado no exemplo no inicio desta seção, a obtenção
do conjunto independente maximal é direta. Para cada cobertura Cn, o
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
5.2 Enumeração em Grafos 101
conjunto independente maximal In = V − Cn. Se consideramos novamente
o n-ésimo termo Pn, o conjunto independente maximal é formado por todos
os vértices vj ∈ V , tal que a variável v̇j /∈ Pn, ou seja, a variável associada
ao vértice vj não aparece no termo. Formalmente
In = {v ∈ V | v̇ /∈ Pn}
Para sabermos se o resultado da simplificação não produziu conjuntos que
não sejam maximais, temos que verificar se dados dois termos Pj e Pk, as
variáveis de um termo aparecem completamente no outro termo. Se Pj ⊆ Pk,
então Pk produzirá uma cobertura de vértices que não é minimal (vice-versa).
Este prinćıpio pode ser utilizado durante a fase intermediária do processo
para remover termos que sabidamente gerarão conjuntos independentes não
maximais. Como a relação entre cliques e conjuntos independentes é direta.
A obtenção dos cliques de um grafo G é feita obtendo os conjuntos indepen-
dentes maximais em Ḡ. Como sabemos, o conjunto independente em G é um
clique em Ḡ, e um clique em G é um conjunto independente em Ḡ.
5.2 Enumeração em Grafos
Esta seção apresenta o uso do método de Maghout para o cálculo de cobertu-
ras de vértices, conjuntos independentes, conjuntos dominantes e emparelha-
mentos. Em todos os casos, selecionamos grafos e d́ıgrafos para exemplificar
a aplicação do método.
5.2.1 Coberturas de Vértices e Conjuntos Independen-
tes
A partir da descrição anterior, vamos aplicar o método de Maghout no grafo
G = (V,A)ilustrado na Figura 5.1. Os vértices a − e serão representados
por A− E, respectivamente. Usando a Equação 5.1 encontramos o seguinte
produto
(A+B)(B +D)(B + C)(A+ E)(D + E)(D + C) (5.5)
O desenvolvimento deste produto pode ser feito por partes começando pe-
las variáveis que aparecem com mais freqüência nas somas, i.e., pela variável
associada ao vértice com maior grau. Neste caso, temos os vértices b e d.
Selecionamosum deles por exemplo, o vértice b, e focamos o desenvolvimento
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
102 Enumeração
Figura 5.1: Grafo exemplo
no produto das somas que contêm B, ou seja, em (A + B)(B + D)(B + C).
Para facilitar as visualização das operações realizadas destacaremos os termos
usados a cada passo, colocando os em negrito.
(A+B)(B+D)(B+C)⇒ distributividade
(AB+AD+BB+BD)(B+C)⇒ idempotência
(AB+B+BD+AD)(B+C)⇒ absorção
(B+AD)(B+C)⇒ distributividade
(BB+BC+ABD+ACD)⇒ idempotência
(B+BC+ABD+ACD)⇒ absorção
(B+ACD)
Notem que o resultado encontrado é o mesmo aplicando a Equação 5.2 em
(A+B)(B+D)(B+C). Usando a Equação 5.2 no produto (A+E)(D+E)
temos E +AD. Compondo os resultados e continuando o processo temos os
seguintes passos
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
5.2 Enumeração em Grafos 103
(A+B)(B+D)(B+C)(A+E)(D+E)(D+C) ⇒ Equação 5.2
(B+ACD)(E+AD)(D+C)⇒ distributividade
(BE+ABD+ACDE+ACD)(D+C)⇒ absorção
(BE+ABD+ACD)(D+C)⇒ distributividade
(BDE+ABDD+ACDD+BCE+ABCD+ACCD)⇒ idempotência
(BDE+ABD+ACD+BCE+ABCD+ACD)⇒ absorção
(BDE+ABD+ACD+BCE)
Após esta simplificação, devemos verificar se ainda existe algum termos
que pode ser absorvido por outro. Se isto não for posśıvel, então chegamos Coberturas
Minimais de
Vértices
ao resultado final. Como temos quatro termos, o grafo possui as seguintes
quatro coberturas minimais de vértices.
C1 = {b, d, e}, C2 = {b, c, e}, C3 = {a, b, d}, C4 = {a, c, d}
Logo, temos número de cobertura de vertices β(G) = 3. O conjunto indepen- Conjuntos Inde-
pendentes Maxi-
mais
dente maximal In é obtido por In = V − Cn. Portanto, temos os seguintes
conjuntos independentes maximais
I1 = {a, c}, I2 = {a, d}, I3 = {c, e}, I4 = {b, e}
e número de independência do grafo α(G) = 2.
5.2.2 Cliques
A aplicação do método de Maghout para o cálculo de cliques é direta. Se
queremos calcular os cliques de um grafo G, devemos encontrar os conjuntos
independentes maximais presentes em Ḡ. Isto nos levará diretamente aos cli-
ques em G. Portanto dado o grafo G ilustrado na Figura 5.1, primeiramente
temos que calcular o complemento de G. O grafo Ḡ é ilustrado na Figura 5.2.
Em seguida, é realizado o mesmo processo apresentado na seção anterior.
A partir de Ḡ, realizamos as seguintes operações
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
104 Enumeração
Figura 5.2: Complemento do grafo ilustrado na Figura 5.1
(A+D)(A+C)(C+E)(E+B) ⇒ Equação 5.2
(A+CD)(E+BC)⇒ distributividade
AE+ABC+CDE+BCD
Os termos encontrados correspondem às seguintes coberturas minimais de
vértices
{a, e}, {a, b, c}, {c, d, e}, {b, c, d}
A partir destas coberturas encontramos os seguintes conjuntos indepen-
dentes maximais em Ḡ,
{b, c, d}, {d, e}, {a, b}, {a, e}
que correspondem aos cliques maximais em G. Isto nos leva ao número de
clique do grafo igual a ω(G) = 3.
5.2.3 Conjuntos dominantes
O uso do método de Maghout para o cálculo dos conjuntos dominantes em
grafos segue uma lógica muito similar àquela descrita na Seção 5.1. É impor-
tante considerar que para o cálculo da cobertura de vértices, criamos uma
soma lógica u̇ + v̇ para cada aresta {u, v}. Esta soma indica que podemos
selecionar ou o vértice u ou o vértice v para compor a cobertura de vértices.
Este mesmo processo de escolha será usado para o cálculos dos conjuntos
dominantes maximais.
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
5.2 Enumeração em Grafos 105
Dado o grafo G = (V,A), ilustrado na Figura 5.1, para cada vértice
criaremos uma variável lógica. Neste caso, os vértices a− f estão associados
às variáveis lógicas A − F , respectivamente. Em seguida, para cada vértice
v criamos uma soma lógica contendo todas as variáveis dos vértices que são
dominadas por v5. Por exemplo, para o vértice a, criamos a seguinte soma
lógica
(A+B + E)
para o vértice b temos a seguinte soma (A + B + C + D), e assim por di-
ante. Portanto para este grafo temos o seguinte produto destacando o vértice
dominante embaixo da sua respectiva soma lógica.
(A+B + E)︸ ︷︷ ︸
a
(A+B + C +D)︸ ︷︷ ︸
b
(B + C +D)︸ ︷︷ ︸
c
(B + C +D + E)︸ ︷︷ ︸
d
(A+D + E)︸ ︷︷ ︸
e
Em seguida realizamos os seguintes passos
(A+B+E)(A+B+C+D)(B+C+D)(B+C+D+E)
(A+D+E) ⇒ Equação 5.3
(A+E+BD)(A+B+C+D)(B+C+D)(B+C+D+E) ⇒ Equação 5.4
(A+E+BD)(B+C+D) ⇒ distributividade
AB+AC+AD+BE+CE+DE+BD+BCD+BD ⇒ absorção
AB+AC+AD+BE+CE+DE+BD
Cada termo encontrado representa um conjunto dominante minimal com-
posto pelos vértices que têm suas variáveis lógicas presentes no termo. Por-
tanto, a partir deste resultado temos os seguintes dominantes para G
{a, b}, {a, c}, {a, d}, {b, e}, {c, e}, {d, e}, {b, d}
os quais indicam que o número de dominância de G é igual a γ(G) = 2.
5Um vértice v domina um vértice u, se existe a aresta {v, u} no conjunto de arestas do
grafo. Além disso, é importante considerar que v domina a si próprio.
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
106 Enumeração
5.2.4 Emparelhamentos
Na Seção 4.5, discutimos a relação entre emparelhamento maximal e conjunto
independente maximal. Vimos que um emparelhamento maximal em um
grafo G corresponde a um conjunto independente maximal no grafo linha
L(G). Usando esta relação, aplicaremos o método de Maghout no grafo linha
L(G) ao invés de utilizá-lo diretamente no grafo G original para enumerar
todos os seus emparelhamentos maximais.
Para facilitar a compreensão do método, reapresentamos o grafo G =
(V,A) da Figura 4.13 na Figura 5.3(a), dando ênfase às suas arestas. A Fi-
gura 5.3(b) mostra o grafo linha L(G) = (VL, AL) associado a G. As arestas
de G possuem rótulos a−j que serão usados como rótulos dos vértices corres-
pondentes em L(G). Dois vértices em L(G) são adjacentes se compartilham
vértices em G. Por exemplo, as arestas a e b em G compartilham vértices,
logo os vértices correspondentes são adjacentes em L(G), como podemos ver
na Figura 5.3(b). Por outro lado, como as arestas a e c não compartilham
vértices, seus vértices a, c ∈ VL correspondentes em L(G) não são adjacentes.
(a) (b)
Figura 5.3: Grafo Roda (a) W5 e seu grafo linha (b) L(W5) correspondente.
De forma similar ao apresentado na seção anterior, a partir do grafo
L(G), criaremos as variáveis lógicas A−J que estarão associadas aos vértices
a − j, respectivamente. Em seguida, para cada aresta (u, v) ∈ AL criamos
a seguinte soma lógica U + V e realizamos o produto das somas lógicas
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
5.2 Enumeração em Grafos 107
associadas às arestas de L(G). Este produto é ilustrado abaixo
(A+B)(A+F )(A+J)(A+E)(B+F )(B+G)(B+C)(C+G)(C+H)(C+D)
(D+H)(D+I)(D+E)(E+I)(E+J)(J+F )(J+G)(J+H)(J+I)(F+G)(F+H)
(F + I)(G+H)(G+ I)(H + I)(I + J)
Como este produto possui vários termos, iremos focar inicialmente apenas
em algumas partes. Por exemplo, aplicando a Equação 5.2 nas somas que
possuem em comum a variável F obtemos
F + ABGHIJ
Realizando o mesmo processo porém focando nos vértices G,H, I e J , encon-
tramos G+BCHIJ, H +CDIJ, I +DEJ e J +AE respectivamente. O
produto original se transforma em
(A+B)(A+ E)(B + C)(C +D)(D + E)︸ ︷︷ ︸
P1
(F + ABGHIJ)(G+BCHIJ)(H + CDIJ)(I +DEJ)(J + AE)︸ ︷︷ ︸
P2
ou seja, P1.P2. Podemos simplificar P1, através dos seguintes passos
(A+B)(A+E)(B+C)(C+D)(D+E)⇒ Equação 5.2
(A+BE)(B+C)(C+D)(D+E)⇒ Equação 5.2
(A+BE)(C+BD)(D+E) ⇒ distributividade
(AC+ABD+BCE+BDE)(D+E) ⇒ distributividadeACD+ACE+ABD+ABDE+BCDE+ BCE
BDE+BDE ⇒ absorção
ACD+ACE+ABD+BCE+BDE
Realizando o mesmo processo com P2, temos
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
108 Enumeração
(F+ABGHIJ)(G+BCHIJ)(H+CDIJ)
(I+DEJ)(J+AE)⇒ distributividade
(FG+BCFHIJ+ABGHIJ+ABCGHIJ)
(H+CDIJ)(I+DEJ)(J+EA)⇒ absorção
(FG+BCFHIJ+ABGHIJ)(H+CDIJ)
(I+DEJ)(J+AE)⇒ distributividade
(FG+BCFHIJ+ABGHIJ)
(HI+DEHJ+CDIJ+CDEIJ)(J+AE) ⇒ absorção
(FG+BCFHIJ+ABGHIJ)
(HI+DEHJ+CDIJ)(J+AE) ⇒ distributividade
(FG+BCFHIJ+ABGHIJ)
(HIJ+HIEA+DEHJ+DEHJA+CDIJ+CDIJEA)⇒ absorção
(FG+BCFHIJ+ABGHIJ)
(HIJ+HIEA+DEHJ+DEHJA+CDIJ)⇒ absorção
(FG+BCFHIJ+ABGHIJ)
(HIJ+HIEA+DEHJ+CDIJ)⇒ distributividade
FGHIJ+FGHIEA+FGDEHJ+FGCDIJ+BCFHIJ+
BCFHIJEA+ BCFHIJDE+BCFHIJD+ABGHIJ
+ABGHIJE+ ABGHIJDE+ ABGHIJCD⇒ absorção
FGHIJ+FGHIEA+FGDEHJ+FGCDIJ+ BCFHIJ+
BCFHIJEA+BCFHIJDE +BCFHIJD+ABGHIJ⇒ absorção
FGHIJ+FGHIEA+FGDEHJ+FGCDIJ+ BCFHIJ+ABGHIJ
O cálculo de P1.P2 resulta nos seguintes passos. Devido à quantidade de
termos manipulados a cada passo, omitimos o nome das operações aplicadas,
entretanto, continuamos destacados os termos usados nas operações.
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
5.2 Enumeração em Grafos 109
(ACD+ACE+ABD+BCE+BDE)
(FGHIJ+AEFGHI+DEFGHJ+CDFGIJ+BCFHIJ+ABGHIJ)⇒
ACDFGHIJ+ACEFGHIJ+ABDFGHIJ+BCEFGHIJ+BDEFGHIJ+
ACDEFGHI+ACEFGHI+ABDEFGHI+ABCEFGHI+ABDEFGHI+
ACDEFGHJ+ACDEFGHJ+ABDEFGHJ+BCDEFGHJ+BDEFGHJ+
ACDFGIJ+ACDEFGIJ+ABCDFGIJ+BCDEFGIJ+BCDEFGIJ+
ABCDFHIJ+ABCEFHIJ+ABCDFHIJ+BCEFHIJ+BCDEFHIJ+
ABCDGHIJ+ABCEGHIJ+ABDGHIJ+ABCEGHIJ+ABDEGHIJ ⇒
ACEFGHIJ+ABDFGHIJ+BCEFGHIJ+BDEFGHIJ+
ACDEFGHI+ACEFGHI+ABDEFGHI+ABCEFGHI+ABDEFGHI+
ACDEFGHJ+ACDEFGHJ+ABDEFGHJ+BCDEFGHJ+BDEFGHJ+
ACDFGIJ+BCDEFGIJ+BCDEFGIJ+
ABCDFHIJ+ABCEFHIJ+ABCDFHIJ+BCEFHIJ+BCDEFHIJ+
ABCDGHIJ+ABCEGHIJ+ABDGHIJ+ABCEGHIJ+ABDEGHIJ⇒
ACEFGHIJ+ABDFGHIJ+BCEFGHIJ+BDEFGHIJ+
ACDEFGHI+ACEFGHI+ABDEFGHI+ABCEFGHI+
ACDEFGHJ+ACDEFGHJ+ABDEFGHJ+BCDEFGHJ+BDEFGHJ+
ACDFGIJ+BCDEFGIJ+BCDEFGIJ+
ABCDFHIJ+ABCEFHIJ+ABCDFHIJ+BCEFHIJ+BCDEFHIJ+
ABCDGHIJ+ABCEGHIJ+ABDGHIJ+ABCEGHIJ+ABDEGHIJ⇒
ACEFGHIJ+ABDFGHIJ+BCEFGHIJ+
ACDEFGHI+ACEFGHI+ABDEFGHI+ABCEFGHI+
ACDEFGHJ+ACDEFGHJ+BDEFGHJ+
ACDFGIJ+BCDEFGIJ+BCDEFGIJ+
ABCDFHIJ+ABCEFHIJ+ABCDFHIJ+BCEFHIJ+BCDEFHIJ+
ABCDGHIJ+ABCEGHIJ+ABDGHIJ+ABCEGHIJ+ABDEGHIJ⇒
ACEFGHIJ+ABDFGHIJ+BCEFGHIJ+
ACDEFGHI+ACEFGHI+ABDEFGHI+ABCEFGHI+
ACDEFGHJ+ACDEFGHJ+BDEFGHJ+
ACDFGIJ+BCDEFGIJ+
ABCDFHIJ+ABCEFHIJ+ABCDFHIJ+ BCEFHIJ+ BCDEFHIJ+
ABCDGHIJ+ABCEGHIJ+ ABDGHIJ+ABCEGHIJ+ABDEGHIJ⇒
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
110 Enumeração
ACEFGHIJ+ABDFGHIJ+
ACDEFGHI+ACEFGHI+ABDEFGHI+ABCEFGHI+
ACDEFGHJ+ACDEFGHJ+BDEFGHJ+
ACDFGIJ+BCDEFGIJ+
ABCDFHIJ+ABCDFHIJ+BCEFHIJ+
ABCDGHIJ+ABCEGHIJ+ABDGHIJ+ABCEGHIJ+ABDEGHIJ⇒
ACEFGHIJ+ABDFGHIJ+
ACDEFGHI+ACEFGHI+ABDEFGHI+ABCEFGHI+
ACDEFGHJ+ACDEFGHJ+BDEFGHJ+
ACDFGIJ+BCDEFGIJ+
ABCDFHIJ+BCEFHIJ+
ABCDGHIJ+ABCEGHIJ+ABDGHIJ+ABCEGHIJ+ABDEGHIJ⇒
ACEFGHIJ+ABDFGHIJ+
ACDEFGHI+ACEFGHI+ABDEFGHI+ABCEFGHI+
ACDEFGHJ+BDEFGHJ+
ACDFGIJ+ BCDEFGIJ
ABCDFHIJ+ BCEFHIJ
ABCDGHIJ+ ABCEGHIJ+ ABDGHIJ+ ABCEGHIJ+ ABDEGHIJ⇒
ABDFGHIJ+
ACEFGHI+ABDEFGHI+
ACDEFGHJ+BDEFGHJ+
ACDFGIJ+ BCDEFGIJ
ABCDFHIJ+ BCEFHIJ
ABCDGHIJ+ ABCEGHIJ+ ABDGHIJ+ ABCEGHIJ+ ABDEGHIJ⇒
ACEFGHI+ABDEFGHI+
ACDEFGHJ+BDEFGHJ+
ACDFGIJ+ BCDEFGIJ
ABCDFHIJ+ BCEFHIJ
ABCEGHIJ+ ABDGHIJ+ ABCEGHIJ⇒
ACEFGHI+ABDEFGHI+ACDEFGHJ+BDEFGHJ+ACDFGIJ+
BCDEFGIJ+ABCDFHIJ+BCEFHIJ+ABCEGHIJ+ABDGHIJ
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
5.3 Enumeração em Dı́grafos 111
Baseado no processo descrito na Seção 5.2.1, sabemos que os termos acima
representam as seguintes coberturas de vértices minimais em L(G).
{a, c, e, f, g, h, i}, {a, b, d, e, f, g, h, i}, {a, c, d, e, f, g, h, j}, {b, d, e, f, g, h, j},
{a, c, d, f, g, i, j}, {b, c, d, e, f, g, i, j}, {a, b, c, d, f, h, i, j}, {b, c, e, f, h, i, j},
{a, b, c, e, g, h, i, j}, {a, b, d, g, h, i, j}
Os conjuntos independentes são obtidos calculando VL − C, para cada
cobertura C. Portanto, os conjuntos independentes maximais de L(G) são
{b, d, j}, {c, j}, {b, i}, {a, c, i}, {b, e, h}, {a, h}, {e, g}, {a, d, g}, {d, f}, {c, e, f}
os quais correspondem aos emparelhamentos maximais em G. Observe que
α(L(G)) = α′(G) = 3, i.e, o número de independência de L(G) é igual ao
tamanho do maior emparelhamento em G.
5.3 Enumeração em Dı́grafos
Nesta seção aplicamos o método de Maghout em d́ıgrafos para obter as co-
berturas de vértices, conjuntos independentes, cliques, conjuntos dominan-
tes (entrada, sáıda e gêmeos) e emparelhamentos. Em todos os casos, sele-
cionamos um d́ıgrafo e aplicamos o método apresentando passo a passo as
operações realizadas. Em algumas situações re-aproveitamos os resultados já
calculados na seção anterior, que é o caso da seção de emparelhamento.
5.3.1 Coberturas de Vértices e Conjuntos Independen-
tes
A aplicação do método de Maghout em d́ıgrafos é direta. Independente se o
d́ıgrafo é simples ou não, utilizamos seu grafo simples subjacente. Note que Grafo Simples
Subjacenteo grafo subjacente a um multigrafo direcionado é um multigrafo. Podemos
aplicar o método neste grafo, porém existirá redundância de esforço já que
múltiplas arestas entre um mesmo par de vértices irão aparecer várias vezes
no produtório. Para minimizar isto utilizamos o grafo subjacente ao mul-
tigrafo que é simples. Por exemplo, o d́ıgrafo D = (V,A) da Figura 4.2(a)
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
112 Enumeração
possui os seguintes grafos: o grafo subjacente ao d́ıgrafo, que é um multi-
grafo, e o grafo subjacente a este multigrafo. Estes grafos são ilustrados nas
Figuras 5.4(a) e (b), respectivamente. O produtório da Equação 5.1 para o
multigrafo na Figura 5.4(a) é
(1̇+3̇)2(1̇+5̇)2(5̇+3̇)2(2̇+3̇)2(2̇+4̇)2(2̇+6̇)2(3̇+4̇)2(3̇+6̇)2(4̇+6̇)2(1̇+2̇)(5̇+6̇)
onde
(v̇ + u̇)k = (v̇ + u̇)(v̇ + u̇). . . . .(v̇ + u̇)︸ ︷︷ ︸
k vezes
e k corresponde à multiplicidade da aresta {v, u}. Enquanto que para o grafo
ilustrado na Figura 5.4(b), temos
(1̇ + 3̇)(1̇ + 5̇)(5̇ + 3̇)(2̇ + 3̇)(2̇ + 4̇)(2̇ + 6̇)(3̇ + 4̇)(3̇ + 6̇)(4̇ + 6̇)(1̇ + 2̇)(5̇ + 6̇)
Usando a simplificação mostrada na Equação 5.2 juntamente com a lei de
idempotência do operador lógico e, é posśıvel mostrar que as expressões para
o multigrafo e para grafo são equivalentes. Portanto, aplicando o método de
Maghout na expressão acima temos a seguinte seqüência de passos.
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
5.3 Enumeração em Dı́grafos 113
(1̇ + 3̇)(1̇ + 5̇)(5̇ + 3̇)(2̇ + 3̇)(2̇ + 4̇)(2̇ + 6̇)
(3̇ + 4̇)(3̇ + 6̇)(4̇ + 6̇)(1̇ + 2̇)(5̇ + 6̇)⇒ Equação 5.2
(3̇ + 1̇2̇4̇5̇6̇)(1̇ + 5̇)(2̇ + 4̇)(2̇ + 6̇)(4̇ + 6̇)
(1̇ + 2̇)(5̇ + 6̇)⇒ Equação 5.2
(3̇ + 1̇2̇4̇5̇6̇)(1̇ + 5̇)(2̇ + 4̇)(6̇ + 2̇4̇5̇)(1̇ + 2̇)⇒ Equação 5.2
(3̇ + 1̇2̇4̇5̇6̇)(6̇ + 2̇4̇5̇)(2̇ + 1̇4)(1̇ + 5̇)⇒ distributividade
(3̇6̇ + 2̇3̇4̇5̇ + 1̇2̇4̇5̇6̇ + 1̇2̇4̇5̇6̇)(2̇ + 1̇4)(1̇ + 5̇)⇒ idempotência
(3̇6̇ + 2̇3̇4̇5̇ + 1̇2̇4̇5̇6̇)(2̇ + 1̇4̇)(1̇ + 5̇)⇒ distributividade
(3̇6̇ + 2̇3̇4̇5̇ + 1̇2̇4̇5̇6̇)(1̇2̇ + 2̇5̇ + 1̇4̇ + 1̇4̇5̇)⇒ absorção
(3̇6̇ + 2̇3̇4̇5̇ + 1̇2̇4̇5̇6̇)(1̇2̇ + 2̇5̇ + 1̇4̇)⇒ distributividade
1̇2̇3̇6̇ + 2̇3̇5̇6̇ + 1̇3̇4̇6̇ + 1̇2̇3̇4̇5̇ + 2̇3̇4̇5̇ + 1̇2̇3̇4̇5̇+
1̇2̇4̇5̇6̇ + 1̇2̇4̇5̇6̇ + 1̇2̇4̇5̇6̇⇒ idempotência
1̇2̇3̇6̇ + 2̇3̇5̇6̇ + 1̇3̇4̇6̇ + 1̇2̇3̇4̇5̇ + 2̇3̇4̇5̇+
1̇2̇3̇4̇5̇ + 1̇2̇4̇5̇6̇⇒ absorção
1̇2̇3̇6̇ + 2̇3̇5̇6̇ + 1̇3̇4̇6̇ + 2̇3̇4̇5̇ + 1̇2̇4̇5̇6̇
Após este processo, obtivemos cinco termos indicando que temos as se-
guintes coberturas de vértices minimais
{1, 2, 3, 6}, {2, 3, 5, 6}, {1, 3, 4, 6}, {2, 3, 4, 5}, {1, 2, 4, 5, 6}A obtenção dos conjuntos independentes maximais é feita como mostrada
na seção anterior. Dada uma cobertura minimal de vértices C, o conjunto
independente maximal é V −C. Logo, os conjuntos independentes maximais
de D são
{4, 5}, {1, 4}, {2, 5}, {1, 6}, {3}
e o número de independência do d́ıgrafo é α(D) = 2.
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
114 Enumeração
Figura 5.4: Enumeração de Conjuntos Independentes em Dı́grafos. (a) grafo
subjacentes e (b) grafo simples subjacente ao d́ıgrafo ilustrado na Figura 4.2
5.3.2 Coberturas de Fonte e Sumidouro
Como as coberturas de fonte e sumidouro podem ser obtidas diretamente a
partir dos arcos do d́ıgrafo, o método de Maghout não é utilizado nesta seção.
Dado um d́ıgrafo D = (V,A), as coberturas de fonte e sumidouro Cf ⊆ V e
Cs ⊆ V , respectivamente, correspondem a subconjuntos de vértices tal que
para todo arco (u, v) ∈ A, u ∈ Cf e v ∈ Cs, i.e., para cada arco, o vértice
origem compõe a cobertura de fonte enquanto que o vértice destino compõe a
cobertura de sumidouro. Note que o fato de v ∈ Cf , não implica que v é um
vértice fonte. Isto indica apenas que existem arcos que têm v como origem.
A mesma idéia está relacionada aos vértices em Cs.
Para ilustrar estas coberturas, considere os d́ıgrafos ilustrados na Fi-
gura 5.5. Para o d́ıgrafo D1 em (a), as coberturas de fonte e de sumidouro
são Cf = {a, e} e Cs = {b, c, d, f}, respectivamente. Como Cf ∩Cs = ∅, logo
D1 é um d́ıgrado bipartido direcionado com as partições definidas por Cf e
Cs. Neste caso, para cada arco (u, v), u é vértice fonte e v é vértice sumi-
douro. Para o d́ıgrafo D2 em (b), Cf = {a, b, e} e Cs = {c, d, e, f}. D2 é um
d́ıgrafo bipartido, pois seu grafo subjacente é bipartido possuindo os seguin-
tes conjuntos independentes {a, e} e {b, c, d, f}. Todavia, D2 não é bipartido
direcionado pois Cf ∩ Cs 6= ∅, i.e., D2 não possui apenas vértices fonte e su-
midouro. O d́ıgrafo D3 em (c), possui Cf = {a, b, c, d, e} e Cs = {a, b, c, d, f}.
Este d́ıgrafo não é bipartido, pois o grafo subjacente possui ciclos de tamanho
3. Ele é um d́ıgrafo 3-partido cujo conjunto de vértices pode ser dividido nas
seguintes partições {a, e}, {b, d} e {c, f}.
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
5.3 Enumeração em Dı́grafos 115
(a) (b) (c)
Figura 5.5: Cobertura de Fonte e Sumidouro
5.3.3 Cliques
O cálculo de cliques maximais em d́ıgrafos é similar ao cálculo realizado para
grafos. Inicialmente calculamos o complemento do d́ıgrafo e encontramos
seu grafo simples subjacente, pelos motivos apresentados na Seção 5.3.1. Em
seguida aplicamos o método de maghout. Considere, o d́ıgrafoD, ilustrado na
Figura 4.2. O Complemento deste d́ıgrafo D̄ e seu grafo simples subjacente,
são ilustrados nas Figuras 5.6(a) e (b), respectivamente.
(a) (b)
Figura 5.6: Enumeração de Cliques em Dı́grafos. (a) Complemento e (b)
grafo simples subjacente do d́ıgrafo ilustrado na Figura 4.2.
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
116 Enumeração
A partir do grafo simples subjacente, temos os seguintes passos
(1̇ + 2̇)(1̇ + 4̇)(1̇ + 6̇)(5̇ + 2̇)(5̇ + 4̇)(5̇ + 6̇)⇒ Equação 5.2
(1̇ + 2̇4̇6̇)(5̇ + 2̇4̇6̇)⇒ Equação 5.2
1̇5̇ + 2̇4̇6̇
Os termos encontrados correspondem às seguintes cobertura de vértices
minimais
{1, 5}, {2, 4, 6}
Usando este resultado encontramos os seguintes conjuntos independentes
maximais em D̄,
{2, 3, 4, 6}, {1, 3, 5}
que correspondem aos cliques maximais em D. Logo, o número de clique
do d́ıgrafo é ω(D) = 4.
5.3.4 Conjuntos Dominantes
O uso do método de Maghout para o cálculo dos conjuntos dominantes em
d́ıgrafos segue uma lógica muito similar àquela descrita na Seção 5.1. Ini-
cialmente apresentaremos o cálculo dos conjuntos dominantes de entrada e
em seguida mostraremos como os conjuntos dominantes de sáıda serão cal-
culados. Finalizaremos com o cálculo dos conjuntos dominantes minimais
gêmeos. É importante considerar que para o cálculo da cobertura de vértices,
criamos uma soma lógica u̇+ v̇ para cada aresta {u, v}. Esta soma indica que
podemos selecionar ou o vértice u ou o vértice v para compor a cobertura
de vértices. Este mesmo processo de escolha será usado para o cálculos dos
conjuntos dominantes maximais.
Dado o d́ıgrafo D = (V,A), ilustrado na Figura 4.10, para cada vértice
criaremos uma variável lógica. Neste caso, os vértices a− f estão associados
às variáveis lógicas A − F , respectivamente. Em seguida, para cada vértice
v criamos uma soma lógica contendo todas as variáveis dos vértices que são
dominadas por v6. Por exemplo, para o vértice a, criamos a seguinte soma
lógica
(A+B + C)
6Um vértice v domina um vértice u, se existe o arco (v, u) no d́ıgrafo. Além disso, é
importante considerar que v domina a si próprio.
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
5.3 Enumeração em Dı́grafos 117
para o vértice b temos a seguinte soma (B + C + D), e assim por diante.
Portanto para este d́ıgrafo temos o seguinte produto destacando o vértice
dominante embaixo da sua respectiva soma lógica.
(A+B + C)︸ ︷︷ ︸
a
(B + C +D)︸ ︷︷ ︸
b
(A+B + C + E)︸ ︷︷ ︸
c
(B +D + F )︸ ︷︷ ︸
d
(C +D + E + F )︸ ︷︷ ︸
e
(B + F )︸ ︷︷ ︸
f
Em seguida realizamos os seguintes passos
(A+B+C)(B+C+D)(A+B+C+E)(B+D+F)
(C+D+E+F)(B+F)⇒ Equação 5.4
(A+B+C)(B+C+D)(B+D+F)(C+D+E+F)(B+F)⇒ Equação 5.4
(A+B+C)(B+C+D)(C+D+E+F) (B+F)⇒ Equação 5.3
(B+C+AD)(C+D+E+F)(B+F)⇒ Equação 5.3
(B+(C+AD)F )(C+D+E+F)⇒ distributividade
(B+CF+ADF)(C+D+E+F)⇒ distributividade
BC+BD+BE+BF+CF+CDF+CEF+ CF+ACDF+
+ADF+ADEF+ADF⇒ absorção
BC+BD+BE+BF+CF+ADF+ADEF+ADF⇒ absorção
BC+BD+BE+BF+CF+ ADF
Portanto, os conjuntos dominantes de entrada para D são Conjuntos Do-
minantes de
Entrada{b, c}, {b, d}, {b, e}, {b, f}, {c, f}, {a, d, f}
e o número de dominância de entrada é γ−(D) = 2. Calcular o conjunto
dominante de sáıda a partir do conjunto dominante de entrada através de
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
118 Enumeração
Cs = V −Ce , onde Ce é o conjunto dominante de entrada e Cs é o conjunto
dominante de sáıda, pode levar a resultados incompletos ou não minimais.
Por exemplo, os conjuntos obtidos a partir do resultado anterior são
{a, d, e, f}, {a, c, e, f}, {a, c, d, f}, {a, c, d, e}, {a, b, d, e}, {b, c, e}
Note que o conjunto {a, d, e, f} não corresponde a um conjunto minimal
pois {a, e} é o conjunto dominante de sáıda minimal. Além disso, alguns
conjuntos que compõem o resultado correto, como {b, c, f}, não aparecem.
Este conjunto é dominante de sáıda e não é subconjunto próprio de outro
conjunto.
Para obtermos os conjuntos dominantes de sáıda minimais, realizamos um
processo similar ao exposto anteriormente. Porém ao invés de escrevermos
para cada vértice v a soma lógica das variáveis que são dominadas por v,
escrevemos a soma lógica das variáveis que dominam v. Para o mesmo d́ıgrafo
D, a soma associada ao vértice a é dada apenas por (A + C). Em seguida
realizamos o produto das somas obtidas para cada vértice. Isto resultado no
seguinte produto
(A+ C)︸ ︷︷ ︸
a
(A+B + C +D + F )︸ ︷︷ ︸
b
(A+B + C + E)︸ ︷︷ ︸
c
(B +D + E)︸ ︷︷ ︸
d
(C + E)︸ ︷︷ ︸
e
(D + E + F )︸ ︷︷ ︸
f
Em seguida realizamos os seguintes passos
(A+C)(A+B+C+D+F)(A+B+C+E)(B+D+E)
(C+E)(D+E+F)⇒ Equação 5.4
(A+C)(B+D+E)(C+E)(D+E+F)⇒ Equação 5.3
(A+C)(D+E+BF)(C+E)⇒ Equação 5.3
(C+AE)(D+E+BF)⇒ distributividade
CD+CE+CBF+ADE+AE+ABEF⇒ absorção
CD+CE+CBF+AE
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license,visit https://creativecommons.org/licenses/by-nc-sa/4.0
5.3 Enumeração em Dı́grafos 119
Portanto, os conjuntos dominantes de sáıda para D são Conjuntos Do-
minantes de
Sáıda
{c, d}, {c, e}, {c, b, f}, {a, e}
e o número de dominância de sáıda é γ+(D) = 2.
O cálculo dos conjuntos dominantes gêmeos minimais segue diretamente
do resultado obtido nos cálculos anteriores. Sabemos que para um d́ıgrafo
D = (V,A), um conjunto dominante gêmeo S é um subconjunto de vértices
S ⊆ V , tal que todo par de vértices u, v ∈ S existem dois arcos (u,w), (w, v) ∈
A para todo w ∈ V − S. Nos conjuntos dominantes de entrada S1, todos os
vértices em V −S1 dominam pelo menos um vértice em S1, enquanto que nos
conjuntos dominantes de sáıda S2, todos os vértices em V −S2 são dominados
pelos vértices em V2. Portanto V − (S1 ∪ S2) correspondem aos vértices que
dominam os vértices em S1 e são dominados pelos vértices em S2.
Considerando os resultados anterioresR1 =BC+BD+BE+BF+CF+ ADF
e R2 =CD+CE+CBF+AE associados aos conjuntos dominantes de entrada
e de sáıda respectivamente. Os conjuntos dominantes gêmeos são obtidos
através dos seguintes passos
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
120 Enumeração
R1.R2=(BC+BD+BE+BF+CF+ ADF)
(CD+CE+CBF+AE)⇒ distributividade
BCD+BCE+BCF+ABCE+BCD+BCDE+BCDF+
ABDE+BCDE+BCE+BCEF+ABE+BCDF+BCEF+
BCF+ABEF+CDF+CEF+BCF+ACEF+ACDF+
ACDEF+ABCDF+ADEF⇒ absorção
BCD+BCE+BCF+ABCE+
ABDE+BCE+BCEF+ABE+BCEF+
BCF+ABEF+CDF+CEF+BCF+ACEF+ACDF+
ACDEF+ADEF⇒ absorção
BCD+BCE+BCF+
ABDE+ABE+
BCF+ABEF+CDF+CEF+BCF+ACEF+ACDF+
ACDEF+ADEF⇒ absorção
BCD+BCE+BCF+
ABDE+ABE+
ABEF+CDF+CEF+ACEF+ACDF+
ACDEF+ADEF⇒ absorção
BCD+BCE+BCF+
ABE+CDF+CEF+ACEF+ACDF+
ACDEF+ADEF⇒ absorção
BCD+BCE+BCF+ABE+
+CDF+CEF+ACDF+ADEF⇒ absorção
BCD+BCE+BCF+ABE+
CDF+CEF+ADEF
Portanto, os conjuntos dominantes gêmeos para D sãoConjuntos
Dominantes
Gêmeos {b, c, d}, {b, c, e}, {b, c, f}, {a, b, e}, {c, d, f}, {c, e, f}, {a, d, e, f}
e o número de dominância gêmeo é γ∗(D) = 3.
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
5.4 Exerćıcios 121
5.3.5 Emparelhamentos
Na Seção 5.2.4, vimos explicitamente o relacionamento entre emparelhamento
maximal e conjunto independente maximal através da relação entre um grafo
G e seu grafo linha L(G). Observamos que os emparelhamentos de G po-
deriam ser obtidos calculando os conjuntos independentes em L(G). Isto
permitiu o uso do método de Maghout em L(G) para enumerar todos os
emparelhamentos maximais de G.
Na Seção 4.5, discutimos que o conceito de emparelhamento para gra-
fos e d́ıgrafos era o mesmo, porém com a diferença de que para o primeiro
considerávamos arestas enquanto para o último considerávamos arcos. En-
tretanto, em ambos os casos, o emparelhamento buscava sempre um conjunto
de arcos ou arestas que não compartilhavam vértices e não correspondiam a
laços.
Nesta seção iremos usar os resultados obtidos anteriormente para grafos
e apresentados na Seção 5.2.4. Considerando o d́ıgrafo D = (V,A) mostrado Grafo Subja-
cente ao Dı́grafona Figura 5.7, a enumeração dos emparelhamentos é feita a partir do grafo
subjacente a D, o qual chamaremos de D′. Usando D′, aplicamos o método Grafo Linha
de Maghout no grafo linha L(D′). O grafo D′ é o grafo da Figura 5.3 que foi
utilizado na Seção 5.2.4 para exemplificar o cálculo dos emparelhamentos ma-
ximais. Portanto os passos mostrados naquela seção assim como o resultado
obtido são também válidos para o d́ıgrafo D. Assim, os emparelhamentos
maximais para D correspondem aos seguintes conjuntos de arcos
{b, d, j}, {c, j}, {b, i}, {a, c, i}, {b, e, h}, {a, h}, {e, g}, {a, d, g}, {d, f}, {c, e, f}
e α′(D) = 3 indicando que o tamanho do maior emparelhamento de D é igual
a 3.
5.4 Exerćıcios
Exerćıcio 5.1. Liste todos os conjuntos independentes do grafo ilustrado na
Figura 4.1(a) e determine seu número de independência.
Exerćıcio 5.2. Liste todos os conjuntos independentes e cliques do grafo
ilustrado na Figura 5.8. Em seguida determine seus números de clique e de
independência.
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
122 Enumeração
Figura 5.7: Dı́grafo usando para o cálculo do emparalhamento.
Exerćıcio 5.3. Liste todos os conjuntos independentes e cliques do comple-
mento do grafo ilustrado na Figura 5.8. Em seguida determine seus números
de clique e de independência. Compare os resultados obtidos com os do
exerćıcio anterior.
Exerćıcio 5.4. Quantos conjuntos independentes e cliques possui: (a)Kn e
(b) Cn
Exerćıcio 5.5. Mostre para qualquer grafo G, ω(G) = α(Ḡ) e α(G) = ω(Ḡ)
Exerćıcio 5.6. Mostre que para qualquer inteiro positivo n ≥ 2, o número
de Ramsey r(n, 2) é igual a n.
Exerćıcio 5.7. Determine |V | e |A| de um grafo biclique Kr,s = (V,A).
Exerćıcio 5.8. Quantos automorfismos possui um biclique Kr,s com (a) r 6=
s e (b) r = s?
Exerćıcio 5.9. Dado um grafo G = (V,A), mostre que
d(vi)∧
j=1
(ui + ui+j) = ui +
d(vi)∧
j=1
(ui+j)
considerando que ui é a variável lógica associada ao vértice vi ∈ V e ui+j é
a variável lógica associada ao vértice wj ∈ τ(vi).
Exerćıcio 5.10. Determine os conjuntos independentes maximais e os cli-
ques do d́ıgrafo ilustrado na Figura 5.9
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
5.4 Exerćıcios 123
Figura 5.8: Grafo Exemplo
Figura 5.9: Dı́grafo Exemplo
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
124 Enumeração
Exerćıcio 5.11. Dada uma aresta com multiplicidade k ≥ 1, mostre que
(v̇ + u̇)k = (v̇ + u̇),
onde + é a operação lógica ou.
Exerćıcio 5.12. Seja G = G1 +G2, i.e., o resultado da operação de junção
sobre os grafos G1 e G2. Prove que ω(G) = ω(G1) + ω(G2).
Exerćıcio 5.13. Mostre que um grafo G é bipartido se e somente se α(H) ≥
1
2
|H| para todo subgrafo H de G, i.e., H ⊆ G.
Exerćıcio 5.14. Mostre que para qualquer k > 0, todo grafo k-regular bipar-
tido tem um emparelhamento perfeito.
Exerćıcio 5.15. Determine a quantidade de emparelhamentos perfeitos de
um grafo completo Kn.
Exerćıcio 5.16. Prove que para qualquer grafo G = (V,A), α(G) ≥ |V |
∆(G)+1
Exerćıcio 5.17. Mostre que max{γ+(D), γ−(D)} ≤ γ∗(D) ≤ γ+(D) +
γ−(D)
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
Caṕıtulo 6
Árvores
Este caṕıtulo apresenta os principais conceitos relacionados a um tipo parti-
cular de grafo chamado Árvore. Uma árvore pode ser vista ou como um grafo
conexo ou como um d́ıgrafo conexo sem ciclos. Árvores vêm sendo estudadas
deste 1857 por Cayley em processos de contagem de componentes qúımicos
e possuem inúmeras aplicações práticas, sendo freqüentemente empregadas
em algoritmos que necessitam realizar buscas rápidas de itens em uma lista;
representar dados eficientemente para armazenamento ou transmissão; mo-
delar explicitamente um processo de decisão, entre outros.
6.1 Conceitos Básicos
Definição 6.1. Uma árvore é um grafo conexo aćıclico, i.e., sem ciclos de
qualquer tamanho.
Qualquer grafo simples conexo que não possui ciclos é uma árvore. Quando
o grafo é simples e apenas aćıclico, temos uma floresta, onde cada componente Floresta
conexo é uma árvore. Se ele possui apenas um único componente conexo,
então ele é uma árvore que consiste em uma floresta conexa. A Figura 6.1
ilustra vários grafos aćıclicos que representam árvores, em particular, (a) é
um grafo caminho P6 e (b) é um grafo estrela S6. Observe que em todos os
casos, o número de arestas é uma unidade a menos que o númerode vértices.
A união de todas as árvores nesta figura compõe uma floresta com 3 compo-
nentes conexos. O fato de uma árvore ser um grafo aćıclico leva ao seguinte
Teorema.
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
126 Árvores
(a) (b) (c)
Figura 6.1: Exemplo de árvores. O grafo resultante da união das árvores (a),
(b) e (c) corresponde a uma floresta.
Teorema 6.1. Em uma árvore, existe um único caminho entre qualquer par
de vértices.
A presença de um ciclo em um grafo leva a pelo menos dois caminhos
entre algum par de vértices na árvore. Como uma árvore não possui ciclos
nem laços então o número de arestas é limitado pelo número de vértices.
Teorema 6.2. Uma árvore T = (V,A) possui |A| = |V | − 1.
O fato do número de arestas ser limitado pelo número de vértices em uma
árvore T , nos leva ao seguinte teorema relacionado ao conjunto de árvores
que formam uma floresta.
Teorema 6.3. Uma floresta F = (V,A) composta por n árvores Ti =
(Vi, Ai), com 1 ≤ i ≤ n, possui uma quantidade de aresta igual a
|A| =
n∑
i=1
|Vi| − n.
Uma árvore possui inúmeras caracteŕısticas que são equivalentes entre si e
que a individualizam dos demais grafos. Estas caracteŕısticas são destacadas
no seguinte Teorema.
Teorema 6.4. Para um grafo T = (V,A) de n ≥ 1 vértices, as seguin-
tes afirmações são equivalentes e caracterizam T como uma árvore com n
vértices.
(i) T é conexo e tem n− 1 arestas;
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
6.1 Conceitos Básicos 127
(ii) Para qualquer par de vértices v, u ∈ V , existe apenas um único caminho
de v a u (e vice-versa) em T ;
(iii) T é minimamente conexo, i.e., T é conexo porém a remoção de qualquer
aresta qualquer torna T desconexo.
(iv) T é maximamente aćıclico, i.e., T não possui ciclos entretanto a adição
de uma aresta entre qualquer par de vértices não adjacentes gera um
ciclo em T .
A partir do ı́tem (iii) do Teorema 6.4, temos os seguintes Corolários
Corolário 6.1. Cada aresta de uma árvore é uma aresta de corte (Verifique!).
Corolário 6.2. Um vértice v de uma árvore é um vértice de corte se e
somente se d(v) > 1 (Verifique!).
Portanto qualquer árvore T com mais de n ≥ 2 vértices possui conectivi-
dades de vértice e de aresta iguais a 1, i.e., λ(T ) = κ(T ) = 1.
É comum lidarmos com árvores cujos vértices possuam rótulos. Uma
árvore com vértices rotulados com letras ou número é chamada árvore ro-
tulada. Duas árvores rotuladas T = (V,A) e T ′ = (V ′, A′) são idênticas se Árvore Rotulada
V = V ′ e A = A′, i.e., se tanto o conjunto de aresta quanto o conjunto de
vértices forem iguais. Se ambas as árvores possúırem a mesma forma, porém
com conjunto de arestas distintos, devido aos rótulos, elas serão consideradas
diferentes. Neste caso, dizemos que são árvores isomórficas, porém diferen- Árvores
Isomórficastes. Isomorfismo em grafos é discutido em maiores detalhes na Seção 1.6.
As árvores mostradas na Figura 6.1 não são rotuladas. Por outro lado, as
árvores das Figuras 6.2(a) e (b) são rotuladas e distintas, mesmo que elas
representem grafos estrela S6. O que difere nestas árvores é o conjunto de
arestas. A aresta {d, c} está contida apenas na árvore em (a), enquanto que
a aresta {a, c} está presente apenas na árvore em (b).
Na Seção 1.4 apresentamos o conceito de centro de um grafo que consiste
em um grafo induzido pelos vértices de excentricidade mı́nima. Este conceito Centro de
Árvoresé válido para árvores com adição da informação de que o centro de uma
árvore é um vértice ou uma aresta. Este resultado foi obtido por Jordan e
apresentado através do seguinte Teorema.
Teorema 6.5 ([18]). O centro de uma árvore é um vértice ou uma aresta.
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
128 Árvores
(a) (b)
Figura 6.2: Exemplo de árvores rotuladas.
Considerando a Figura 6.2, o centro da árvore em (a) é o vértice d, en-
quanto que o centro da árvore em (b) é o vértice a. O vértice d em (a)
possui menor excentricidade dentre todos os vértices, sendo igual a �(d) = 1,
enquanto que os demais vértices possuem excentricidade igual a 2. A mesma
situação é encontrada em (b), porém o vértice que possui a menor excen-
tricidade é o vértice a. Por outro lado, os vértices da árvore ilustrada na
Figura 6.3(a) possuem as seguintes excentricidades:
�(a) = 3, �(b) = 3, �(c) = 3, �(d) = 2, �(e) = 2, �(f) = 3 e �(g) = 3.
Portanto os vértices d e e possuem os menores valores de excentricidade e
correspondem ao centro desta árvore.
6.2 Árvores Enraizadas
Em inúmeras aplicações um dado vértice é designado para se tornar um
vértice raiz. A partir dele podemos associar uma direção à cada aresta deVértice Raiz
forma a criar um caminho direcionado do vértice raiz para cada vértice da
árvore. Isto leva ao conceito de árvore enraizada e também à definição deÁrvore Enrai-
zada uma hierarquia entre os vértices. As Figuras 6.3(b) e (c) mostram árvores
enraizadas geradas a partir da árvore em (a), tendo como ráızes os vértices a
e e respectivamente. É posśıvel alcançar qualquer vértice da árvore através
de um único caminho direcionado a partir do vértice raiz.
Se T = (V,A) é uma árvore enraizada e v, u ∈ V são vértices quaisquer,
então u é pai de v e v é filho de u se existe um arco (u, v) ∈ A. Dois vérticesVértices Pai, Fi-
lho e Irmão são chamados irmãos quando possuem o mesmo pai. Um vértice u é ancestral
Vértices Ances-
tral, Descen-
dente, Folha e
Interno
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
6.2 Árvores Enraizadas 129
(a)
(b) (c)
Figura 6.3: Exemplo de árvores enraizadas. (b) e (c) são árvores enraizadas
geradas a partir de (a), com ráızes a e e respectivamente
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
130 Árvores
de outro vértice v, se e somente existe um caminho direcionado na árvore
de u para v. Neste caso, v é um vértice descendente de u. Vértices que não
possuem descendentes são chamados vértices folha, e os demais vértices são
chamados vértices internos da árvore. O vértice raiz é um vértice interno a
não ser que ele seja o único na árvore. Neste caso, ele é considerado como
sendo um vértice folha.
Toda árvore com no mı́nimo dois vértices tem no mı́nimo duas folhas.
Um vértice folha v possui grau d(v) ≤ 1, onde d(v) = 0, quando a árvore for
composta apenas por ele. Um vértice interno u de uma árvore possui grau
d(u) ≥ 1. A remoção de uma folha de uma árvore com n vértices resulta
em outra árvore porém com n − 1 vértices. Portanto, para qualquer árvore
T=(V,A) não trivial temos d(v) ≥ 1 ,∀v ∈ V . Usando esta informação e os
Teoremas 1.1 e 6.2, temos o seguinte Corolário
Corolário 6.3. Para uma árvore T = (V,A), temos∑
v∈V
d(v) = 2|A| = 2|V | − 2
Uma subárvore T ′ = (V ′, A′) de uma árvore T = (V,A), i.e., denotadaSubárvore
por T ′ ⊆ T , possui como raiz um vértice interno v de T e como vértices
internos todos os vértices descendentes de v e todas as arestas incidentes
a estes vértices em T . Formalmente, se T ′ ⊆ T e v é raiz de T ′, então
u ∈ V ′ se u ∈ V e é descendente da raiz v em T , ou seja, se existe um
caminho direcionado em T com origem em v e destino em u. Em relação
aos arcos, a = (x, y) ∈ A′ se (x, y) ∈ A e x, y ∈ V ′. As Figuras 6.4(a) e (b)
apresentam duas sub-árvores da árvore na Figura 6.3(b) com vértices ráız e
e d, respectivamente. Todos os vértices descendentes do vértice e da árvore
na Figura 6.3(b) compõem a sub-árvorena Figura 6.4(a), juntamente com
os respectivos arcos. O mesmo se aplica à sub-árvore da Figura 6.4(b).
Quando todos os vértices internos de uma árvore enraizada possuem no
máximo p filhos, então dizemos que ela é uma árvore p-ária. Uma árvore
enraizada é p-ária completa se todos os seus vértices internos possuem exa-Árvore p-ária, e
p-ária Completa tamente p filhos. Quando p = 2, temos uma árvore binária composta por
vértices com no máximo dois filhos. Nesta árvore, dizemos que um vértice
Árvore Binária,
Subárvores Di-
reita e Esquerda
com dois filhos possui um filho à esquerda e outro à direita. A subárvore
enraizada com raiz no filho à esquerda é chamada subárvore esquerda, en-
quanto que a outra subárvore é chamada subárvore direita. Árvores binárias
são comumente usadas para estruturar informação para que esta seja aces-
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
6.2 Árvores Enraizadas 131
(a) (b)
Figura 6.4: Exemplo de sub-árvores. (a) e (b) são sub-árvores da árvore da
Figura 6.3(b) com ráızes e e d, respectivamente.
sada de forma eficiente. Nestes casos, elas são chamadas de árvores binárias
de pesquisa.
A árvore mostrada na Figura 6.3(c) é um exemplo de árvore 3-ária,
também chamada de ternária. Esta árvore é completa pois todos os vértices
internos possuem exatamente 3 vértices filhos. Por outro lado, embora a
árvore mostrada na Figura 6.3(b) seja uma árvore ternária, ela não é com-
pleta, pois o vértice e possui apenas dois filhos. Outro exemplo pode ser
visto na Figura 6.1(b) se considerarmos o vértice central como sendo um
vértice raiz. Neste caso, teremos uma árvore 6-ária. A árvore ilustrada na
Figura 6.1(c) pode também ser vista como árvore completa 3-ária se consi-
derarmos que o vértice do topo como vértice raiz.
O comprimento do caminho do vértice ráız até um vértice v qualquer
define o ńıvel do vértice v, denotado por l(v)1. O ńıvel de um vértice é Nı́vel de um
vérticetambém chamado de altura do vértice na árvore. Por exemplo, considere a
árvore T = (V,A) ilustrada na Figura 6.3(c). Os vértices de T possuem os
seguintes ńıveis l(a) = 2, l(b) = 1, l(c) = 2, l(d) = 1, l(e) = 0 e l(f) = 2. Note
que o ńıvel do vértice raiz e é igual a 0, por outro lado o ńıvel do vértice a
é igual a 2. A partir desta informação é posśıvel calcular a altura da árvore Altura de uma
ÁrvoreT , denotada por h(T )2. Ela é definida pelo maior valor de ńıvel encontrado
considerando todos os vértices de T , i.e.,
h(T ) = max
v∈V
l(v).
Uma árvore p-ária de altura h é chamada balanceada se todos os vértices Árvore Balance-
ada1l é a inicial da palavra level que corresponde à palavra ńıvel em inglês
2h é a inicial da palavra height que corresponde à palavra altura em inglês
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
132 Árvores
(a)
(b)
Figura 6.5: Exemplo de árvore balanceada. (a) é uma árvore ternária balan-
ceada, enquanto que (b) é binária porém não balanceada.
folha possuem ńıvel igual ou a h ou h− 1. Se esta árvore é completa e todos
os seus vértices folhas estiverem a uma altura h, então ela é chamada árvore
p-ária cheia. A Figura 6.5(a) mostra uma árvore ternária com raiz no vérticeÁrvore p-ária
Cheia a e altura igual a 3. Esta árvore é balanceada pois todos os vértices folha,
diferentes do vértice b, possuem altura igual a 3, enquanto b possui altura
igual a 2. Por outro lado, a árvore binária em (b) não é balanceada pois ela
possui altura igual a 3 e contém um vértice folha b com altura igual a 1.
A quantidade de vértices que uma árvore p-ária de altura h possui é obtida
somando o número de vértices a uma distância 0, 1, . . ., h da ráız. Assim
temos que
Teorema 6.6. Uma árvore p-ária de altura h possui no máximo ph vértices
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
6.3 Árvores de Espalhamento 133
(a)
(b) (c)
Figura 6.6: Exemplo de árvores de espalhamentos. (a) mostra um grafo G e
(b) e (c) mostram duas árvores de espalhamentos de G.
folha e no máximo
∑h−1
i=0 p
i = p
h−1
p−1 vértices internos.
6.3 Árvores de Espalhamento
Como discutido na Seção 1.1, qualquer grafo G possui um subgrafo, chamado
subgrafo de espalhamento ou subgrafo gerador, que contém todos os vértices
do grafo original. Quando este subgrafo não possui ciclos ele é comumente
chamado de árvore de espalhamento ou árvore geradora. Quando o subgrafo
de espalhamento é desconexo, então temos uma floresta de espalhamento, Floresta de Es-
palhamentoonde cada componente conexo é uma árvore de espalhamento.
A Figura 6.6(a) mostra um grafo G e duas árvores de espalhamentos de
G em (b) e (c). Cada árvore possui o mesmo conjunto de vértices de G e um
subconjunto das arestas que não formam ciclos.
Uma questão que se colocar diretamente após a apresentação destas árvores
é quantas árvores de espalhamento podem ser obtidas a partir de um grafo
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
134 Árvores
G. Uma solução simples e elegante para este problema foi dada por Cayley
através do seguinte Teorema.
Teorema 6.7. O número de árvores de espalhamento de um grafoG = (V,A)
é dado por
T (G) = T (G− a) + T (G/a)
onde a ∈ A e não corresponde a um laço.
Através deste Teorema podemos observar que o número de árvores de
espalhamento de G é obtido de forma recursiva. Inicialmente selecionando
uma aresta a qualquer e a usamos para realizar duas operações em G, já
discutidas na Seção 2.2: a remoção de a, dada por G − a, e a operação de
arco contração em a, dada por G/a. A partir dáı, o número de árvores de
espalhamento de G é igual a soma do número de árvores de espalhamento de
G após a remoção da aresta a, e de G após a operação de arco-contração na
aresta a.
Para exemplificar este processo usaremos o grafo G = (V,A) ilustrado na
Figura 6.7 e a aresta a em destaque. De acordo com o Teorema 6.7, temos
que calcular G1 = G− a e G2 = G/a, pois
T (G) = T (G1) + T (G2)
Figura 6.7: Grafo G exemplo para o cálculo do número de árvores de espa-
lhamento. A aresta em negrito é a selecionada para o Teorema 6.7.
Os grafos G1 e G2 são ilustrados nas Figura 6.8(a) e (d), respectivamente.
Como estes grafos são complexos, não é posśıvel saber diretamente o número
de árvores de espalhamento de cada um deles. Devido a isto, utilizamos
novamente o Teorema 6.7 em G1 e G2. Para G1, selecionamos a aresta b,
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
6.3 Árvores de Espalhamento 135
como ilustrado na Figura 6.8(a) a fim de obter G′1 = G1 − b e G′′1 = G1/b,
ambos ilustrados em (b) e (c), respectivamente. Enquanto que para G2,
selecionamos a aresta c, ilustrada na Figura 6.8(d) para calcular G′2 = G2− c
e G′′2 = G2/c, ambos ilustrados em (e) e (f), respectivamente.
Dessa forma temos,
T (G1) = T (G′1) + T (G′′1) e T (G2) = T (G′2) + T (G′′2)
A partir destes grafos e analisando as Figuras 6.8(a)-(f), sabemos que
T (G′1) = 1 e T (G′′1) = 2. Estes resultados se devem ao fato de G′1 já ser uma
árvore, e G′′1, para se tornar uma árvore deve selecionar uma das duas ares-
tas que são incidentes no mesmo par de vértices. Cada uma destas arestas
juntamente com as demais dá origem a uma única árvore de espalhamento.
Portanto G′′1 possui exatamente duas árvores de espalhamento. Através des-
tes resultados obtemos T (G1) = 3. Usando o mesmo processo, sabemos que
T (G′2) = 2 e T (G′′2) = 4, e consequentemente, T (G2) = 6. Utilizando os
resultados obtidosconclúımos que T (G) = 9.
(a) (b) (c)
(d) (e) (f)
Figura 6.8: Árvores intermediárias utilizadas no cálculo do número de árvores
de espalhamento do grafo G ilustrado na Figura 6.7. (a) G1 = G − a e (b)
G′1 = G1 − b (c) G′′1 = G1/b (d) G2 = G/a (e) G′2 = G2 − c (f) G′′2 = G2/b.
Devido à recursividade, este processo pode ser muito complicado e demo-
rado quando o grafo é muito grande. Felizmente existe uma maneira mais
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
136 Árvores
direta de calcular o número de árvores de espalhamento de grafos genéricos.
Ele foi desenvolvido por Kirchhoff [19] e é baseado no cálculo de determinante
de matrizes. Kirchhoff mostrou que o número de árvores de espalhamento
de um grafo G é determinado a partir do cofator3 da matriz resultante da
subtração da matriz de graus4 pela matriz de adjacência, ambas do grafo G,
o que é expresso através do o seguinte Teorema.
Teorema 6.8 (Teorema de Matriz-Árvore [20]). Dados um grafo G = (V,A)
sem loops com V = {v1, v2, . . . , vn}, a matriz de adjacência D = [di,j] de G,
onde di,j representa o número de arestas entre os vértices vi e vj, e a matriz
de graus M = [mi,j] de G, onde mi,i = d(vi) e mi,j = 0, para i 6= j, o número
de árvores de espalhamento de G pode ser obtido por
T (G) = (−1)i+j detQi,j
onde Qi,j é a matriz resultante da eliminação da linha i e coluna j, relativos
ao elemento qi,j, da matriz Q = M −D.
A aplicação do Teorema 6.8 no grafo da Figura 6.7 é direta. Para facilitar
a visualização da solução, os vértices serão associados aos rótulos de 1 a 5,
conforme podemos ver na Figura 6.9.
Figura 6.9: Grafo G exemplo para o cálculo do número de árvores de espa-
lhamento.
Inicialmente calculamos sua matriz de adjacência D e a matriz de graus
3Dada uma matriz quadrada A = [ai,j ] de ordem n, o cofator Ai,j = (−1)i+j |Dij |, onde
|Dij | é o determinante da matriz resultante da remoção da linha i e coluna j da matriz A.
4A matriz de graus M = [mi,j ] de um grafo é uma matriz diagonal tal que mi,i = d(vi)
e mi,j = 0, para i 6= j, e d(vi) corresponde ao grau do vértice vi.
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
6.3 Árvores de Espalhamento 137
M , as quais são mostradas abaixo.
D =

0 1 1 0 0
1 0 1 0 0
1 1 0 1 1
0 0 1 0 1
0 0 1 1 0
 e M =

2 0 0 0 0
0 2 0 0 0
0 0 4 0 0
0 0 0 2 0
0 0 0 0 2

A matriz Q resultante da subtração da matriz M pela matriz D é dada
por
Q =

2 −1 −1 0 0
−1 2 −1 0 0
−1 −1 4 −1 −1
0 0 −1 2 −1
0 0 −1 −1 2

O cálculo do cofator é realizado selecionando qualquer elemento da matriz
Q, o qual, por conveniência, será o elemento q1,1. Portanto o número de
árvores de espalhamento é dado por.
T (G) = (−1)1+1 det
∣∣∣∣∣∣∣∣∣
2 −1 0 0
−1 4 −1 −1
0 −1 2 −1
0 −1 −1 2
∣∣∣∣∣∣∣∣∣ = 9.
Quando o grafo é completo é posśıvel calcular facilmente o número de
árvores de espalhamento através de uma expressão simples desenvolvida por
Cayley [21] e apresentada pelo seguinte Teorema
Teorema 6.9 ([21]). Para um grafo completo Kn, o número de árvores de
espalhamento é dado por
T (Kn) = nn−2
Este teorema permite também obter a resposta para a seguinte pergunta:
quantas árvores rotuladas podemos gerar com um conjunto de n vértices, de
maneira que qualquer par de vértices possa ser adjacente. Observe que esta
pergunta é análoga à aquela que consiste em determinar o número de árvores
de espalhamento a partir de um grafo totalmente conexo com n vértices. Vale
ressaltar que o resultado obtido diz respeito ao número de árvores distintas,
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
138 Árvores
onde estas árvores podem ou não ser isomórficas entre si. Isomorfismo será
discutido no Caṕıtulo 1.6.
Se considerarmos o conjunto de vértices de Kn sendo definido por N =
{1, 2, . . . , n} notaremos que nn−2 corresponde ao número de sequências de
tamanho n− 2 que podemos formar com os elementos definidos no conjunto
N . A relação entre estas seqüências e as posśıveis árvores geradoras associa-
das ao grafo Kn é devido também ao trabalho de Prüfer. Prüfer [22] mostrou
que existe uma correspondência direta entre o conjunto de árvores de espa-
lhamento de Kn e o conjunto de todas as seqüências de tamanho n − 2, de
maneira que cada árvore seja identificada de forma uńıvoca por uma dada
seqüência. A esta seqüência é dado o nome código prüfer.Código Prüfer
O código Prüfer é obtido através do seguinte processo. Considere uma
árvore T = (V,A) com n vértices rotulados de 1 a n. Por conveniência
denotaremos a árvore no instante i > 0 por Ti, o vértice selecionado no
instante i por si e o vértice vizinho a si por ti. Note que T1 = T , i.e., no
instante 1 a árvore T1 é exatamente igual a árvore original T .
Os vértices vizinhos assumem papel fundamental na construção do código,
pois eles compõem o código Prüfer. Por exemplo, para a árvore T , o código
Prüfer é dado por (t1, t2, t3, . . . , tn−2). A questão principal é como escolher
si. Esta escolha é fácil pois o vértice si corresponde sempre ao vértice folha
de menor ı́ndice na árvore Ti. Os passos abaixo descrevem o processo de
obtenção do código Prüfer:
1. No primeiro passo do cálculo do código, s1 é o vértice folha com menor
ı́ndice na árvore T .
2. Em seguida, identificamos seu vértice vizinho t1 para ser o primeiro
elemento do código Prüfer.
3. Removemos s1 e sua aresta incidente em T1 dando origem à árvore T2.
Nas demais iterações temos os seguintes passos. A cada instante i,
1. O vértice si é determinado e seu vértice vizinho ti passa a integrar a
i-ésima posição do código Prüfer.
2. Em seguida, si é removido da árvore Ti, através da operação Ti − si,
dando origem a uma nova árvore Ti+1.
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
6.3 Árvores de Espalhamento 139
Este processo pára após a execução da iteração n− 2, i.e., quando sobrarem
apenas dois vértices na árvore. Neste momento temos todos os vizinhos dos
vértices selecionados e por conseguinte uma seqüência de tamanho n− 2 que
corresponde ao código Prüfer.
Figura 6.10: Árvore usada para o cálculo do código Prüfer.
Os passos realizados para obter o código Prüfer da árvore ilustrada na
Figura 6.10 são mostrados na Tabela 6.1. Esta tabela mostra a árvore cor-
rente Ti, através apenas de seus vértices, o vértice selecionado si e seu vértice
vizinho ti, e o código Prüfer corrente. Como a árvore possui 9 vértices, este
processo tem apenas 7 iterações. Ao final da sétima iteração temos o código
Prüfer para T . É importante enfatizar que este código permite distinguir a
árvore das demais, i.e., nenhuma outra árvore de 9 vértices com os rótulos
de 1− 9 possui este código.
Iteração i Árvore Ti si ti código Prüfer
1 {1, 2, 3, 4, 5, 6, 7, 8, 9} 1 4 (4)
2 {2, 3, 4, 5, 6, 7, 8, 9} 3 4 (4, 4)
3 {2, 4, 5, 6, 7, 8, 9} 6 5 (4, 4, 5)
4 {2, 4, 5, 7, 8, 9} 7 2 (4, 4, 5, 2)
5 {2, 4, 5, 8, 9} 8 2 (4, 4, 5, 2, 2)
6 {2, 4, 5, 9} 2 4 (4, 4, 5, 2, 2, 4)
7 {4, 5, 9} 4 5 (4,4,5,2,2,4,5)
Tabela 6.1: Passos realizados para obter o código Prüfer da árvore na Fi-
gura 6.10
Existem alguns pontos interessantes no código que merecem destaque. Se
analisarmos o código juntamente com sua árvore, veremos que cada vértice v
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
140 Árvores
aparece no código d(v)− 1 vezes, onde d(v) é o grau do vértice v. Isso ocorre
por alguns motivos. Primeiro é importante enfatizarque os vértices folha
são usados apenas para a seleção dos vértices que irão compor o código, os
quais correspondem aos vértices internos da árvore. Cada vértice interno v
possuirá no máximo d(v)− 1 folhas, o que fará com que este vértice apareça
no código exatamente d(v)− 1 vezes. Quando todas as suas d(v)− 1 folhas
forem removidas ele próprio se tornará folha. Neste momento, ele apenas
contribuirá com o processo informando o seu vértice vizinho que irá compor
o código.
A partir de um código Prüfer P , podemos recuperar a árvore associada da
seguinte maneira. Primeiro, criamos um conjunto de vértices S que contenha
todos os vértices da árvore que não aparecem no código P . Como para uma
árvore com n vértices, temos sempre os rótulos de 1 a n, basta verificar
quais rótulos não aparecem no código e adicioná-los a S. À cada iteração,
o conjunto S sofrerá alterações na quantidade de seus elementos, por isso,
usaremos o termo Si para representar o conjunto S no instante i. No primeiro
passo de iteração, quando i = 1, o conjunto S1 contém todos os vértices
originais de S. De forma análoga, temos o código intermediário Pi definido na
iteração i, e quando i = 1, P1 é exatamente igual ao código original P . Além
deles, usamos os termos si, que corresponde ao elemento de menor rótulo do
conjunto Si, e o pi que corresponde sempre ao primeiro elemento do código
Pi , i.e, o elemento mais à esquerda de Pi. A partir destas informações,
a recuperação da árvore associada ao código Prüfer é feita pelos seguintes
passos:
1. No passo inicial, i = 1, selecionamos o vértice s1, de menor ı́ndice do
conjunto S1, e o primeiro elemento p1 do código P1 para compor a
primeira aresta {s1, p1} da árvore que está sendo recuperada.
2. Em seguida, removemos s1 de S1, gerando o conjunto S2, e o primeiro
elemento p1 de P1, gerando o código P2.
Os passos seguintes seguem a mesma lógica, porém com uma sutil diferença.
1. Na iteração i, selecionamos o vértice si do conjunto Si e o primeiro
elemento pi do código Pi. Estes elementos irão compor a aresta {si, pi}.
Após isto, removemos si de Si e o elemento pi de Pi. Isto gerará o
conjunto Si+1 e o código Pi+1.
2. Se pi não aparecer mais em Pi+1, então ele é adicionado a Si+1.
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
6.3 Árvores de Espalhamento 141
O processo pára quando o código P for completamente processado, i.e., ele
não possuir mais elementos. Neste momento, existirão apenas dois elementos
no conjunto Si, os quais formarão a última aresta da árvore.
A partir do código Prüfer P = (4, 4, 5, 2, 2, 4, 5), gerado anteriormente, a
recuperação da árvore associada é dada através da seguinte seqüência de pro-
cessamento mostrada na Tabela 6.2. Observe que na iteração 5, removemos
o elemento 2 do código Prüfer corrente, P5. Como era a sua última aparição
em P5, ele foi adicionado ao conjunto S6. O mesmo aconteceu com o elemento
4 na iteração 6 que foi adicionado ao conjunto S7. Todas as arestas geradas
compõem o conjunto de arestas da árvore associada ao código Prüfer.
Iteração i Pi pi Si si Aresta
1 (4, 4, 5, 2, 2, 4, 5) 4 {1, 3, 6, 7, 8, 9} 1 {1, 4}
2 (4, 5, 2, 2, 4, 5) 4 {3, 6, 7, 8, 9} 3 {3, 4}
3 (5, 2, 2, 4, 5) 5 {6, 7, 8, 9} 6 {5, 6}
4 (2, 2, 4, 5) 2 {7, 8, 9} 7 {2, 7}
5 (2, 4, 5) 2 {8, 9} 8 {2, 8}
6 (4, 5) 4 {2,9} 2 {2, 4}
7 (5) 5 {4,9} 4 {4, 5}
8 () {5, 9} {5, 9}
Tabela 6.2: Recuperação da árvore T a partir do código Prufer
Como existe uma função bijetora entre a árvore e seu respectivo código
Prüfer, cada permutação dos elementos do código levará a uma árvore distinta
da original, porém mantendo a mesma seqüência de graus. Ou seja, as duas
árvores possuem os mesmos vértices com os mesmos graus por vértice porém
com conjuntos distintos de arestas, já que existirão conexões diferentes entre
os vértices. Por exemplo, se considerarmos o código P ′ = (2, 4, 5, 4, 2, 4, 5),
que corresponde a uma permutação do código P = (4, 4, 5, 2, 2, 4, 5), encon-
traremos uma árvore distinta da árvore mostrada na Figura 6.10. A árvore
associada ao código P ′, mostrada na Figura 6.11, é recuperada através dos
seguintes passos, mostrados na Tabela 6.3
A partir deste resultado conclúımos que : Dada uma seqüência de inteiros
positivos d1, d2, . . . , dn totalizando 2n− 2, existem
(n− 2)!
Πni=1(di − 1)!
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
142 Árvores
Iteração i Pi pi Si si Aresta
1 (2, 4, 5, 4, 2, 4, 5) 2 {1, 3, 6, 7, 8, 9} 1 {1, 2}
2 (4, 5, 4, 2, 4, 5) 4 {3, 6, 7, 8, 9} 3 {3, 4}
3 (5, 4, 2, 4, 5) 5 {6, 7, 8, 9} 6 {5, 6}
4 (4, 2, 4, 5) 4 {7, 8, 9} 7 {4, 7}
5 (2, 4, 5) 2 {8, 9} 8 {2, 8}
6 (4, 5) 4 {2,9} 2 {4, 2}
7 (5) 5 {4,9} 4 {4, 5}
8 () {5, 9} 8 {5, 9}
Tabela 6.3: Recuperação da árvore associada ao código Prufer P ′ =
(2, 4, 5, 4, 2, 4, 5).
Figura 6.11: Árvore associada ao código Prüfer P ′ = (2, 4, 5, 4, 2, 4, 5).
árvores que podem ser formadas a partir de um conjunto de n vértices tal
que o grau do vértice i é di.
Vimos anteriormente que a partir de uma árvore T = (V,A) com |V | = n,
o código Prüfer P tem n − 2 elementos, onde cada vértice v ∈ V aparecerá
no código exatamente d(v)− 1 vezes. Como cada permutação dos elementos
de P corresponde a uma árvore, teremos uma quantidade de árvores igual ao
número de permutações dos elementos de P , dado por
(n− 2)!
Πni=1(d(vi)− 1)!
Portanto, a partir dos vértices da árvore da Figura 6.10, temos a seqüência
de graus 4, 3, 3, 1, 1, 1, 1, 1, 1, onde o grau 4 está associado ao vértice 4, e o
grau três está associado aos vértices 2 e 5. Portanto, o vértice 4 aparecerá três
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
6.3 Árvores de Espalhamento 143
vezes no código enquanto que os vértices 2 e 5 aparecerão duas vezes cada. Os
demais vértices aparecerão zero vezes no código, pois correspondem a vértices
folha. Usando esta informação, a quantidade de árvores que podemos gerar
com os vértices, mantendo os graus definidos acima, é igual a
7!
3!2!2!
= 210 árvores
As Figuras 6.10 e 6.11 ilustram duas árvores das 210 árvores posśıveis. De
forma similar aos grafos, d́ıgrafos possuem árvores de espalhamentos, porém
elas são orientadas. Uma árvore T é chamada de espalhamento orientada
de um d́ıgrafo D, se o grafo subjacente de T é uma árvore de espalhamento
do grafo subjacente de D. Basicamente, estamos eliminando a orientação
tanto de T quanto de D para fazer esta verificação. Além disso, em d́ıgrafos
encontramos os conceitos de árvore orientada de espalhamento de entrada
e árvore orientada de espalhamento de sáıda, também chamadas apenas de
árvore de espalhamento de entrada e árvore de espalhamento de sáıda. Uma Árvore de
Espalhamento
de Entrada
Árvore de
Espalhamento
de Sáıda
árvore T é uma árvore de espalhamento de entrada de um d́ıgrafo D, deno-
tada por T−s , se possuir apenas o vértice s como vértice sumidouro, i.e., com
grau de sáıda d+(s) = 0. De forma similar, T é uma árvore de espalhamento
de sáıda de um d́ıgrafo D, denotada por T+s , se possuir apenas o vértice s
como vértice fonte, i.e., com grau de entrada d−(s) = 0. Neste último caso,
esta árvore também é uma árvore enraizada tendo como raiz o vértice s. As
Figuras 6.12(b)-(d) mostram exemplos de árvores de espalhamento associa-
das ao d́ıgrafo em (a). A árvore em (b) é uma árvore de espalhamento de
entrada com vértice sumidouro r, enquanto que a árvore em (c) é uma árvore
de espalhamento de sáıda com vértice fonte s. Embora a árvore em (d) seja
uma árvore de espalhamento, ela não é nem de entrada nem de sáıda.
De forma similar ao Teorema 6.8,o seguinte Teorema permite calcular a
quantidade de árvores de espalhamento de sáıda de um dado d́ıgrafo.
Teorema 6.10 ( [23]). Dados um d́ıgrafo simples D = (V,A) com V =
{v1, v2, . . . , vn}, sua matriz de adjacência L = [di,j], onde di,j = 1 se (vi, vj) ∈
A e 0 se (vi, vj) /∈ A, e sua matriz de graus de entrada M = [mi,j], onde
mi,i = d
−(vi) e mi,j = 0, para i 6= j, o número de árvores de espalhamento
de sáıda de D com raiz no vértice vi é dado por
T +(D, vi) = detQi
onde Qi é a matriz resultante da eliminação da linha i e coluna i da matriz
Q = M − L.
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
144 Árvores
(a) (b) (c) (d)
Figura 6.12: Exemplos de árvores orientadas de espalhamento do d́ıgrafo
ilustrado em (a). (b) e (c) correspondem às árvores de espalhamento de
entrada e sáıda, respectivamente. (d) é uma árvore de espalhamento que não
é nem de entrada nem de sáıda.
Para facilitar a visualização da aplicação deste teorema considere o d́ıgrafo
ilustrado na Figura 6.13(a).
(a) (b) (c) (d)
Figura 6.13: Exemplos de árvores de espalhamento de sáıda do d́ıgrafo ilus-
trado em (a). (b)-(d) mostram as suas árvores de espalhamento de sáıda com
raiz no vértice v1.
Inicialmente calculamos as matrizes de adjacência L e de graus M , as
quais são mostradas abaixo.
L =

0 1 1 0
0 0 1 0
1 1 0 1
1 0 1 0
 e M =

2 0 0 0
0 2 0 0
0 0 3 0
0 0 0 1

A matriz Q resultante da subtração da matriz M pela matriz L é dada
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
6.3 Árvores de Espalhamento 145
por
Q =

2 −1 −1 0
0 2 −1 0
−1 −1 3 −1
−1 0 −1 1

A quantidade de árvores de espalhamento de sáıda de D com raiz no
vértice v1 é dado
T +(D, v1) = detQ1
onde Q1 é a matriz resultante da eliminação da linha 1 e coluna 1, relativa
ao elemento q1,1, da matriz Q, i.e.,
T +(D, v1) = det
∣∣∣∣∣∣∣
2 −1 0
−1 3 −1
0 −1 1
∣∣∣∣∣∣∣ = 3.
ou seja, o d́ıgrafo D possui 3 árvores de espalhamento de sáıda com raiz
no vértice v1, as quais são mostradas nas Figuras 6.13(b)-(d). O teorema
seguinte permite calcular o número de árvores de espalhamento de entrada e
sáıda de um multigrafo direcionado.
Teorema 6.11 ( [23]). Dados um multigrafo direcionado D = (V,A) com
V = {v1, v2, . . . , vn}, sua matriz de adjacência L = [di,j], onde di,j é a quan-
tidade de arcos que partem de vi e atingem vj, com di,i = 0,∀ i, e sua matriz
de graus de entrada M = [mi,j], onde mi,i = d
−(vi) e mi,j = 0, para i 6= j, o
número de árvores de espalhamento de sáıda de D com raiz no vértice vi é
dado por
T +(D, vi) = detQi
onde Qi é a matriz resultante da eliminação da linha i e coluna i, relativos
ao elemento qi,i, da matriz Q = M − L. Considerando a matriz de graus
de sáıda de D, como N = [ni,j], onde ni,i = d
+(vi) e ni,j = 0, para i 6= j,
o número de árvores de espalhamento de entrada de D com sumidouro no
vértice vi é dado por
T −(D, vi) = detRi
onde Ri é a matriz resultante da eliminação da linha i e coluna i, relativos
ao elemento ri,i, da matriz R = N − L.
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
146 Árvores
6.4 Exerćıcios
Exerćıcio 6.1. Determine o número de vértices de uma árvore enraizada
p-ária completa de altura h.
Exerćıcio 6.2. Determine a altura h de uma árvore p-ária com l folhas.
Exerćıcio 6.3. Determine o número de arestas de uma floresta que possui
t árvores e n vértices.
Exerćıcio 6.4. Mostre que se um grafo G é uma árvore com ∆(G) ≥ k,
então G possui no mı́nimo k vértices folha.
Exerćıcio 6.5. Mostre que toda árvore com exatamente dois vértices de grau
1 é um caminho.
Exerćıcio 6.6. Determine o número de vértices internos e de folhas de uma
árvore p-ária cheia.
Exerćıcio 6.7. Determine o número de vértices e de folhas de uma árvore
p-ária cheia com i vértices internos.
Exerćıcio 6.8. Determine o número de vértices de uma árvore p-ária cheia
com l folhas.
Exerćıcio 6.9. Mostre que os vértices de origem e de destino do mais longo
caminho em uma árvore possuem grau igual a 1.
Exerćıcio 6.10. Determine o número de árvores de espalhamento que pode-
mos gerar com o conjunto de vértices V = {1, 2, 3, 4, 5, 6, 7}, onde os vértices
possuem os seguintes graus {3, 1, 2, 1, 3, 1, 1}, dados em ordem. Em seguida,
defina dois códigos Prüfer e desenhe suas respectivas árvores.
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
Caṕıtulo 7
Planaridade
Este caṕıtulo apresenta os principais conceitos e teoremas relacionados à área
de planaridade em teoria dos grafos. Uma das perguntas que tentaremos
responder com este estudo é a seguinte : é posśıvel desenhar um multigrafo
em um plano de forma que suas arestas não se cruzem? Neste caso, como
estamos focando nossa atenção ao desenho do grafo no plano de forma que
o cruzamento das arestas não ocorra, podemos então levar os resultados que
serão apresentados para o domı́nio dos multigrafos direcionados considerando
sempre seu multigrafo subjacente, i.e., desconsiderando as orientações dos
arcos.
7.1 Multigrafos Planares
Antes de definirmos o que é um multigrafo planar, vamos imaginar o seguinte
problema: existem três companhias que devem abastecer com gás, eletrici-
dade e água três prédios diferentes, os quais podem ou não estar em frente
destas companhias, através de tubulações subterrâneas. Estas tubulações po-
dem estar à mesma profundidade? Outro problema que podeŕıamos tentar
responder é: dada uma representação lógica de um circuito na forma de um
grafo, será que ela pode ser impressa em uma placa f́ısica de forma que as
conexões entre os elementos do circuito não se cruzem? Responder a estas
perguntas equivale a verificar se o grafo associado ao problema é planar ou
não.
Definição 7.1. Um multigrafo G = (V,A) é planar sse existe uma função
de mapeamento f que mapeia G para o espaço R2 de forma que a) cada
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
148 Planaridade
vértice seja mapeado para um ponto distinto de R2 e b) cada aresta (u, v)
seja mapeada para uma curva C(u,v) com extremidades em f(u) e f(v), onde
nenhum par de curvas se intercepte, com exceção de suas extremidades.
Usando a definição supramencionada, temos que
Definição 7.2. Um multigrafo direcionado D = (V,A) é planar sse seu
multigrafo subjacente é planar.
Existem inúmeras funções que mapeiam os vértices e arestas de um mul-
tigrafo para pontos em R2 de forma que as estas arestas não cruzem. Cada
mapeamento define um desenho de G em R2. Os desenhos que obedecerem
aos critérios definidos acima serão chamados de realização gráfica planar de
G, ou simplesmente, realização planar de G. A Figura 7.1 mostra diferentesRealização Pla-
nar desenhos do K3,2 no plano. Apenas as Figuras 7.1(b) e (c) são realizações
planares. Note que é necessário apenas uma única realização planar para
tornar um dado grafo planar.
(a) (b) (c)
Figura 7.1: Grafo K3,2 desenhado no plano. (b) e (c) correspondem a exem-
plos de realização planar de K3,2.
A realização planar de um dado multigrafo G divide o plano R2 em um
conjunto regiões maximais chamadas de faces de G, onde qualquer par deFace de um
Grafo pontos dentro desta região pode ser conectada por uma curva sem interceptar
G. É natural chamar cada curva da realização planar de aresta. Cada aresta
faz fronteira com 1 ou 2 faces. A Figura 7.2 ilustra uma realização planar
onde as arestas a e b são as únicas a fazerem fronteira com apenas uma única
face. Note que a região cinza não é delimitadapor uma face, porém ela faz
fronteira com a realização planar. Devido a isso, ela é chamada ou de face
ilimitada ou de face externa ao grafo. Assim, nesta realização planar temosFace Externa ao
Grafo
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
7.1 Multigrafos Planares 149
Figura 7.2: Exemplo de Grafo Planar
três faces F , F1 e F2, onde a face F é a face externa ao grafo.
Cada face f possui um grau, denotado por d(f) 1 que é definido pela
quantidade de arestas que estão na sua fronteira. Na realização planar ilus- Grau de uma
Facetrada na Figura 7.2, as faces F , F1 e F2 possuem d(F ) = 7, d(F1) = 6 e
d(F2) = 3 graus, respectivamente. Uma aresta que está na fronteira de ape-
nas uma face é contada duas vezes no cálculo do grau daquela face, por isso
a face F tem grau igual a 7, enquanto que a face F2 possui grau igual a 3.
Se somarmos o grau de cada face de um dado grafo, veremos que cada aresta
será contada exatamente duas vezes, ou seja, duas vezes ou pela mesma face
ou uma vez por cada uma das faces que faz fronteira com a aresta. Assim
temos o seguinte teorema,
Teorema 7.1. Se G = (V,A) é multigrafo planar então∑
f∈F
d(f) = 2|A|,
onde F é o conjunto das faces da realização gráfica de G, incluindo a face
externa a G.
A partir da realização planar de um grafo planar G = (V,A) é posśıvel
encontrar um grafo geométrico dual,G∗ = (V ∗, A∗) planar o qual é obtido da Grafo
Geométrico
Dual
seguinte maneira. Cada face f de G, incluindo a face externa corresponderá
a um vértice v∗f ∈ V ∗ em G∗. Dois vértices v∗f , v∗h ∈ V ∗ serão adjacentes
em G∗ se as faces associadas a eles, f e h, compartilharem pelo menos uma
1Notação similar à usada para expressar o grau de um dado vértice.
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
150 Planaridade
aresta. Cada aresta a ∈ A em G dará origem a uma aresta a∗ ∈ A∗ que será
incidente aos vértices em G∗ cujas faces correspondentes em G compartilham
a. Como o grau de cada face f é definido pelo número de arestas que estão
em sua fronteira, o vértice v∗f associado a esta face terá grau igual ao grau
de f , i.e.,
d(f) = d(v∗f )
A Figura 7.3(a) mostra a realização planar de um grafo planar G e o
(b) grafo dual correspondente. Para facilitar a legibilidade da figura, cada
aresta mostrada em (a) é apresentada com o mesmo rótulo em (b). De forma
similar, cada face em (a) estará associada ao vértice de mesmo rótulo em (b).
Neste exemplo, o grafo dual associado é um pseudo grafo já que a aresta a1
em (a) faz fronteira apenas com a face F1. Como um grafo planar qualquer
pode possuir várias realizações planares, então ele pode ter associado vários
grafos geométricos duais, um grafo dual para cada uma de suas realizações
planares. A Figura 7.4 mostra (a) outra realização planar do grafo G. Note
que o (b) grafo geométrico dual correspondente é diferente daquele ilustrado
na Figura 7.4(b).
(a) (b)
Figura 7.3: Exemplo de Grafo Geométrico Dual. (b) é o grafo geométrico
dual da realização planar em (a).
7.2 Teorema de Euler
Euler propôs uma expressão simples que relaciona o número de vértices,
arestas e faces de um grafo conexo. Embora esta expressão faça referência a
grafos simples, ela é diretamente aplicada a multigrafos.
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
7.2 Teorema de Euler 151
(a) (b)
Figura 7.4: Exemplo de Grafo Geométrico Dual. (b) é o grafo geométrico
dual da realização planar em (a).
Teorema 7.2 (Teorema de Euler - Grafos Conexos). Seja G = (V,A) um
grafo conexo planar com f faces e n vértices, i.e., |V | = n, e m arestas, i.e.,
|A| = m, então
n−m+ f = 2
Para grafos desconexos com p componente conexos temos o seguinte teo-
rema,
Teorema 7.3 (Teorema de Euler - Grafos Desconexos). Seja G = (V,A) um
grafo planar com p componentes conexos, f faces e n vértices, i.e., |V | = n,
e m arestas, i.e. |A| = m, então
n−m+ f = p+ 1
Note que quando p = 1, o grafo é conexo, então temos a expressão defi-
nida no Teorema 7.2. A partir destes teoremas podemos concluir que qual-
quer realização planar de um dado grafo particionará o espaço R2 na mesma
quantidade de regiões,
Corolário 7.1. Todas as realizações planares de um multigrafo G planar
conexo ou não têm o mesmo número de faces.
Além disso, usando os teoremas supracitados podemos encontrar ex-
pressões que relacionam o número de vértices ao de arestas de um dado
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
152 Planaridade
multigrafo sem fazer referência expĺıcita ao número de faces. Inicialmente,
vamos considerar um multigrafo conexo G = (V,A) planar com |V | ≥ 3
com faces delimitadas por exatamente 3 arestas. Um exemplo é ilustrado na
Figura 7.5. Usando o Teorema 7.1 temos,
Figura 7.5: Exemplo de Grafo Planar com todas as faces com grau 3.
3f = 2m
onde f é o número de faces de G e m = |A|. Se em G, algumas faces tiverem
grau maior que 3, sabemos que
3f ≤ 2m
A partir do teorema de Euler para grafos conexos, temos
f = 2− n+m
o que nos leva a
3(2− n+m) ≤ 2m
resultando na seguinte desigualdade
m ≤ 3n− 6
Se usarmos esta desigualdade para testar a planaridade do grafo K5 ob-
teremos o seguinte resultado,
10 ≤ 3.5− 6→ 10 ≤ 9.
o que é falso e mostra que K5 não é planar. Note que K5 possui 5 vértices e
10 arestas. Este resultado nos leva ao seguinte teorema.
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
7.2 Teorema de Euler 153
Teorema 7.4. K5 não é planar.
Entretanto esta desigualdade não se aplica ao grafo K3,3. Como K3,3
possui 6 vértices e 9 arestas, a desigualdade acima resultaria em
9 ≤ 3.6− 6→ 9 ≤ 12
o que nos leva a uma conclusão errada, pois K3,3 não é um grafo planar.
Esta conclusão errada foi oriunda da desigualdade que aplicamos. Anterior-
mente assumimos que os grafos possuiriam faces delimitadas por no mı́nimo
3 arestas, porém o grafo K3,3 não possui faces triangulares. Ele é um grafo
bipartido e cada uma de suas faces é delimitada por no mı́nimo 4 arestas.
Assim, a nossa desigualdade inicial deve ser alterada para considerar grafos
com faces que tenham grau no mı́nimo igual a 4. Isso nos leva a
4f ≤ 2m→ 2f ≤ m
Novamente usando o teorema de Euler para grafos conexos, temos
f = 2− n+m
o que nos leva a
2(2− n+m) ≤ m
resultando na seguinte desigualdade
m ≤ 2n− 4
Realizando novamente o teste de planaridade do grafo K3,3 com esta nova
desigualdade, encontramos
9 ≤ 2.6− 4→ 9 ≤ 8
Assim, chegamos ao seguinte teorema
Teorema 7.5. K3,3 não é planar.
Um fato curioso é que os grafos Kn com n ≤ 4 assim como os grafos Kp,q
com p ≤ 3 e q ≤ 2 são planares. Porém grafos Kn com n ≥ 5 ou Kp,q, com
p, q ≥ 3 não são. Isso se deve ao fato de que Kn, com n > 5, contém um
subgrafo K5 enquanto que o grafo Kp,q com p, q ≥ 3 contém um subgrafo
K3,3.
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
154 Planaridade
7.3 Teorema de Kuratowski
Teorema 7.6 (Teorema de Kuratowski). Um grafo G = (V,A) é planar sse
não contém um subgrafo que pode ser contráıdo aos grafos K5 ou K3,3 através
de sucessivas operações de arco-contração.
Dado um grafo G = (V,A), uma operação de arco-contração em uma
aresta a = (v, u) ∈ A onde ou d(v) ou d(u) é 2, leva a um grafo isomórfico
ao grafo reduzido a partir de G pela operação de supressão do vértice (ver
Secão 2.2.8) de grau 2 que é extremidade de a (verifique!). Esta conclusão
leva ao seguinte teorema
Teorema 7.7 (Teorema de Kuratowski). Um grafo G = (V,A) é planarsse
não contém um subgrafo homeomorfo a K5 ou K3,3.
Dois grafos H1 e H2 são homeomorfos se eles podem ser obtidos a partir
de um grafo G através de sucessivas operações de subdivisão e supressão(ver
Seção 2.2.8). Note que a operação de subdivisão é a operação inversa da
operação de supressão. A Figura 7.6(a) mostra o grafo de Petersen com as
arestas a-e em destaque. Se aplicarmos a operação de arco-contração nestas
arestas, obteremos o grafo K5. Logo, o grafo de Petersen não é planar.
A Figura 7.6(b) ilustra outro exemplo de grafo não planar. Se realizarmos
operações de arco-contração nas arestas a-d obteremos o grafo K3,3. Note que
o resultado seria o mesmo se tivéssemos realizado a operação de supressão
dos vértices em cinza.
7.4 Exerćıcios
Exerćıcio 7.1. Mostre que se G = (V,A) é um grafo planar conexo onde
cada face de G é um t-ćırculo então
m =
t(n− 2)
(t− 2)
onde n = |V | e m = |A|.
Exerćıcio 7.2. Mostre que se todas as faces de uma realização planar de um
grafo planar G têm grau par então o grafo geométrico dual G∗ correspondente
será euleriano.
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
7.4 Exerćıcios 155
(a) (b)
Figura 7.6: Exemplos de grafos não planares.
Exerćıcio 7.3. Mostre que se G = (V,A) um grafo planar com p compo-
nentes conexos, f faces e n vértices, i.e., |V | = n e m arestas,i.e. |A| = m,
então
n−m+ f = p+ 1
Exerćıcio 7.4. Mostre que qualquer árvore T com n ≥ 1 vértices possui uma
única realização planar.
Exerćıcio 7.5. Mostre que o grafo obtido a partir da remoção de uma aresta
qualquer do grafo K3,3 é um grafo planar
Exerćıcio 7.6. Mostre que o grafo obtido a partir da remoção de uma aresta
qualquer do grafo K5 é um grafo planar
Exerćıcio 7.7. Mostre que se todos os ciclos de um grafo conexo planar
G = (V,A) possuirem pelo menos k arestas então
|A| ≤ k
k − 2
(|V | − 2)
a seguinte o grafo obtido a partir da remoção de uma aresta qualquer do
grafo K5 é um grafo planar
Exerćıcio 7.8. Mostre que todo grafo roda Wn é isomórfico ao seu grafo
geométrico dual.
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
156 Planaridade
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
Caṕıtulo 8
Coloração
Este caṕıtulo discute os principais conceitos relacionados aos problemas de
coloração de grafos. Algumas das perguntas que tentaremos responder são
se dado um grafo G é posśıvel ou não colorir seus vértices com uma quanti-
dade limitadas de cores de forma que cada vértice adjacente tenha uma cor
diferente; ou a partir de um grafo G, a quantidade de maneiras que podemos
colorir as arestas de G de forma que arestas incidentes em um mesmo vértice
tenham cores diferentes. Respostas a estas perguntas são importantes em di-
versos problemas combinatórios. Um exemplo clássico é o seguinte: imagine
que devamos reunir pessoas para participarem de um ou mais comitês de ava-
liação em uma determinada conferência. Qual deve ser o escalonamento de
horários para o encontro dos membros destes comitês para permitir que todos
os membros participem de todas as atividades realizadas por seus respectivos
comitês?
8.1 Grafos Coloŕıveis
Embora o problema de coloração de grafos seja abstrato, as cores usadas
para colorir um grafo podem ter inúmeros significados. Elas podem repre-
sentar diferentes tipos de informação como horários, recursos, atividades,
entre outros. Para o problema de escalonamento mencionado anteriormente,
temos que inicialmente modelar as instâncias do problema como um grafo.
Cada comitê corresponderá a um vértice no grafo, e dois vértices serão ad-
jacentes sse os comitês correspondentes possuirem pessoas em comum. A
Figura 8.1(a) mostra uma instância deste problema. Nela existem 9 comitês
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
158 Coloração
e cada um deles está associado a um vértice do grafo. Pessoas que participam
de múltiplos comitês impõem restrições que são representadas pelas arestas
deste grafo. Por exemplo, a aresta entre os vértices 1 e 2 indica que existe
pelo menos uma pessoa participa de ambos os comitês. O mesmo acontece,
por exemplo, na aresta entre os comitês 5 e 4. Os triângulos existentes no
grafo podem estar indicando que uma ou mais pessoas participam dos três
comitês associados aos vértices destes triângulos. Este é o caso do triângulo
formado pelos vértices 5, 4 e 9.
(a) (b)
Figura 8.1: Exemplo de Coloração. (b) é uma posśıvel coloração dos vértices
do grafo em (a).
A partir deste grafo devemos colorir seus vértices. Cada cor estará associ-
ado a um horário espećıfico. A solução mais direta seria atribuir um horário
para cada vértice, porém não seria a melhor solução posśıvel. Cada horário
pode implicar em custos. Assim concentrar os encontros dos comitês, fazendo
com que alguns sejam realizados em sessões paralelas, fará com que a quan-
tidade de horários usados seja menor impactando possivelmente a loǵıstica
do evento. Como dito, as arestas impõem restrições ao nosso problema. Por
exemplo, a aresta entre os vértices 1 e 2 informa que pelo menos uma pessoa
participa destes dois comitês. Assim eles devem ser reunir em horários dife-
rentes. Note que este não é o caso para os comitês 5 e 6 ou 9 e 3. Portanto,
uma posśıvel coloração do grafo ilustrado na Figura 8.1(a) é mostrada em
(b). Note que foram usadas apenas 3 cores, ou seja, 3 horários diferentes é
o suficiente para que todos os comitês consigam se reunir de forma que cada
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
8.1 Grafos Coloŕıveis 159
participante participe das reuniões dos seus respectivos comitês. Na solução
mais direta, a resposta seria 9 horários.
Então, os vértices deste grafo poderiam ser coloridos com no mı́nimo 3 e
no máximo 9 cores diferentes. Existem inúmeras maneiras de associarmos as
cores aos vértices de forma que vértices adjacentes tenham cores diferentes.
A Figura 8.1(b) mostra apenas um exemplo
k-coloração
Definição 8.1. Uma k-coloração de um grafo G = (V,A) é uma uma função
de rotulamento f : V → S, onde S correspondem a um conjunto de cores e
|S| = k. Os vértices associados a uma cor formam uma classe de cores.
Definição 8.2. Uma k-coloração é própria se os vértices adjacentes de um
grafo tiverem rótulos (cores) diferentes. Um grafo é k-coloŕıvel se ele tem
uma k-coloração própria. O número cromático χ(G) é o menor k tal que G Número
Cromáticoé k-coloŕıvel.
Em uma coloração própria, cada classe de cores corresponde a um con-
junto independente. Na Figura 8.1(b), podemos notar que os vértices 2,5,6
e 8 não são adjacentes entre si e por isso possuem a mesma cor. Logo se
um dado grafo G é k-coloŕıvel, então seu conjunto de vértices está sendo
particionado em k conjuntos independentes. Grafo k-coloŕıvel
x Grafo k-
partido
Note que o fato de um grafo ser k-coloŕıvel não implica que ele seja um
grafo k-partido. Como vimos na Seção 4.2, para que um grafo seja k-partido,
ele deve obedecer a alguns critérios, entre eles aquele que define que k é o
menor número de particionamentos dos vértices do grafo de forma que cada
partição corresponda a um conjunto independente. Essa restrição é impor-
tante, caso contrário teŕıamos classificações problemáticas. Por exemplo,
qualquer grafo com n vértices pode ser colorido propriamente com n cores,
entretanto isso não o torna n-partido. Um grafo ciclo Cn, com n par, é
um grafo bipartido e pode ser colorido propriamente com n coresdiferentes,
porém sabemos que χ(Cn) = 2 para n par. Note que como as definições acima
focam na adjacência e coloração dos vértices, elas são diretamente aplicadas
a multigrafos , porém não a pseudografos. Pseudografos permitem laços e Multigrafos x
Coloraçãopor isso não são coloŕıveis.
Pseudografos x
Coloração
Apesar de termos destacado que um grafo k-coloŕıvel não implica que
ele seja um grafo k-partido, temos que um grafo G com número cromático
χ(G) = k implica que o grafo seja k-partido. Neste caso, χ(G) define a menor
quantidade de cores que podemos usar para colorir um grafo propriamente, e
consequentemente o menor particionamento dos vértices de G de forma que
cada partição corresponda a um conjunto independente. Assim temos que
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
160 Coloração
Teorema 8.1. Um grafo G é k-partido sse seu número cromático for igual
a k, i.e., χ(G) = k.
A Figura 8.2 ilustra uma posśıvel coloração para o grafo de Petersen.
Este grafo é 3-partido logo seu número cromático é 3. Se olharmos apenas
os ciclos destacados nesta figura veremos que eles possuem uma quantidade
ı́mpar de vértices, e devido a isto necessitam de 3 cores para serem coloridos
propriamente.
Figura 8.2: Exemplo de Coloração - Grafo de Petersen.
Analisando as propriedades e caracteŕısticas de cada grafo podemos deri-
var algumas relações envolvendo o número cromático. Por exemplo, a prin-
cipal caracteŕıstica de um grafo colorido propriamente é que seus vértices
adjacentes devem ter cores diferentes. Baseado nisto, qual seria a relação
entre o número cromático e o grau dos vértices de um dado grafo? Conside-
rando um grafo simples G = (V,A) com n vértices, saberemos que o grau de
qualquer vértice estará no seguinte intervalo,
0 ≤ d(v) ≤ n− 1
o que indica que um dado vértice v pode ter nenhum vizinho ou ser vizinho
de todos os outros vértices no grafo. O primeiro caso pode ser facilmente
ilustrado por um grafo totalmente desconexo, enquanto que o último por um
grafo totalmente conexo. No primeiro caso, a quantidade mı́nima de cores
para colorir propriamente este grafo é igual a 1. Enquanto que no último,
a quantidade seria igual a quantidade de vizinhos de v, já que cada vértice
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
8.1 Grafos Coloŕıveis 161
é adjacente aos demais, mais uma unidade, que seria a cor atribúıda a v.
Assim, temos o seguinte teorema.
Teorema 8.2. Para qualquer grafoG, o número cromático χ(G) é no máximo
uma unidade a mais que o maior grau, ∆(G), de G, ou seja, χ(G) ≤ 1+∆(G).
Continuando, qual seria a relação de um clique com o número cromático
de um grafo? Um clique é um subgrafo completo maximal, i.e., é um subgrafo Número
Cromático x
Clique
onde cada vértice é adjacente aos demais. Assim se um grafo possui um clique
de tamanho 4, ele precisará de pelo menos 4 para ser colorido propriamente.
Como um grafo pode possuir inúmeros cliques, convém relacionar o número
cromático do grafo com o tamanho do maior clique. Portanto,
Teorema 8.3. Para qualquer grafo G = (V,A), χ(G) ≥ ω(G) onde ω(G) é
o número de clique1 de G;
A Figura 8.1(a) mostra um exemplo onde o maior clique tem tamanho 3
dado pelo subgrafo que forma um triângulo. Na Figura 8.2, temos o grafo de
Petersen com dois ciclos C5 que não compartilham arestas. Focando nossa
atenção apenas para um dos ciclos veremos que o maior clique é definido por
qualquer uma das arestas, ou seja, o maior clique terá tamanho igual a 2.
Porém como o ciclo tem comprimento ı́mpar, ele será colorido propriamente
com no mı́nimo 3 cores.
Em relação aos conjuntos independentes, qual seria sua relação com o
número cromático? Sabemos que particionando os vértices de um grafo em Número
Cromático x
Conjunto Inde-
pendente
conjuntos independentes encontraremos a quantidade de cores que podemos
colorir propriamente os vértices do grafo. Neste caso, cada cor distinta será
atribúıda a cada conjunto independente. Considere que tenhamos um grafo
G = (V,A) e queiramos saber aproximadamente a quantidade de conjuntos
independentes que ele possui, tendo como uma única informação o tamanho
do maior conjunto independente. Se o maior conjunto independente tem
tamanho α(G) e este grafo possui n vértices, i.e., |V | = n, então podemos
assumir alguns cenários. O primeiro é que todos os conjuntos independen-
tes têm o mesmo tamanho, o qual é igual a α(G), assim a quantidade de
conjuntos independentes de G será igual a |V |/α(G). Esse é o caso de gra-
fos k-partidos completos com conjuntos independentes de mesmo tamanho.
1Número de clique é definido na Seção 4.1 e corresponde ao tamanho do maior clique
de um grafo.
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
162 Coloração
Porém, sabemos que esta situação ideal é bem espećıfica e é bem provável
que existam mais conjuntos independentes com tamanhos inferiores à α(G).
Um exemplo direto é o grafo ciclo C5, destacado em vermelho na Figura 8.2.
O tamanho do maior conjunto independente é igual a 2 e qualquer particio-
namento dos vértices em conjuntos independentes resultará em 3 conjuntos
independentes maximais. A partir desta análise, temos o seguinte teorema
como resultado.
Teorema 8.4. Para qualquer grafo G = (V,A), χ(G) ≥ |V |/α(G), onde
α(G) é o número de independência2 de G.
8.2 Grafos Aresta-Coloŕıveis
Até o presente momento discutimos a coloração de vértices de um grafo.
Porém, existem inúmeros problemas do mundo real que focam na coloração
das arestas. De forma similar à coloração de vértices, as cores associadas
às arestas podem possuir inúmeros significados, como capacidade, tempo,
energia, etc. Abaixo temos algumas definições que são muito parecidas com
àquelas apresentas na seção anterior.
k-coloração de
aresta Definição 8.3. Uma k-coloração de aresta de um grafo G = (V,A) é uma
função de rotulamento f : A → S, onde S correspondem a um conjunto de
cores e |S| = k. As arestas de uma mesma cor formam uma classe de cores.
Definição 8.4. Uma k-coloração de arestas é própria se arestas incidentes
em um mesmo vértice de um grafo tiverem rótulos (cores) diferentes. Um
grafo é k-aresta coloŕıvel se ele tem uma k-coloração própria de arestas. ONúmero
Cromático de
Aresta
número cromático de aresta χ′(G) é o menor k tal que G é k-aresta coloŕıvel.
Este número também é chamado de ı́ndice cromático.
Cada conjunto de arestas que possuem a mesma cor em uma k-coloração
própria de arestas é formado por arestas que não compartilham vértices entre
si. Isso nos leva a relacionar este conjunto ao conceito que vimos anterior-
mente sobre emparelhamento na Seção 4.5, já que um emparelhamento dek-coloração
própria de
arestas x empa-
relhamento
um grafo G é um conjunto de arestas que não compartilham vértices entre
si. Como em uma k-coloração própria de arestas, arestas incidentes em um
2Número de independência é definido na Seção 4.2 e corresponde ao tamanho do maior
conjunto independente de um grafo.
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
8.3 Polinômio Cromático 163
mesmo vértice devem ser coloridas com cores diferentes, podemos concluir di-
retamente que para qualquer grafo G = (V,A), χ′(G) ≥ ∆(G). Os teoremas
abaixo definem mais precisamente a relação entre χ′(G) e ∆(G).
Teorema 8.5 ([24]). Se G é um grafo bipartido, então χ′(G) = ∆(G).
Teorema 8.6 ([25]). Se G é um grafo simples, então χ′(G) ≤ ∆(G) + 1.
Teorema 8.7 ([26]). Se G = (V,A) é multigrafo então χ′(G) ≤ ∆(G)+µ(G),
onde µ(G) é a multiplicidade máximade aresta, i.e., µ(G) = maxa∈A µ(a)
3.
8.3 Polinômio Cromático
A partir de um conjunto de cores dispońıveis é posśıvel determinar a quanti-
dade de maneiras que um grafo pode ser colorido propriamente. Por exemplo,
se tivermos dispońıvel um conjunto de cores S de tamanho k, a quantidade de
maneiras que podemos colorir um vértice é igual a k. Se um grafo G = (V,A)
é totalmente desconexo e tivermos que colorir seus vértices com as cores deste
conjunto, G poderá ser colorido de kn maneiras diferentes, onde |V | = n. Ou
seja, como para cada vértice temos k possibilidades e temos n vértices, então
a quantidade de maneiras é definida como
k.k.k . . . k︸ ︷︷ ︸
n vezes
= kn
Esta expressão relaciona o número de vértices com o número de cores
dispońıvel na forma de um polinômio. Para um grafo mais geral, temos que
Definição 8.5. Dado k ∈ N , onde N é o conjunto dos números naturais, e
um grafo G = (V,A), χ(G; k) é o número de maneiras que podemos colorir
propriamente G com um conjunto S = {1, 2, . . . , k} de cores de forma que
nem sempre todas as cores sejam usadas pela função f : V → S.
Polinômio
CromáticoA função χ(G; k) também é chamada de polinômio cromático de G quando
é definida em função de k. No caso do grafo desconexo com n vértices
ilustrado anteriormente, temos
χ(K̄n; k) = k
n
3O conceito multiplicidade de aresta é definido na Seção 1.1.
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
164 Coloração
Quando k < χ(G) então χ(G; k) = 0, i.e., a quantidade de cores dispońıveis
para colorir propriamente o grafo é menor que seu número cromático. Porém,
se k ≥ χ(G) então χ(G; k) > 0.
Como exemplo, vamos considerar que existam k cores dispońıveis no con-
junto S, i.e., |S| = k, para colorir o grafo G1 ilustrado na Figura 8.3(a). Para
determinar o polinômio cromático χ(G1; k) temos que saber a quantidade de
maneiras que temos para colorir cada um dos vértices de G1. Neste exemplo,
o vértice a pode ser colorido por qualquer uma das k cores. Porém, o vértice
b só pode ser colorido por k − 1 cores, já que uma das cores do conjunto S
já foi atribúıda ao vértice a. Como o vértice c é adjacente apenas ao vértice
b, podemos considerar que existem dispońıveis k − 1 cores já que uma das
cores de S foi atribúıda ao vértice b. Assim, multiplicando estes resultados
temos o seguinte polinômio cromático
χ(G1, k) = k(k − 1)(k − 1) = k(k − 1)2.
(a) (b)
Figura 8.3: Coloração de Grafos. (a) árvore com 3 vértices. (b) grafo com-
pleto K3.
Por outro lado, o grafo G2, ilustrado na Figura 8.3(b), é um grafo com-
pletoK3. De forma similar ao processo feito anteriormente, podemos começar
determinando a quantidade de cores que podemos associar ao vértice a.
Como ainda não atribúımos nenhuma cor a qualquer vértice, o vértice a
pode ser colorido por qualquer uma das k cores, enquanto que o vértice b só
pode ser colorido por k − 1 cores, já que uma das cores do conjunto S já foi
atribúıda ao vértice a. Porém para o vértice c, temos uma pequena mudança
em relação à solução anterior. O vértice c é adjacente agora aos vértices a
e b, e já associamos uma cor a cada um destes vértices. Então temos agora
apenas k − 2 cores dispońıveis. Assim, multiplicando estes resultados temos
o seguinte polinômio cromático
χ(G2; k) = k(k − 1)(k − 2) = k3 − 3k2 + 2k.
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
8.3 Polinômio Cromático 165
Generalizando este último resultado para grafos completos com n vértices,
Kn, temos
χ(Kn, k) = k.(k − 1).(k − 2) . . . (k − n+ 1),
ou seja,
χ(Kn; k) =
(
k
n
)
n!
Teorema 8.8. Se T = (V,A) é uma árvore com n vértices, |V | = n, e k é o
número de cores dispońıveis, k ∈ N , então
χ(T ; k) = k(k − 1)n−1.
Considere a árvore ilustrada na Figura 8.4 e um conjunto S, com |S| = k
e k ≥ 2. Escolhemos inicialmente qualquer vértice. Para facilitar a aplicação
do teorema acima, iremos escolher o vértice a. Este vértice pode ser colorido
com qualquer uma das k cores dispońıveis. Os demais vértices serão coloridos
tendo como base este vértice inicial. Assim, o vértice b por sua vez pode ser
colorido com qualquer uma das k− 1 cores restantes dispońıveis, já que uma
das cores de S já foi atribúıda ao vértice a. Seguindo a ordem, o vértice c
pode ser colorido com também k − 1 cores, pois ele é adjacente apenas ao
vértice b, então ele pode repetir a cor do vértice a porém não pode usar a cor
atribúıda ao vértice b. Seguindo este racioćınio, os demais vértices poderão
ser coloridos com k−1 cores, e portanto, o polinômio cromático para a árvore
T com 9 vértices, considerando |S| = k é
χ(T ; k) = k(k − 1)8.
Uma das maneiras para calcular o polinômio cromático de um grafo
genérico é através da seguinte equação de recorrência cromática, Equação de
Recorrência
CromáticaTeorema 8.9. Se G = (V,A) é um grafo simples e a ∈ A então
χ(G; k) = χ(G− a; k)− χ(G/a; k).
Esta equação indica que o polinômio cromático de um grafo genérico G
pode ser encontrado considerando o polinômio cromático de G sem uma dada
aresta a subtráıdo do polinômio cromático do grafo resultante da operação de
arco contração da aresta a de G. Note que uma aresta a = {u, v} impõe uma
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
166 Coloração
Figura 8.4: Coloração de Árvores.
restrição às possibilidades de cores que podem ser atribúıdas aos vértices u
e v. A operação G− a leva a um grafo onde os vértices u e v podem assumir
quaisquer cores inclusive a mesma cor. A operação G/a, como definida an-
teriormente na Seção 2.2.7, contrai a aresta a unindo os vértices u e v. No
cálculo do polinômio cromático, a intenção é fazer como que u e v tenham
a mesma cor. Assim, neste cálculo temos χ(G − a; k) como o polinômio
cromático onde u e v podem ter a mesma cor, o que não é permitido em G,
pela própria presença de a, e o χ(G/a; k) como o polinômio cromático onde
u e v possuem a mesma cor. Embora a expressão recursiva definida pelo
teorema possa ser trabalhosa para grafos genéricos, ela facilita a obtenção do
polinômio cromático de maneira mais sistemática.
O exemplo seguinte mostrará a aplicação da equação de recorrência cromática.
Considere o grafo G ilustrado na Figura 8.5(a). Selecionando a aresta a em
vermelho e calculando G − a e G/a obtemos os grafos ilustrados em (b) e
(c). Embora o resultado em (c) seja um multigrafo, como comentando ante-
riormente, podemos desconsiderar as múltiplas arestas entre um mesmo par
de vértices e focar nossa atenção a apenas na adjacência entre os vértices.
Neste caso, o grafo em (c) seria visto como uma árvore e portanto
χ(G/a) = k(k − 1)2.
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
8.3 Polinômio Cromático 167
(a) (b) (c)
Figura 8.5: Aplicação do equação de recorrência cromática no grafo G em
(a) resultado inicialmente nos grafos (b) G− a e (c) G/a.
O grafo ilustrado na Figura 8.5 (b) é um ciclo C4 e o seu polinômio
cromático é obtido usando novamente a equação definida no Teorema 8.9. O
cálculo de χ(C4; k) é feito selecionando uma aresta, por exemplo, a aresta b
como mostrado na Figura 8.6(a). Isso nos leva, a
χ(C4; k) = χ(C4 − b; k)− χ(C4/b; k).
Os grafos C4 − b quanto C4/b são ilustrados respectivamente em (b) e (c).
Como C4 − b é um caminho de comprimento 3, seu polinômio cromático é
igual a
χ(C4 − b; k) = k(k − 1)3.
Por outro lado, C4/a é um grafo completo K3 e polinômio cromático é
χ(C4/b; k) = k(k − 1)(k − 2).
(a) (b) (c)
Figura 8.6: Aplicação do equação de recorrência cromáticano grafo G em
(a) resultado inicialmente nos grafos (b) G− a e (c) G/a.
A partir destes resultados intermediários, temos
χ(C4; k) = k(k − 1)3 − k(k − 1)(k − 2)
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
168 Coloração
Substituindo este resultado
χ(C4; k) = k(k − 1)(k2 − 3k + 3)
Combinando estes resultados, temos
χ(G; k) = k(k − 1)(k2 − 3k + 3)− k(k − 1)2
χ(G; k) = k(k − 1)(k2 − 4k + 4)
que corresponde ao polinômio cromático do grafo ilustrado na Figura 8.5(a).
8.4 O teorema das quatro cores
O teorema das quatro cores foi inicialmente posto como uma conjectura em
1850, e provado mais tarde em 1976 por Appel e Haken. Anterior a esta prova,
muitas soluções incorretas foram propostas, em geral, muito dif́ıceis de serem
contestadas. Alguns afirmam que a prova mais notória é aquela publicada em
1879 por Alfred Kempe. A prova elaborada por Kempe foi aceita como válida
até 1890, quando Heawood encontrou um erro que tornava os argumentos de
Kempe incompletos. Mesmo possuindo falhas a solução de Kempe foi a base
para a proposta de Appel e Haken. A prova proposta por Appel e Haken
foi muito controversa pois ela realizou uma análise minuciosa de inúmeros
tipos de grafos um a um com o aux́ılio de um computador. A controvérsia
decorreu do uso do computador. Alguns argumentavam que poderia existir
um erro no programa usado para realizar os testes o que poderia levar a um
resultado errado.
O teorema como enunciado abaixo pode ser aplicado apenas a grafos pla-
nares. A Figura 8.7 mostra um exemplo de grafo planar colorido com apenas
4 cores. Grafos não planares podem ter números cromáticos arbitrários.
Teorema 8.10. O número cromático χ(G) para um grafo planar G é no
máximo igual a 4.
O problema das quatro cores está intimamente relacionado ao problema
de coloração de mapas. Se considerarmos cada região do mapa como uma
face de um grafo planar, conseguiremos extrair um grafo geométrico dual
o qual é planar, onde cada uma destas regiões está associada a um vértice
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
8.5 Exerćıcios 169
Figura 8.7: Grafo planar colorido com 4 cores.
no grafo dual. Como o grafo dual é planar, pelo Teorema 8.10, os vértices
deste grafo podem ser coloridos propriamente com no máximo 4 cores. Por
conseguinte, as regiões do mapa também poderão ser coloridas propriamente
com no máximo 4 cores. Note que o grafo dual resultante não será um
pseudografo, i.e., ele não possuirá laços, pois não existirão no mapa uma
aresta fazendo fronteira com apenas uma única face, como nos exemplos
ilustrados nas Figuras 7.3 e 7.4.
8.5 Exerćıcios
Exerćıcio 8.1. Prove que χ(G) = ∆(G) + 1 sse G é ou um grafo completo
ou um ciclo de comprimento ı́mpar
Exerćıcio 8.2. Mostre que se G contém exatamente um ciclo de compri-
mento ı́mpar então χ(G) = 3
Exerćıcio 8.3. Mostre que para um grafo simples G, se χ(G) = 2 então G
é bipartido
Exerćıcio 8.4. Qual é o número cromático de um grafo Km,n,p?
Exerćıcio 8.5. Dê exemplo de grafos que possuem número cromático igual
a 1.
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
170 Coloração
Exerćıcio 8.6. O que podemos dizer sobre um grafo que possui um subgrafo
isomórfico a Kn?
Exerćıcio 8.7. Mostre que qualquer grafo G com cintura g(G) = 2p, para
p ∈ N tem χ(G) ≥ 3.
Exerćıcio 8.8. Dados os grafos abaixo
(a) (b)
(c) (d)
Figura 8.8: Grafos Exemplo. (a) G1 (b) G2 (c) G3 (d) G4
Determine o número cromático e o polinômio cromático considerando um
conjunto de k cores.
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
Índice
Árvore, 115
Árvore p-ária, 120
Árvore p-ária Cheia, 121
Árvore p-ária Completa, 120
Árvore Balanceada, 121
Árvore Binária, 120
Árvore Enraizada, 118
Árvore Geradora, 123
Árvore Rotulada, 117
Árvore de Espalhamento, 123
Árvores Isomórficas, 117
Índice de Wiener, 17
Acoplamento, 80
Altura de uma Árvore, 121
Biclique, 70
Bloco, 45
Código Prüfer, 128
Caminho, 13
Caminho Alternante, 82
Caminho de Aumento, 82
Caminho de Espalhamento, 15
Caminho Direcionado, 14
Casamento, 80
Centro de Árvores, 117
Centro de um Grafo, 16
Ciclo, 13
Ciclo Direcionado, 14
Cintura, 15
Circuito, 13
Circuito Direcionado, 14
Circunferência, 15
Clique em Dı́grafos, 64
Clique em Grafos, 63
Clique Máximo, 64
Co-Clique, 67
Cobertura de Fonte, 75
Cobertura de Sumidouro, 75
Cobertura de Vértices, 73
Cobertura Mı́nima de Vértices, 73
Cobertura Minimal de Vértices, 73
Componente Conexo, 43
Conjunto Dominante, 76
Conjunto Dominante de Entrada, 77
Conjunto Dominante de Sáıda, 77
Conjunto Dominante Gêmeo, 79
Conjunto Independente Máximo, 67
Corda, 15
Dı́grafo Bipartido Direcionado, 71
Dı́grafo Completo, 20
Dı́grafo k-partido, 70
Dı́grafo k-partido Completo, 71
Dı́grafo Linha, 30
Dı́grafo Semicompleto, 20
Dı́grafo Simples, 5
Diâmetro, 16
Dominância, 5
Emparelhamento, 80
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
172 ÍNDICE
Emparelhamento Máximo, 80
Emparelhamento Perfeito, 80
Emparelhamentos em Dı́grafos, 80
Excentricidade, 16
Fator, 7
Floresta, 115
Floresta de Espalhamento, 123
Função de Incidência, 3
Função Multivalorada de Vizinhança,
7
Funções de Fechamento Transitivo, 42
Funções Estendidas de Vizinhança em
Grafos e Dı́grafos, 40
Funções Multivalorada de Vizinhança
Direta e Inversa, 8
Grafo (m,n)-Ramsey, 73
Grafo Bipartido Completo, 70
Grafo Caminho, 20
Grafo Ciclo, 20
Grafo completo, 19
Grafo Conexo, 43
Grafo Desconexo, 43
Grafo Direcionado Simples, 5
Grafo Estrela, 21
Grafo Homeomorficamente Reduzido,
28
Grafo Induzido, 7
Grafo K-Cubo, 21
Grafo k-partido, 67
Grafo K-partido Completo, 69
Grafo Linha, 30
Grafo não separável, 45
Grafo Orientado, 5
Grafo Reduzido, 28
Grafo Regular, 20
Grafo Roda, 21
Grafo Simples, 2
Grafo Simples Subjacente, 101
Grafo Subjacente a Pseudografo e Mul-
tigrafos, 3
Grafo Subjacente ao Dı́grafo, 6
Grafo totalmente desconexo, 19
Grafo Trivial, 19
Grafo Vazio, 19
Grau, 8
Graus de Entrada e de Sáıda, 8
Método de Maghout, 87
Maior Grau, 8
Menor Grau, 8
Multigrafo, 2
Multigrafo Direcionado, 5
Número de Clique, 64
Número de Cobertura de Fonte, 75
Número de Cobertura de Sumidouro,
75
Número de Cobertura de Vértices, 73
Número de Dominância, 76
Número de Independência, 67
Número de Ramsey, 72
Números de Dominância de Entrada
e de Sáıda, 78
Números de Dominância Gêmea, 79
Nı́vel de um vértice, 121
Operação Complemento, 25
Operação de Contração, 27
Operação de Decomposição, 29
Operação de Intersecção, 24
Operação de Junção, 23
Operação de Remoção, 27
Operação de União, 23
Operação Produto, 25
Operador Linha, 30
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
ÍNDICE 173
Passeio, 13
Passeio de Espalhamento, 15
Passeio Direcionado, 14
Passeio Direcionado Fechado, 14
Passeio Fechado, 13
Problema das Pontes de Königsberg,
1
Pseudografo, 2
Raio, 16
Relação de Dominância em Dı́grafos,
77
Relação de Dominância em Grafos,
76
Relação de Dominância Gêmea, 79
Semi-Caminho, 14
Semi-Passeio, 14
Semi-Trilha, 14
Seqüência de Graus, 9
Seqüência Gráfica, 10
Subárvore, 120
Subárvore Direita, 120
Subárvore Esquerda, 120
Subdivisão de Grafo, 29
Subgrafo e Subd́ıgrafo de Espelhamento,
7
Teorema de Menger-Dı́grafos, 55
Teorema de Menger-Grafos, 47, 49
Trilha, 13
Trilha de Espalhamento, 15
Trilha Direcionada, 14
Vértice Ancestral, 118
Vértice de Corte × Pseudografo, 45
Vértice Descendente, 118
Vértice Filho, 118
Vértice Folha, 118Vértice Fonte, 9
Vértice Interno, 118
Vértice Irmão, 118
Vértice Pai, 118
Vértice Raiz, 118
Vértice Saturado, 80
Vértice Sumidouro, 9
Vértices Adjacentes, 2
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
174 ÍNDICE
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
Bibliografia
[1] S. Hakimi, “On the realizability of a set of integers as degrees of the
vertices of a graph,” SIAM J. Appl. Math, vol. 10, pp. 496–506, 1962.
[2] G. Dirac, “Some theorems on abstract graphs,” Proc. Lond. Math. Soc.,
vol. 2, pp. 69–81, 1952.
[3] O. Ore, “Note on hamilton circuits,” Amer. Mat. Monthly, vol. 67, p. 55,
1960.
[4] K. H. Rosen, Discrete Mathematics and Its Applications. McGraw-Hill,
2007.
[5] K. Menger, “Zur allgemeinen kurventheorie,” Fund. Math., vol. 10, pp.
96–115, 1927.
[6] H. Whitney, “Congruent graphs and the connectivity of graphs,” Amer.
J. Math., vol. 54, pp. 150–168, 1932.
[7] H. Robbins, “A theorem on graphs with an application to a problem on
traffic control,” American Mathematical Monthly, vol. 46, pp. 281–283,
1939.
[8] D. Geller and F. Harary, “Connectivity in digraphs,” in Recent Trends
in Graph Theory, Proceedings of the First New York City Graph Theory
Conference, vol. 186, 1970, pp. 105–115.
[9] G. Gutin and B. Sackler, “Finding a longest path in a complete multi-
partite digraph,” SIAM J. Discrete Math, vol. 6, pp. 270–273, 1993.
[10] G. C. Ferro and D. Ferrarello, “Polynomial ideals and directed graphs,”
Commutative Algebra, 2007.
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
176 BIBLIOGRAFIA
[11] D. Amar and A. Raspaud, “Covering the vertices of a digraph by cycles
of prescribed length,” Discrete Mathematics, vol. 65, pp. 273–290, 1995.
[12] F. Chung and R. Graham, “On the cover polynomial of a digraph,”
Journal of Combinatorial Theory, vol. 65, pp. 273–290, 1995.
[13] G. Chartrand, F. Harary, and B. Q. Yue, “On the out-domination and
in-domination numbers of a digraph,” Discrete Mathematics, 1999.
[14] G. Chartrand, M. S. P. Dankelmann, and H. C. Swart, “Twin domina-
tion in digraphs,” Ars Combinatoria, vol. 67, 2003.
[15] C. Berge, “Two theorems in graph theory,” Proc. Nat. Acad. Sci., vol. 43,
pp. 842–844, 1957.
[16] P. Hall, “On representatives of subsets,” J. Lond. Mat., vol. 10, pp.
26–30, 1935.
[17] D. König, “Graphen und matrizen,” Math. Lapok, vol. 38, pp. 116–119,
1931.
[18] C. Jordan, “Sur les assemblages de lignes,” J. für die Reine und An-
gewandte Mathematic, vol. 70, pp. 185–190, 1869.
[19] G. Kirchhoff, “Über die auflösung der gleichungen, auf welche man bei
der untersuchung der linearen verteilung galvanischer ströme geführt
wird,” Ann. Phys. Chem., vol. 72, pp. 497–508, 1847.
[20] ——, “Ueber die auflösung der gleichungen, auf welche man bei der un-
tersuchung der linearen vertheilung galvanischer ströme geführt wird,”
Ann. Phys. Chem., vol. 72, pp. 497–508, 1847.
[21] A. Cayley, “A theorem on trees,” Quart. J. Math, vol. 23, pp. 376–378,
1889.
[22] H. Prüfer, “Neuer beweis eines satzes über permutationen,” Arch. Math.
Phys, vol. 27, pp. 727–744, 1918.
[23] W. T. Tutte, “The dissection of equilateral triangles into equilateral
triangles,” Proc. Cambridge Philos. Soc., vol. 44, pp. 463–482, 1948.
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0
BIBLIOGRAFIA 177
[24] D. König, “Über graphen und ihre anwendung auf determinantentheorie
und mengenlehre,” Math. Ann., vol. 77, pp. 453–465, 1916.
[25] V. G. Vizing, “On an estimate of the chromatic class of a p-graph,”
Diskret. Analiz, vol. 3, pp. 25–30, 1964.
[26] C. Shannon, “A theorem on coloring the lines of a network,” J. Math.
Phys., vol. 28, pp. 148–151, 1949.
This work is licensed under CC BY-NC-SA 4.0. To view a copy of this
license, visit https://creativecommons.org/licenses/by-nc-sa/4.0

Mais conteúdos dessa disciplina