Vous êtes sur la page 1sur 139

DCC/UFBA – MAT156

Adolfo Almeida Duran

2005
Apresentação

• O curso / motivação
• Horário /sala
• Programa do curso
• Referências
• Avaliação
• E-mail : adolfo@ufba.br

Adolfo Duran - 2005 Teoria dos Grafos 2


Introdução
• Porque estudar Grafos
– Importante ferramenta matemática com aplicação
em diversas áreas do conhecimento
• Genética, química, pesquisa operacional,
telecomunicações, engenharia elétrica, redes de
computadores, conexão de vôos aéreos, restrições de
precedência, fluxo de programas, dentre outros
– Utilizados na definição e/ou resolução de
problemas

Adolfo Duran - 2005 Teoria dos Grafos 3


• Porque estudar Grafos
– Em computação: estudar grafos é mais uma
forma de solucionar problemas computáveis

– Os estudos teóricos em grafos, buscam o


desenvolvimento de algoritmos mais eficientes.

Adolfo Duran - 2005 Teoria dos Grafos 4


• O que são Grafos

• Diagrama - Corresponde a soma de pontos e linhas, onde


os pontos apresentam alguma informação e as linhas
indicam o relacionamento entre dois pontos quaisquer
• Ferramenta de modelagem
• Abstração matemática que representa situações reais
através de um diagrama.

Adolfo Duran - 2005 Teoria dos Grafos 5


Um pouco de história
• As pontes de Königsberg

É possível sair de uma das ilhas, passar uma


única vez por cada uma das pontes e retornar ao
ponto de origem ?
Adolfo Duran - 2005 Teoria dos Grafos 6
• As pontes de Königsberg
– Resolvido em 1736 por Leonhard Euler
– Necessário um modelo para representar o
problema
– Abstração de detalhes irrelevantes:
• Área de cada ilha
• Formato de cada ilha
• Tipo da ponte, etc.

Adolfo Duran - 2005 Teoria dos Grafos 7


• As pontes de Königsberg
– Euler generalizou o problema através de um
modelo de grafos

Adolfo Duran - 2005 Teoria dos Grafos 8


• As pontes de Königsberg
– Euler mostrou que não existe o trajeto proposto
utilizando o modelo em grafos
• Verifique nos grafos abaixo se o trajeto proposto é possível

Adolfo Duran - 2005 Teoria dos Grafos 9


• O problema das 3 casas
– É possível conectar os 3 serviços às 3 casas
sem haver cruzamento de tubulação?

A teoria
dos
grafos
mostra
que não
é
água luz telefone possível

Adolfo Duran - 2005 Teoria dos Grafos 10


Quantas
cores são
necessárias
para colorir o
mapa do
Brasil, sendo
que estados
adjacentes
não podem
ter a mesma
cor?

Adolfo Duran - 2005 Teoria dos Grafos 11


Questões sobre o caminho mínimo
De forma a reduzir seus custos operacionais,
uma empresa de transporte de cargas deseja
oferecer aos motoristas de sua frota um
mecanismo que os auxilie a selecionar o melhor
caminho (o de menor distância) entre quaisquer
duas cidades por ela servidas, de forma a que
sejam minimizados os custos de transporte.

Adolfo Duran - 2005 Teoria dos Grafos 12


Adolfo Duran - 2005 Teoria dos Grafos 13
• Modelagem com grafos

–Estamos interessados em objetos e nas relações entre


eles

–Quem são eles nos problemas apresentados?

–Como representar graficamente?

Adolfo Duran - 2005 Teoria dos Grafos 14


• Modelagem com grafos
–No problema das casas
• Vértices são casas e serviços
• Arestas são as tubulações entre casas e serviços
–No problema da coloração de mapas
• Vértices são estados
• Arestas relacionam estados vizinhos
–No problema do caminho mais curto
• Vértices são as cidades
• Arestas são as ligações entre as cidades

Adolfo Duran - 2005 Teoria dos Grafos 15


•Três desenvolvimentos isolados despertaram
o interesse pela área
–Formulação do problema das 4 cores (De
Morgan 1852).

Qual a quantidade mínima de cores para colorir um


mapa de tal forma que países fronteiriços possuam
cores diferentes?
Apresenta-se um exemplo em que 3 cores não são
suficientes. Uma prova de que 5 cores é suficiente foi
formulada. Conjecturou-se então que 4 cores seriam
suficientes. Esta questão ficou em aberto até 1976
quando Appel e Haken provaram para 4 cores

Adolfo Duran - 2005 Teoria dos Grafos 16


• Três desenvolvimentos isolados despertaram o interesse
pela área

– Problema do ciclo Hamiltoniano (Hamilton 1859)

Existem n cidades. Cada par de cidades pode ser


adjacente ou não arbitrariamente. Partindo de uma
cidade qualquer, o problema consiste em determinar um
trajeto que passe exatamente uma vez em cada cidade
e retorne ao ponto de partida.

Adolfo Duran - 2005 Teoria dos Grafos 17


• Três desenvolvimentos isolados despertaram
o interesse pela área

– Teoria das árvores


- Kirchoff (1847) - problemas de circuitos
elétricos
- Cayley (1857) - Química Orgânica

Adolfo Duran - 2005 Teoria dos Grafos 18


Definições
• Dois tipos de elementos
– Vértices ou nós
– Arestas
v1

v3 v2
v4

v6
v5

Adolfo Duran - 2005 Teoria dos Grafos 19


Grafo Simples
• G = (V,E)
– V é um conjunto finito não-vazio de vértices
– E é um conjunto finito de arestas
– |V| é o número de vértices representado por n, se n=|V|

– |E| é o número de arestas representado por m, isto é m=|E|


– Cada aresta e pertencente ao conjunto E será denotada pelo
par de vértices (x,y) que a forma
– Dizemos que os vértices x e y são extremos (ou
extremidades) da aresta e.

Adolfo Duran - 2005 Teoria dos Grafos 20


G = (V,E)

Adolfo Duran - 2005 Teoria dos Grafos 21


Dois vértices x e y são ditos adjacentes ou vizinhos se
existe uma aresta e unindo-os.

Os vértices u e v são ditos incidentes na aresta e, se


eles são extremos de e.

Duas arestas são adjacentes se elas têm ao menos um


vértice em comum.

A aresta e=(x,y) é incidente a ambos os vértices x e y.

Adolfo Duran - 2005 Teoria dos Grafos 22


Grafo simples
v1

v3 v2
v4 V = {v1, v2, v3, v4, v5, v6}
e1
v6
v5

E = {(v1,v2),(v1,v3),(v1,v4),(v2,v4),(v3,v4),(v4,v5)}

e1 é incidente a v4 e v5

Adolfo Duran - 2005 Teoria dos Grafos 23


Exemplo

Exercício
Desenhe a representação geométrica do seguinte
grafo:

V = {1,2,3,4,5,6};
E ={(1,2),(1,3),(3,2),(3,6),(5,3),(5,1),(5,6),(4,6),
(4,5),(6,1),(6,2),(3,4)}
Adolfo Duran - 2005 Teoria dos Grafos 24
Mais definições
• Laço
– É uma aresta formada por um par de vértices idênticos

• Arestas múltiplas ou paralelas


– Quando existe mais de uma aresta entre o mesmo par
de vértices.

• Multigrafo
– Um grafo que permite a existência de arestas múltiplas

Adolfo Duran - 2005 Teoria dos Grafos 25


Exercício
Defina formalmente o grafo abaixo e identifique os
conceitos de laço, aresta múltipla e multigrafo no
mesmo:

Adolfo Duran - 2005 Teoria dos Grafos 26


Grau de um vértice
Grau de um vértice v (grau(v))é o número de arestas
que incidem em v.
O grau de um vértice v também pode ser definido
como o número de arestas adjacentes a v.
Obs.: Um laço conta duas vezes para o grau de um
vértice
Grau(b) = 3
Grau(d) = 2
Grau(a) = 2

Adolfo Duran - 2005 Teoria dos Grafos 27


– Qualquer vértice de grau zero é um
vértice isolado

– Qualquer vértice de grau 1 é um


vértice terminal

– Um vértice ímpar tem um número ímpar de arestas

– Um vértice par, tem um número par de arestas

Adolfo Duran - 2005 Teoria dos Grafos 28


Grafo Regular (k-regular)
– todos os vértices têm o mesmo grau (k)
v1

v2 v3
v4

Seqüência de graus de um grafo consiste em


escrever em ordem crescente o grau de todos
os seus vértices

Adolfo Duran - 2005 Teoria dos Grafos 29


V6 é um vértice isolado,
v1 grau(v6)=0
V5 é um vértice terminal,
v3 v2
v4 grau(v5)=1
e1
v6 V2 é um vértice par,
v5
grau(v2)=2

V1 é um vértice ímpar,
grau(v1)=3

Seqüência de graus = 0,1,2,2,3,4

Adolfo Duran - 2005 Teoria dos Grafos 30


Exercício
Identificar no grafo abaixo os vértices isolados,
terminais, impares, pares e a seqüência de graus do
grafo :

Reflexão
O que podemos concluir sobre a soma dos graus de
um grafo?
Adolfo Duran - 2005 Teoria dos Grafos 31
Soma dos graus de um grafo:
O resultado é sempre par, e corresponde à formula
abaixo:

A prova é inspirada no Lema do Aperto de Mãos que diz:

Se várias pessoas se apertam a mão o número total de


mãos apertadas tem que ser par. Precisamente porque
duas mãos estão envolvidas em cada aperto.

Adolfo Duran - 2005 Teoria dos Grafos 32


Soma dos graus de um grafo:

Em grafos, cada aresta contribui duas unidades para o


cômputo geral do grau dos vértices, pois cada aresta
possui dois extremos. Portanto, a soma total é par e duas
vezes o número de arestas do grafo.

Se o grafo for regular de grau r, a soma dos graus dos


vértices também é igual a r vezes o número de vértices.

Adolfo Duran - 2005 Teoria dos Grafos 33


A soma dos graus de um grafo é sempre par:

Quando o grafo é regular de grau r, temos:

Adolfo Duran - 2005 Teoria dos Grafos 34


Corolário

Em qualquer grafo, o no de vértices com grau ímpar deve


ser PAR

Prova

Para a soma ser par, o primeiro somatório tem que gerar


um resultado par, portanto |Vímpar| é par.

Adolfo Duran - 2005 Teoria dos Grafos 35


Teorema da Amizade I

Em toda cidade, com pelo menos dois habitantes,


residem duas pessoas com o mesmo número de
amigos na cidade.

Exercício

Modele o teorema acima usando grafos e prove-o


.
Adolfo Duran - 2005 Teoria dos Grafos 36
Modelando o problema

V = pessoas.
E = relação de amizade.
Não existe a necessidade de laços nem de
arestas multiplas, então o grafo é simples.

O enunciado do teorema pode ser representado


pela seguinte afirmação:
Se G(V,E) simples, com |V| ≥ 2, implica que
existem x e y distintos pertencentes a V, tal que
grau(x) = grau(y).
Adolfo Duran - 2005 Teoria dos Grafos 37
Demonstração
Se G é simples, então, 0 ≤ grau(v) ≤ n - 1, onde n=|V|.

Além disso, se existe v, tal que grau(v)= 0, então não


existe v, tal que grau(v) = n-1.

Por outro lado, se existe v, tal que grau(v)= n - 1, então


não existe v, tal que grau(v) = 0.
Suponha que não existe vértice v onde grau(v)= 0.

Então o grau de qualquer vértice do grafo terá um dos


valores do conjunto {1, ... , n-1}.

Adolfo Duran - 2005 Teoria dos Grafos 38


Demonstração (cont.)

Ou seja, existem n-1 valores para o grau de n vértices,


logo existem vértices v e w distintos onde grau(v) =
grau(w).

Analogamente, suponha que não existe vértice v onde


grau(v)= n-1. Então o grau de qualquer vértice do grafo
terá um dos valores do conjunto {0, ... , n-2}.

Ou seja, existem n-1 valores para o grau de n vértices,


logo existem vértices v e w distintos onde grau(v) =
grau(w).

Adolfo Duran - 2005 Teoria dos Grafos 39


Demonstração por contradição

Suponha que não existam vértices x e y, tais que grau(x)


= grau(y), ou seja, para todo x e y pertencentes a V,
grau(x) é diferente de grau(y).

Então, para vértices distintos temos:


grau(v1) = 0, grau(v2) = 1, grau(v3) = 2, ...., grau(vn) = n -
1

O que representa uma contradição.

Adolfo Duran - 2005 Teoria dos Grafos 40


Outros tipos de grafos
Grafo Nulo (vazio)

Grafo cujo número de arestas é zero. Ou, grafo regular


de grau zero.

Nn é um grafo nulo com n vértices

1
Exemplo: N4 3

V={1,2,3,4}; E={ }. 2
4
Adolfo Duran - 2005 Teoria dos Grafos 41
Grafo Completo

Grafo simples em que quaisquer vértices distintos dois


a dois são adjacentes. Ou, grafo regular de grau n-1,
onde n=|V|.

Kn é um grafo completo com n vértices.

Exemplo: K4

Adolfo Duran - 2005 Teoria dos Grafos 42


Quantas arestas tem o Kn?

Veja que |E| = ( r * |v| ) / 2, onde r é o grau e v o número de


vértices.

Logo |E| = (( n - 1 ) n ) / 2

Podemos provar também com análise combinatória. O


número de arestas é igual ao número de combinações de
n vértices dois a dois.

Cn,m = n! / ( m! (n – m)! )

Adolfo Duran - 2005 Teoria dos Grafos 43


Complemento de um grafo

Seja G um grafo simples com um conjunto de vértices


V.
G é complemento de G se

V=V
e
dois vértices são adjacentes em G, se e
somente se, não o são em G

Adolfo Duran - 2005 Teoria dos Grafos 44


Complemento de um grafo

Adolfo Duran - 2005 Teoria dos Grafos 45


Complemento de um grafo
Propriedade 1
Um grafo regular tem complemento regular

Propriedade 2
O complemento de Kn é Nn

Exercício:

Dê exemplos que confirmem as propriedades


acima
Adolfo Duran - 2005 Teoria dos Grafos 46
Grafo Bipartido
Um grafo é dito ser bipartido quando seu conjunto
de vértices V puder ser particionado em dois
subconjuntos V1 e V2, tais que toda aresta de G une
um vértice de V1 a outro de V2.

1 5 V1
3

2 6 V2
4
Adolfo Duran - 2005 Teoria dos Grafos 47
Grafo Bipartido
Sejam os conjuntos H={h | h é um homem} e M={m |
m é um mulher} e o grafo G(V,A) onde:

V=HUM
A = {(v,w) | (v ∈ H e w ∈ M) ou (v ∈ M e w ∈ H) e <v
foi namorado de w>}

Adolfo Duran - 2005 Teoria dos Grafos 48


Grafo Bipartido Completo
É um grafo bipartido em V1 e V2, sendo que cada
elemento de V1 é adjacente a cada elemento de V2.

V1

V2

K3,3
Adolfo Duran - 2005 Teoria dos Grafos 49
Subgrafo
Um grafo Gs(Vs, As) é dito ser subgrafo de um grafo
G(V,A) quando Vs ⊂ V e As ⊂ A. O grafo G2, por
exemplo, é subgrafo de G1

G1 G2

Adolfo Duran - 2005 Teoria dos Grafos 50


Subgrafo Próprio

Um subgrafo G2 é dito próprio, quando G2 é


subgrafo distinto de G1

Subgrafos podem ser obtidos através da


remoção de arestas e vértices.

Adolfo Duran - 2005 Teoria dos Grafos 51


Subgrafo Induzido
Se G2 é um subgrafo de G1 e possui toda a aresta (v, w)
de G1 tal que ambos, v e w, estejam em V2, então G2 é o
subgrafo induzido pelo subconjunto de vértices V2.
3 2 3 2

G1 G2 1
1

4 5 4

V1= {1,2,3,4,5} V2= {1,2,3,4}

V2 induz G2
Adolfo Duran - 2005 Teoria dos Grafos 52
Clique
Denomina-se clique de um grafo G a um subgrafo
(induzido) de G que seja completo

Adolfo Duran - 2005 Teoria dos Grafos 53


Conjunto Independente de Vértices (C. I. V.)
Chama-se C.I.V. a um conjunto induzido de G que seja
um grafo nulo

O tamanho de um clique ou de um C.I.V. é igual à


cardinalidade de seu conjunto de vértices.

Adolfo Duran - 2005 Teoria dos Grafos 54


Grafo Rotulado
Um grafo G(V,A) é dito ser rotulado em vértices (ou
arestas) quando a cada vértice (ou aresta) estiver
associado um rótulo

Adolfo Duran - 2005 Teoria dos Grafos 55


Grafo Valorado
Um grafo G(V,A) é dito ser valorado quando existe
uma ou mais funções relacionando V e/ou A com
um conjunto de números.

V = {v | v é uma cidade com aeroporto}


A = {(v,w,t) | <há linha aérea ligando v a w, sendo t o
tempo esperado de vôo>}
Adolfo Duran - 2005 Teoria dos Grafos 56
Isomorfismo de Grafos

Dois grafos G1 e G2 são isomorfos se existe uma


correspondência um a um entre os vértices de G1 e
G2, com a propriedade de que o número de arestas
unindo os vértices em G1 é igual ao número de
arestas unindo os vértices correspondentes em G2.

Adolfo Duran - 2005 Teoria dos Grafos 57


Isomorfismo de Grafos (em outras palavras)
Sejam dois grafos G1(V1,A1) e G2(V2,A2). Um
isomorfismo de G1 sobre G2 é um mapeamento
bijetivo f: V1 → V2 tal que {x,y} ∈ A1 se e somente se
{f(x),f(y)}∈ A2, para todo x,y ∈ V1.

Função:
{ (a→2), (b → 1), (c → 3), (d → 4), (e → 6), (f → 5) }
Adolfo Duran - 2005 Teoria dos Grafos 58
Isomorfismo de Grafos (exemplo)

u v w

x y z

f(u) = azul, f(v) = lilás, f(w) = vermelho,


f(x) = verde, f(y) = amarelo, f(z) = rosa
Adolfo Duran - 2005 Teoria dos Grafos 59
Isomorfismo de Grafos
Preserva:

•Simetria: G1 ≈ G2 ↔ G2 ≈ G1
•Reflexividade: G1 ≈ G1
•Transitividade: G1 ≈ G2 e G2 ≈ G3 ↔ G1 ≈ G3

Proposições válidas se G1 ≈ G2

•G1 e G2 têm o mesmo número de vértices


•G1 e G2 têm o mesmo número de arestas
•G1 e G2 têm a mesma sequência de graus
Adolfo Duran - 2005 Teoria dos Grafos 60
Grafos Orientados ou Dígrafos

Um dígrafo D(V,A) é um conjunto finito não vazio V de


vértices, e um conjunto A de pares ordenados de
elementos de V. Chamamos o conjunto A de arcos

Digrafo Simples

É um digrafo que não possui laços e os arcos são todos


distintos
Adolfo Duran - 2005 Teoria dos Grafos 61
Mais sobre dígrafos
• Conjunto finito não vazio de vértices
• Conjunto finito não vazio de arestas
– Arestas são chamadas de arcos
– Um arco (v,w) passa a ser vw

a d
D = (V,A)

V = {a,b,c,d)
A = {ac,ba,bc,cb,cd,cd)
b c

Adolfo Duran - 2005 Teoria dos Grafos 62


• Dígrafos Simples
– Todos os arcos são distintos
– Não existem auto-laços
• Para obter o grafo correspondente a um dígrafo
– Eliminar as direções dos arcos
– Não necessariamente um grafo correspondente a
um dígrafo simples é um grafo simples
Apresente um exemplo de um dígrafo
simples que quando transformado
em grafo, não é simples

Adolfo Duran - 2005 Teoria dos Grafos 63


• Os vértices de um dígrafo possuem:
– Grau de entrada: número de arcos que chegam no vértice
(grauent(v))
– Grau de saída: número de arcos que partem do vértice
(grausai(v))
• Da mesma forma:
– Sequência de graus de entrada
– Sequência de graus de saída

Proposição

Σ grauent(vi) = Σ grausai(vi) = | A |

Adolfo Duran - 2005 Teoria dos Grafos 64


• Os dígrafos são isomórficos se:
– Existe um isomorfismo entre os respectivos grafos
correspondentes
– Preserva a ordem dos vértices em cada arco

Os grafos abaixo não são isomorfos


a d
a d

b c
b c
Adolfo Duran - 2005 Teoria dos Grafos 65
Operações com grafos
União
– Considere 2 grafos G1(V1,E1) e G2(V2,E2) onde V1 e V2
são conjuntos distintos
– A união G1 ∪ G2 é formada pelo grafo com conjunto de
vértices V1 ∪ V2 e conjunto de arestas E1 ∪ E2

Exemplo

G: V1={1,2} e E1={(1,2)}
H: V2={3,4} e E2={ }
G ∪ H: V={1,2,3,4} e E={(1,2)}

Adolfo Duran - 2005 Teoria dos Grafos 66


Soma
– Considere 2 grafos G1(V1,E1) e G2(V2,E2) onde V1 e V2
são conjuntos distintos
– A soma G1 + G2 é formada por G1 ∪ G2 e de arestas
ligando cada vértice de G1 a cada vértice de G2.

Exemplo

G: V1 = {1,2} e E1 = {(1,2)}
H: V2 = {3,4} e E2 = { }
G + H: V={1,2,3,4} e E={(1,2),(1,3),(1,4),(2,3),(2,4)}

Adolfo Duran - 2005 Teoria dos Grafos 67


Exemplo
1 2 3 4
G H

G∪H G+H

1 2
1 2

3 4 3 4

Adolfo Duran - 2005 Teoria dos Grafos 68


União e Soma

– Podem ser aplicadas a qualquer número finito de grafos

– São operações associativas

– São operações comutativas

Adolfo Duran - 2005 Teoria dos Grafos 69


Remoção de Aresta

– Se e é uma aresta de um grafo G, denota-se G-e o grafo


obtido de G pela remoção da aresta e

– Genericamente, se F é um conjunto de arestas em G,


denota-se G-F ao grafo obtido pela remoção das arestas
em F.

Adolfo Duran - 2005 Teoria dos Grafos 70


Remoção de Vértice

– Se v é um vértice de um grafo G denota-se por G-v o


grafo obtido de G pela remoção do vértice v
conjuntamente com as arestas incidentes a v.

– Genericamente denota-se G-S ao grafo obtido pela


remoção dos vértices em S, sendo S um conjunto
qualquer de vértices de G.

Adolfo Duran - 2005 Teoria dos Grafos 71


Contração de aresta

– Denota-se por G/e o grafo obtido pela contração da aresta


e.
– Isto significa remover e de G e unir suas duas
extremidades v,w de tal forma que o vértice resultante
seja incidente às arestas originalmente incidentes a v e w.

Adolfo Duran - 2005 Teoria dos Grafos 72


Representação de grafos

Embora seja conveniente a


representação de grafos através de
diagramas de pontos ligados por
linhas, tal representação é
inadequada se desejamos armazenar
grandes grafos em um computador

Adolfo Duran - 2005 Teoria dos Grafos 73


Uma maneira simples de armazenar grafos, é
listando os vértices adjacentes a cada vértice do
grafo
u

u: v,y
y v v: u,y,w
w: v,x,y
x: w,y
y: u,v,w,x
x w

Adolfo Duran - 2005 Teoria dos Grafos 74


Matriz de adjacência

Se G é um grafo com vértices {1,2,3,...,n}, sua matriz


de adjacência é a matriz n X n cujo elemento ij é o
número de arestas ligando o vértice i ao vértice j

Adolfo Duran - 2005 Teoria dos Grafos 75


Matriz de incidência

Se G é um grafo com vértices {1,2,3,...,n} e arestas


{1,2,3,...,m}, sua matriz de incidência é a matriz n X m
cujo elemento ij é o número de vezes em que o vértice
i é incidente à aresta j.

Adolfo Duran - 2005 Teoria dos Grafos 76


Conectividade
Grafo Conexo
– Um grafo G(V,A) é dito ser conexo se ele não
pode ser expresso como a união de dois grafos.

G1 G2

Adolfo Duran - 2005 Teoria dos Grafos 77


• Grafo desconexo

– Um grafo G(V,A) é dito ser desconexo se ele pode


ser expresso pela união de dois outros grafos.

Adolfo Duran - 2005 Teoria dos Grafos 78


• Componente conexa

– Um grafo G(V,A) desconexo é formado por pelo menos


dois subgrafos conexos, disjuntos em relação aos vértices
– Cada um destes subgrafos conexos é dito ser uma
componente conexa de G.

Adolfo Duran - 2005 Teoria dos Grafos 79


Vértice de corte
Um vértice é dito ser um vértice de corte se
sua remoção (juntamente com as arestas a
ele conectadas) provoca uma redução na
conectividade do grafo.

X2 é um vértice de corte
Adolfo Duran - 2005 Teoria dos Grafos 80
Ponte
Uma aresta é dita ser uma ponte se sua
remoção provoca uma redução na
conectividade do grafo.

(X1,X4) é uma ponte


Adolfo Duran - 2005 Teoria dos Grafos 81
Outros tipos de grafos
Grafo cíclico (ou grafo circuito)
Um grafo conectado que é regular de grau 2 é
um grafo cíclico (= ciclo)

Cn é um grafo cíclico com n vértices

C6

Adolfo Duran - 2005 Teoria dos Grafos 82


Grafo caminho
O grafo obtido a partir de Cn através da
remoção de um aresta é o grafo caminho em
n vértices, Pn

C5 P5

Adolfo Duran - 2005 Teoria dos Grafos 83


Grafo roda
O grafo obtido a partir de Cn-1 através da
ligação de cada vértice a um novo vértice v é
um grafo roda em n vértices, Wn

Corresponde à soma de N1 com Cn-1

C5 W6
Adolfo Duran - 2005 Teoria dos Grafos 84
Grafos cúbicos
São grafos regulares de grau 3

O primeiro deles é conhecido como


Grafo de Petersen
Adolfo Duran - 2005 Teoria dos Grafos 85
Cadeias, caminhos, ciclos...
• Cadeia (= passeio)
– Uma cadeia (walk) é uma seqüência qualquer de
arestas adjacentes que ligam dois vértices.
– O conceito de cadeia vale também para grafos
orientados, bastando que se ignore o sentido da
orientação dos arcos.
A seqüência de
vértices (x6, x5, x4, x1)
é um exemplo de
cadeia
Adolfo Duran - 2005 Teoria dos Grafos 86
Cadeia elementar (= caminho = path)
Uma cadeia é dita ser elementar se não passa duas
vezes pelo mesmo vértice

1 2 1 2

3 4 3 4

Cadeia de tamanho 2 Cadeia de tamanho 3


1→2→4 3→1→4→2

Adolfo Duran - 2005 Teoria dos Grafos 87


Cadeia simples (= trilha = trail)
Uma cadeia é dita ser simples se não passa duas
vezes pela mesma aresta (arco).

1 2 1 2

3 4 3 4

Cadeia de tamanho 4 Cadeia de tamanho 5


1→2→4→1→3 1→2→4→1→3→2

Adolfo Duran - 2005 Teoria dos Grafos 88


• Caminho
– Um caminho é uma cadeia na qual todos os arcos
possuem a mesma orientação. Aplica-se, portanto,
somente a grafos orientados

A seqüência de vértices
(x1, x2, x5, x6, x3)
é um exemplo de
caminho

Adolfo Duran - 2005 Teoria dos Grafos 89


• Ciclo
– Um ciclo é uma cadeia simples e fechada (o vértice
inicial é o mesmo que o vértice final).

A seqüência de vértices
(x1, x2, x3, x6, x5, x4, x1)
é um exemplo de ciclo

Adolfo Duran - 2005 Teoria dos Grafos 90


Exemplos de ciclos

1 2 1 2

3 4 3 4

Ciclo de tamanho 3 Ciclo de tamanho 3


1→2→4→1 1→2→3→1

Adolfo Duran - 2005 Teoria dos Grafos 91


• Circuito

– Um circuito é um caminho simples e fechado. Aplica-


se, portanto, somente a grafos orientados

A seqüência de vértices
(x1, x2, x5, x4, x1)
é um exemplo de
circuito

Adolfo Duran - 2005 Teoria dos Grafos 92


• Grafo fortemente conexo
– No caso de grafos orientados, um grafo é dito ser
fortemente conexo (f-conexo) se todo par de vértices está
ligado por pelo menos um caminho em cada sentido
– ou seja, se cada par de vértices participa de um circuito.
– Isto significa que cada vértice pode ser alcançável
partindo-se de qualquer outro vértice do grafo.

Adolfo Duran - 2005 Teoria dos Grafos 93


• Componente fortemente conexa
Um grafo G(V,A) que não é fortemente conexo é
formado por pelo menos dois subgrafos fortemente
conexos, disjuntos em relação aos vértices

Cada um destes
subgrafos é dito ser
uma componente
fortemente conexa de
G

Adolfo Duran - 2005 Teoria dos Grafos 94


Grafos Eulerianos
Um grafo conectado G(V,A) é dito ser
euleriano se existe um ciclo que contém todas
as arestas de G.
cadeia simples fechada –
que não passa 2 vezes
pela mesma aresta e
termina no mesmo
vértice

Adolfo Duran - 2005 Teoria dos Grafos 95


Grafo semi-euleriano
Um grafo conectado, não-euleriano G é semi-
euleriano se existe uma cadeia simples
contento todas as arestas de G

Adolfo Duran - 2005 Teoria dos Grafos 96


Teorema (Euler 1736)
Um grafo conectado G é euleriano se e somente se
o grau de cada vértice de G é par

Prova:

Ida: Seja G um grafo euleriano. Logo ele contém um ciclo


euleriano. Por cada ocorrência de vértice desse ciclo,
existe uma aresta que chega nesse vértice e outra que sai
desse vértice. Como toda aresta faz parte do ciclo, isto é,
nenhuma aresta fica fora do ciclo, necessariamente o
número de arestas por cada vértice é par.

Adolfo Duran - 2005 Teoria dos Grafos 97


Volta: Suponhamos que todos os vértices possuem
grau par. Seja vi um vértice do grafo. Tentemos, a partir
de vi, construir uma cadeia que não passa duas vezes
pela mesma aresta, e até que não seja possível
continuar. Como todos os vértices possuem um grau
par, sempre será possível entrar e sair de um vértice. A
única exceção é o vértice vi onde a cadeia vai terminar.
Se essa cadeia, que chamaremos C1, contém todas as
arestas de G, temos um ciclo euleriano. Senão,
retiramos de G todas as arestas que fazem parte de C1.
No grafo resultante G', todos os vértices também
possuem grau par e necessariamente um deles faz
parte de C1, senão o grafo não seria conexo.
Adolfo Duran - 2005 Teoria dos Grafos 98
Volta (cont.): Recomeçamos o mesmo processo com o
grafo G', partindo de um vértice comum com C1,
obtendo assim um novo ciclo C2. A figura abaixo
mostra que dois ciclos que têm um vértice em comum
podem formar um ciclo único: chegando no vértice
comum em um dos dois ciclos, continuamos o percurso
no outro ciclo. Continuando esse processo,
necessariamente obteremos um ciclo único que contém
todas as arestas de G.

Adolfo Duran - 2005 Teoria dos Grafos 99


Algoritmo de Hierholzer
Algoritmo para a construção de um ciclo euleriano
sugerido a partir da prova do teorema de Euler
Comece em qualquer vértice u e percorra aleatoriamente
as arestas ainda não visitadas a cada vértice visitado até
fechar um ciclo

Se sobrarem arestas não visitadas, recomece a partir de


um vértice do ciclo já formado

Se não existem mais arestas não visitadas, construa o


ciclo euleriano a partir dos ciclos formados, unindo-os a
partir de um vértice comum
Adolfo Duran - 2005 Teoria dos Grafos 100
Algoritmo de Hierholzer
Algoritmo para a construção de um ciclo euleriano
sugerido a partir da prova do teorema de Euler

Adolfo Duran - 2005 Teoria dos Grafos 101


• As pontes de Königsberg

É possível sair de uma das ilhas, passar uma


única vez por cada uma das pontes e retornar ao
ponto de origem ?
Adolfo Duran - 2005 Teoria dos Grafos 102
• As pontes de Königsberg

Como nem todos os vértices têm grau par, o grafo


não é euleriano. Logo, é impossível atravessar
todas as pontes uma só vez e voltar ao lugar de
partida
Adolfo Duran - 2005 Teoria dos Grafos 103
Corolário I
Um grafo conectado G é euleriano se e somente se
ele pode ser decomposto em ciclos

Corolário II
Um grafo conectado G é semi-euleriano se e
somente se ele possui exatamente 2 vértices de
grau ímpar

Adolfo Duran - 2005 Teoria dos Grafos 104


Algoritmo de Fleury
Algoritmo para a construção de um ciclo euleriano
em um grafo euleriano
Comece em qualquer vértice u e percorra as
arestas de forma aleatória, seguindo sempre as
seguintes regras:

I – apague as arestas depois de passar por elas


II – se aparecer algum vértice isolado, apague-o
também
III – passe por uma ponte somente se não houver
outra alternativa
Adolfo Duran - 2005 Teoria dos Grafos 105
Algoritmo de Fleury
Algoritmo para a construção de um ciclo euleriano
em um grafo euleriano

Adolfo Duran - 2005 Teoria dos Grafos 106


Grafos Hamiltonianos
Um grafo G(V,A) é dito ser hamiltoniano se
existe um ciclo que passa exatamente uma vez
em cada um dos vértices de G

hamiltoniano não hamiltoniano


Adolfo Duran - 2005 Teoria dos Grafos 107
Grafo semi_hamiltoniano

Um grafo G(V,A) é dito ser semi-hamiltoniano se não


é hamiltoniano e existe uma cadeia que passa
exatamente uma vez em cada um dos vértices de G

Hamiltoniano Semi- não


hamiltoniano hamiltoniano
Adolfo Duran - 2005 Teoria dos Grafos 108
Grafo hamiltoniano

Não existe uma caracterização para identificar grafos


hamiltonianos como existe para os eulerianos

A busca de tal caracterização é um dos maiores


problemas ainda não solucionados da teoria dos
grafos

Adolfo Duran - 2005 Teoria dos Grafos 109


Grafo hamiltoniano

Muito pouco é conhecido dos grafos hamiltonianos

A maioria dos teoremas existentes são da forma: “Se


G possui arestas suficientes, então G é hamiltoniano”

Adolfo Duran - 2005 Teoria dos Grafos 110


Ciclo hamiltoniano em grafos completos

Todo grafo completo, que contém mais


de 2 vértices é hamiltoniano
Seja v1,v2,...,vn os vértices de G. Como
existe uma aresta entre qualquer par de
vértices, é possivel, a partir de v1 percorrer
essa sequência até vn e voltar para v1

Adolfo Duran - 2005 Teoria dos Grafos 111


Teorema (Dirac 1952)
Uma condição suficiente, mas não necessária,
para que um grafo simples G com n (>2) vértices
seja hamiltoniano é que o grau de todo vértice de g
seja ≥ n/2

O grafo abaixo, é hamiltoniano mas não respeita a


condição do teorema de Dirac

Adolfo Duran - 2005 Teoria dos Grafos 112


Teorema (Ore 1960)
Uma condição suficiente, mas não necessária, para
que um grafo simples G com n (>2) vértices seja
hamiltoniano é que a soma dos graus de cada par
de vértices não adjacentes seja no mínimo n

Permite identificar mais grafos hamiltonianos que o


anterior, mas demora muito para efetuar os cálculos. Uma
busca por tentativa e erro pode ser mais eficiente em
alguns casos

Adolfo Duran - 2005 Teoria dos Grafos 113


O adjetivo "hamiltoniano" deve-se ao matemático
irlandês Sir William Rowan Hamilton (1805-1865).
Diz-se que ele inventou um jogo que envolve um
dodecaedro (sólido regular com 20 vértices, 30
arestas e 12 faces).
Hamilton rotulou cada vértice do dodecaedro com o
nome de uma cidade conhecida.
O objetivo do jogo era que o jogador viajasse "ao
redor do mundo" ao determinar uma viagem circular
que incluísse todas as cidades exatamente uma vez,
com a restrição de que só fosse possível viajar de
uma cidade a outra se existisse uma aresta entre os
vértices correspondentes.
Adolfo Duran - 2005 Teoria dos Grafos 114
A figura abaixo mostra um grafo que
representa este problema, ou seja os vértices
e arestas de um dodecaedro.

Adolfo Duran - 2005 Teoria dos Grafos 115


Alguns Problemas
Como explorar um grafo

Como obter um processo sistemático para caminhar


pelos vértices e arestas de um grafo?

Como caminhar no grafo de modo a visitar todos os


vértices e arestas evitando repetições
desnecessárias de visitas a um mesmo vértice ou
aresta?

Que recursos adicionais são necessários?

Adolfo Duran - 2005 Teoria dos Grafos 116


Como explorar um grafo
Necessidade de ‘’marcar’’ quando um vértice e uma
aresta já foram visitados ou não

Algoritmo Geral
Busca Geral G(V,E)
1. Escolher e marcar um vértice inicial;
2. Enquanto existir algum vértice v marcado e incidente a
uma aresta (v,w), não explorada, efetuar:
a) escolher o vértice v;
b) explorar a aresta (v,w). Se w não é marcado então
marcar w.

Adolfo Duran - 2005 Teoria dos Grafos 117


O problema do Caminho mais curto

Um motorista deseja encontrar o caminho, mais curto


possível, entre duas cidades do Brasil

Caso ele receba um mapa das estradas de rodagem do


Brasil, no qual a distância entre cada par adjacente de
cidades está exposta, como poderíamos determinar uma
rota mais curta entre as cidades desejadas?

Uma maneira possível é enumerar todas as rotas


possíveis que levam de uma cidade à outra, e então
selecionar a menor.

Adolfo Duran - 2005 Teoria dos Grafos 118


O problema do menor caminho consiste em
determinar um menor caminho entre um vértice
de origem s ∈ V e todos os vértices v de V.

Variantes do problema

♦ Menor caminho com destino único: encontrar um


caminho mais curto para um vértice destino v
− Menor caminho para um par: encontrar um
caminho mais curto para um determinado par de
vértices u e v
− Menor caminho para todos os pares: encontrar um
caminho mais curto de u para v, para todos e quaisquer
pares u e v
Adolfo Duran - 2005 Teoria dos Grafos 119
O problema do Caminho mais curto
Uma maneira mais eficiente:
Percorra o grafo, partindo do vértice de origem s,
associando a cada vértice um número l(v) indicando a
menor distância entre s e v.
Isso significa que quando chegamos ao vértice v, na
figura abaixo, l(v) será min ( l(u)+6 , l(x)+4 )
u v
6
3
s 2 1 4 2 7
5 3

x 6 y
Adolfo Duran - 2005 Teoria dos Grafos 120
Calculando os pesos:

u v
3 6 9
3
s 4
0 2 1 2 7
3
5
5 11
6
x y

Adolfo Duran - 2005 Teoria dos Grafos 121


Como obter um caminho mínimo partindo de s para y?

u v
3 6 9
3
s 4
0 2 1 2 7
3
5
5 11
6
x y

Adolfo Duran - 2005 Teoria dos Grafos 122


Outra possibilidade:

u v
3 6 9
3
s 4
0 2 1 2 7
3
5
5 11
6
x y

Adolfo Duran - 2005 Teoria dos Grafos 123


O algoritmo de Dijkstra

O algoritmo de Dijkstra identifica, a partir de um vértice


do grafo, qual é o custo mínimo entre esse vértice e
todos os outros do grafo.
No início, o conjunto S contém somente esse vértice,
chamado origem. A cada passo, selecionamos no
conjunto de vértices sobrando, o que é o mais perto da
origem.
Depois atualizamos, para cada vértice sobrando, a sua
distância em relação à origem. Se passando pelo novo
vértice acrescentado, a distância fica menor, é essa
nova distância que será memorizada

Adolfo Duran - 2005 Teoria dos Grafos 124


O algoritmo de Dijkstra

Suponhamos que o grafo é representado por uma matriz


de adjacência onde temos o valor ∞ se não existe aresta
entre dois vértices.

Suponhamos também que os vértices do grafo são


enumerados de 1 até n, isto é, o conjunto de vértices é N
= {1, 2, ..., n}.

Utilizaremos também um vetor D[2..n] que conterá a


distância que separa todo vértice do vértice 1 (o vértice
do grafo que é o vértice 1 é escolhido arbitrariamente).

Adolfo Duran - 2005 Teoria dos Grafos 125


O algoritmo de Dijkstra

função Dijkstra(L = [1..n, 1..n]: grafo): vetor[2..n]


C := {2,3,...,n} {Implicitamente S = N - C}

Para i := 2 até n:
D[i] := L[1,i]
Repetir n-2 vezes:
v := Elemento de C que minimiza D[v]
C := C - {v}
Para cada elemento w de C:
D[w] := min(D[w],D[v]+ L[v,w])
Retornar D

Adolfo Duran - 2005 Teoria dos Grafos 126


Exemplo

Passo v C D
Início - {2,3,4,5} [50,30,100,10]
1 5 {2,3,4} [50,30,20,10]
2 4 {2,3} [40,30,20,10]
3 3 {2} [35,30,20,10]
Adolfo Duran - 2005 Teoria dos Grafos 127
O algoritmo de Dijkstra
Da maneira descrita, obtemos o custo do caminho
mínimo para qualquer vértices, mas não obtemos o
caminho mínimo.

Para identificar esse caminho mínimo, é só acrescentar


mais um vetor P[2..n], onde P[v] indica o vértice que
precede v no caminho mais curto.

Para isso, primeiro devemos inicializar esse vetor.

Segundo, no mesmo momento que o vetor D é


atualizado, atualizamos também o vetor P.

Adolfo Duran - 2005 Teoria dos Grafos 128


O algoritmo de Dijkstra para o caminho mínimo
função Dijkstra(L = [1..n, 1..n]: grafo): vetor[2..n]
C := {2,3,...,n}
Para i := 2 até n:
D[i] := L[1,i]
P[i] := 1
Repetir n-2 vezes:
v := Elemento de C que minimiza D[v]
C := C - {v}
Para cada elemento w de C:
Se D[w] > D[v]+ L[v,w] então
D[w] := D[v]+ L[v,w]
P[w] := v
Retornar P Teoria dos Grafos
Adolfo Duran - 2005 129
Exemplo

Passo v C D P
Início - {2,3,4,5} [50,30,100,10] [1,1,1,1]
1 5 {2,3,4} [50,30,20,10] [1,1,5,1]
2 4 {2,3} [40,30,20,10] [4,1,5,1]
3 3 {2} [35,30,20,10] [3,1,5,1]
Adolfo Duran - 2005 Teoria dos Grafos 130
O algoritmo de Dijkstra para o caminho mínimo

Vemos que o estado final do vetor P é [3,1,5,1].


Para saber qual é o caminho mais curto entre os
vértices 1 e 2, procuramos o valor na posição 2
desse vetor (não esqueça que P e D são indexados a
partir de 2).
O vetor indica que o último vértice antes do vértice 2
é o vértice 3.
Repetimos de novo o mesmo processo para ver o
caminho mais curto entre 1 e 3. No vetor, na posição
3, temos o valor 1, que é a origem.
Então, o caminho mais curto é 1,3,2.
Adolfo Duran - 2005 Teoria dos Grafos 131
O problema do carteiro chinês

Problema discutido pelo matemático chinês Mei-Ku Kuan

Um carteiro deseja entregar suas cartas, percorrendo a


menor distância possível e retornando ao ponto de
partida

Ele deve passar por cada estrada pelo menos uma vez,
mas deve evitar passar por muitas estradas mais de uma
vez.

Adolfo Duran - 2005 Teoria dos Grafos 132


O problema do carteiro chinês

O problema pode ser reformulado em termos de um


grafo valorado onde o grafo corresponde à rede de
estradas e o valor de cada aresta corresponde ao
comprimento da estrada.

Assim, devemos buscar uma cadeia fechada de


tamanho mínimo que inclua cada aresta do grafo pelo
menos uma vez.

Se o grafo for euleriano??

Adolfo Duran - 2005 Teoria dos Grafos 133


O problema do carteiro chinês
Se o grafo for euleriano, basta buscar um ciclo euleriano
(algoritmo de Fleury)
Se o grafo não é euleriano?
Para ilustrar a solução, vamos considerar um grupo
especial de grafos, onde exatamente 2 arestas têm grau
ímpar B C
5
3 5

A 8 14 10 D

4 9

6
F E
Adolfo Duran - 2005 Teoria dos Grafos 134
O problema do carteiro chinês
Já que os vértices B e E são os únicos que têm grau
ímpar, podemos encontrar uma cadeia semi-euleriana de
B até E passando por cada aresta exatamente uma vez
A fim de retornar ao ponto de partida, cobrindo a menor
distância possível, é só encontrar o menor caminho de E
até B (E→F →A →B)
B C
5
3 5

A 8 14 10 D

4 9

6
F E
Adolfo Duran - 2005 Teoria dos Grafos 135
O problema do carteiro chinês
A solução do problema é dada combinando o menor
caminho com a cadeia semi-euleriana
Note que, fazendo essa combinação, obtemos um grafo
euleriano

B C
5
3 5

A 8 14 10 D
4 9
6
F E

Adolfo Duran - 2005 Teoria dos Grafos 136


O problema do caxeiro viajante

Um caxeiro viajante deseja visitar um dado grupo de


cidades e retornar ao ponto de partida, percorrendo a
menor distância possível

Esse problema pode ser formulado em termos de grafos


valorados

O objetivo é encontrar um ciclo hamiltoniano com o


menor peso possível em um grafo valorado completo

Adolfo Duran - 2005 Teoria dos Grafos 137


O problema do caxeiro viajante

Um algoritmo possível é calcular a distância de todos os


possíveis ciclos hamiltonianos e escolher o menor
A

2 6 No grafo ao lado, a
6 menor rota seria
B E
8 4 A→B →D →E →C →A
7 8 5
totalizando uma
3
distância de 26

9
C D
Adolfo Duran - 2005 Teoria dos Grafos 138
O problema do caxeiro viajante
Com mais de 5 cidades, a solução anterior passa a ficar
muito complicada...
Por exemplo, com 20 cidades a quantidade de possíveis
ciclos hamiltonianos é (19!)/2, o que dá
aproximadamente 6 x 1016

Não se conhecem algoritmos eficientes para resolver


esse problema

Existem algoritmos eurísticos que dão soluções


aproximadas

Adolfo Duran - 2005 Teoria dos Grafos 139