conteœdo - w3.ualg.ptw3.ualg.pt/~mpires/textodegrafos.pdf · -se por ambas as margens de um rio e...

51
Universidade do Algarve - 06/07 Teoria de Grafos Conteœdo 1 Teoria de Grafos 1 1.1 Introduªo .................................... 1 1.2 Deniıes e conceitos bÆsicos ......................... 6 1.3 Matrizes de grafos ................................ 8 1.4 Graus dos vØrtices ................................ 9 1.5 Sucessores e antecessores ............................ 10 1.6 Caminhos e conectividade ........................... 12 1.7 Circuitos e caminhos de Euler ......................... 20 1.7.1 Algoritmo de Fleury .......................... 21 1.8 Grafos e relaıes binÆrias ............................ 27 1.8.1 Relaıes de equivalŒncia e componentes fortemente conexas ..... 27 1.8.2 Relaıes de ordem e grafos ....................... 28 1.9 Grafos completos ................................ 30 1.10 Grafos bipartidos ................................ 31 1.11 Grafos complementares ............................. 32 1.12 `rvores ..................................... 33 1.12.1 `rvores de suporte ........................... 35 1.12.2 `rvore de suporte nnima ....................... 37 1.13 Planaridade ................................... 40 1.14 Caminhos mais curtos ............................. 45 i

Upload: trinhhanh

Post on 11-Feb-2019

215 views

Category:

Documents


0 download

TRANSCRIPT

Universidade do Algarve - 06/07 Teoria de Grafos

Conteúdo

1 Teoria de Grafos 11.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.2 De�nições e conceitos básicos . . . . . . . . . . . . . . . . . . . . . . . . . 6

1.3 Matrizes de grafos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

1.4 Graus dos vértices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

1.5 Sucessores e antecessores . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

1.6 Caminhos e conectividade . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

1.7 Circuitos e caminhos de Euler . . . . . . . . . . . . . . . . . . . . . . . . . 20

1.7.1 Algoritmo de Fleury . . . . . . . . . . . . . . . . . . . . . . . . . . 21

1.8 Grafos e relações binárias . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

1.8.1 Relações de equivalência e componentes fortemente conexas . . . . . 27

1.8.2 Relações de ordem e grafos . . . . . . . . . . . . . . . . . . . . . . . 28

1.9 Grafos completos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

1.10 Grafos bipartidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

1.11 Grafos complementares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

1.12 Árvores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

1.12.1 Árvores de suporte . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

1.12.2 Árvore de suporte nínima . . . . . . . . . . . . . . . . . . . . . . . 37

1.13 Planaridade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

1.14 Caminhos mais curtos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

i

Universidade do Algarve - 06/07 Teoria de Grafos

1 Teoria de Grafos

1.1 Introdução

Era uma vez uma cidade no reino da Prússia. A cidade chamava-se Königsberg e espraiava-

-se por ambas as margens de um rio e por duas ilhas bem no meio do rio. Estávamos

no início do século XVIII. Não havia telenovelas, nem futebol, nem telemóveis nem se

mandavam e-mails nem SMS. Ao Domingo, quando fazia bom tempo, as famílias, depois

de saírem da igreja, passeavam nos seus melhores trajes. A cidade não era muito grande,

mas tinha a particularidade interessante de ter sete pontes a ligar as margens do rio e as

duas ilhas como se mostra esquematicamente na �gura 1.

Figura 1: Esquema das pontes de Königsberg

Havia uma espécie de jogo com que as famílias se divertiam, que consistia em sair

de uma zona da cidade (A, B, C ou D) e tentar regressar ao mesmo sítio depois de ter

atravessado todas as sete pontes uma única vez. Depois de muitos Domingos e de muitos

passeios nunca nenhuma família tinha conseguido esse objectivo e começava-se a pensar na

cidade se tal seria de facto possível.

1

Universidade do Algarve - 06/07 Teoria de Grafos

Só alguns anos mais tarde é que Leonard Euler demonstrou que efectivamente

tal passeio era impossível. A demonstração apareceu num artigo de 1736 chamado So-

lutio problematis ad geometriam situs pertinentis, o que quer dizer qualquer coisa como:

"Solução de um problema relacionado com a geometria da posição". Este artigo apareceu

no número 8 dos Commentarii Academiæ Scientiarum Imperialis Petropolitanæ. A lin-

guagem utilizada não era a actualmente empregue quando se fala de grafos, mas as ideias

estavam todas lá.

Na simbologia actualmente utilizada, pode-se representar este problema esquematica-

mente, fazendo corresponder a cada região da cidade um ponto e a cada ponte entre essas

regiões um segmento, recto ou curvo como der mais jeito ao desenho, unindo os pontos cor-

respondentes às regiões ligadas pelas pontes que os segmentos representam. Deste modo,

obtém-se o esquema da �gura 2.

Figura 2: Esquema de Euler

A cada ponto chamamos vértice e a cada segmento chamamos aresta. E o que acabou

de se representar é um grafo.

A ideia da demonstração de que o passeio pretendido é impossível é muito simples:

Sempre que se atravessa para uma parte da cidade é preciso sair de lá. Isto é, sempre que

se chega a um vértice do grafo usando uma aresta é preciso que haja outra aresta para sair

de lá, ou seja, o número de arestas que chegam a cada vértice tem que ser par. Portanto,

como no grafo que representa a cidade há vértices onde chega um número impar de arestas,

tal passeio não é possível.

Mas os grafos não têm utilidade só para encontrar a solução de jogos. Problemas desde

a colocação de sinais de sentido proibido e o estabelecimento de percursos alternativos,

a regulação da temporização dos semáforos nos cruzamentos, a sequência de ruas que

2

Universidade do Algarve - 06/07 Teoria de Grafos

um carteiro deve percorrer para entregar a correspondência, os percursos a efectuar pelos

carros que lavam as ruas das cidades, as rondas dos polícias e muitos outros podem ter uma

solução mais e�ciente usando conceitos de grafos. Até as agências de casamentos teriam

muito a ganhar em e�ciência se tivessem especialistas em grafos no seu pessoal.

Antes de de�nirmos com todo o rigor matemático o que é um grafo, vejamos mais o

seguinte exemplo: Cinco turistas de diferentes nacionalidades encontram-se num aeroporto

onde passam longas horas à espera de um avião de ligação que os levará para um destino

comum. O conhecimento de línguas destes cinco personagens é grande, mas não há uma

língua que todos falem, pelo que a conversa não se generaliza. Na tabela seguinte listam-se

os idiomas falados pelas cinco pessoas:

Turista�Língua Inglês Alemão Francês Espanhol

p * * * -

q - * - *

r * - - *

s - * * -

t * - * *

Quem é que fala com quem?

Vamos representar cada turista por um vértice. Unimos dois vértices por uma aresta

sempre que esses dois turistas tenham uma língua em comum:

Por uma simples observação do grafo concluímos que só os turistas r e s não conseguem

falar um com outro, visto não haver nenhuma aresta entre estes dois vértices, todos os

outros estão ligados directamente, pelo que todos podem falar entre si.

Repare-se que se quiséssemos saber quem é que fala com quem e em quantas línguas,

teríamos que usar uma aresta para cada língua, obtendo-se o grafo da �gura 4.

A representação grá�ca começa a �car muito complicada e é já óbvio que é necessário

encontrar um processo mais e�ciente de fazer a representação das interligações existentes

entre os vértices.

3

Universidade do Algarve - 06/07 Teoria de Grafos

Figura 3: Quem fala com quem?

Figura 4: Em quantas línguas?

Além do mais, se o tratamento tiver que ser feito informaticamente, o que será inevitável

a partir de certo número de vértices e/ou arestas, o desenho não é a forma mais conveniente.

Surgiu assim a ideia de se representar as ligações entre os vértices usando uma matriz

quadrada, de dimensão igual ao número de vértices. Cada linha/coluna corresponde a

um vértice. A entrada da matriz na linha i e coluna j representa o número de arestas

que unem os vértices i e j. Repare-se que nos exemplos até agora apresentados a matriz

correspondente é simétrica, mas não é difícil encontrar exemplos em que a matriz não seja

simétrica. Pensemos por exemplo num mapa representando as ruas de uma cidade. Neste

caso, os vértices representam cruzamentos ou rotundas e as arestas representam as ruas

entre esses cruzamentos e essas rotundas. Como é inevitável que numa cidade haja ruas

de sentido único, temos aqui um exemplo em que a matriz não é simétrica, pois se há uma

rua de sentido único entre os vértices i e j, não há aresta ligando directamente j a i. Um

problema interessante (e útil) é saber qual a forma de ir de j para i, uma vez que não

se pode circular em ruas no sentido proibido. Para representar no grafo situações em que

4

Universidade do Algarve - 06/07 Teoria de Grafos

uma aresta só pode ser percorrida num determinado sentido usa-se uma seta para indicar

qual o sentido de circulação sobre a aresta, que, neste caso se passa a chamar arco. Se

todos os arcos puderem ser percorridos em ambos os sentidos dizemos que temos um grafo

não orientado e não há necessidade de usar qualquer seta sobre as arestas. Desde que

pelo menos um dos arcos possa ser percorrido num único sentido é necessário indicar qual

recorrendo a setas e dizemos que temos um grafo orientado.

Vejamos qual o aspecto das matrizes correspondentes aos grafos representados nas �g-

uras 3 e 4 respectivamente: 26666666666664

0 1 1 1 1

1 0 1 1 1

1 1 0 0 1

1 1 0 0 1

1 1 1 1 0

37777777777775

26666666666664

0 1 1 2 2

1 0 1 1 1

1 1 0 0 2

2 1 0 0 1

2 1 2 1 0

37777777777775Vejamos agora uma representação esquemática das ruas da baixa de uma cidade. Os

vértices representam cruzamentos e os arcos representam ruas entre esses cruzamentos.

Nesta cidade todas as ruas são de sentido único:

Figura 5: Baixa de uma cidade

A matriz associada a este grafo é obviamente não simétrica:

5

Universidade do Algarve - 06/07 Teoria de Grafos

26666666666664

0 1 0 0 0

0 0 1 0 1

1 0 0 1 0

0 1 0 0 0

0 0 0 1 0

37777777777775Quando se trata de ruas de sentido único, um problema premente é o de saber se cada

cruzamento pode ser alcançado a partir de todos os outros. A este problema chama-se

conexidade do grafo. Antes de o resolver é porém necessário saber mais alguma coisa sobre

grafos.

1.2 De�nições e conceitos básicos

Agora que já sabemos representar grafos de duas maneiras diferentes e que já falámos em

dois tipos diferentes de grafos, está na altura de de�nirmos rigorosamente o que é um grafo.

De�nição 1 Chama-se grafo orientado a um par ordenado G = (X;�), em que X é um

conjunto e � � X � X. A X chama-se conjunto de vértices e a � chama-se conjunto

de arcos. Se G for um conjunto de subconjuntos de X com 2 elementos (isto é, pares

não ordenados) o grafo diz-se não orientado. Neste caso aos elementos de G chamam-se

arestas.

A �m de melhor estudar certos fenómenos que se passam num grafo é, muitas vezes,

vantajoso estudar o que se passa em partes desse mesmo grafo. Surgem assim as seguintes

de�nições:

De�nição 2 Seja G = (X;�) um grafo e seja GY = (Y;�Y ) outro grafo tal que Y � X e

�Y = � \ (Y � Y ). A GY chama-se um subgrafo de G.

De�nição 3 Seja G = (X;�) um grafo e seja G� = (X;�) outro grafo tal que � � �. AG� chama-se um grafo parcial de G.

Repare-se na diferença destes dois conceitos. Enquanto que num subgrafo se escolhe um

subconjunto do conjunto de vértices e se mantêm todas as arestas que existiam entre eles,

6

Universidade do Algarve - 06/07 Teoria de Grafos

Figura 6: Exemplo de subgrafo

num grafo parcial mantêm-se todos os vértices e suprimem-se algumas arestas. Vejamos

um exemplo:

Na �gura 6 o grafo da direita resulta do grafo da esquerda por supressão do vértice E

e de todas as arestas que partem dele. De acordo com a de�nição o grafo da direita é um

subgrafo do grafo da esquerda.

Figura 7: Exemplo de grafo parcial

Na �gura 7 no grafo da direita mantiveram-se os mesmos vértices do grafo da esquerda

mas retiraram-se algumas arestas. De acordo com a de�nição, dizemos que o grafo da

direita é um grafo parcial do grafo da esquerda.

Repare-se que os grafos não orientados podem ser transformados em grafos orientados

se cada aresta não orientada for substituída por dois arcos de sentidos opostos.

7

Universidade do Algarve - 06/07 Teoria de Grafos

1.3 Matrizes de grafos

De�nição 4 Seja G = (X;�) um grafo, tal que #X = n. A matriz de adjacência de G é

uma matriz M n� n, tal que 8><>: mij = 1

mij = 0

se (xi; xj) 2 �

se (xi; xj) =2 �

(Estamos a designar os elementos de X por xi; i = 1; :::; n)

Já se viram atrás alguns exemplos de matrizes de adjacência.

Repare-se que as de�nições até agora dadas não mencionam o facto de poder haver

mais do que uma aresta ou arco entre dois vértices. Se houver mais do que uma aresta ou

arco entre dois vértices, isso signi�ca que se admite que o conjunto G possa ter elementos

repetidos. Nesse caso, a entrada correspondente na matriz de adjacência em vez de ser 1

será igual ao número de vezes que essa aresta ou arco aparece repetido, como também já

se viu atrás. Quando esta situação acontece dizemos que temos arestas múltiplas.

Também pode acontecer haver um arco a ligar um vértice a si próprio, o que corresponde

a haver em � um par da forma (xi; xi). A um tal arco chama-se laço.

De�nição 5 Um grafo sem laços e sem arestas múltiplas chama-se simples.

Em termos computacionais, a representação de um grafo depende da situação que se está

a modelar e, muitas vezes, do algoritmo que se pretende utilizar. Uma outra representação

matricial também muito utilizada é a chamada matriz de incidência.

De�nição 6 Seja G = (X;�) um grafo, tal que#X = n e#� = m. A matriz de incidência

de G é uma matriz M n�m, tal que8>>>>><>>>>>:mij = 1

mij = �1

mij = 0

se 9k : uj = (xi; xk) 2 �; xi 6= xk

se 9k : uj = (xk; xi) 2 �; xi 6= xk

nos outros casos

;

9>>>>>=>>>>>;i = 1; : : : ; n

j = 1; : : : ;m

Vejamos como funciona esta matriz com o grafo da �gura 5. Primeiro é preciso começar

por ordenar os arcos. A numeração mais usual é a lexicográ�ca, isto é, começa-se com os

arcos que começam no primeiro vértice e numeram-se por ordem do segundo vértice, depois

faz-se a mesma coisa para o segundo vértice e assim por diante. Temos então:

8

Universidade do Algarve - 06/07 Teoria de Grafos

8>>>>>>>>>>>>>>>>>>><>>>>>>>>>>>>>>>>>>>:

u1 = (A;B)

u2 = (B;C)

u3 = (B;E)

u4 = (C;A)

u5 = (C;D)

u6 = (D;B)

u7 = (E;D)

e M =

26666666666664

1 0 0 �1 0 0 0

�1 1 1 0 0 �1 0

0 �1 0 1 1 0 0

0 0 0 0 �1 1 �1

0 0 �1 0 0 0 1

37777777777775

Repare-se que em cada coluna há um único elemento igual a 1 e um único igual a -1,

sendo todos os outros nulos. O número de elementos iguais a 1 numa linha dá o número de

arcos que sai do vértice correspondente a essa linha, enquanto que o número de elementos

iguais a -1 dá o número de arcos que chegam ao vértice correspondente a essa linha.

1.4 Graus dos vértices

De�nição 7 Chama-se semigrau exterior do vértice xi (gr+(xi)) ao número de arcos quesaem de xi. Chama-se semigrau interior do vértice xi (gr�(xi)) ao número de arcos que

chegam a xi. Se o grafo for não orientado, estes dois valores são iguais e designam-se

simplesmente por grau de xi (gr(xi)).

A partir da de�nição de grau de um vértice num grafo não orientado conclui-se

facilmente que:

Lema 1 A soma dos graus dos vértices num grafo não orientado é um número par que é

igual ao dobro do número de arestas.

Com efeito, cada aresta é contada duas vezes no cômputo da soma dos graus: uma

vez para cada um dos vértices nos seus extremos.

Corolário 1 Num grafo não orientado o número de vértices com grau impar é par.

Não é difícil estabelecer um resultado análogo para grafos orientados, agora so-

mando os semigraus exteriores e os semigraus interiores de todos os vértices.

9

Universidade do Algarve - 06/07 Teoria de Grafos

Tendo a representação do grafo pela matriz de adjacência, o semigrau exterior

de um vértice é igual ao número de elementos iguais a 1 na linha correspondente a esse

vértice, enquanto que o semigrau interior é o número de elementos iguais a 1 na coluna

correspondente a esse vértice. Se o grafo for não orientado, a matriz é simétrica e esses

dois valores são iguais.

Tendo a representação do grafo pela matriz de incidência, o semigrau exterior de

um vértice é igual ao número de elementos iguais a 1 na linha correspondente a esse vértice,

enquanto que o semigrau interior é igual ao número de elementos iguais a �1 nessa mesma

linha. É claro que se o grafo for não orientado estes dois valores são iguais.

De�nição 8 Um grafo não orientado em que todos os vértices têm o mesmo grau diz-se

regular.

De�nição 9 Um grafo orientado diz-se pseudo-simétrico se para todos os vértices xi se

veri�ca gr+(xi) = gr�(xi).

1.5 Sucessores e antecessores

A representação por matriz de adjacência é das mais simples, mas, para grafos de grandes

dimensões é pouco prática, pois ocupa muito espaço e os programas tornam-se muito

demorados. A representação por matriz de incidência, normalmente ainda ocupa mais

espaço, só sendo por isso utilizada em certos algoritmos que tiram partido da sua estrutura.

Um processo mais económico (em termos de espaço) de representar grafos computa-

cionalmente é o das chamadas listas de sucessores e/ou antecessores.

De�nição 10 Um vértice xi diz-se sucessor do vértice xj se existir o arco (xj; xi). Neste

caso o vértice xj diz-se antecessor de xi.

Vamos representar o grafo da �gura 1.5 por meio de uma lista de sucessores:

x A B C D E

�+(x) B C A;D B A;B;D

De modo análogo se pode de�nir uma lista de antecessores:

10

Universidade do Algarve - 06/07 Teoria de Grafos

x A B C D E

��(x) C;E A;C;D B C;E ?

Num computador estas listas podem ser representadas de modo muito mais económico,

por meio de apontadores, do que através de qualquer uma das matrizes anteriormente

de�nidas.

A noção de sucessor (antecessor) de um vértice pode ser estendida para um conjunto

de vértices, como sendo o conjunto de todos os vértices que são sucessores (antecessores)

dos vértices do conjunto.

Assim, por exemplo, pode-se escrever

�+(fB;Cg) = fA;C;Dg e ��(fB;Cg) = fA;B;C;DgE agora podemos de�nir o conjunto sucessor (antecessor) dos sucessores (antecessores)

de um conjunto:

�+2(fB;Cg) = �+(fA;C;Dg) = fA;B;C;Dg e��2(fB;Cgg = ��(fA;B;C;Dg) = fA;B;C;D;EgContinuando a procurar os sucessores dos sucessores e os antecessores dos antecessores,

podemos de�nir recursivamente o conjunto de sucessores e de antecessores de ordem n de

um vértice ou de um conjunto de vértices:

�+n(fxig) = �(�+(n�1)(fxig)

e

��n(fxigg = �(��(n�1)(fxig))

Fazendo a reunião dos conjuntos de sucessores que se obtêm sucessivamente é possível saber

a quais vértices é que se pode chegar partindo de um determinado vértice. Do mesmo modo,

11

Universidade do Algarve - 06/07 Teoria de Grafos

fazendo a reunião dos conjuntos de antecessores que se obtêm sucessivamente é possível

saber de que vértices é que se pode partir para chegar a um determinado vértice.

1.6 Caminhos e conectividade

De�nição 11 Dados dois vértices distintos xi e xj chama-se caminho entre xi e xj a umasucessão de arcos tais que cada arco começa onde o anterior acaba, o primeiro arco da

sucessão começa em xi e o último termina em xj. Ao número de arcos desse caminho

chama-se comprimento do caminho. Se o caminho começar e acabar no mesmo vértice

chama-se circuito.

Para se saber se existe ou não um caminho entre dois vértice é preciso analisar os

sucessivos conjuntos de sucessores do vértice xi.

De�nição 12 Chama-se fecho transitivo do vértice xi ao conjunto dos vértices para osquais existe um caminho, de qualquer comprimento a partir, de xi. Este conjunto pode ser

determinado por

b�+(fxig) = fxig [ �+(fxig) [ �+2(fxig) [ ::: [ �+n(fxig) [ :::De�nição 13 De�ne-se fecho transitivo inverso do vértice xi como o conjunto dos vér-tices a partir dos quais existe um caminho, de qualquer comprimento, que chega a xi. e

determina-se através de

b��(fxig) = fxig [ ��(fxig) [ ��2(fxig) [ ::: [ ��n(fxig) [ :::Vamos exempli�car estes conceitos utilizando o grafo da �gura 8.

Comecemos por determinar o fecho transitivo do vértice x1.

�+(fx1g) = fx2; x6g�+2(fx1g) = �+(fx2; x6g) = fx1; x3; x4; x5g�+3(fx1g) = �+(fx1; x3; x4; x5g) = fx1; x2; x3; x4; x6g�+4(fx1g) = �+(fx1; x2; x3; x4; x6g) = fx1; x2; x3; x4; x5; x6gComo já chegamos a um conjunto que tem todos os vértices do grafo, não é necessário

continuar à procura de sucessores.

Temos então: b�+(fx1g) = fx1; x2; x3; x4; x5; x6g.Vejamos agora qual é o fecho transitivo inverso do mesmo vértice:

��(fx1g) = fx2; x5; x6g

12

Universidade do Algarve - 06/07 Teoria de Grafos

Figura 8: Determinação de caminhos

��2(fx1g) = ��(fx2; x5; x6g) = fx1; x2; x5g��3(fx1g) = ��(fx1; x2; x5g) = fx2; x5; x6gTambém, neste caso, não é preciso continuar à procura de antecessores uma vez que os

conjuntos fx2; x5; x6g e fx1; x2; x5g vão alternar e não se vai obter mais nenhum vértice.

Temos assim: b��(fx1g) = fx1; x2; x5; x6g.Se �zermos a intersecção dos dois conjuntos b�+(fx1g) e b��(fx1g) obtemos o conjunto

de todos os vértices que estão ligados a x1 por um caminho de ida e de volta.

De�nição 14 Chama-se componente fortemente conexa de xi e representa-se por C(fxig),ao conjunto de todos os vértices que estão ligados a xi por um caminho de ida e volta. Ou

seja,

C(fxig) = :b�+(fx1g) \ b��(fx1g)É claro que determinando a componente fortemente conexa de qualquer outro vértice de

C(fx1g) se obtém exactamente o mesmo conjunto: C(fx1g) = fx1; x2; x5; x6g. Os vérticesx3 e x4 �caram de fora desta componente. Vamos agora determinar C(fx3g).Começa-se por determinar o fecho transitivo de x3:

�+(fx3g) = fx4g�+2(fx3g) = �+(fx4g) = fx3gE não é preciso procurar mais sucessores. Temos assim: b�+(fx3g) = fx3; x4g.Vejamos agora qual é o fecho transitivo inverso do mesmo vértice:

��(fx3g) = fx4; x6g��2(fx3g) = ��(fx4; x6g) = fx2; x3; x5g��3(fx3g) = ��(fx2; x3; x5g) = fx1; x2; x4; x6g

13

Universidade do Algarve - 06/07 Teoria de Grafos

E não é preciso procurar mais antecessores: b��(fx1g) = fx1; x2; x3; x4; x5; x6g.Fazendo agora a intersecção de :b�+(fx1g) e b��(fx1g) obtém-se C(fx3g) = fx3; x4g.Conclui-se assim que este grafo tem duas componentes fortemente conexas.

Vamos seguidamente estudar o processo de determinar as componentes fortemente

conexas de um grafo utilizando a sua matriz de adjacência. Vamo-nos socorrer do grafo da

�gura 8. Escreve-se, em primeiro lugar, a sua matriz de adjacência:

M =

266666666666666664

0 1 0 0 0 1

1 0 0 1 1 0

0 0 0 1 0 0

0 0 1 0 0 0

1 0 0 1 0 1

1 0 1 0 0 0

377777777777777775Comecemos por determinar o fecho transitivo do vértice x1. Na primeira linha da

matriz encontramos elementos iguais a 1 nas posições 2 e 6, isso signi�ca que existe um

arco entre o vértice x1 e os vértices x2 e x6. Seguidamente inspeccionam-se as linhas

correspondentes a x2 e x6 à procura de elementos iguais a 1. Esses elementos dão-nos

a informação dos vértices para aos quais se pode chegar partindo do vértice x1 usando

caminhos de comprimento dois. Prossegue-se inspeccionando as linhas correspondentes a

estes novos vértices e assim por diante até que aconteça uma de duas situações: ou já temos

todos os vértices, ou já se inspeccionaram todas as linhas e não se juntaram mais vértices

ao conjunto. Para simpli�car começamos por de�nir um vector que colocamos à frente da

matriz e onde vamos marcando os vértices que se podem alcançar com um número igual

14

Universidade do Algarve - 06/07 Teoria de Grafos

ao comprimento do menor caminho utilizado. Assim, começamos por:

M =

266666666666666664

0 1 0 0 0 1

1 0 0 1 1 0

0 0 0 1 0 0

0 0 1 0 0 0

1 0 0 1 0 1

1 0 1 0 0 0

377777777777777775

266666666666666664

0

1

1

377777777777777775

266666666666666664

0

1

2

2

2

1

377777777777777775isto é, pode-se ir de x1 para x2 e para x6 usando um caminho de comprimento 1 e para

os restantes vértices usando um caminho comprimento 2 (é claro que de x1 para ele próprio

o comprimento do caminho é 0.

Concluímos que b�+(fx1g) = fx1; x2; x3; x4; x5; x6g. Passemos agora à determinação dofecho transitivo inverso. O processo é semelhante, só que, em vez de inspeccionarmos as

linhas, vamos inspeccionar as colunas da matriz de adjacência. Usamos como auxiliar um

vector linha que colocamos por debaixo da matriz e que construímos usando a mesma

lógica:

M =

266666666666666664

0 1 0 0 0 1

1 0 0 1 1 0

0 0 0 1 0 0

0 0 1 0 0 0

1 0 0 1 0 1

1 0 1 0 0 0

377777777777777775�0 1 1 1

�Repare-se que agora inspeccionando as colunas assinaladas com 1 não se conseguem

marcar mais colunas, pelo que temos b��(fx1g) = fx1; x2; x5; x6g:Após a determinação da componente fortemente conexa que contém x1, vamos determi-

nar as componentes fortemente conexas dos vértices que �caram de fora desta componente.

15

Universidade do Algarve - 06/07 Teoria de Grafos

Como é C(fx1g) = fx1; x2; x5; x6g, podemos optar por x3 ou por x4. Como já se viu, seformos estudar a componente de qualquer outro vértice já incluído em C(fx1g) obter-se-á exactamente o mesmo conjunto. Também se percebe facilmente que as componentes

conexas dos vértices que �caram de fora não vão incluir qualquer dos vértices de C(fx1g).Vamos, portanto, estudar só os sucessores e antecessores no subgrafo em que o conjunto

de vértices é fx1; x2; x3; x4; x5; x6g � C(fx1g), ou seja, toma-se para conjunto de vérticesdo subgrafo fx3; x4g. A matriz de adjacência só tem as linhas e colunas correspondentes aestes vértices e o processo é repetido: 264 0 1

1 0

375264 01

375�0 1

�Conclui-se assim que C(fx3g) = fx3; x4g.Repare-se que cada componente conexa pode ser de�nida através de uma relação no

conjunto dos vértices: xi e xj pertencem à mesma componente fortemente conexa se e só

se existe uma caminho de ida e volta entre os dois vértices. É fácil veri�car que se trata

de uma relação de equivalência e que, portanto, as componentes fortemente conexas são,

na realidade classes de equivalência que fazem uma partição no conjunto dos vértices.

De�nição 15 Um grafo orientado em que haja uma só componente fortemente conexa

diz-se fortemente conexo.

Nalguns casos é su�ciente que haja uma ligação entre os vértices independentemente do

sentido. Nesse caso admite-se a construção de caminhos que utilizem arestas em "sentido

proibido". Na prática o processo decorre como se todos os arcos se transformassem em

arestas. As componentes obtidas deste modo chamam-se componentes conexas.

De�nição 16 Um grafo orientado em que haja uma só componente conexa diz-se conexo.

De�nição 17 Num grafo conexo a uma aresta cuja retirada transforma o grafo num grafodesconexo chama-se um istmo.

A determinação das componentes conexas é bastante mais simples, pois, neste caso, o

conjunto dos sucessores e dos antecessores é o mesmo. Só é necessário construir, a partir

16

Universidade do Algarve - 06/07 Teoria de Grafos

da matriz de adjacência, uma matriz auxiliar, correspondente ao grafo não orientado que

se obtém quando se transformam os arcos em arestas. Esta nova matriz é obviamente

simétrica e obtém-se do seguinte modo:

aij =

8><>: 0 se mij = mji = 0

1 se nos outros casos

9>=>; i = 1; : : : ; n

j = 1; : : : n

No exemplo anteriormente tratado, correspondente ao grafo da �gura 8, querendo de-

terminar as componentes conexas, começa-se por construir a matriz auxiliar A como foi

descrito e fazer a determinação das componentes sobre a matriz auxiliar. Assim:

M =

266666666666666664

0 1 0 0 0 1

1 0 0 1 1 0

0 0 0 1 0 0

0 0 1 0 0 0

1 0 0 1 0 1

1 0 1 0 0 0

377777777777777775�! A =

266666666666666664

0 1 0 0 1 1

1 0 0 1 1 0

0 0 0 1 0 1

0 1 1 0 1 0

1 1 0 1 0 1

1 0 1 0 1 0

377777777777777775

266666666666666664

0

1

2

2

1

1

377777777777777775Conclui-se assim que o grafo da �gura 8 é conexo, pois tem uma única componente

conexa. Num grafo não orientado não faz sentido em falar em componentes fortemente

conexas, pois os conceitos de conexo e fortemente conexo correspondem à mesma realidade.

A determinação das componentes fortemente conexas permite identi�car todos os pares

de vértices entre os quais existem caminhos, mas não nos fornece informação completa

sobre o número e o comprimento dos caminhos existentes.

Vejamos no grafo da �gura 9 como determinar todos os caminhos entre os vértices A e

E que não passem mais do que uma vez pelo mesmo vértice.

Como o grafo é de muito reduzida dimensão é relativamente fácil, por simples inspecção,

determinar todos os caminhos pretendidos:

17

Universidade do Algarve - 06/07 Teoria de Grafos

Figura 9: Determinação de caminhos

A �! C �! E;

A �! D �! E;

A �! B �! D �! E;

A �! D �! C �! E;

A �! B �! D �! C �! E

Este grafo só tem 5 vértices e pretendem-se caminhos que não repitam vértices, por isso

não se vai além dos caminhos de comprimento 4.

Vejamos um processo de encontrar estes caminhos sem ser por observação do grafo.

Comecemos por escrever a matriz de adjacência deste grafo:

M =

26666666666664

0 1 1 1 0

0 0 0 1 0

1 0 0 0 1

0 0 1 0 1

0 0 0 0 0

37777777777775O elemento m15 é nulo, este facto informa-nos que não existe qualquer caminho de

comprimento 1 entre os vértices A e E.

Calculando M2 obtém-se informação sobre os caminhos com dois arcos. Com efeito,

se há um caminho de comprimento 2 entre os vértices xi e xj, isso signi�ca que existe

um vértice xk tal que há um arco entre xi e xk e outro entre xk e xj, ou seja mik = 1 e

18

Universidade do Algarve - 06/07 Teoria de Grafos

mkj = 1. Como m(2)ij =

nPk=1

mikmkj, facilmente se percebe que este valor dá informação

sobre o número de caminhos de comprimento 2 entre os vértices xi e xj.

M2 =

26666666666664

0 1 1 1 0

0 0 0 1 0

1 0 0 0 1

0 0 1 0 1

0 0 0 0 0

37777777777775

26666666666664

0 1 1 1 0

0 0 0 1 0

1 0 0 0 1

0 0 1 0 1

0 0 0 0 0

37777777777775=

26666666666664

1 0 1 1 2

0 0 1 0 1

0 1 1 1 0

1 0 0 0 1

0 0 0 0 0

37777777777775Temos m(2)

15 = 2, sabemos assim que há dois caminhos de comprimento 2 entre A e

E. Para saber quais são esses caminhos é preciso averiguar quais os produtos que deram

origem aquele 2: m(2)15 = m13m35 +m14m45. Temos assim os caminhos: A �! C �! E e

A �! D �! E.

De modo análogo, a matriz M3 dá informação sobre o número de caminhos de compri-

mento 3:

M3 =MM2 =

26666666666664

0 1 1 1 0

0 0 0 1 0

1 0 0 0 1

0 0 1 0 1

0 0 0 0 0

37777777777775

26666666666664

1 0 1 1 2

0 0 1 0 1

0 1 1 1 0

1 0 0 0 1

0 0 0 0 0

37777777777775=

26666666666664

1 1 2 1 2

1 0 0 0 1

1 0 1 1 2

0 1 1 1 0

0 0 0 0 0

37777777777775m(3)15 = m12m

(2)25 + m14m

(2)45 = m12m24m45 + m14m43m35. Temos assim os caminhos

A �! B �! D �! E e A �! D �! C �! E.

Continuando:

19

Universidade do Algarve - 06/07 Teoria de Grafos

M4 =MM3 =

26666666666664

0 1 1 1 0

0 0 0 1 0

1 0 0 0 1

0 0 1 0 1

0 0 0 0 0

37777777777775

26666666666664

1 1 2 1 2

1 0 0 0 1

1 0 1 1 2

0 1 1 1 0

0 0 0 0 0

37777777777775=

26666666666664

2 1 2 2 3

0 1 1 1 0

1 1 2 1 2

1 0 1 1 2

0 0 0 0 0

37777777777775m(4)15 = m12m

(3)25 +m13m

(3)35 = m12m24m43m35+m13m31m13m35+m13m31m14m45. Temos

assim os caminhos A �! B �! D �! C �! E , A �! C �! A �! C �! E

e A �! C �! A �! D �! E. Como o objectivo era encontrar caminhos que não

repetissem vértices, só o primeiro destes caminhos cumpre esse objectivo.

O problema de, num dado grafo, determinar caminhos que não repitam arestas ou não

repitam vértices tem inúmeras aplicações práticas, como veremos. Na maior parte dessas

aplicações, trabalha-se com grafos não orientados e o objectivo é encontrar um circuito que

contenha todos os vértices ou todas as arestas sem repetição.

De�nição 18 Um caminho ou circuito diz-se elementar se todos os vértices por onde passasão distintos. Um circuito elementar que contenha todos os vértices de um grafo não

orientado diz-se circuito de Hamilton.

No exemplo anterior procuravam-se todos os caminhos elementares entre os vértices A

e E.

1.7 Circuitos e caminhos de Euler

De�nição 19 Um caminho ou circuito diz-se simples se todos os arcos ou arestas que o

constituem são distintas. Um circuito simples que contenha todas as arestas de um grafo

não orientado diz-se circuito de Euler.

O problema das pontes de Königsberg é na realidade o problema de encontrar um

circuito de Euler, que já sabemos não existir para aquele grafo.

Teorema 1 Num grafo não orientado conexo existe um circuito de Euler se e só se todos

os vértices tiverem grau par.

20

Universidade do Algarve - 06/07 Teoria de Grafos

Demonstração. Existe circuito de Euler =) todos os vértices têm grau par.

Se existe um circuito de Euler, então sempre que se chega a um vértice é preciso sair e,

por isso, as arestas incidentes em cada vértice têm que ser em número par.

Todos os vértices têm grau par =) existe circuito de Euler

Se todos os vértices têm grau par o grafo deve conter pelo menos um circuito. Com

efeito, considere-se um grafo G com m arestas e todos os vértices com grau par. Seja C o

caminho de maior comprimento que se pode ter em G. Sejam os vértices desse caminho

x1x2::::xp�1xp. Como xp tem grau par então ele não pode estar ligado só a xp�1, mas como

C é o caminho de maior comprimento em G, então a outra aresta deve ligar a um dos

outros vértices deste caminho, obtendo-se assim o circuito desejado.

Para demonstrar a existência de um circuito de Euler procede-se por indução matemática

sobre o número de arestas do grafo.

m = 0

O único grafo conexo com 0 arestas é um grafo só com um vértice de grau zero, onde

claramente há um circuito de Euler.

Por hipótese de indução, considere-se que todos os grafos conexos com número de

arestas inferior a m e em que todos os vértices têm grau par possuem um circuito de Euler.

Seja agora G um grafo conexo com m arestas e em que todos os vértices têm grau par.

G tem um circuito. Seja C esse circuito. Num circuito cada vértice está ligado ao vértice

anterior e ao seguinte. Se retirarmos de G as arestas de C, o grafo resultante G0 continua

a ter todos os vértices com grau par. O grafo G0 pode não ser conexo. Cada uma das

suas componentes conexas obedece à hipótese de indução e, por isso, possui um circuito

de Euler. Estamos em condições de construir um circuito de Euler para G, começando no

circuito C, usando cada circuito de Euler das componentes conexas de G0 sempre que um

vértice de C pertencer a uma dessas componentes, regressando a C exactamente a esse

vértice e continuando até voltar ao ponto de partida.

Esta demonstração fornece um processo muito pouco prático de encontrar um circuito

de Euler. Descreve-se a seguir o algoritmo de Fleury para obtenção de circuitos de Euler.

Este é um algoritmo fácil de utilizar em cálculos à mão e também de fácil implementação

em computador.

1.7.1 Algoritmo de Fleury

1. Escolher um vértice qualquer para iniciar.

21

Universidade do Algarve - 06/07 Teoria de Grafos

2. Escolher qualquer aresta que saia desse vértice só escolhendo uma aresta que seja um

istmo se não houver mais nenhuma.

3. Destruir a aresta utilizada

4. Repetir 2 e 3 até chegar ao vértice inicial.

5. Se não há mais arestas o circuito de Euler está encontrado. Caso ainda haja arestas,

recomeçar o circuito a partir de um dos vértices do circuito onde ainda haja arestas

incidentes.

Exemplo 1 Encontrar um circuito de Euler no grafo representado na �gura 10.

Figura 10: Circuito de Euler

É preciso começar por constatar que realmente existe um tal circuito. Com efeito o

grafo é conexo e os graus dos vértices são: 2, 4, 4, 4, 4, 2.

Começa-se com um vértice qualquer, por exemplo o vértice 1, escolhe-se uma aresta que

sai de 1, por exemplo (1, 2). Retira-se essa aresta. Escolhe-se uma aresta que sai de 2, por

exemplo (2, 3). Retira-se essa aresta. Escolhe-se uma aresta que sai de 3, por exemplo (3,

4). Retira-se essa aresta. Escolhe-se uma aresta que sai de 4, por exemplo (4, 5). Retira-se

essa aresta. Neste momento o caminho já construído é 1 �! 2 �! 3 �! 4 �! 5 e o grafo

está com o aspecto que se mostra na �gura 11

Continuando o processo, escolhe-se agora uma aresta a sair de 5, por exemplo (5, 6),

retira-se a aresta. E repetindo o processo até acabar as arestas obtinha-se o circuito:

1 �! 2 �! 3 �! 4 �! 5 �! 6 �! 4 �! 2 �! 5 �! 3 �! 1

22

Universidade do Algarve - 06/07 Teoria de Grafos

Figura 11: Aplicação do algoritmo de Fleury

Este algoritmo é também de fácil programação em computador, a partir da matriz de

adjacência. Vejamos com este mesmo exemplo como poderia funcionar um programa de

computador. A matriz de adjacência correspondente ao grafo da �gura 10 é

A =

266666666666666664

0 1 1 0 0 0

1 0 1 1 1 0

1 1 0 1 1 0

0 1 1 0 1 1

0 1 1 1 0 1

0 0 0 1 1 0

377777777777777775Um programa de computador tem que fazer uma escolha sistemática. Suponhamos que

o programa é construído de modo a que a aresta escolhida em cada passo é a correspondente

à primeira entrada não nula da linha correspondente ao vértice que está a ser considerado

no momento. Note-se que retirar a aresta do vértice i para o vértice j corresponde a anular

as entradas aij e aji da matriz.

Começando no vértice 1, inspecciona-se a primeira linha e encontra-se a primeira en-

trada não nula correspondente à aresta (1; 2). Faz-se a12 = a21 = 0. Agora inspecciona-se

a segunda linha. A primeira entrada não nula é a23 correspondente à aresta (2; 3). Faz-se

a23 = a32 = 0. Inspecciona-se agora a terceira linha. A primeira entrada não nula cor-

responde à aresta (3; 1). Faz-se a31 = a13 = 0. Neste momento a matriz de adjacência

23

Universidade do Algarve - 06/07 Teoria de Grafos

modi�cada está com o aspecto:

A0 =

266666666666666664

0 0 0 0 0 0

0 0 0 1 1 0

0 0 0 1 1 0

0 1 1 0 1 1

0 1 1 1 0 1

0 0 0 1 1 0

377777777777777775e o circuito já construído é 1 �! 2 �! 3 �! 1. Mas agora a primeira linha já não

tem nenhuma entrada não nula. Observa-se o circuito construído e procura-se o primeiro

vértice que corresponda a uma linha que ainda tenha alguma entrada não nula. Veri�ca-se

que a segunda linha está nessas condições. Rescreve-se o circuito a acabar no vértice 2:

2 �! 3 �! 1 �! 2 e continua-se com o processo. Agora a primeira entrada não nula da

linha 2 corresponde à aresta (2; 4). Faz-se a24 = a42 = 0. Na linha 4 a primeira entrada

não nula corresponde à aresta (4; 3). Faz-se a43 = a34 = 0. Na linha 3 a primeira entrada

não nula corresponde à aresta (3; 5). Faz-se a35 = a53 = 0. Na linha 5 a primeira entrada

não nula corresponde à aresta (5; 2). Faz-se a52 = a25 = 0. Neste momento a matriz de

adjacência modi�cada está com o aspecto:

A00 =

266666666666666664

0 0 0 0 0 0

0 0 0 0 0 0

0 0 0 0 0 0

0 0 0 0 1 1

0 0 0 1 0 1

0 0 0 1 1 0

377777777777777775e o circuito construído até ao momento é 2 �! 3 �! 1 �! 2 �! 4 �! 3 �! 5 �! 2.

Agora a linha correspondente ao vértice 2 já não tem nenhuma entrada não nula. Como

se fez antes, percorre-se o circuito de modo a terminar num vértice correspondente a uma

24

Universidade do Algarve - 06/07 Teoria de Grafos

linha que ainda tenha elementos não nulos: 4 �! 3 �! 5 �! 2 �! 3 �! 1 �! 2 �! 4.

Continuando o processo, escolhia-se agora a aresta (4; 5), depois a (5; 6) e, �nalmente a

(6; 4), obtendo-se o circuito de Euler 4 �! 3 �! 5 �! 2 �! 3 �! 1 �! 2 �! 4 �!5 �! 6 �! 4. De notar que no �m do processo a matriz A �ca nula.

Suponhamos agora que os habitantes de Königsberg não se importavam de começar

e acabar o seu passeio em partes diferentes da cidade, desde que atravessassem todas as

pontes sem repetição. Isto é, por outras palavras, será possível encontrar no grafo da �gura

10 um caminho (já não um circuito) que use todas as arestas sem repetição? A resposta

mais uma vez é negativa.

Teorema 2 Num grafo conexo não orientado existe um caminho de Euler se e só se houverexactamente duas arestas com grau impar.

Demonstração. Unindo os dois vértices de grau impar por uma aresta teremos um grafoconexo em que todas as arestas têm grau par. Estamos, assim, em condições de encontrar

um circuito de Euler. Basta escrever o circuito de tal modo que a aresta introduzida seja a

primeira ou a última e depois retirá-la para obter um caminho de Euler, que vai começar

e acabar nos dois vértices de grau impar.

Também é possível formular resultados sobre a existência de circuitos e caminhos de

Euler em grafos orientados.

Teorema 3 Num grafo orientado fortemente conexo existe um circuito de Euler se e só

se o grafo for pseudo-simétrico.

Teorema 4 Num grafo orientado fortemente conexo existe um caminho de Euler se e só

se existirem dois vértices xp e xf tais que gr+(xp)� gr�(xp) = 1 e gr�(xf )� gr+(xf ) = 1e para todos os outros vértices xj com j 6= p e j 6= f for gr+(xj) = gr�(xj).

A demonstração destes teoremas é semelhante à já apresentada para o caso não orien-

tado.

Vejamos o exemplo da �gura 12:

25

Universidade do Algarve - 06/07 Teoria de Grafos

Figura 12: Circuito de Euler

gr+(1) = gr�(1) = 1

gr+(2) = gr�(2) = 2

gr+(3) = gr�(3) = 2

gr+(4) = gr�(4) = 2

gr+(5) = gr�(5) = 2

gr+(6) = gr�(6) = 1

9>>>>>>>>>>>>>>>>=>>>>>>>>>>>>>>>>;

Então o grafo é pseudo-simétrico.

Também não é difícil constatar que o grafo é fortemente conexo. Basta determinar a

componente fortemente conexa de um dos seus vértices, para concluir que o grafo tem uma

única componente fortemente conexa.266666666666666664

0 0 1 0 0 0

1 0 1 0 0 0

0 0 0 1 1 0

0 1 0 0 0 1

0 1 0 1 0 0

0 0 0 0 1 0

377777777777777775

266666666666666664

0

3

1

2

2

3

377777777777777775�0 1 3 2 2 3

�26

Universidade do Algarve - 06/07 Teoria de Grafos

O processo para encontrar um circuito de Euler é semelhante ao descrito para o caso

não orientado. Uma possível solução é o circuito 4 �! 6 �! 5 �! 2 �! 1 �! 3 �!4 �! 2 �! 3 �! 5 �! 4.

1.8 Grafos e relações binárias

Um grafo orientado sem arestas múltiplas está associado a uma relação binária de�nida no

conjunto dos seus vértices. As propriedades da relação traduzem-se em propriedades do

grafo.

Uma relação binária de�nida no conjunto X é identi�cada com um subconjunto � do

produto cartesiano X �X.As relações binárias podem ter ou não alguma das seguintes propriedades:

1. re�exiva ! 8x 2 X; (x; x) 2 �

2. simétrica ! 8x; y 2 X; (x; y) 2 � =) (y; x) 2 �

3. anti-simétrica ! 8x; y 2 X; (x; y) 2 � =) (y; x) =2 �

4. anti-simétrica em sentido lato ! 8x; y 2 X; (x; y) 2 � ^ (y; x) 2 � =) x = y

5. transitiva ! 8x; y; z 2 X; (x; y) 2 � ^ (y; z) 2 � =) (x; z) 2 �

A uma relação re�exiva corresponde um grafo em que todos os vértices têm laços.

A uma relação simétrica corresponde um grafo não orientado

Numa relação anti-simétrica só há arcos de um único sentido e não há laços. Se a

relação for anti-simétrica em sentido lato pode ou não haver laços.

1.8.1 Relações de equivalência e componentes fortemente conexas

Uma relação de equivalência satisfaz as propriedades1, 2 e 5. As classes de equivalência

dessa relação vão corresponder às componentes conexas do grafo.

Exemplo 2 Considere-se a relação binária de�nida no conjunto X = f1; 2; 3; 4; 5; 6; 7gatravés de � � X�X dado por � = f(1; 1); (1; 2); (1; 3); (1; 4); (2; 1); (2; 2); (2; 3); (2; 4); (3; 1);(3; 2); (3; 3); (3; 4); (4; 1); (4; 2); (4; 3); (4; 4); (5; 5); (5; 6); (6; 5); (6; 6); (7; 7)g. O grafo cor-

respondente a esta relação está representado na �gura 13.

27

Universidade do Algarve - 06/07 Teoria de Grafos

Figura 13: Relação de equivalência

Como todos os vértices têm laços e todos os arcos de ida têm um correspondente arco

de volta, convenciona-se representar grafos deste tipo sem os laços e usando arestas em vez

de arcos, isto é, usando um grafo não orientado sem laços, como se mostra na �gura 14.

Figura 14: Relação de equivalência

O grafo é formado por componentes conexas, correspondentes às classes de equivalência

da relação. Dentro de cada componente cada vértice é adjacente a todos os outros. Quando

tal acontece as componentes têm o nome de cliques.

1.8.2 Relações de ordem e grafos

Uma relação de ordem lata satisfaz as propriedades 1, 4 e 5, enquanto uma relação de

ordem estrita satisfaz as propriedades 3 e 5.

Quando se representa uma relação de ordem através de um grafo, para simpli�car

28

Universidade do Algarve - 06/07 Teoria de Grafos

as notações, convenciona-se que a orientação dos arco é de baixo para cima e não se

representam as arestas que decorrem da transitividade.

Exemplo 3 Considere-se o grafo de�nido por: X = fa; b; c; d; e; fg e� = f(a; b); (a; c); (a; d); (a; e); (a; f); (b; d); (b; f); (c; e); (c; f); (d; f)g

Como o vértice a está relacionado com todos os outros deve ser o que �ca colocado na

parte inferior do desenho. Repare-se que a existência dos pares (a; b) e (b; d), num relação

transitiva, obriga à existência do par (a; d). Então, para simpli�car notações, omite-se o

arco correspondente a este último arco, estando subentendida a sua existência. Com estas

convenções, o grafo desenha-se como se mostra na �gura 15.

Figura 15: Relação de ordem

Como a orientação dos arcos é de baixo para cima, pode-se dizer que um vértice está

relacionado com outro sempre que houver um caminho entre os dois, composto exclusiva-

mente de arcos dirigidos de baixo para cima.

Assim, pode-se concluir que existe o par (a; e) mas não existe o par (b; e).

Se o grafo de uma relação de ordem é tal que

8x; y 2 X; (x; y) 2 � _ (y; x) 2 � _ x = y;

isto é, se todos os elementos estão relacionados, a relação diz-se de ordem total. É fácil ver

que o grafo correspondente é uma cadeia de baixo para cima.

29

Universidade do Algarve - 06/07 Teoria de Grafos

Diz-se que um conjunto onde está de�nida uma relação de ordem parcial tem um

elemento mínimo z se 8x 2 X; (z; x) 2 �. De modo semelhante diz-se que o conjunto temum elemento máximo w se 8x 2 X; (x;w) 2 �. No grafo da �gura 15 há um elemento

mínimo a; mas não há elemento máximo.

1.9 Grafos completos

De�nição 20 Seja G = (X;�) um grafo orientado. Se 8x; y 2 X; (x; y) =2 � =) (y; x) 2�, o grafo diz-se completo.

Não se deve confundir este conceito com o de relação anti-simétrica. Num grafo orien-

tado completo a não existência de um arco entre dois vértices implica a existência do arco

simétrico desse, enquanto que nas relações anti-simétricas a existência de um arco impede

a existência do arco simétrico, mas pode não haver qualquer arco entre dois vértices, quer

num sentido quer noutro.

A �gura 16 apresenta um exemplo de um grafo orientado completo.

Figura 16: Grafo orientado completo

No caso dos grafos não orientados, os grafos completos são chamados cliques como já

se viu. Para cada número de vértices n existe uma única clique que se representa por Kn.

A determinação de subgrafos de um grafo que formem cliques é um problema de grande

interesse teórico e que tem inúmeras de aplicações como veremos mais tarde.

Na �gura 17 apresenta-se os grafos completos correspondentes a n = 2; n = 3; n = 4 e

n = 5.

De notar que um grafo não orientado completo é regular, isto é, todos os vértices têm

o mesmo grau. É, assim, imediato concluir que Kn tem n vértices en� (n� 1)

2arestas.

30

Universidade do Algarve - 06/07 Teoria de Grafos

Figura 17: Alguns grafos completos

1.10 Grafos bipartidos

De�nição 21 Se num grafo não orientado for possível encontrar uma partição do conjuntodos vértices X = Y [Z; (Y \Z = ?) tal que cada aresta do grafo une um vértice do conjuntoY a um vértice do conjunto Z e não há arestas entre os vértices de Y , nem há arestas entre

os vértices de Z, diz-se que o grafo é bipartido. Se todos os vértices de Y estiverem ligadas

a todos os vértices de Z o grafo diz-se bipartido completo.

Os grafos bipartidos completos são completamente determinados pelo número de vér-

tices nos dois conjuntos de índices. Designa-se por Kr;s o grafo bipartido completo em

que um dos conjuntos de vértices tem r elementos e o outro tem s. Nas �guras 18 e 19

apresentam-se alguns exemplos de grafos bipartidos completos para diferentes valores de

r e de s. Para melhor compreensão os vértices de um conjunto são pretos e os do outro

conjunto são brancos. Na �gura 18 representa-se K2;4 de duas maneiras diferentes. O grafo

é o mesmo, o que mudou foi a posição relativa dos vértices. Na �gura 19 apresentam-se

representações de K1;3; K2;2 e K3;3.

Figura 18: Duas representações de K2;4

31

Universidade do Algarve - 06/07 Teoria de Grafos

Figura 19: Representações de K1;3; K2;2; K3;3

O grafo Kr;s tem r + s vértices e r � s arestas. Cada um dos r vértices do primeiro

conjunto tem grau s e cada um dos s vértices do segundo conjunto tem grau r. Note-se

também que os grafos Kr;s e Ks;r são iguais. Por convenção escreve-se sempre primeiro o

menor dos valores de s e r.

De modo análogo se pode de�nir grafo tripartido e grafo tripartido completo, usando

agora três conjuntos disjuntos de vértices em lugar de dois.

De�nição 22 Se num grafo não orientado for possível encontrar uma partição do conjuntodos vértices X = Y [Z [W; (Y \Z = ?; Y \W = ?;W \Z = ?) tal que cada aresta dografo une um vértice de um dos conjuntos Y; Z ou W a um vértice de outro conjunto e não

há arestas entre os vértices de um mesmo conjunto, diz-se que o grafo é tripartido. Se todos

os vértices de cada conjunto estiverem ligadas a todos os vértices dos outros conjuntos, o

grafo diz-se tripartido completo.

Os grafos tripartidos completos, tal como os bipartidos completos, são completamente

determinados pelo número de vértices nos dois conjuntos de índices. Designa-se por Kr;s;t o

grafo tripartido completo em que um dos conjuntos de vértices tem r elementos, outro tem

s elementos e o terceiro tem t elementos. Na �gura 20 apresenta-se, a título de exemplo o

grafo tripartido completo K2;2;2.

1.11 Grafos complementares

Quando uma grafo não é completo é muitas vezes interessante conhecer o grafo que tem as

arestas que lhe faltam para ser completo. Surge assim o conceito de grafo complementar.

De�nição 23 Dado o grafo G = (X;�), chama-se grafo complementar de G e representa-se por G o grafo que tem X como conjunto de vértices e X � X � � como conjunto dearestas.

32

Universidade do Algarve - 06/07 Teoria de Grafos

Figura 20: Grafo K2;2;2

Exemplo 4 Na �gura 21 representa-se um grafo e o seu complementar.

Figura 21: Grafos complementares

Facilmente se constata que o complementar de um grafo completo não tem arestas

(todos os vértices têm grau zero) e que o complementar do grafo bipartido completo Kr;s

é o grafo desconexo composto de duas componentes conexas Kr e Ks.

1.12 Árvores

Um outro tipo de grafos que tem muitas aplicações é conhecido por árvore.

De�nição 24 Uma árvore é um grafo não orientado conexo sem circuitos

De�nição 25 Uma �oresta é um grafo não orientado cujas componentes conexas são ár-

vores.

As árvores têm várias propriedades sendo as mais importantes resumidas no seguinte

teorema:

33

Universidade do Algarve - 06/07 Teoria de Grafos

Teorema 5 Seja G = (X;�) uma árvore com n > 2 vértices. As seguintes proposições

são equivalentes:

a) G é conexo e não tem circuitos.

b) G não tem circuitos e tem n� 1 arestas.c) G é conexo e tem n� 1 arestas.d) G não tem circuitos e acrescentando uma aresta cria-se um único circuito.

e) G é conexo e a supressão de uma única aresta torna-o desconexo.

f) Qualquer que seja o par de vértices de X há um único caminho simples que os

une.

Demonstração. a) =) b)

Sendo G conexo e sem circuitos, retirando uma aresta �ca não conexo e terá duas

componentes conexas. Continuando a retirar arestas, por cada aresta retirada cria-se

mais uma componente conexa. Quando se tiverem retirado n � 1 arestas obtiveram-se ncomponentes conexas. Como o grafo tem n vértices, cada componente conexa corresponde

a um único vértice e o grafo �cou sem arestas. Então o grafo tinha exactamente n � 1arestas.

b) =) c)

Por absurdo suponha-se que o grafo não era conexo. Existem dois vértices em G tais

que não existe nenhum caminho entre eles. Unem-se esses vértices por uma aresta. O

novo grafo continua a não ter circuitos, porque se se tivesse criado um circuito era porque

havia um caminho entre os dois vértices. Se o grafo continua a não ser conexo repete-se

o processo de adicionar arestas até que o grafo �que conexo e continuará sem circuitos.

Suponhamos que o processo tinha sido repetido k vezes. Então o novo grafo é conexo e

sem circuitos e terá (n� 1 + k) arestas. Mas para não haver circuitos o grafo tem que ter

n � 1 arestas. Então tem que ser k = 0, concluindo-se assim que o grafo original já era

conexo.

c) =) d)

Por absurdo, supor que o grafo possui pelo menos um circuito. Retirando uma aresta

desse circuito obtém-se um grafo com n� 2 arestas, que, como tem n vértices, não poderá

ser conexo. Sendo o grafo conexo e sem circuitos, há um caminho entre cada par de vértices,

acrescentando uma aresta entre um determinado par de vértices cria-se um circuito formado

pelo caminho que já existia e por essa nova aresta.

d) =) e)

34

Universidade do Algarve - 06/07 Teoria de Grafos

Por absurdo supor que o grafo não é conexo. Então, há pelo menos um par de vértices

entre os quais não existe qualquer caminho. Acrescentando ao grafo a aresta entre esses

dois vértices cria-se um circuito. Mas isso signi�ca que os dois vértices estavam ligados por

um caminho. Então o grafo tem que ser conexo.

e) =) f)

Por absurdo, suponha-se que há um par de vértices unidos por mais do que um caminho

simples. Então o grafo tem pelo menos um circuito. Suprimindo uma aresta desse circuito

o grafo continua a ser conexo, o que contraria o facto de o grafo deixar de ser conexo

quando uma aresta é suprimida.

f) =) a)

Se cada par de vértices está unido por um caminho o grafo é conexo. Além disso, como

esse caminho é único não pode haver circuitos

Teorema 6 Numa árvore há sempre pelo menos dois vértices de grau 1.

Demonstração. Seja G um grafo com n vértices e m arestas que é uma árvore. Então

m = n�1. Como a soma dos graus dos vértices é o dobro do número de arestas, essa somaé 2n � 2. Se todos os vértices tivessem grau igual ou superior a 2, essa soma seria igual

ou superior a 2n. Então, pelo menos um dos vértices deve ter grau 1. Se somente um dos

vértices tivesse grau 1 e todos os outros grau 2 ou mais, a soma dos graus seria igual ou

superior a 2n� 1. Por isso tem que haver pelo menos dois vértices com grau 1.

1.12.1 Árvores de suporte

Um problema muito comum é o de tentar chegar a todos os vértices de um grafo usando o

menor número de arestas possível. Ora, para se chegar a todos os vértices de um grafo será

necessário usar um grafo parcial conexo e querendo usar o menor número possível de arestas

não se deverá ter nenhum circuito, pois haveria aí pelo menos uma aresta desnecessária.

Ou seja, deve-se encontrar um grafo parcial do grafo original que seja uma árvore.

De�nição 26 Seja G um grafo. Uma árvore de suporte de G é um grafo parcial de G queé uma árvore.

Teorema 7 Um grafo G admite uma árvore de suporte se e só se G é conexo.

Demonstração. G admite uma árvore de suporte =) G conexo

35

Universidade do Algarve - 06/07 Teoria de Grafos

Suponhamos que G não é conexo então nenhum dos seus grafos parciais será conexo e,

portanto, nenhum deles pode ser uma árvore.

G é conexo =) G admite uma árvore de suporte

Supondo G conexo procuremos uma aresta em G que possa ser removida sem que o

grafo se torne desconexo. Uma de duas situações pode ocorrer:

1. não existe tal aresta;

2. existe tal aresta.

No primeiro caso já encontrámos uma árvore.

No segundo caso removemos a aresta e repetimos o processo até se cair no primeiro

caso.

Há fundamentalmente dois processos para encontrar uma árvore de suporte para um

dado grafo conexo: o destrutivo e o construtivo.

O processo destrutivo baseia-se na demonstração do teorema que garante a existência

da árvore de suporte. Começa-se por considerar o grafo inicial. Uma aresta cuja remoção

não torna o grafo desconexo tem que pertencer a um circuito. Se não houver nenhum

circuito já se tem uma árvore. Caso contrário identi�ca-se um circuito e retira-se uma

aresta. Se não houver mais circuitos termina-se o processo, caso contrário repete-se até

não haver mais circuitos.

No processo construtivo vai-se construindo a árvore começando com um vértice do grafo

inicial e, em cada passo, escolhe-se uma aresta do grafo que comece num vértice da árvore

e termine num vértice que ainda não esteja na árvore, acrescentando-se então esse vértice

e essa aresta à árvore. Termina-se quando todos os vértices estiverem na árvore.

Para um mesmo grafo podem existir várias árvores de suporte. Nas �guras 22 e 23

apresenta-se um exemplo de construção de uma árvore de suporte para um mesmo grafo,

usando o processo destrutivo e o processo construtivo respectivamente.

Na �gura 22 observa-se a sucessão de grafos parciais que se vão obtendo à medida que

se vai aplicando o processo destrutivo. Começando por constatar a existência do circuito

A �! B �! C �! A, retirou-se a aresta B �! C, em seguida observou-se a

existência do circuito B �! D �! E �! B e retirou-se a aresta E �! B, depois ao

circuito A �! D �! E �! A retirou-se a aresta A �! E e, �nalmente ao circuito

A �! B �! D �! A retirou-se a aresta D �! A. O resultado �nal é um grafo

conexo sem circuitos, ou seja uma árvore, que é um grafo parcial do grafo inicial. Repare-

se que para desfazer cada circuito se poderia ter optado por retirar outra aresta que não a

escolhida, sendo o resultado �nal outra árvore de suporte.

36

Universidade do Algarve - 06/07 Teoria de Grafos

Figura 22: Obtenção de uma árvore de suporte

Na �gura 23 demonstra-se a aplicação do método construtivo ao mesmo grafo

1.12.2 Árvore de suporte nínima

Quando associado a cada aresta de um grafo existe um valor que, normalmente, representa

o custo de utilização dessa aresta, então a obtenção de uma árvore de suporte tal que a

soma dos custos associados às arestas seja mínimo é de particular importância.

A uma tal árvore chama-se árvore de suporte mínima e existem vários algoritmos que

permitem a sua obtenção. Tal como acontece com a árvore de suporte a resposta pode não

ser única, embora, neste caso, geralmente, o número de opções de escolha é mais reduzido.

Sempre que num grafo há custos associados às arestas, diz-se que estamos perante um

grafo valorado. A representação de um tal grafo pode ser feita gra�camente escrevendo

os valores correspondentes a cada aresta sobre ela, ou através da matriz de adjacência,

37

Universidade do Algarve - 06/07 Teoria de Grafos

Figura 23: Obtenção de uma árvore de suporte

substituindo a entrada igual a 1 que informa da existência de uma aresta pelo custo que

lhe corresponde.

Cronologicamente, o primeiro algoritmo proposto para este efeito, foi o de Kruskal que

apareceu em 1928. Trata-se de uma estratégia ávida de escolha das arestas a inserir na

árvore. O algoritmo propõe que se comece pela aresta de custo mínimo e que, sequencial-

mente, se vão inserindo na árvore as arestas com os custos mínimos desde que isso não

forme um circuito. Normalmente os algoritmos baseados em estratégias ávidas são heurís-

ticas que podem dar bons resultados, mas que podem não conduzir ao óptimo. Neste caso,

consegue-se demonstrar que efectivamente se obtém uma árvore de suporte mínima.

Da maneira como se escolhem as arestas é claro que nunca se formam circuitos. Ao

�m de n � 1 passos obtém-se um grafo com n � 1 arestas, com os n vértices de G e sem

circuitos que já se viu ter que ser uma árvore. Chamemos T a essa árvore e designemos o

custo associado por c(T ). Suponhamos que existe uma outra árvore de suporte S tal que

c(S) < c(T ). Se S e T são diferentes, há pelo menos uma aresta de T que não está em

S. Seja a a aresta de menor peso de T que não está em S. Se inserirmos essa aresta em

S é criado um circuito. Nesse circuito deve haver uma aresta a0 que não está em T . Pela

construção de T o custo associado à aresta a não pode ser maior do que o custo associado a

38

Universidade do Algarve - 06/07 Teoria de Grafos

a0. Substituindo em S a aresta a0 por a, obtém-se ainda uma árvore de suporte com custo

inferior a S e que tem mais uma aresta em comum com T do que S tinha. O processo

pode ser repetido, obtendo-se de cada vez uma árvore de custo inferior ao custo de S com

mais uma aresta em comum com T do que a anterior. A certa altura devemos encontrar

T . Mas então c(T ) � c(S), o que contraria a de�nição de S.

A utilização do algoritmo de Kruskal para grafos de pequena dimensão em cálculos à

mão é relativamente simples. Mas já não é adequado para programar, pois a identi�cação

da existência de circuitos a partir da matriz de adjacência não é tarefa fácil. Por isso, o

que se utiliza normalmente é uma variante deste algoritmo, o algoritmo de Prim, que difere

no processo como se vão escolhendo as arestas a inserir no grafo. Tal como no algoritmo

de Kruskal, a árvore é obtida pelo processo construtivo. De�ne-se o conjunto T , formado

pelos vértices que, em cada passo do algoritmo, já foram colocados na árvore. Inicia-se a

construção da árvore escolhendo a aresta com custo mínimo. Colocam-se os dois vértices

a que essa aresta é incidente no conjunto T . Em cada iteração escolhe-se, entre as arestas

que têm um vértice em T e outro em X � T , a que tiver custo mínimo. Acrescenta-seessa aresta à árvore e o novo vértice a T e repete-se o processo n � 1 vezes. Deste modogarante-se que não se formam circuitos.

Exemplo 5 Considere-se o grafo valorado cuja matriz de adjacência/custo é:266666666666666664

0 2 1 0 3 6

2 0 1 0 8 5

1 1 0 10 4 2

0 0 10 0 6 0

3 8 4 6 0 1

6 5 2 0 1 0

377777777777777775Considere-se o conjunto dos vértices X = fx1; x2; x3; x4; x5; x6g. Inicialmente é T = ?.Escolhe-se uma aresta com custo mínimo para iniciar o processo de construção da árvore.

Há várias hipóteses de escolha: (x1; x3); (x2; x3); (x5; x6). Pode-se optar por uma destas

três. Cada escolha inicial pode, eventualmente, conduzir a uma árvore diferente, mas

sempre com o mesmo custo, com veremos. Escolha-se, por exemplo, a aresta inicial (x1; x3).

Faz-se T = fx1; x3g. Escolhe-se agora uma aresta, com um vértice em T e o outro em

39

Universidade do Algarve - 06/07 Teoria de Grafos

X � T , com custo mínimo: (x2; x3). Agora é T = fx1; x2; x3g. Repetindo o processo aaresta que deve ser escolhida agora é (x3; x6) e �ca T = fx1; x2; x3; x6g. Agora uma arestacom custo mínimo é (x6; x5) e �ca T = fx1; x2; x3; x5; x6g e, �nalmente, escolhe-se a aresta(x5; x4).

O custo total associado à árvore encontrada é: 1 + 1 + 2 + 1 + 6 = 11.

Em termos de implementação computacional, o trabalho sobre a matriz é facilitado, se,

de cada vez que se acrescenta um vértice ao conjunto T se retirar a coluna respectiva da

matriz de adjacência.

1.13 Planaridade

Em muitas aplicações de grafos é importante encontrar um posicionamento dos vértices

tal que as conexões entre eles, ou seja, as arestas, não se intersectam ou, se tal não for

exequível, se intersectem o menor número de vezes possível.

De�nição 27 Um grafo diz-se planar se existir alguma sua representação no plano de tal

modo que não haja arestas que se intersectem.

Repare-se que para o mesmo grafo podem existir representações em que as arestas se

cruzem e outras em que não se cruzem. Por isso, não podemos dizer se um grafo não é

planar só porque numa determinada representação as arestas se cruzam.

Por exemplo, considere-se o grafo K4.

Figura 24: Representações de K4

Na �gura 24 apresentam-se três representações diferentes do mesmo grafo. Enquanto

que na primeira as arestas se cruzam nas outras duas já tal não acontece. Repare-se

ainda que, enquanto que na segunda representação houve um posicionamento diferente dos

vértices no plano, no terceiro caso manteve-se o posicionamento dos vértices e alterou-se o

desenho de uma das arestas.

40

Universidade do Algarve - 06/07 Teoria de Grafos

Conclui-se assim que K4 é um grafo planar.

De um modo geral não é fácil decidir se um grafo é planar. Os teoremas sobre grafos

planares dão-nos condições que ajudam a descobrir se um grafo não é planar, mas não nos

permitem a�rmar se é planar.

Considerando um grafo simples não orientado, as arestas de uma sua representação

determinam divisões do plano em que o grafo está representado. A cada uma dessas

regiões do plano chama-se face do grafo. Há sempre uma região ilimitada (a que �ca "por

fora") e a essa chama-se face in�nita. Ao número de arestas que limita uma face chama-se

grau da face. Como cada aresta delimita exactamente duas faces, é imediato concluir que

a soma dos graus das faces é igual ao dobro do número de arestas.

Euler descobriu uma fórmula relacionando o número de vértices n, o número de arestas

m e o número de faces f de um grafo conexo planar: n�m+f = 2 . Infelizmente a fórmulatambém pode, eventualmente ser válida para algum grafo não planar, pelo que não permite

garantir se um grafo é planar. No entanto, se a fórmula não for satisfeita então o grafo não

é planar.

Considere-se, por exemplo o grafo K4, que como já se viu é um grafo planar. Este grafo

tem 4 vértices, 6 arestas e 4 faces. Então: 4� 6 + 4 = 2

Teorema 8 Seja G um grafo conexo e planar com n vértices, m arestas e f faces. Então

n�m+ f = 2.

Demonstração. A demonstração é feita por indução sobre o número de arestas.Se um grafo não tem arestas e é conexo, então só tem um vértice e uma face e a fórmula

�ca 1� 0 + 1 = 2.Por hipótese de indução suponha-se que a fórmula é válida para qualquer grafo com m

ou menos arestas.

Seja G um grafo com m + 1 arestas, n vértices e f faces. Se G tiver um vértice com

grau 1, tira-se esse vértice e a aresta nele incidente. Obtém-se um grafo G0 com menos

uma aresta e menos um vértice e o mesmo número de faces, uma vez que a retirada de uma

aresta incidente num vértice de grau 1 não faz desaparecer nenhuma face. Para o grafo

G0 é válida a fórmula de Euler, por hipótese de indução: (n � 1) �m + f = 2. Então én� (m+1)+f = 2. Se G não tiver nenhum vértice de grau 1, então G não é uma árvore e,por isso, deve ter pelo menos um circuito. Identi�ca-se um circuito e retira-se uma das suas

arestas. Obtém-se um grafo G0 que continua a ser conexo, tem o mesmo número de vértices

de G, menos uma aresta e menos uma face, pois ao desfazer o circuito houve duas faces

41

Universidade do Algarve - 06/07 Teoria de Grafos

que se juntaram numa só. Para G0 é válida a fórmula de Euler, por hipótese de indução:

n�m+ (f � 1) = 2. Então é válido n� (m+ 1) + f = 2.A partir da fórmula de Euler podem ser deduzidas outras relações entre o número de

vértices e arestas de um grafo planar, que são bastante úteis para descobrir se um grafo

não é planar.

Teorema 9 Seja G um grafo conexo e planar com m arestas e f faces. Então f � 23m.

Demonstração. Já se viu que a soma dos graus das faces é 2m. Mas, por outro lado,cada face é limitada pelo menos por 3 arestas. Então a soma dos graus das faces é, no

mínimo 3f . Donde 2m � 3f e, �nalmente, f � 23m.

Teorema 10 Seja G um grafo conexo e planar com n vértices em arestas. Então 3n�m �6.

Demonstração. Temos, por um lado a fórmula de Euler n�m+ f = 2 e, por outro ladoo resultado f � 2

3m. Substituindo f por

2

3m na fórmula de Euler vem n �m + 2

3m � 2.

Ou seja 3n�m � 6.Com este resultado podemos concluir que K5 não é planar. Com efeito neste grafo é

n = 5 e m = 10, donde 3n�m = 3� 5� 10 = 5 < 6.Vejamos para que valores de n é que Kn é planar:

3n�m = 3n� n(n� 1)2

=�n2 + 7n

2� 6

Ora esta relação veri�ca-se como igualdade para n = 3 e para n = 4 e não se veri�ca para

mais nenhum valor de n inteiro. Portanto todos os grafos completos Kn com n � 5 nãosão planares.

Vejamos o que se passa com os grafos bipartidos completos.

Na �gura 25 temos uma representação planar de K2;4. Facilmente se percebe que

qualquer grafo bipartido K2;n, para qualquer valor de n é planar.

O que se passa com K3;3?

Vejamos: n = 6;m = 9 e 3n�m = 3� 6� 9 = 18� 9 = 9 > 6. Este resultado não nospermite concluir nada.

Na �gura 27 tentamos outra representação.

Parece que não é possível representar K3;3 de forma planar.

42

Universidade do Algarve - 06/07 Teoria de Grafos

Figura 25: Representação planar de K2;4

Figura 26: Grafo K3;3

Teorema 11 Seja G um grafo conexo e planar com n vértices e m arestas e sem triângulos

(isto é, sem circuitos de comprimento 3). Então m � 2n� 4.

Demonstração. Como não há circuitos de comprimento 3, todos os circuitos têm 4 ou

mais arestas, ou seja cada face tem grau pelo menos 4, donde a soma dos graus das faces

é, no mínimo, 4f . Então 2m � 4f , ou seja f � m

2. Da fórmula de Euler vem que

f = m� n+ 2, ou seja m� n+ 2 � m2e, �nalmente, m � 2n� 4.

Vejamos se este resultado nos ajuda com K3;3. Neste grafo não há circuitos com 3

arestas. Temos n = 6;m = 9 e 2n � 4 = 2�6 � 4 = 12 � 4 = 8 < 9. Então o grafo não éplanar.

Vejamos agora o que se passa com qualquer Ks; r com s � 3 e r � 3. Neste grafo én = r + s e m = r � s. São grafos conexos e todos os circuitos têm pelo menos 4 arestas.

Se os grafos fossem planares teria que ser m � 2n� 4, ou seja r� s � 2� (r+ s)� 4. Ora,para s � 3 e r � 3 esta desigualdade não se veri�ca. Conclui-se assim que Ks;r com s � 3e r � 3 é não planar.Vejamos ainda mais um resultado útil para decidir se um grafo não é planar:

Teorema 12 Seja G um grafo conexo simples e planar com n vértices e m arestas. Então

43

Universidade do Algarve - 06/07 Teoria de Grafos

Figura 27: Outra representação de K3;3

tem pelo menos um vértice com grau igual ou inferior a 5.

Demonstração. Já mostramos que num grafo nestas condições é válida a desigualdade

3n � m � 6, ou seja m � 3n � 6. Se todos os vértices tivessem grau 6 ou mais seria

2m � 6n, ou seja m � 3n. Então, pelo menos um vértice tem que ter grau menor ou igual

a 5.

Mesmo com todos estes resultados, não é, muitas vezes, fácil determinar se um grafo é

ou não planar.

Um dos resultados que mais tem sido utilizado para decidir se um grafo é ou não planar

é o teorema de Kuratowski.

Antes de o enunciarmos vamos precisar de mais algumas de�nições.

De�nição 28 Diz-se que um grafo sofreu uma modi�cação por vértices de grau 2 se se

retirou ou acrescentou um vértice de grau 2 entre dois outros vértices. Isto é se, sendo

c um vértice de grau 2 adjacente a a e a b se retira c unindo a directamente a b, ou, ao

contrário, se se insere um vértice c numa aresta entre a e b.

No primeiro caso passa-se de para ,enquanto que no segundo

caso se passa de para .

De�nição 29 Dois grafos são homeomorfos se um pode ser obtido do outro por modi�-

cações de vértices de grau 2.

Teorema 13 (de Kuratowski): Um grafo não é planar se e só se contém um subgrafo

homeomorfo a K5 ou a K3;3.

44

Universidade do Algarve - 06/07 Teoria de Grafos

Este teorema foi apresentado pelo matemático polaco Kuratowski em 1930. A sua

demonstração é bastante longa e complexa. Tem a virtude de fornecer uma condição

necessária e su�ciente para a planaridade de um grafo que não é dependente da sua repre-

sentação grá�ca, no entanto na prática o teorema não tem aplicação. Não existe nenhum

algoritmo nele baseado para testar a planaridade/não planaridade de um grafo. Na ver-

dade, testar todos os subgrafos e veri�car se são homeomorfos a K5 ou a K3;3 não é tarefa

exequível em tempo útil.

1.14 Caminhos mais curtos

Para grafos valorados, além de interessar estabelecer a existência de pelo menos um caminho

entre dois quaisquer vértices, é, muitas vezes, importante obter o caminho de menor custo.

Num grafo valorado chama-se custo de um caminho à soma dos valores correspondentesàs arestas que o constituem. Se o grafo for de pequena dimensão, bastará fazer uma lista

de todos os caminhos possíveis e escolher o de menor custo. Quando a dimensão do grafo é

maior este processo é impraticável. Existem vários algoritmos para encontrar um caminho

de custo mínimo entre dois quaisquer vértices de um grafo. Descrevemos seguidamente

o algoritmo de Dijkstra por ser um dos mais simples de aplicar, que funciona tanto para

grafos orientados como não orientados e que também se presta a uma fácil implementação

computacional. Este algoritmo, proposto por Dijkstra em 1959, baseia-se no princípio de

que o caminho mais curto entre dois vértices contém o caminho mais curto entre cada par

de vértices intermédios. Vamos descrever o algoritmo determinando o caminho mais curto

entre os vértices a e h do grafo orientado da �gura 28.

Partindo do vértice a, em cada passo do algoritmo determina-se o caminho mais curto

entre esse vértice e um outro vértice do grafo que �ca no caminho para h. O algoritmo

termina quando se consegue atingir h. Vamos de�nir dois conjuntos de vértices S e T do

seguinte modo: S é o conjunto dos vértices para onde já se sabe qual é o caminho mais

curto e T é o conjunto dos outros vértices. Inicialmente é S = fag e T = fb; c; d; e; f; g; hg,pois o caminho mais curto entre a e a é obviamente de comprimento nulo. Em cada

iteração vamos tirar um vértice de T e inseri-lo em S. Com esse objectivo construímos

uma tabela em que se indicam as distâncias mínimas já determinadas para os vértices de S

e as distâncias estimadas para os vértices de T para onde se pode ir directamente a partir

dos vértices de S, para os vértices de T aos quais não seja possível chegar directamente a

partir dos vértices de S consideramos que a distância estimada é1: A coluna "antecedente"permitirá, como veremos construir o caminho mais curto depois de sabermos qual o valor

45

Universidade do Algarve - 06/07 Teoria de Grafos

Figura 28: Determinar o caminho mais curto

que lhe corresponde. Inicialmente temos a seguinte tabela:

Vértice Distância mínima Distância estimada Antecedente

a 0 � �

b � 3 a

c � 8 a

d � 4 a

e � 1 �

f � 1 �

g � 1 �

h � 1 �

Observando a coluna "distância estimada", vemos que o menor valor é 3 e corresponde

ao vértice b. Então o caminho mais curto entre o vértice a e o vértice b é 3 e já podemos

passar o vértice b para o conjunto T . A partir do vértice b pode-se ir para c e e. O caminho

de a a b tem comprimento 3 e de b a c comprimento 2, logo o caminho de a a c passando

por b tem comprimento 5 que é menor do que o valor 8 antes estimado. Actualizamos esse

valor e mudamos o antecedente de c de a para b. A distância estimada para e passa a ser

46

Universidade do Algarve - 06/07 Teoria de Grafos

10, com antecedente b. Temos assim novos conjuntos S = fa; bg e T = fc; d; e; f; g; hg e anova tabela:

Vértice Distância mínima Distância estimada Antecedente

a 0 � �

b 3 � a

c � 5 b

d � 4 a

e � 10 b

f � 1 �

g � 1 �

h � 1 �

Neste momento a menor distância estimada é 4 para o vértice d. Passamos o vértice

d do conjunto T para o conjunto S (S = fa; b; dg e T = fc; e; f; g; hg) e actualizamos osvalores da tabela tendo em atenção os vértices para onde se pode ir directamente a partir

de d. Repare-se que de d para c a distância é 2, que somados à distância 4 até d daria uma

distância 6 para c, valor superior ao 5 anteriormente estimado, pelo que não se considera

esse caminho.

47

Universidade do Algarve - 06/07 Teoria de Grafos

Vértice Distância mínima Distância estimada Antecedente

a 0 � �

b 3 � a

c � 5 b

d 4 � a

e � 10 b

f � 1 �

g � 9 d

h � 1 �

A distância estimada mínima neste momento é 5 para c. Então o vértice c passa para

o conjunto S (S = fa; b; c; dg e T = fe; f; g; hg) e repete-se tudo de novo.

Vértice Distância mínima Distância estimada Antecedente

a 0 � �

b 3 � a

c 5 � b

d 4 � a

e � 10 b

f � 8 c

g � 9 d

h � 1 �

Passa-se f de T para S: S = fa; b; c; d; fg e T = fe; g; hg. De f pode-se ir para e, g eh. Para e a distância estimada passa a ser 9 = 8 + 1 < 10 e actualiza-se o antecedente de

48

Universidade do Algarve - 06/07 Teoria de Grafos

e para f . Para g a distância seria 8+ 4 = 12 > 9 pelo que não se considera e para h temos

agora a diatância estimada 8 + 3 = 11. Temos assim o novo quadro:

Vértice Distância mínima Distância estimada Antecedente

a 0 � �

b 3 � a

c 5 � b

d 4 � a

e � 9 f

f 8 � c

g � 9 d

h � 11 f

No passo seguinte tanto podemos escolher e como g, uma vez que correspondem ambos

à distãncia estimada mínima. Vamos escolher e: S = fa; b; c; d; e; fg e T = fg; hg : Dee só é possível chegar a h com a distância 9 + 8 = 17 > 11. Seguidamente escolhemos

g: S = fa; b; c; d; e; f; gg e T = fhg : De g também só se pode ir para h com a distância

9 + 3 = 12 > 11: Finalmente, a menor distância estimada corresponde ao vértice h com o

valor 11: S = fa; b; c; d; e; f; g; hg e T = �. Temos o quadro �nal

49

Universidade do Algarve - 06/07 Teoria de Grafos

Vértice Distância mínima Distância estimada Antecedente

a 0 � �

b 3 � a

c 5 � b

d 4 � a

e 9 � f

f 8 � c

g 9 � d

h 11 � f

Concluímos assim que o comprimento do caminho mais curto entre os vértices a e h é 11.

Para saber qual o caminho temos que analisar a coluna dos antecedentes. O antecedente

de h é f , o antecedente de f é c, o antecedente de c é b e o antecedente de b é a. Temos

assim o caminho a! b! c! f ! h.

50