Vous êtes sur la page 1sur 230

Grafos

Antonio Alfredo Ferreira Loureiro


loureiro@dcc.ufmg.br
http://www.dcc.ufmg.br/~loureiro
UFMG/ICEx/DCC PAA

Grafos 1
Motivao
Suponha que existam seis sistemas computacionais (A, B, C, D, E, e F) inter-
conectados entre si da seguinte forma:
E
A
B
C
D F
Esta informao pode ser representada por este diagrama, chamado de
grafo.
Este diagrama identica unicamente um grafo.
UFMG/ICEx/DCC PAA

Grafos 2
Motivao
Dois objetos especiais:
Vrtices
Arestas
F
E
B
A C
D
Vrtice
Aresta
UFMG/ICEx/DCC PAA

Grafos 3
Denio
Um grafo G consiste de dois conjuntos nitos:
1. Vrtices V (G)
2. Arestas E(G)
Em geral, um grafo G representado como:
G = (V, E)
UFMG/ICEx/DCC PAA

Grafos 4
Terminologia
Cada aresta est associada a um conjunto de um ou dois vrtices, chamados
ns terminais.
Extremidade de uma aresta: vrtice da aresta.
Funo arestaextremidade: associa aresta a vrtices.
Lao (Loop): aresta somente com n terminal.
Arestas paralelas: arestas associadas ao mesmo conjunto de vrtices.
Uma aresta dita conectar seus ns terminais.
Dois vrtices que so conectados por uma aresta so chamados de adja-
centes.
Um vrtice que n terminal de um lao dito ser adjacente a si prprio.
Uma aresta dita ser incidente a cada um de seus ns terminais.
Duas arestas incidentes ao mesmo vrtice so chamadas de adjacentes.
Um vrtice que no possui nenhuma aresta incidente chamado de isolado.
Um grafo com nenhum vrtice chamado de vazio.
UFMG/ICEx/DCC PAA

Grafos 5
Terminologia
v
2
v
5
v
7
v
6
v
1
e
4
v
5
e
2
e
3
e
6
e
4
e
3
v
1
Arestas paralelas Vrtice isolado
Lao
UFMG/ICEx/DCC PAA

Grafos 6
Terminologia
Conjunto de vrtices:
v
1
, v
2
, v
3
, v
4
, v
5
, v
6
.
Conjunto de arestas:
e
1
, e
2
, e
3
, e
4
, e
5
, e
6
, e
7
.
Funo arestavrtice:
Aresta Vrtice
e
1
v
1
, v
2

e
2
v
1
, v
3

e
3
v
1
, v
3

e
4
v
2
, v
3

e
5
v
5
, v
6

e
6
v
5

e
7
v
6

e
3
e 3
v
1
e
4
e
2
v
1
v
4
v
6
v
5
v
6
e
5
e
7
e
2
UFMG/ICEx/DCC PAA

Grafos 7
Terminologia
e
1
, e
2
e e
3
so incidentes a
v
1
.
v
2
e v
3
so adjacentes a v
1
.
e
2
, e
3
e e
4
so adjacentes
a e
1
.
e
6
e e
7
so laos.
e
2
e e
3
so paralelas.
v
5
e v
6
so adjacentes en-
tre si.
v
4
um vrtice isolado.
e
3
e 3
v
1
e
4
e
2
v
1
v
4
v
6
v
5
v
6
e
5
e
7
e
2
UFMG/ICEx/DCC PAA

Grafos 8
Terminologia
Seja um grafo especicado
como:
Conjunto de vrtices:
v
1
, v
2
, v
3
, v
4
.
Conjunto de arestas:
e
1
, e
2
, e
3
, e
4
.
Funo arestavrtice:
Aresta Vrtice
e
1
v
1
, v
3

e
2
v
2
, v
4

e
3
v
2
, v
4

e
4
v
3

Duas possveis representaes deste grafo:


v
4
v
3
e
2
e
3
v
4
e
1
e
1
v
2
v
2
e
3
e
2
v
3
v
4
e
1
v
1
e
4
UFMG/ICEx/DCC PAA

Grafos 9
Terminologia
Considere os dois diagramas abaixo. Rotule os vrtices e as arestas de tal
forma que os dois diagramas representem o mesmo grafo.
UFMG/ICEx/DCC PAA

Grafos 10
Terminologia
Uma possvel identicao de vrtices e
rtulos pode ser:
v
2
v
3
v
4
v
5
v
1
e
4
e
3
e
2
e
5
e
1
v
4
v
2
v
3
v
1
e
5
v
2
e
3
e
4
e
5
e
1
Os dois diagramas so repre-
sentados por:
Conjunto de vrtices:
v
1
, v
2
, v
3
, v
4
, v
5
.
Conjunto de arestas:
e
1
, e
2
, e
3
, e
4
, e
5
.
Funo arestavrtice:
Aresta Vrtice
e
1
v
1
, v
2

e
2
v
2
, v
3

e
3
v
3
, v
4

e
4
v
4
, v
5

e
5
v
5
, v
1

UFMG/ICEx/DCC PAA

Grafos 11
Modelos usando grafos
Grafo Vrtice Aresta
Comunicao Centrais telefnicas, Com-
putadores, Satlites
Cabos, Fibra ptica, Enlaces
de microondas
Circuitos Portas lgicas, registradores,
processadores
Filamentos
Hidrulico Reservatrios, estaes de
bombeamento
Tubulaes
Financeiro Aes, moeda Transaes
Transporte Cidades, Aeroportos Rodovias, Vias areas
Escalonamento Tarefas Restries de precedncia
Arquitetura funcional de
um software
Mdulos Interaes entre os mdulos
Internet Pginas Web Links
Jogos de tabuleiro Posies no tabuleiro Movimentos permitidos
Relaes sociais Pessoas, Atores Amizades, Trabalho conjunto
em lmes
UFMG/ICEx/DCC PAA

Grafos 12
Modelos usando grafos
Circuito eltrico: Leis de Kirchoff
Gustav Kirchoff (1824
1887), fsico alemo. Foi o primeiro a
analisar o comportamento de rvores
matemticas com a investigao de
circuitos eltricos.
i
1
+i
4
= i
2
+i
3
UFMG/ICEx/DCC PAA

Grafos 13
Modelos usando grafos
Estruturas de molculas de hidrocarboneto
Arthur Cayley (1821
1895), matemtico ingls. Logo aps
o trabalho de Kirchoff, Cayley usou
rvores matemticas para enumerar
todos os ismeros para certos hidro-
carbonetos.
H H C
C
H
C C
C
H
C C
C
H
C C
C
H
C
Butano
C H
H
H
H
H
C
C
H C
H
H
C C
H
H
Isobutano
UFMG/ICEx/DCC PAA

Grafos 14
Modelos usando
grafos
Conectividade na
Internet
Este grafo mostra a conectividade
entre roteadores na Internet, re-
sultado do trabalho Internet Map-
ping Project de Hal Burch e Bill
Cheswick.
Atualmente o trabalho est sendo
desenvolvido comercialmente pela
empresa Lumeta (www.lumeta.com).
UFMG/ICEx/DCC PAA

Grafos 15
Modelos usando grafos
Conectividade na Internet
Este trabalho de Stephen
Coast (http://www.fractalus
.com/steve/stuff/ipmap/) est
medindo e mapeando a estru-
tura e desempenho da Internet.
Este um de seus trabalhos
iniciais.
UFMG/ICEx/DCC PAA

Grafos 16
Modelos usando grafos
Conectividade na RNP2
A Rede Nacional de Pesquisa
(RNP) criou a primeira infra-
estrutura de comunicao (back-
bone) no Brasil para interconexo
com a Internet. Atualmente,
este backbone conhecido como
RNP2.
O grafo de conectividade da
RNP2 tem uma estrutura
(topologia) basicamente na
forma de estrela. Note que difer-
entes enlaces de comunicao
(arestas) possuem diferentes
capacidades.
A Internet formada basica-
mente por interconexo de Sis-
temas Autnomos (AS Au-
tonomous System), onde cada
AS um backbone distinto.
UFMG/ICEx/DCC PAA

Grafos 17
Modelos usando grafos
Grafo de derivao sinttica
Noam Chomsky John Backus Peter Naur
Chomsky e outros desenvolveram novas formas de
descrever a sintaxe (estrutura gramatical) de lingua-
gens naturais como ingls. Este trabalho tornou-se
bastante til na construo de compiladores para
linguagens de programao de alto nvel. Neste
estudo, rvores (grafos especiais) so usadas para
mostrar a derivao de sentenas corretas gramati-
calmente a partir de certas regras bsicas.
comum representar estas regras, chamadas de
produo, usando uma notao proposta por Backus
(1959) e modicada por Naur (1960) usada para des-
crever a linguagem de programao Algol. Esta no-
tao chamada de BNF (Backus-Naur Notation).
Notao BNF (subconjunto da
gramtica da lngua inglesa):
sentence) ::= noun phrase)verb phrase)
noun phrase) ::= article)noun) |
article)adjective)noun)
verb phrase) ::= verb)noun phrase)
article) ::= the
adjective) ::= young
noun) ::= man | ball
verb) ::= caught
UFMG/ICEx/DCC PAA

Grafos 18
Modelos usando grafos
Vegetarianos e Canibais (1)
Seja uma regio formada por vegetarianos e canibais.
Inicialmente, dois vegetarianos e dois canibais esto na margem esquerda
(ME) de um rio.
Existe um barco que pode transportar no mximo duas pessoas e sempre
atravessa o rio com pelo menos uma pessoa.
O objetivo achar uma forma de transportar os dois vegetarianos e os dois
canibais para a margem direita (MD) do rio.
Em nenhum momento, o nmero de canibais numa margem do rio pode ser
maior que o nmero de vegetarianos, caso contrrio, . . .
UFMG/ICEx/DCC PAA

Grafos 19
Modelos usando grafos
Vegetarianos e Canibais (2)
Soluo:
Notao para representar cada cenrio possvel.
Modelo para representar a mudana de um cenrio em outro vlido.
Notao: ME/MD
vvccB/ ME: 2v, 2c e o barco (B); MD: .
vc/Bvc ME: 1v, 1c; MD: B, 1v e 1c.
Modelo: grafo
Vrtice: cenrio vlido.
Aresta: transio vlida de um dado cenrio em outro.
UFMG/ICEx/DCC PAA

Grafos 20
Modelos usando grafos
Vegetarianos e Canibais (3)
Uma possvel seqncia vlida de cenrios :
/Bvvcc
vv/Bcc
vvc/Bc
cc/Bvv
vvcB/c
vvccB/
c/Bvvc
ccB/vv
vcB/vc
vc/Bvc
UFMG/ICEx/DCC PAA

Grafos 21
Modelos usando grafos
Visualizando grafos
Graph Drawing: Algorithms for the Vi-
sualization of Graphs. Giuseppe Di
Battista, Peter Eades, Roberto Tamas-
sia, e Ioannis G. Tollis. Prentice Hall
Engineering, Science & Math, 432 pp.,
ISBN 0-13-301615-3.
Para muitas aplicaes importante dese-
nhar grafos com certas restries:
Planares, i.e., no h cruzamento de
arestas
UFMG/ICEx/DCC PAA

Grafos 22
Grafo simples
Denio: Um grafo simples um grafo que no possui laos nem arestas par-
alelas. Num grafo simples, uma aresta com vrtices (ns terminais) u e v
representada por uv.
Exemplo: Quais so os grafos com quatro vrtices u, v, w, x e duas arestas,
sendo que uma delas a aresta uv?
Dado quatro vrtices, existem C(4, 2) = 6 subconjuntos, que denem
arestas diferentes: uv, uw, ux, vw, vx, wx.
Logo, todos os grafos simples de quatro vrtices e duas arestas, sendo uma
delas a uv so:
x
v u
w x
v u
w x
v u
w x
v u
w x
v u
w
UFMG/ICEx/DCC PAA

Grafos 23
Grafo dirigido (1)
Denio: Um grafo dirigido ou digrafo ou direcionado G consiste de dois con-
juntos nitos:
1. Vrtices V (G)
2. Arestas dirigidas E(G), onde cada aresta associada a um par ordenado
de vrtices chamados de ns terminais. Se a aresta e associada ao par
(u, v) de vrtices, diz-se que e a aresta dirigida de u para v.
v
2
v
5
v
7
v
6
v
1
e
5
e
2
e
3
e
8
e
4
e
3
v
4
v
7
e
6
e
1
UFMG/ICEx/DCC PAA

Grafos 24
Grafo dirigido (2)
Para cada grafo dirigido, existe um grafo simples (no dirigido) que obtido
removendo as direes das arestas, e os loops.
Grafo dirigido:
v
2
v
5
v
7
v
6
v
3
v
4
v
1
Grafo no dirigido correspondente:
v
2
v
5
v
7
v
6
v
3
v
4
v
1
UFMG/ICEx/DCC PAA

Grafos 25
Grafo dirigido (3)
A verso dirigida de um grafo no dirigido G = (V, E) um grafo dirigido
G
t
= (V
t
, E
t
) onde (u, v) E
t
sse (u, v) E.
Cada aresta no dirigida (u, v) em G substituda por duas arestas dirigidas
(u, v) e (v, u).
Em um grafo dirigido, um vizinho de um vrtice u qualquer vrtice adjacente
a u na verso no dirigida de G.
Grafo no dirigido:
v
2
v
3
v
1
Grafo dirigido correspondente:
v
2
v
3
v
1
UFMG/ICEx/DCC PAA

Grafos 26
Grafo completo (1)
Denio: Um grafo completo de n vrtices, denominado K
n

, um grafo sim-
ples com n vrtices v
1
, v
2
, . . . , v
n
, cujo conjunto de arestas contm exatamente
uma aresta para cada par de vrtices distintos.
Exemplo: Grafos completos com 2, 3, 4, e 5 vrtices.
v v
1
v
2
v
3
v
2
v
3
v
4
v
4
v
3
v
5
v
1
v
2
v
5
K
4
K
3
K
2
K
1
v
2 1

A letra K representa a letra inicial da palavra komplett do alemo, que signica completo.
UFMG/ICEx/DCC PAA

Grafos 27
Grafo completo (2)
Dado o grafo completo K
n
temos que
Vrtice est conectado aos vrtices atravs de # arestas
(no conectados ainda)
v
1
v
2
, v
3
, . . . , v
n
n 1
v
2
v
3
, v
4
, . . . , v
n
n 2
.
.
.
.
.
.
.
.
.
v
n1
v
n
1
v
n
0
ou seja, se contarmos o nmero total de arestas de K
n
temos
n1

i=1
i =
(n 1) n
2
=
n
2
n
2
=
([V [
2
[V [)
2
UFMG/ICEx/DCC PAA

Grafos 28
Grafo completo (3)
Os grafos K
2
, K
3
, K
4
, e K
5
v v
1
v
2
v
3
v
2
v
3
v
4
v
4
v
3
v
5
v
1
v
2
v
5
K
4
K
3
K
2
K
1
v
2 1
possuem a seguinte quantidade de arestas:
Grafo # arestas
K
2
1
K
3
3
K
4
6
K
5
10
UFMG/ICEx/DCC PAA

Grafos 29
Quantidade de grafos distintos com n vrtices (1)
O nmero total de grafos distintos com n vrtices ([V [)
2
n
2
n
2
= 2
([V [
2
[V [)
2
que representa a quantidade de maneiras diferentes de escolher um subcon-
junto a partir de
n
2
n
2
=
([V [
2
[V [)
2
possveis arestas de um grafo com n vrtices.
UFMG/ICEx/DCC PAA

Grafos 30
Quantidade de grafos distintos com n vrtices (2)
Exemplo: Quantos grafos distintos com 3 vrtices existem?
Um grafo com 3 vrtices v
1
, v
2
e v
3
possui no mximo 3 arestas, ou seja,
E = v
1
v
2
, v
1
v
3
, v
2
v
3
.
O nmero de sub-conjuntos distintos de E dado por 1(E), ou seja, o con-
junto potncia de E que vale 2
[E[
.
1(E) =
_

_
,
v
1
v
2
,
v
1
v
3
,
v
2
v
3
,
v
1
v
2
, v
2
v
3
,
v
1
v
3
, v
2
v
3
,
v
1
v
2
, v
1
v
3
,
v
1
v
2
, v
1
v
3
, v
2
v
3

_
Cada elemento de 1(E) deve
ser mapeado num grafo com 3
vrtices levando a um grafo dis-
tinto:
v
1
v
2
v
3
UFMG/ICEx/DCC PAA

Grafos 31
Quantidade de grafos distintos com n vrtices (3)
Exemplo: Quantos grafos distintos com 3 vrtices existem (continuao)?
Para cada elemento (sub-conjunto) do conjunto potncia de E temos umgrafo
distinto associado, ou seja, o nmero total de grafos com 3 vrtices :
2
n
2
n
2
= 2
3
2
3
2
= 2
3
= 8
v
1
v
2
v
3
v
1
v
2
v
3
v
1
v
2
v
3
v
1
v
2
v
3
v
1
v
2
v
3
v
1
v
2
v
3
v
1
v
2
v
3
v
1
v
2
v
3
UFMG/ICEx/DCC PAA

Grafos 32
Grafo ciclo
Denio: Um grafo ciclo de n vrtices, denominado C
n
, n 3, um grafo
simples com n vrtices v
1
, v
2
, . . . , v
n
, e arestas v
1
v
2
, v
2
v
3
, . . ., v
n1
v
n
, v
n
v
1
.
Exemplo: Grafos ciclos de 3, 4, e 5 vrtices.
v v
2
v
3
v
2
v
3
v
4
v
4
v
3
v
5
v
1
v
2
v
5
C
4
C
3
C
1 1
UFMG/ICEx/DCC PAA

Grafos 33
Grafo roda
Denio: Um grafo roda, denominado W
n
, um grafo simples com n + 1
vrtices que obtido acrescentado um vrtice ao grafo ciclo C
n
, n 3, e
conectando este novo vrtice a cada um dos n vrtices de C
n
.
Exemplo: Grafos rodas de 3, 4, e 5 vrtices.
v v
2
v
3
v
2
v
3
v
4
v
4
v
3
v
5
v
1
v
2
v
5
W
4
W
3
W
4
v
5
v
6
v
1 1
UFMG/ICEx/DCC PAA

Grafos 34
Grafo Cubo-n (1)
Denio: Um grafo cubo-n de 2
n
vrtices, denominado Q
n
, um grafo simples
que representa os 2
n
strings de n bits. Dois vrtices so adjacentes sse os
strings que eles representam diferem em exatamente uma posio.
O grafo Q
n+1
pode ser obtido a partir do grafo Q
n
usando o seguinte algoritmo:
1. Faa duas cpias de Q
n
;
2. Prexe uma das cpias de Q
n
com 0 e a outra com 1;
3. Acrescente uma aresta conectando os vrtices que s diferem no primeiro
bit.
UFMG/ICEx/DCC PAA

Grafos 35
Grafo Cubo-n (2)
Exemplo: Grafos Q
n
, para n = 1, 2, e 3 vrtices.
100
Q
2
Q
3
Q
0 1 00
10 11
01
011
110 111
010
101
000 001
1
UFMG/ICEx/DCC PAA

Grafos 36
Grafo bipartido (1)
Denio: Um grafo bipartido

de m, n vrtices, denominado K
m,n
, um grafo
simples com vrtices v
1
, v
2
, . . . , v
m
e w
1
, w
2
, . . . , w
n
, que satisfaz as seguintes
propriedades:
i, k = 1, 2, . . . , m
j, l = 1, 2, . . . , n
1. uma aresta entre cada par de vrtices v
i
e w
j
;
2. uma aresta entre cada par de vrtices v
i
e v
k
;
3. uma aresta entre cada par de vrtices w
j
e w
l
;

Tambm chamado na literatura de grafo bipartido completo.


UFMG/ICEx/DCC PAA

Grafos 37
Grafo bipartido (2)
Exemplo: Grafos bipartidos K
3,2
e K
3,3
.
v
3
v
1
w
1
v
2
w
2
v
3
v
3
w
2
w
1
w
K
3,2
2
v
K
1
3,3
UFMG/ICEx/DCC PAA

Grafos 38
Multigrafo
Denio: Um multigrafo um grafo que no possui laos mas pode ter arestas
paralelas. Formalmente, um multigrafo G = (V, E) consiste de um conjunto V
de vrtices, um conjunto E de arestas, e uma funo f de E para u, v[u, v
V, u ,= v. As arestas e
1
e e
2
so chamadas mltiplas ou paralelas se f(e
1
) =
f(e
2
).
e
3
e 3
v
1
e
4
e
2
v
1
v
4
v
6
v
5
v
5
e
2
Vrias aplicaes precisam ser modeladas como um multigrafo.
UFMG/ICEx/DCC PAA

Grafos 39
Pseudografo
Denio: Um pseudografo um grafo que pode ter laos e arestas paralelas.
Formalmente, um pseudografo G = (V, E) consiste de um conjunto V de vr-
tices, um conjunto E de arestas, e uma funo f de E para u, v[u, v V .
Pseudografo mais geral que um multigrafo.
UFMG/ICEx/DCC PAA

Grafos 40
Multigrafo dirigido
Denio: Um multigrafo dirigido um grafo que pode ter laos e arestas par-
alelas. Formalmente, um multigrafo dirigido G = (V, E) consiste de um con-
junto V de vrtices, um conjunto E de arestas, e uma funo f de E para
u, v[u, v V . As arestas e
1
e e
2
so arestas mltiplas se f(e
1
) = f(e
2
).
UFMG/ICEx/DCC PAA

Grafos 41
Hipergrafo
Denio: Um hipergrafo H(V, F) denido pelo par de conjuntos V e F, onde:
V um conjunto no vazio de vrtices;
F um conjunto que representa uma famlia e partes no vazias de V .
Um hipergrafo um grafo no dirigido em que cada aresta conecta um nmero
arbitrrio de vrtices.
Seja, por exemplo, o grafo H(V, F)
dado por:
V = v
1
, v
2
, v
3
, v
4

F = v
1
, v
2
, v
4
, v
2
, v
3
, v
4
, v
2
, v
3

v
1
v
2
v
3
v
4
UFMG/ICEx/DCC PAA

Grafos 42
Terminologia de grafos
Tipo Aresta Arestas mltiplas? Laos permitidos?
Grafo simples No dirigida No No
Multigrafo No dirigida Sim No
Pseudografo No dirigida Sim Sim
Grafo dirigido Dirigida No Sim
Multigrafo dirigido Dirigida Sim Sim
UFMG/ICEx/DCC PAA

Grafos 43
Grafo valorado
Denio: Um grafo valorado um grafo em que cada aresta tem um valor as-
sociado. Formalmente, um grafo valorado G = (V, E) consiste de um conjunto
V de vrtices, um conjunto E de arestas, e uma funo f de E para P, onde P
representa o conjunto de valores (pesos) associados s arestas.
Grafo valorado usado para modelar vrios problemas importantes emCin-
cia da Computao.
UFMG/ICEx/DCC PAA

Grafos 44
Grafo imersvel
Denio: Um grafo imersvel em uma superfcie S se puder ser representado
geogracamente em S de tal forma que arestas se cruzem nas extremidades
(vrtices).
Um grafo planar um grafo que imersvel no plano.
As conexes de uma placa de circuito impresso devem ser representadas
por um grafo planar.
UFMG/ICEx/DCC PAA

Grafos 45
Subgrafo
Denio: Um grafo H = (V
t
, E
t
) dito ser um subgrafo de um grafo G =
(V, E) sse:
cada vrtice de H tambm um vrtice de G, ou seja, V
t
V ;
cada aresta de H tambm uma aresta de G, ou seja, E
t
E; e
cada aresta de H temos mesmos ns terminais emG, ou seja, se (u, v) E
t
ento (u, v) E.
Exemplo: Todos os subgrafos do grafo G:
v
1
v
2
v
1
v
3
e
1
e 1
v
2
v
1
v
2
v
3
e
2
v
2
e
1
v
2
v
2
e
1
e 1
v
2
v
1
e 1
v
2
v
3
e
2
e
1
v
2
v
3
e
2
e
1
e 1
v
2
v
3
e
G
1
2
e
1
e 1
v
2
v
3
e
10
8
3
2 1
9
4 5
7
11
6
UFMG/ICEx/DCC PAA

Grafos 46
Grau de um vrtice (1)
Denio: Seja G um grafo e um vrtice v de G. O grau de v, denominado
grau(v) (deg(v)), igual ao nmero de arestas que so incidentes a v, com
uma aresta que seja um lao contada duas vezes. O grau total de G a soma
dos graus de todos os vrtices de G.
Exemplo: Determinando o grau de v
1
no grafo abaixo.
v
3
v
2
v
1
v
v
4
1
grau( ) = 5
UFMG/ICEx/DCC PAA

Grafos 47
Grau de um vrtice (2)
Em um grafo dirigido o grau de um vrtice v o nmero de arestas quem saem
dele (out-deg(v)) mais o nmero de arestas que chegam nele (in-deg(v)).
Exemplo: Determinando o grau de v
3
no grafo abaixo.
v
1
v
2
v
5
v
7
v
6
v
1
e
2
e
3
e
8
e
4
e
3
v
4
v
7
e
6
e
5
e
3
grau( ) = 4
UFMG/ICEx/DCC PAA

Grafos 48
Grau de um vrtice (3)
Exemplo: Seja o grafo Gabaixo. Determine o grau de cada vrtice e o grau total
de G.
e
1
e 3
v
2
v
3
e
1
v
2
grau(v
1
) = 0, j que no existe aresta incidente a v
1
, que um vrtice
isolado.
grau(v
2
) = 2, j que e
1
e e
2
so incidentes a v
2
.
grau(v
3
) = 4, j que e
1
, e
2
e e
3
so incidentes a v
3
, sendo que e
3
contribui
com dois para o grau de v
3
.
Grau de G = grau(v
1
) + grau(v
2
) + grau(v
3
) = 0 + 2 + 4 = 6
Grau de G = 2 nmero de arestas de G, que 3, ou seja, cada aresta
contribui com dois para o grau total do grafo.
UFMG/ICEx/DCC PAA

Grafos 49
Grau de um vrtice (4)
Teorema (do aperto de mos ou handshaking): Seja G um grafo. A soma dos
graus de todos os vrtices de G duas vezes o nmero de arestas de G. Es-
pecicamente, se os vrtices de G so v
1
, v
2
, . . . , v
n
, onde n um inteiro posi-
tivo, ento
Grau de G = grau(v
1
) + grau(v
2
) + . . . + grau(v
n
)
= 2 nmero de arestas de G.
UFMG/ICEx/DCC PAA

Grafos 50
Grau de um vrtice (5)
Prova:
Seja G um grafo especco mas escolhido arbitrariamente.
Se G no possui vrtices ento no possui arestas, e o grau total 0, que
o dobro das arestas, que 0.
Se G tem n vrtices v
1
, v
2
, . . . , v
n
e m arestas, onde n um inteiro positivo
e m um inteiro no negativo. A hiptese que cada aresta de G contribui
com 2 para o grau total de G.
Suponha que e seja uma aresta arbitrria com extremidades v
i
e v
j
. Esta
aresta contribui com 1 para o grau de v
i
e 1 para o grau de v
j
.
UFMG/ICEx/DCC PAA

Grafos 51
Grau de um vrtice (6)
Prova (continuao):
Isto verdadeiro mesmo se i = j j que no caso de um lao conta-se duas
vezes para o grau do vrtice no qual incide.
v
e
i
v
j
e
=
i
v v
j
i ,= j i = j
Assim, a aresta e contribui com 2 para o grau total de G. Como e foi escolhido
arbitrariamente, isto mostra que cada aresta de G contribui com 2 para o grau
total de G.
.
.
. O grau total de G = 2 nmero de arestas de G.
Corolrio: O grau total de um grafo par.
UFMG/ICEx/DCC PAA

Grafos 52
Grafo regular
Denio: Um grafo dito ser regular quando todos os seus vrtices tm o
mesmo grau.
Exemplo: Os grafos completos com 2, 3, 4, e 5 vrtices so grafos regulares.
v v
1
v
2
v
3
v
2
v
3
v
4
v
4
v
3
v
5
v
1
v
2
v
5
K
4
K
3
K
2
K
1
v
2 1
UFMG/ICEx/DCC PAA

Grafos 53
Determinando a existncia de certos grafos (1)
possvel ter um grafo com quatro vrtices de graus 1, 1, 2, e 3?
No. O grau total deste grafo 7, que um nmero mpar.
possvel ter um grafo com quatro vrtices de graus 1, 1, 3, e 3?
Sim. Exemplos:
d
d c
a
a b
c d
a b
c d
a b
c
b
UFMG/ICEx/DCC PAA

Grafos 54
Determinando a existncia de certos grafos (2)
possvel ter um grafo simples com quatro vrtices de graus 1, 1, 3, e 3?
No.
Prova (por contradio):
Suponha que exista um grafo simples G com quatro vrtices de graus 1, 1, 3, e 3. Chame
a e b os vrtices de grau 1, e c e d os vrtices de grau 3. Como grau(c) = 3 e G no
possui laos ou arestas paralelas, devem existir arestas que conectam c aos vrtices a, b
e d.
d c
a b
Pelo mesmo raciocnio devem existir arestas que conectam d aos vrtices a, b e c.
a b
d c
Mas o grau(a) 2 e grau(b) 2, o que contradiz a suposio que estes vrtices tm
grau 1.
.
.
. A suposio inicial falsa e, conseqentemente, no existe um grafo simples com quatro
vrtices com graus 1, 1, 3, e 3.
UFMG/ICEx/DCC PAA

Grafos 55
Determinando a existncia de certos grafos (3)
possvel num grupo de nove pessoas, cada um ser amigo de exatamente
cinco outras pessoas?
No.
Prova (por contradio):
Suponha que cada pessoa represente um vrtice de um grafo e a aresta
indique uma relao de amizade entre duas pessoas (vrtices).
Suponha que cada pessoa seja amiga de exatamente cinco outras pes-
soas.
Ento o grau de cada vrtice cinco e o grau total do grafo 45.
.
.
. Isto contradiz o corolrio que o grau total de um grafo par e, conseqen-
temente, a suposio falsa.
UFMG/ICEx/DCC PAA

Grafos 56
Caracterstica de um grafo
Teorema: Emqualquer grafo G, existe umnmero par de vrtices de grau mpar.
Prova:
Suponha que G tenha n vrtices de grau mpar e m vrtices de grau par, onde n e m so
inteiros no negativos. [Deve-se mostrar que n par.]
Se n = 0, ento G tem um nmero par de vrtices de grau mpar.
Suponha que n 1. Seja P a soma dos graus de todos os vrtices de grau par, I a soma
dos graus de todos os vrtices de grau mpar, e T o grau total de G.
Se p
1
, p
2
, . . . , p
m
so os vrtices de grau par e i
1
, i
2
, . . . , i
n
so os vrtices de grau mpar,
P = grau(p
1
) + grau(p
2
) + . . . + grau(p
m
),
I = grau(i
1
) + grau(i
2
) + . . . + grau(i
n
),
T = grau(p
1
) + grau(p
2
) + . . . + grau(p
m
) +
grau(i
1
) + grau(i
2
) + . . . + grau(i
n
)
= P +I [que deve ser um nmero par]
P par, j que P = 0 ou P a soma de grau(p
r
), 0 r m, que par.
Mas T = P +I e I = T P. Assim, I a diferena de dois inteiros pares, que par.
Pela suposio, grau(i
s
), 0 s n, mpar. Assim, I, um inteiro par, a soma de n inteiros
mpares grau(i
1
) + grau(i
2
) + . . . + grau(i
n
). Mas a soma de n inteiros mpares par, ento
n par [o que devia ser mostrado].
UFMG/ICEx/DCC PAA

Grafos 57
Determinando a existncia de certos grafos (4)
possvel ter um grafo com 10 vrtices de graus 1, 1, 2, 2, 2, 3, 4, 4, 4, e 6?
No. Duas formas de provar:
1. Este grafo supostamente possui trs vrtices de grau mpar, o que no
possvel.
2. Este grafo supostamente possui um grau total = 29, o que no possvel.
UFMG/ICEx/DCC PAA

Grafos 58
O problema das sete pontes de Knigsberg ou
O incio da teoria dos grafos (1)
Leonhard Euler (1707-1783) aos 49 anos. Tela em leo pintada por
Jakob Emanuel Handmann em 1756.
Leonhard Euler, matemtico suo. Considerado um dos maiores matemticos de todos os
tempos. Foi um cientista extremamente produtivo contribuindo para muitas reas da matemtica
como teoria dos nmeros, anlise combinatria e anlise, bem como o seu uso em reas como
msica e arquitetura naval. Euler foi o primeiro a usar o termo funo para descrever uma
expresso envolvendo vrios argumentos, ou seja, y = F(x). No total escreveu mais de
1100 artigos e livros. Durante os ltimos 17 anos de vida, ele cou praticamente cego, quando
produziu quase que metade de seus trabalhos.
A rea de teoria dos grafos comea em 1736 quando publica um artigo (Solutio problematis ad
geometriam situs pertinentis) contendo a soluo para o problema das sete pontes de Knigs-
berg, na poca uma cidade da Prssia e, atualmente, cidade da Rssia.
UFMG/ICEx/DCC PAA

Grafos 59
O problema das sete pontes de Knigsberg ou
O incio da teoria dos grafos (2)
A cidade de Knigsberg foi construda numa regio onde haviam dois braos do Rio Pregel e
uma ilha. Foram construdas sete pontes ligando diferentes partes da cidade, como mostrado
na gura:
Problema: possvel que uma pessoa faa um percurso na cidade de tal forma que inicie e
volte a mesma posio passando por todas as pontes somente uma nica vez?
UFMG/ICEx/DCC PAA

Grafos 60
O problema das sete pontes de Knigsberg ou
Onde Knigsberg (3)
Referncia: Northern Ger-
many as far as the Bavar-
ian and Austrian Frontiers;
Handbook for Travellers by
Karl Baedeker. Fifteenth Re-
vised Edition. Leipzig, Karl
Baedeker; New York, Charles
Scribners Sons 1910.
History: Kaliningrad was for-
merly the Prussian port of
Knigsberg, capital of East
Prussia. It was captured by
the Red Army in April 1945
and ceded to the Soviet Union
at the Potsdam conference.
It was renamed in honor of
senior Soviet leader Mikhail
Kalinin, although he never ac-
tually visited the area.
Mapa parcial (recente) da
cidade.
UFMG/ICEx/DCC PAA

Grafos 61
O problema das sete pontes de Knigsberg (4)
Euler resolveu este problema dando incio teoria dos grafos.
Modelagem proposta por Euler:
Todos os pontos de uma dada rea de terra podem ser representados por
um nico ponto j que uma pessoa pode andar de um lado para o outro
sem atravessar uma ponte.
Um ponto conectado a outro se houver uma ponte de um lado para o
outro.
Gracamente, Euler representou o problema como:
A
B
C
D
UFMG/ICEx/DCC PAA

Grafos 62
O problema das sete pontes de Knigsberg (5)
Problema a ser resolvido:
possvel achar um caminho que comece e termine num vrtice qualquer
(A, B, C, ou D) e passe por cada aresta, exatamente, e uma nica vez?,
ou ainda,
possvel desenhar este grafo que comece e termine na mesma posio
sem levantar o lpis do papel?
D
C
A
B
UFMG/ICEx/DCC PAA

Grafos 63
O problema das sete pontes de Knigsberg (6)
Aparentemente no existe soluo!
Partindo do vrtice A, toda vez que se passa por qual-
quer outro vrtice, duas arestas so usadas: a de
chegada e a de sada.
Assim, se for possvel achar uma rota que usa todas
as arestas do grafo e comea e termina em A, ento o
nmero total de chegadas e sadas de cada vrtice
deve ser um valor mltiplo de 2.
No entanto, temos:
grau(A) = grau(C) = grau(D) = 3; e
grau(B) = 5.
Assim, por este raciocnio informal no possvel ter
uma soluo para este problema.
D
C
A
B
UFMG/ICEx/DCC PAA

Grafos 64
Caminhamentos em grafos
Caminho (1)
Seja G um grafo no dirigido, n 1, e v e w vrtices de G.
Caminho (walk): Um caminho de v para w uma seqncia alternada de
vrtices e arestas adjacentes de G. Um caminho tem a forma:
(v =)v
0
e
1
v
1
e
2
v
2
. . . v
n1
e
n
v
n
(= w)
ou ainda
v
0
[v
0
, v
1
]v
1
[v
1
, v
2
]v
2
. . . v
n1
[v
n1
, v
n
]v
n
onde v
0
= v e v
n
= w.
e
7
4
e
2
v
1
3
v
2
e
5
e 6
e
1
v 3
e 4
v
e
Um possvel caminho entre v
1
e v
4
:
v
1
e
6
v
3
e
2
v
4
e
7
v
2
e
1
v
3
e
2
v
4
e
3
v
1
e
4
v
2
e
5
v
4
UFMG/ICEx/DCC PAA

Grafos 65
Caminhamentos em grafos
Caminho (2)
No caso de arestas mltiplas, deve-se indicar qual delas est sendo usada.
Vrtices v
0
e v
n
so extremidades do caminho.
Tamanho (comprimento) do caminho: nmero de arestas do mesmo, ou seja,
nmero de vrtices menos um.
O caminho trivial de v para v consiste apenas do vrtice v.
Se existir um caminho c de v para w ento w alcanvel a partir de v via c.
UFMG/ICEx/DCC PAA

Grafos 66
Caminhamentos em grafos
Caminho fechado (1)
Caminho fechado (Closed walk): Caminho que comea e termina no mesmo
vrtice:
(v =)v
0
e
1
v
1
e
2
v
3
. . . v
n1
e
n
v
n
(= w)
onde v = w.
e
7
4
e
2
v
1
3
v
2
e
5
e 6
e
1
v 3
e 4
v
e
Um possvel caminho fechado :
v
1
e
6
v
3
e
2
v
4
e
7
v
2
e
1
v
3
e
2
v
4
e
3
v
1
e
4
v
2
e
5
v
4
e
3
v
1
Um caminho fechado com pelo menos uma aresta chamado de ciclo.
UFMG/ICEx/DCC PAA

Grafos 67
Caminhamentos em grafos
Caminho fechado (2)
Dois caminhos fechados
v
0
v
1
. . . v
n
e v
t
0
v
t
1
. . . v
t
n
formam o mesmo ciclo se existir um inteiro j tal que
v
t
i
= v
i+j
mod n,
para i = 0, 1, . . . , n 1.
e
7
4
e
2
v
1
3
v
2
e
5
e 6
e
1
v 3
e 4
v
e
O caminho fechado v
1
v
2
v
3
v
4
v
1
forma o
mesmo ciclo que os caminhos fechados
v
2
v
3
v
4
v
1
v
2
, v
3
v
4
v
1
v
2
v
3
e v
4
v
1
v
2
v
3
v
4
.
UFMG/ICEx/DCC PAA

Grafos 68
Caminhamentos em grafos
Trajeto
Trajeto (Path): Caminho de v para w sem arestas repetidas:
(v =)v
0
e
1
v
1
e
2
v
3
. . . v
n1
e
n
v
n
(= w)
onde todas as arestas e
i
so distintas, ou seja, e
i
,= e
k
, para qualquer i ,= k.
e
7
4
e
2
v
1
3
v
2
e
5
e 6
e
1
v 3
e 4
v
e
Um possvel trajeto :
v
1
e
6
v
3
e
2
v
4
e
7
v
2
e
1
v
3
UFMG/ICEx/DCC PAA

Grafos 69
Caminhamentos em grafos
Trajeto simples
Trajeto simples (Simple path): Caminho de v para w sem arestas e vrtices
repetidos.
e
7
4
e
2
v
1
3
v
2
e
5
e 6
e
1
v 3
e 4
v
e
Um possvel trajeto simples :
v
1
e
6
v
3
e
2
v
4
e
7
v
2
UFMG/ICEx/DCC PAA

Grafos 70
Caminhamentos em grafos
Circuito
Circuito (Circuit): Trajeto fechado, ou seja, um caminho onde no h aresta
repetida e os vrtices inicial e nal so idnticos:
(v =)v
0
e
1
v
1
e
2
v
3
. . . v
n1
e
n
v
n
(= w)
onde toda aresta e
i
, 1 i n, distinta e v
0
= v
n
.
e
7
4
e
2
v
1
3
v
2
e
5
e 6
e
1
v 3
e 4
v
e
Um possvel circuito :
v
1
e
6
v
3
e
2
v
4
e
7
v
2
e
1
v
3
UFMG/ICEx/DCC PAA

Grafos 71
Caminhamentos em grafos
Circuito simples
Circuito simples (Simple circuit): Trajeto fechado, ou seja, um caminho onde
no h arestas e vrtices repetidos, exceto os vrtices inicial e nal que so
idnticos.
e
7
4
e
2
v
1
3
v
2
e
5
e 6
e
1
v 3
e 4
v
e
Um possvel circuito simples :
v
1
e
6
v
3
e
2
v
4
e
7
v
2
e
4
v
1
Um circuito simples tambm chamado de ciclo simples.
UFMG/ICEx/DCC PAA

Grafos 72
Terminologia de caminhamentos
Aresta Vrtice Comea e termina
Tipo repetida? repetido? no mesmo vrtice?
Caminho (walk) Pode Pode Pode
Caminho fechado (closed walk) Pode Pode Sim
Trajeto (path) No Pode Pode
Trajeto simples (simple path) No No No
Circuito (circuit ) No Pode Sim
Circuito simples (simple circuit ) No v
0
= v
n
Sim
UFMG/ICEx/DCC PAA

Grafos 73
Caminhamentos em grafos
Notao simplicada (1)
Em geral um caminho pode ser identicado de forma no ambgua atravs de
uma seqncia de arestas ou vrtices.
e
3
e
1
e
1
v
2
v
3
v
4
e
2
O caminho e
1
e
2
e
4
e
3
representa de forma no ambgua o caminho
v
1
e
1
v
2
e
2
v
3
e
4
v
3
e
3
v
2
A notao e
1
ambgua, se usada para referenciar um caminho, pois pode
representar duas possibilidades: v
1
e
1
v
2
ou v
2
e
1
v
1
.
A notao v
2
v
3
ambgua, se usada para referenciar um caminho, pois pode
representar duas possibilidades: v
2
e
2
v
3
ou v
2
e
3
v
3
.
UFMG/ICEx/DCC PAA

Grafos 74
Caminhamentos em grafos
Notao simplicada (2)
e
1
v
2
v
3
e
2
e
3
v
1
A notao v
1
v
2
v
2
v
3
, se for associada a um caminho, representa de forma
no ambgua o caminho v
1
e
1
v
2
e
2
v
2
e
3
v
3
Se um grafo G no possui arestas paralelas, ento qualquer caminho em G
pode ser determinado de forma nica por uma seqncia de vrtices.
UFMG/ICEx/DCC PAA

Grafos 75
Identicando o caminhamento (1)
v
e
2
e
3
e
4
e
5
e
7
e
9
e
8
e
1
v
4
v
3
v
6
e
6
v
5
v
e
10
2
1
Que tipo de caminhamento ?
v
1
e
1
v
2
e
3
v
3
e
4
v
3
e
5
v
4
Aresta repetida? No.
Vrtice repetido? Sim v
3
.
Comea e termina no mesmo
vrtice? No.
Trajeto.
e
1
e
3
e
5
e
5
e
6
Aresta repetida? Sim e
5
.
Vrtice repetido? Sim v
3
.
Comea e termina no mesmo
vrtice? No.
Caminho.
UFMG/ICEx/DCC PAA

Grafos 76
Identicando o caminhamento (2)
v
e
2
e
3
e
4
e
5
e
7
e
9
e
8
e
1
v
4
v
3
v
6
e
6
v
5
v
e
10
2
1
Que tipo de caminhamento ?
v
2
v
3
v
4
v
5
v
3
v
6
v
2
Aresta repetida? No.
Vrtice repetido? Sim v
2
e v
3
.
Comea e termina no mesmo
vrtice? Sim v
2
.
Circuito.
v
2
v
3
v
4
v
5
v
6
v
2
Aresta repetida? No.
Vrtice repetido? Sim v
2
.
Comea e termina no mesmo
vrtice? Sim v
2
.
Circuito simples.
UFMG/ICEx/DCC PAA

Grafos 77
Identicando o caminhamento (3)
v
e
2
e
3
e
4
e
5
e
7
e
9
e
8
e
1
v
4
v
3
v
6
e
6
v
5
v
e
10
2
1
Que tipo de caminhamento ?
v
2
v
3
v
4
v
5
v
6
v
3
v
2
Aresta repetida? Sim e
3
.
Vrtice repetido? Sim v
2
e v
3
.
Comea e termina no mesmo
vrtice? Sim v
2
.
Caminho fechado.
v
1
Aresta repetida? No.
Vrtice repetido? No.
Comea e termina no mesmo
vrtice? Sim v
1
.
Caminho (circuito) trivial.
UFMG/ICEx/DCC PAA

Grafos 78
Fecho transitivo direto
Denio: O fecho transitivo direto (FTD) de um vrtice v o conjunto de todos
os vrtices que podem ser atingidos por algum caminho iniciando em v.
Exemplo: O FTD do vrtice v
5
do grafo ao lado
o conjunto v
1
, v
2
, v
3
, v
4
, v
5
, v
6
. Note que
o prprio vrtice faz parte do FTD j que ele
alcanvel partindo-se dele mesmo.
2
v
4
v
6
v
7
v
5
v
3
v
1
v
UFMG/ICEx/DCC PAA

Grafos 79
Fecho transitivo inverso
Denio: O fecho transitivo inverso (FTI) de um vrtice v o conjunto de todos
os vrtices a partir dos quais se pode atingir v por algum caminho.
Exemplo: O FTI do vrtice v
5
do grafo abaixo
o conjunto v
1
, v
2
, v
4
, v
5
, v
7
. Note que o
prprio vrtice faz parte do FTI j que dele pode
alcanar ele mesmo.
2
v
4
v
6
v
7
v
5
v
3
v
1
v
UFMG/ICEx/DCC PAA

Grafos 80
Conectividade (1)
Informalmente um grafo conexo (conectado) se for possvel caminhar de qual-
quer vrtice para qualquer outro vrtice atravs de uma seqncia de arestas
adjacentes.
Denio: Seja G um grafo. Dois vrtices v e w de G esto conectados sse
existe um caminho de v para w. Um grafo G conexo sse dado um par qualquer
de vrtice v e w em G, existe um caminho de v para w. Simbolicamente,
G conexo vrtices v, w V (G), um caminho de v para w.
Se a negao desta armao for tomada, possvel ver que um grafo no
conexo sse existem dois vrtices em G que no esto conectados por qualquer
caminho.
UFMG/ICEx/DCC PAA

Grafos 81
Conectividade (2)
v
6
v
3
v
4
v
2
v
1
v
1
G
5
Grafo conexo.
v
3
v
2
v
4
v
6
v
8
v
7
v
5
v
2
G
1
v
3
v
2
v
5
v
4
v
6
v
3
G
1
Grafos no conexos.
UFMG/ICEx/DCC PAA

Grafos 82
Conectividade (3)
Lemas
Seja G um grafo.
(a) Se G conexo, ento quaisquer dois vrtices distintos de G podem ser
conectados por um trajeto simples (simple path).
(b) Se vrtices v e w so parte de um circuito de G e uma aresta removida
do circuito, ainda assim existe um trajeto de v para w em G.
(c) Se G conexo e contm um circuito, ento uma aresta do circuito pode ser
removida sem desconectar G.
UFMG/ICEx/DCC PAA

Grafos 83
Conectividade (4)
Os grafos
v
3
v
2
v
4
v
6
v
8
v
7
v
5
v
2
G
1
v
3
v
2
v
5
v
4
v
6
v
3
G
1
possuem trs partes cada um, sendo cada parte um grafo conexo.
Um componente conexo de um grafo um subgrafo conexo de maior tamanho
possvel.
UFMG/ICEx/DCC PAA

Grafos 84
Componente conexo (1)
Denio: Um grafo H um componente conexo de um grafo G sse:
1. H um subgrafo de G;
2. H conexo;
3. Nenhum subgrafo conexo I de G tem H como um subgrafo e I contm
vrtices ou arestas que no esto em H.
Um grafo pode ser visto como a unio de seus componentes conexos.
UFMG/ICEx/DCC PAA

Grafos 85
Componente conexo (2)
Os componentes conexos do grafo G abaixo so:
v
2
v
3
v
4
v
8
v
6
v
7
v
5
v
1
e
2
e
5
e
3
e
4
e
1
G possui trs componentes conexos:
H
1
: V
1
= v
1
, v
2
, v
3
E
1
= e
1
, e
2

H
2
: V
2
= v
4
E
2
=
H
3
: V
3
= v
5
, v
6
, v
7
, v
8
E
3
= e
3
, e
4
, e
5

UFMG/ICEx/DCC PAA

Grafos 86
Componente fortemente conexo (conectado)
Um grafo dirigido G = (V, E) fortemente conexo se cada dois vrtices
quaisquer so alcanveis a partir um do outro.
Os componentes fortemente conexos de um grafo dirigido so conjuntos de
vrtices sob a relao so mutuamente alcanveis.
Umgrafo dirigido fortemente conexo tem apenas um componente fortemente
conexo.
v
3
v
0
v
1
v
4
v
5
v
2
Os componentes fortemente conexos do grafo ao lado so:
H
1
: V
1
= v
0
, v
1
, v
2
, v
3

H
2
: V
2
= v
4

H
3
: V
3
= v
5

Observe que v
4
, v
5
no um componente fortemente
conexo j que o vrtice v
5
no alcanvel a partir do vr-
tice v
4
.
UFMG/ICEx/DCC PAA

Grafos 87
Circuito Euleriano (1)
Denio: Seja G um grafo. Um circuito Euleriano um circuito que contm
cada vrtice e cada aresta de G. uma seqncia de vrtices e arestas ad-
jacentes que comea e termina no mesmo vrtice de G, passando pelo menos
uma vez por cada vrtice e exatamente uma nica vez por cada aresta de G.
UFMG/ICEx/DCC PAA

Grafos 88
Circuito Euleriano (2)
Teorema: Se um grafo possui um circuito Euleriano, ento cada vrtice do grafo
tem grau par.
Prova:
Suponha que G um grafo que tem um circuito Euleriano. [Deve-se mostrar que
qualquer vrtice v de G tem grau par.]
Seja v um vrtice particular de G mas escolhido aleatoriamente.
O circuito Euleriano possui cada aresta de G incluindo todas as arestas inci-
dentes a v.
Vamos imaginar um caminho que comea no meio de uma das arestas ad-
jacentes ao incio do circuito Euleriano e continua ao longo deste circuito e
termina no mesmo ponto.
UFMG/ICEx/DCC PAA

Grafos 89
Circuito Euleriano (3)
v
2
v
3
v
4
v 5
v
0
1
v
Par de arestas entrada/sada
Par de arestas entrada/sada
Comece aqui
Prova (continuao):
Cada vez que o vrtice v visitado atravs de uma aresta de entrada, este
vrtice deixado j que o caminho termina no meio de uma aresta.
J que cada circuito Euleriano passa em cada aresta de G exatamente uma
nica vez, cada aresta incidente a v visitada uma nica vez neste processo.
Como o caminho que passa por v feito atravs de arestas incidentes a v na
forma de pares entrada/sada, o grau de v deve ser mltiplo de 2.
Isto signica que o grau de v par. [O que devia ser mostrado.]
UFMG/ICEx/DCC PAA

Grafos 90
Circuito Euleriano (4)
O contrapositivo deste teorema (que logicamente equivalente ao teorema ori-
ginal) :
Teorema: Se algum vrtice de um grafo tem grau mpar, ento o grafo no tem
um circuito Euleriano.
Esta verso do teorema til para mostrar que um grafo no possui um
circuito Euleriano.
e
7
4
e
2
v
1
3
v
2
e
5
e 6
e
1
v 3
e 4
v
e
Vrtices v
1
e v
3
possuem grau 3 e, assim, no possuem um circuito Euleriano.
UFMG/ICEx/DCC PAA

Grafos 91
Circuito Euleriano (5)
Revisitando o problema das sete pontes da cidade de Knigsberg.
A
B
C
D
Problema: possvel que uma pessoa faa um percurso na cidade de tal forma
que inicie e volte a mesma posio passando por todas as pontes somente uma
nica vez?
No. Todos os vrtices tm grau mpar.
UFMG/ICEx/DCC PAA

Grafos 92
Circuito Euleriano (6)
No entanto, se cada vrtice de um grafo tem grau par, ento o grafo tem um
circuito Euleriano?
No. Por exemplo, no grafo abaixo todos os vrtices tm grau par, mas como
o grafo no conexo, no possui um circuito Euleriano.
v
1
v
1
e
2
e
3
v
4
v
3
e
4
e
2
UFMG/ICEx/DCC PAA

Grafos 93
Circuito Euleriano (7)
Teorema: Se cada vrtice de umgrafo no vazio temgrau par e o grafo conexo,
ento o grafo tem um circuito Euleriano.
Prova: [Esta uma prova construtivista, ou seja, apresenta umalgoritmo para achar umcircuito
Euleriano para um grafo conexo no qual cada vrtice tem grau par.]
Suponha que G um grafo conexo no vazio e que cada vrtice de G tem
grau par. [Deve-se achar um circuito Euleriano para G.]
Construa um circuito C usando o algoritmo descrito a seguir.
PASSO 1:
Escolha qualquer vrtice v de G. [Este passo pode ser executado j que pela su-
posio o conjunto de vrtices de G no vazio.]
UFMG/ICEx/DCC PAA

Grafos 94
Circuito Euleriano (8)
Prova (continuao):
PASSO 2:
Escolha uma seqncia qualquer de vrtices e arestas adjacentes,
comeando e terminando em v, sem repetir arestas. Chame o circuito resul-
tante de C.
[Este passo pode ser executado pelas seguintes razes:
Como o grau de cada vrtice de G par, possvel entrar num vrtice qualquer que no
seja o v por arestas de entrada e sada no visitadas ainda.
Assim, uma seqncia de arestas adjacentes distintas pode ser obtida enquanto o vrtice v
no seja alcanado.
Esta seqncia de arestas deve voltar em v j que existe um nmero nito de arestas.
]
UFMG/ICEx/DCC PAA

Grafos 95
Circuito Euleriano (9)
Prova (continuao):
PASSO 3: Verique se C contm cada aresta e vrtice de G. Se sim, C um
circuito Euleriano e o problema est terminado. Caso contrrio, execute os
passos abaixo.
UFMG/ICEx/DCC PAA

Grafos 96
Circuito Euleriano (10)
Prova (continuao):
PASSO 3A:
Remova todas as arestas do circuito C do grafo G e quaisquer vrtices que
se tornaram isolados quando as arestas de C so removidas.
Chame o grafo resultante de G
t
.
[Note que G
t
pode no ser conexo, como ilustrado abaixo, mas cada vrtice de G
t
tem grau
par, j que removendo as arestas de C remove um nmero par de arestas de cada vrtice e a
diferena de dois nmeros pares par.]
G:
u
v
w
C
G
UFMG/ICEx/DCC PAA

Grafos 97
Circuito Euleriano (11)
Prova (continuao):
PASSO 3B:
Escolha qualquer vrtice w comum a ambos C e G
t
.
[Deve haver pelo menos um vrtice deste tipo j que G conexo. Na gura abaixo existem
dois vrtices deste tipo: u e w.]
G:
u
v
w
C
G
UFMG/ICEx/DCC PAA

Grafos 98
Circuito Euleriano (12)
Prova (continuao):
PASSO 3C:
Escolha uma seqncia qualquer de vrtices e arestas adjacentes,
comeando e terminando em w, sem repetir arestas. Chame o circuito re-
sultante de C
t
.
[Este passo pode ser executado j que o grau de cada vrtice de G
t
par e G
t
nito. Veja a
justicativa para o passo 2.]
UFMG/ICEx/DCC PAA

Grafos 99
Circuito Euleriano (13)
Prova (continuao):
PASSO 3D:
Agrupe C e C
t
para criar um novo circuito C
tt
como segue:
Comece em v e siga em direo a w.
Percorra todo o circuito C
t
e volte a w.
Caminhe pela parte de C no percorrida ainda at o vrtice v.
[O efeito de executar os passos 3C e 3D para o grafo anterior mostrado abaixo.]
C
u
v
w
G:
C
C
UFMG/ICEx/DCC PAA

Grafos 100
Circuito Euleriano (14)
Prova (continuao):
PASSO 3E:
Seja C C
tt
e retorne ao passo 3.
[Como o grafo G nito, a execuo dos passos deste algoritmo termina, com a construo de
um circuito Euleriano para G. Como diferentes escolhas podem ser feitas, diferentes circuitos
podem ser gerados.]
UFMG/ICEx/DCC PAA

Grafos 101
Circuito Euleriano (15)
Determine se o grafo abaixo tem um circuito Euleriano. Em caso positivo ache
um circuito Euleriano para o grafo.
g
i
d
c
e
h
f
j
a
b
Os vrtices a, b, c, f, g, i, j tm grau 2.
Os vrtices d, e, h tm grau 4.
Pelo teorema anterior, este grafo possui um circuito Euleriano.
UFMG/ICEx/DCC PAA

Grafos 102
Circuito Euleriano (16)
Seja v = a e seja
C : abcda.
i
b
g
j
d
c
e
h
f
a
3
1
4
2
C no um circuito Euleriano para este grafo, mas C possui uma interseco
com o restante do grafo no vrtice d.
UFMG/ICEx/DCC PAA

Grafos 103
Circuito Euleriano (17)
Seja C
t
: deghjid. Agrupe C
t
a C para obter
C
tt
: abcdeghjida.
Seja C C
tt
. Ento C pode ser representado pelas arestas rotuladas no grafo
abaixo:
g
d
c
e
h
f
j
i
a
b
2
1
5
3
6
7
8
9
10
4
C no um circuito Euleriano para este grafo, mas C possui uma interseco
com o restante do grafo no vrtice e.
UFMG/ICEx/DCC PAA

Grafos 104
Circuito Euleriano (18)
Seja C
t
: efhe. Agrupe C
t
a C para obter
C
tt
: abcdefheghjida.
Seja C C
tt
. Ento C pode ser representado pelas arestas rotuladas no grafo
abaixo:
i
d
c
e
h
f
j
a
b
g
9 2
4
11
5
10
6
13
7
12
8
1
3
C inclui cada aresta do grafo exatamente uma nica vez e, assim, C um
circuito Euleriano para este grafo.
UFMG/ICEx/DCC PAA

Grafos 105
Circuito Euleriano (19)
Teorema: Um grafo G tem um circuito Euleriano sse G conexo e cada vrtice
de G tem grau par.
Denio: Seja G um grafo e seja v e w dois vrtices de G. Um Trajeto Euleri-
ano de v para w uma seqncia de arestas e vrtices adjacentes que comea
emv, termina emw e passa por cada vrtice de Gpelo menos uma vez e passa
por cada aresta de G exatamente uma nica vez.
Corolrio: Seja G um grafo e dois vrtices v e w de G. Existe um trajeto Eu-
leriano de v para w sse G conexo e v e w tm grau mpar e todos os outros
vrtices de G tm grau par.
UFMG/ICEx/DCC PAA

Grafos 106
Trajeto Euleriano (1)
Uma casa possui uma diviso representada pela planta abaixo. possvel uma
pessoa sair do cmodo A, terminar no cmodo B e passar por todas as portas
da casa exatamente uma nica vez? Se sim, apresente um possvel trajeto.
K
J
I A
B
C D
G
F
H
E
UFMG/ICEx/DCC PAA

Grafos 107
Trajeto Euleriano (2)
A planta da casa pode ser representada pelo grafo abaixo:
J
I
E
K
H
F
G
D C
B
A
H
F
G
D C
B
A
J
I
E
K
Cada vrtice deste grafo tem um grau par, exceto os vrtices A e B que tm
grau 1. Assim, pelo corolrio anterior, existe um trajeto Euleriano de A para B.
AGHFEIHEKJDCB
UFMG/ICEx/DCC PAA

Grafos 108
Circuito Hamiltoniano (1)
William Hamilton (1805
1865), matemtico irlands. Con-
tribuiu para o desenvolvimento da p-
tica, dinmica e lgebra. Em particu-
lar, descobriu a lgebra dos quater-
nions (lgebra onde a multiplicao
no comutativa). Seu trabalho
provou ser signicante para o desen-
volvimento da mecnica quntica.
Em 1859, props um jogo na forma de um
dodecaedro (slido de 12 faces).
UFMG/ICEx/DCC PAA

Grafos 109
Circuito Hamiltoniano (2)
Jogo proposto por Hamilton
Cada vrtice recebeu o nome de uma cidade: Londres, Paris, Hong Kong, New
York, etc. O problema era: possvel comear em uma cidade e visitar todas
as outras cidades exatamente uma nica vez e retornar cidade de partida?
O jogo mais fcil de ser imaginado projetando o dodecaedro no plano:
UFMG/ICEx/DCC PAA

Grafos 110
Circuito Hamiltoniano (3)
Jogo proposto por Hamilton
Uma possvel soluo para este grafo :
Denio: Dado um grafo G, um Circuito Hamiltoniano para G um circuito
simples que inclui cada vrtice de G, ou seja, uma seqncia de vrtices adja-
centes e arestas distintas tal que cada vrtice de G aparece exatamente uma
nica vez.
UFMG/ICEx/DCC PAA

Grafos 111
Comentrios sobre circuitos Euleriano e
Hamiltoniano (1)
Circuito Euleriano:
Inclui todas as arestas uma nica vez.
Inclui todos os vrtices, mas que podem ser repetidos, ou seja, pode no
gerar um circuito Hamiltoniano.
Circuito Hamiltoniano:
Inclui todas os vrtices uma nica vez (exceto o inicial = nal).
Pode no incluir todas as arestas, ou seja, pode no gerar um circuito
Euleriano.
UFMG/ICEx/DCC PAA

Grafos 112
Comentrios sobre circuitos Euleriano e
Hamiltoniano (2)
possvel determinar a priori se um grafo G possui um circuito Euleriano.
No existe um teorema que indique se um grafo possui um circuito Hamil-
toniano nem se conhece um algoritmo eciente (polinomial) para achar um
circuito Hamiltoniano.
No entanto, existe uma tcnica simples que pode ser usada em muitos casos
para mostrar que um grafo no possui um circuito Hamiltoniano.
UFMG/ICEx/DCC PAA

Grafos 113
Determinando se um grafo no possui um circuito
Hamiltoniano (1)
Suponha que um grafo G tenha um circuito Hamiltoniano C dado por:
C : v
0
e
1
v
1
e
2
. . . v
n1
e
n
v
n
Como C um circuito simples, todas as arestas e
i
so distintas e todos os
vrtices so distintos, exceto v
0
= v
n
.
Seja H um subgrafo de G que formado pelos vrtices e arestas de C, como
mostrado na gura abaixo (H o subgrafo com as linhas grossas).
UFMG/ICEx/DCC PAA

Grafos 114
Determinando se um grafo no possui um circuito
Hamiltoniano (2)
Se um grafo G tem um circuito Hamiltoniano ento G tem um subgrafo H com
as seguintes propriedades:
1. H contm cada vrtice de G;
2. H conexo;
3. H tem o mesmo nmero de arestas e
de vrtices;
4. Cada vrtice de H tem grau 2.
Contrapositivo desta armao:
Se um grafo G no tem um subgrafo H com propriedades (1)(4) ento G
no possui um circuito Hamiltoniano.
UFMG/ICEx/DCC PAA

Grafos 115
Determinando se um grafo no possui um circuito
Hamiltoniano (3)
Prove que o grafo G abaixo no tem um circuito Hamiltoniano.
a
e
c
d
b
Se G tem um circuito Hamiltoniano, ento G tem um subgrafo H que:
1. H contm cada vrtice de G;
2. H conexo;
3. H tem o mesmo nmero de arestas e de vrtices;
4. Cada vrtice de H tem grau 2.
UFMG/ICEx/DCC PAA

Grafos 116
Determinando se um grafo no possui um circuito
Hamiltoniano (4)
a
e
c
d
b
Em G, grau(b) = 4 e cada vrtice de H tem grau 2;
Duas arestas incidentes a b devem ser removidas de G para criar H;
Qualquer aresta incidente a b que seja removida far com que os outros vr-
tices restantes tenham grau menor que 2;
Conseqentemente, no existe um subgrafo H com as quatro propriedades
acima e, assim, G no possui um circuito Hamiltoniano.
UFMG/ICEx/DCC PAA

Grafos 117
O Problema do Caixeiro Viajante (1)
Em ingls, Traveling Salesman Problem, ou TSP.
Suponha o mapa abaixo mostrando quatro cidades (A, B, C, D) e as distn-
cias em km entre elas.
A
C
D
B
40
50 35
25
30
30
Um caixeiro viajante deve percorrer um circuito Hamiltoniano, ou seja, visitar
cada cidade exatamente uma nica vez e voltar a cidade inicial.
Que rota deve ser escolhida para minimizar o total da distncia percorrida?
UFMG/ICEx/DCC PAA

Grafos 118
O Problema do Caixeiro Viajante (2)
Possvel soluo:
Enumere todos os possveis circuitos Hamiltonianos comeando e termi-
nando em A;
Calcule a distncia de cada um deles;
Determine o menor deles.
Rota Distncia (km)
ABCDA 30 +30 +25 +40 = 125
ABDCA 30 +35 +25 +50 = 140
ACBDA 50 +30 +35 +40 = 155
ACDBA 50 +25 +35 +30 = 140
ADBCA 40 +35 +30 +50 = 155
ADCBA 40 +25 +30 +30 = 125
A
C
D
B
40
50 35
25
30
30
Assim, tanto a rota ABCDA ou ADCBA tem uma distncia total de 125
km.
UFMG/ICEx/DCC PAA

Grafos 119
O Problema do Caixeiro Viajante (3)
A soluo do TSP um circuito Hamiltoniano que minimiza a distncia to-
tal percorrida para um grafo valorado arbitrrio G com n vrtices, onde uma
distncia atribuda a cada aresta.
Algoritmo para resolver o TSP:
Atualmente, fora bruta, como feito no exemplo anterior.
Problema da classe NP-Completo.
Exemplo: para o grafo K
30
existem
29! 8, 84 10
30
circuitos Hamiltonianos diferentes comeando e terminando numdeterminado
vrtice.
Mesmo se cada circuito puder ser achado e calculado em apenas 1s, seria
necessrio aproximadamente 2, 8 10
17
anos para terminar a computao
nesse computador.
UFMG/ICEx/DCC PAA

Grafos 120
Representao de um grafo
Dado um grafo G = (V, E):
V = conjunto de vrtices.
E = conjunto de arestas, que pode ser representado pelo subconjunto de
V V .
O tamanho da entrada de dados medido em termos do:
Nmero de vrtices [V [.
Nmero de arestas [E[.
Se G conexo ento [E[ [V [ 1.
UFMG/ICEx/DCC PAA

Grafos 121
Representao de um grafo
Convenes
Conveno I (Notao):
Dentro e somente dentro da notao assinttica os smbolos V e E signi-
cam respectivamente [V [ e [E[.
Se um algoritmo executa em tempo O(V +E) equivalente a dizer que
executa em tempo O([V [ +[E[).
Conveno II (Em pseudo-cdigo):
O conjunto V de vrtices de G representado por V [G].
O conjunto E de arestas de G representado por E[G].
Os conjuntos V e E so vistos como atributos de G.
UFMG/ICEx/DCC PAA

Grafos 122
Representao de um grafo
Estruturas de dados
Matriz de adjacncia:
Forma preferida de representar grafos densos ([E[ [V [
2
).
Indica rapidamente (O(1)) se existe uma aresta conectando dois vrtices.
Lista de adjacncia:
Representao normalmente preferida.
Prov uma forma compacta de representar grafos esparsos ([E[ _ [V [
2
).
Matriz de incidncia:
Representao que inclui vrtice e aresta.
As duas primeiras formas acima so as principais formas de representar um
grafo.
UFMG/ICEx/DCC PAA

Grafos 123
Representao de um grafo
Matriz de adjacncia e grafo dirigido (1)
Seja o grafo dirigido abaixo:
e
2
e
4
e
5
e
6
e
1
v
2
v
3
v
3
e
1
Este grafo pode ser representado por uma ma-
triz A = (a
ij
), onde (a
ij
) representa o nmero
de arestas de v
i
para v
j
.
Matriz de Adjacncia
v
1
v
2
v
3
v
1
A = v
2
v
3
_

_
1
1
1
0
1
0
0
2
0
_

_
UFMG/ICEx/DCC PAA

Grafos 124
Representao de um grafo
Matriz de adjacncia e grafo dirigido (2)
Denio: Seja G um grafo dirigido com vrtices v
1
, v
2
, . . . , v
n
. A matriz de
adjacncia de G a matriz A = (a
ij
) (A[1. . . n, 1. . . n]) denida como:
a
ij
= # de arestas de v
i
para v
j
, i, j = 1, 2, . . . , n.
Valor diferente de zero na diagonal principal: lao.
Valor igual a 1 na entrada (a
ij
): uma nica aresta de v
i
a v
j
.
Valores maiores que 1 na entrada (a
ij
): arestas paralelas de v
i
a v
j
.
Espao: O(V
2
).
UFMG/ICEx/DCC PAA

Grafos 125
Representao de um grafo
Matriz de adjacncia e grafo dirigido (3)
v
3
v
1
e
3
e
4
e
5
e
2
v
2
e
1
v
1
v
2
v
3
v
1
A = v
2
v
3
_

_
0
0
2
0
1
1
0
1
0
_

_
v
1
e
2
e
3
e
4
e
5
e
1
v
3
v
2
v
1
v
2
v
3
v
1
A = v
2
v
3
_

_
1
1
0
1
0
0
0
2
0
_

_
UFMG/ICEx/DCC PAA

Grafos 126
Representao de um grafo
Matriz de adjacncia e grafo dirigido (4)
Dada a matriz de adjacncia de um
grafo:
v
1
v
2
v
3
v
4
A =
v
1
v
2
v
3
v
4
_

_
0
1
0
2
1
1
0
1
1
0
1
0
0
2
1
0
_

_
Um possvel desenho deste grafo :
v
4
v
3
v
v
1 2
UFMG/ICEx/DCC PAA

Grafos 127
Representao de um grafo
Matriz de adjacncia e grafo no dirigido
Denio: Seja G um grafo no dirigido com vrtices v
1
, v
2
, . . . , v
n
. A matriz
de adjacncia de G a matriz A = (a
ij
) sobre o conjunto dos inteiros no
negativos tal que
a
ij
= # de arestas conectando v
i
a v
j
, i, j = 1, 2, . . . , n.
Dado o grafo:
v
3
e
4
e
5
e
3
v
4
v
2
v
2
e
7
e
6
e
1
e
1
A matriz de adjacncia correspon-
dente :
v
1
v
2
v
3
v
4
A =
v
1
v
2
v
3
v
4
_

_
0
1
0
1
1
1
2
1
0
2
0
0
1
1
0
1
_

_
UFMG/ICEx/DCC PAA

Grafos 128
Representao de um grafo
Matriz de adjacncia e componentes conexos
Dado o grafo:
v
3
v
2
v
3
e
2
e
4
e
1
e
1
v
4
v
6
e
5
e
5
v
6
v
7
e
8
e
7
A matriz de adjacncia correspondente :
A =
_

_
1 0 1 0 0 0 0
0 0 2 0 0 0 0
1 2 0 0 0 0 0
0 0 0 0 1 0 0
0 0 0 1 1 0 0
0 0 0 0 0 0 2
0 0 0 0 0 2 0
_

_
A matriz A consiste de blocos de diferentes tamanhos
ao longo da diagonal principal, j que o conjunto de vr-
tices disjunto.
UFMG/ICEx/DCC PAA

Grafos 129
Representao de um grafo
Matriz de adjacncia: Anlise
Deve ser utilizada para grafos densos, onde [E[ prximo de [V [
2
([E[
[V [
2
).
O tempo necessrio para acessar um elemento independente de [V [ ou [E[.
muito til para algoritmos emque necessitamos saber comrapidez se existe
uma aresta ligando dois vrtices.
A maior desvantagem que a matriz necessita O(V
2
) de espao.
Ler ou examinar a matriz tem complexidade de tempo O(V
2
).
UFMG/ICEx/DCC PAA

Grafos 130
Representao de um grafo
Uso de matriz de adjacncia
Quando usada, a maior parte dos algoritmos requer tempo O(V
2
), mas exis-
tem excees.
Seja umgrafo dirigido que contmumvrtice sink, ou seja, umvrtice com:
Grau de entrada (in-degree) = [V [ 1
Grau de sada (out-degree) = 0
No existe uma aresta loop
Apresente um algoritmo para determinar se um grafo dirigido possui um vr-
tice sink em tempo O(V ) usando uma matriz de adjacncia.
UFMG/ICEx/DCC PAA

Grafos 131
Representao de um grafo
Nmero de vrtices sink num grafo dirigido
Quantos vrtices sink um grafo dirigido G = (V, E) possui no mximo?
No mximo 1.
Prova por contradio:
Suponha que s
i
e s
j
sejam vrtices sink.
Deve existir uma aresta de todos os ns do grafo G para s
i
e s
j
, exceto loops.
Em particular deve existir uma aresta (s
i
, s
j
) e uma aresta (s
j
, s
i
) j que s
i
e s
j
so vrtices sink.
Isto no pode ocorrer j que o grau de sada de um vrtice sink 0.
Logo, se existir um vrtice sink no grafo G no mximo 1.
UFMG/ICEx/DCC PAA

Grafos 132
Representao de um grafo
Matriz de incidncia
Denio: Seja G um grafo no dirigido com vrtices v
1
, v
2
, . . . , v
n
e arestas e
1
, e
2
, . . . , e
m
. A
matriz de incidncia de G a matriz M = (m
ij
) de tamanho n m sobre o conjunto dos
inteiros no negativos tal que
m
ij
=
_
1 quando a aresta e
j
incidente a v
i
.
0 caso contrrio.
Dado o grafo:
v
3
e
4
e
5
e
3
v
4
v
2
v
2
e
7
e
6
e
1
e
1
A matriz de incidncia correspondente :
e
1
e
2
e
3
e
4
e
5
e
6
e
7
M =
v
1
v
2
v
3
v
4
_

_
1
0
0
1
1
1
0
0
0
1
0
0
0
1
1
0
0
1
1
0
0
0
0
1
0
1
0
1
_

_
UFMG/ICEx/DCC PAA

Grafos 133
Representao de um grafo
Lista de adjacncia
Vetor Adj de [V [ listas, uma para cada vrtice de V .
Para cada vrtice u V , a lista Adj [u] contm apontadores para todos os
vrtices v tal que a aresta (u, v) E (todos os vrtices adjacentes a u em
G).
Denio vale para grafos no dirigidos e dirigidos.


[V [
i=1
comprimento da lista de adjacncia, vale:
Grafo dirigido = [E[, cada aresta aparece uma nica vez na lista.
Grafo no dirigido = 2[E[, cada aresta aparece duas vezes na lista (entrada
de u e entrada de v).
Espao: O(V +E).
UFMG/ICEx/DCC PAA

Grafos 134
Representao de um grafo
Lista de adjacncia e grafo dirigido (1)
Seja o grafo dirigido abaixo:
e
2
e
4
e
5
e
6
e
1
v
2
v
3
v
3
e
1
Este grafo pode ser representado por uma lista
de adjacncia Adj :
Adj [v
1
] = [v
1
]
Adj [v
2
] = [v
1
, v
2
, v
3
, v
3
]
Adj [v
3
] = [v
1
]
Adj
v
3
v
1
v
1
v
1
v
3
v
3
v
2
v
1
v 2
UFMG/ICEx/DCC PAA

Grafos 135
Representao de um grafo
Lista de adjacncia e grafo dirigido (2)
v
3
v
1
e
3
e
4
e
5
e
2
v
2
e
1
Este grafo pode ser representado
pela lista de adjacncia:
Adj [v
1
] = []
Adj [v
2
] = [v
2
, v
3
]
Adj [v
3
] = [v
1
, v
1
, v
2
]
v
1
e
2
e
3
e
4
e
5
e
1
v
3
v
2
Este grafo pode ser representado
pela lista de adjacncia:
Adj [v
1
] = [v
1
, v
2
]
Adj [v
2
] = [v
1
, v
3
, v
3
]
Adj [v
3
] = []
UFMG/ICEx/DCC PAA

Grafos 136
Representao de um grafo
Lista de adjacncia e grafo no dirigido
Dado o grafo:
v
3
e
4
e
5
e
3
v
4
v
2
v
2
e
7
e
6
e
1
e
1
Uma lista de adjacncia correspon-
dente :
Adj [v
1
] = [v
2
, v
4
]
Adj [v
2
] = [v
1
, v
2
, v
3
, v
3
, v
4
]
Adj [v
3
] = [v
2
, v
2
]
Adj [v
4
] = [v
1
, v
2
, v
4
]
UFMG/ICEx/DCC PAA

Grafos 137
Contando caminhos de tamanho n (1)
O tamanho (comprimento) de um caminho o nmero de arestas do mesmo,
ou seja, nmero de vrtices menos um.
Dado o grafo
e
4
e
2
v
3
v
1
v
1
e
2
e
3
O caminho
v
2
e
3
v
3
e
4
v
2
e
2
v
2
e
3
v
3
tem tamanho 4.
Quantos caminhos distintos de tamanho 2 exis-
tem conectando v
2
a v
2
?
v
2
e
1
v
1
e
1
v
2
v
2
e
2
v
2
e
2
v
2
v
2
e
3
v
3
e
4
v
2
v
2
e
4
v
3
e
3
v
2
v
2
e
3
v
3
e
3
v
2
v
2
e
4
v
3
e
4
v
2
Existem seis caminhos
distintos.
UFMG/ICEx/DCC PAA

Grafos 138
Contando caminhos de tamanho n (2)
Quantos caminhos distintos de tamanho n existem conectando dois vrtices de
um dado grafo G?
Este valor pode ser computado usando multiplicao de matrizes.
Seja o grafo:
e
4
e
2
v
3
v
1
v
1
e
2
e
3
A matriz de adjacncia correspondente :
v
1
v
2
v
3
v
1
A = v
2
v
3
_

_
0
1
0
1
1
2
0
2
0
_

_
UFMG/ICEx/DCC PAA

Grafos 139
Contando caminhos de tamanho n (3)
O valor de A
2
dado por:
_

_
0 1 0
1 1 2
0 2 0
_

_
_

_
0 1 0
1 1 2
0 2 0
_

_ =
_

_
1 1 2
1 6 2
2 2 4
_

_
Observe que a
22
= 6, que o nmero de caminhos
de tamanho 2 de v
2
para v
2
.
e
4
e
2
v
3
v
1
v
1
e
2
e
3
Se A a matriz de adjacncia de um grafo G, a entrada a
ij
da matriz A
2
indica a quantidade de caminhos de tamanho 2 conectando v
i
a v
j
no grafo
G.
Este resultado vlido para caminhos de tamanho n calculando A
n
.
UFMG/ICEx/DCC PAA

Grafos 140
Isomorsmo de grafos (1)
Os desenhos abaixo
v
2
v
3
v
4
v
5
v
1
e
5
e
4
e
2
e
3
e
1
v
4
v
2
v
5
v
3
v
1
e
2
e
3
e
4
e
5
e
1
representam o mesmo grafo G:
Conjuntos de vrtices e arestas so idnticos;
Funes arestavrtice so as mesmas.
Grafos isomorfos (do grego, o que signica a mesma forma).
UFMG/ICEx/DCC PAA

Grafos 141
Isomorsmo de grafos (2)
G G
t
v
2
v
3
v
4
v
5
v
1
e
5
e
4
e
2
e
3
e
1
v
3
v
5
v
4
v
2
v
1
e
4
e
2
e
3
e
5
e
1
Vrtices de
v
1
v
2
v
3
v
4
v
5
v
1
v
3
v
4
v
5
v
Vrtices de G G
2
G
e
1
e
2
e
3
e
4
e
5
e
1
e
3
e
4
e
5
e
Arestas de Arestas de G
2
Estes grafos so diferentes
apesar de possurem os
mesmos conjuntos de vr-
tices e arestas.
As funes arestavrtice
no so as mesmas.
UFMG/ICEx/DCC PAA

Grafos 142
Isomorsmo de grafos (3)
Denio: Sejam os grafos G e G
t
com conjuntos de vrtices V (G) e V (G
t
)
e com conjuntos de arestas E(G) e E(G
t
), respectivamente. O grafo G
isomorfo ao grafo G
t
sse existem correspondncias um-para-um
g : V (G) V (G
t
)
h : E(G) E(G
t
)
que preservam as funes aresta-vrtice de G e G
t
no sentido que
v V (G) e E(G)
v um n terminal de e g(v) um n terminal de h(e).
UFMG/ICEx/DCC PAA

Grafos 143
Isomorsmo de grafos (4)
Os grafos
G G
t
v
3
v
4
v
1
e
4
e
5
e
7
e
6
e
2
v
5
v
3
e
2
e
1
w
5
w
2
f
2
w
4
f
5
f
3
f
7
f
1
f
3
w
4
w
6
f
1
so isomorfos?
UFMG/ICEx/DCC PAA

Grafos 144
Isomorsmo de grafos (5)
Para resolver este problema,
devemos achar funes
g : V (G) V (G
t
)
e
h : E(G) E(G
t
)
tal que exista a correspon-
dncia como mencionado
anteriormente.
Grafos G e G
t
so iso-
morfos.
G G
t
v
3
v
4
v
1
e
4
e
5
e
7
e
6
e
2
v
5
v
3
e
2
e
1
w
5
w
2
f
2
w
4
f
5
f
3
f
7
f
1
f
3
w
4
w
6
f
1
g
w
1
v
2
v
3
v
4
v
5
v
1
w
3
w
4
w
5
w
V(G) V(G)
2
E(G)
f
1
e
2
e
3
e
4
e
5
e
1
f
3
f
4
f
5
f
7
e
6
e
6
f
7
f
h
E(G)
2
UFMG/ICEx/DCC PAA

Grafos 145
Isomorsmo de grafos (6)
Os grafos
G G
t
v
2
v
3
v
4
v
5
v
0
v
2
e
3
e
1
e
4
e
6
e
5
e
7
e
0
e
10
e
9
e
11
e
8
e
7
v
6
v
1
w
2
w
3
w
7
w
4
w
0
w
0
f
1
f
2
f
3
f
4
f
5
f
6
f
7
e
8
f
9
f
10
f
11
f
5
w
6
w
1
so isomorfos?
UFMG/ICEx/DCC PAA

Grafos 146
Isomorsmo de grafos (7)
Para resolver este problema,
devemos achar funes
g : V (G) V (G
t
)
e
h : E(G) E(G
t
)
tal que exista a correspon-
dncia como mencionado
anteriormente.
Grafos G e G
t
so iso-
morfos.
G G
t
v
2
v
3
v
4
v
5
v
0
v
2
e
3
e
1
e
4
e
6
e
5
e
7
e
0
e
10
e
9
e
11
e
8
e
7
v
6
v
1
w
2
w
3
w
7
w
4
w
0
w
0
f
1
f
2
f
3
f
4
f
5
f
6
f
7
e
8
f
9
f
10
f
11
f
5
w
6
w
1
V(G)
w
1
v
2
v
3
v
4
v
5
v
1
w
3
w
4
w
5
w
6
v
6
w
g
0
v
0
w
V(G)
2
E(G)
e
7
e
8
e
9
e
10
e
11
e
0
e
1
e
2
e
4
e
5
e
3
e
7
f
6
f
8
f
9
f
10
f
11
f
1
f
0
f
2
f
3
f
4
f
5
f
h
E(G)
6
UFMG/ICEx/DCC PAA

Grafos 147
Isomorsmo de grafos (8)
Isomorsmo de grafos uma relao de equivalncia no conjunto de grafos.
Informalmente, temos que esta propriedade :
Reexiva: Um grafo isomorfo a si prprio.
Simtrica: Se um grafo G isomorfo a um grafo G
t
ento G
t
isomorfo a
G.
Transitiva: Se um grafo G isomorfo a um grafo G
t
e G
t
isomorfo a G
tt
ento G isomorfo a G
tt
.
UFMG/ICEx/DCC PAA

Grafos 148
Representantes de classes de isomorsmo (1)
Ache todos os grafos no isomorfos que tm dois vrtices e duas arestas.
(a) (b) (c) (d)
Existe um algoritmo que aceita como entrada os grafos Ge G
t
e produz como
resultado uma armao se estes grafos so isomorfos ou no?
Sim. Gere todas as funes g e h e determine se elas preservam as
funes arestavrtice de G e G
t
.
UFMG/ICEx/DCC PAA

Grafos 149
Representantes de classes de isomorsmo (2)
Se G e G
t
tm cada um n vrtices e m arestas, o nmero de funes g n!
e o nmero de funes h m!, o que d um nmero total de n! m! funes.
Exemplo para n = m = 20.
Temos 20! 20! 5, 9 10
36
pares a vericar.
Assumindo que cada combinao possa ser achada e calculada em ape-
nas 1s, seria necessrio aproximadamente 1, 9 10
23
anos para termi-
nar a computao nesse computador.
UFMG/ICEx/DCC PAA

Grafos 150
Invariantes para isomorsmo de grafos (1)
Teorema: Cada uma das seguintes propriedades uma invariante para isomor-
smo de dois grafos G e G
t
, onde n, m e k so inteiros no negativos:
1. Tem n vrtices;
2. Tem m arestas;
3. Tem um vrtice de grau k;
4. Tem m vrtices de grau k;
5. Tem um circuito de tamanho k;
6. Tem um circuito simples de tamanho k;
7. Tem m circuitos simples de tamanho k;
8. conexo;
9. Tem um circuito Euleriano;
10. Tem um circuito Hamiltoniano.
Isto signica que se G isomorfo a G
t
ento se Gtem uma destas propriedades
G
t
tambm tem.
UFMG/ICEx/DCC PAA

Grafos 151
Invariantes para isomorsmo de grafos (2)
Os grafos
G G
so isomorfos?
No. G tem nove arestas e G
t
tem oito arestas.
UFMG/ICEx/DCC PAA

Grafos 152
Invariantes para isomorsmo de grafos (3)
Os grafos
H H
so isomorfos?
No. H tem um vrtice de grau 4 e H
t
no tem.
UFMG/ICEx/DCC PAA

Grafos 153
Isomorsmo de grafos simples (1)
Denio: Se G e G
t
so grafos simples (sem arestas paralelas e sem laos)
ento G isomorfo a G
t
sse existe uma correspondncia g um-para-um do
conjunto de vrtices V (G) de G para o conjunto de vrtices V (G
t
) de G
t
que
preserva a funo arestavrtice de G e de G
t
no sentido que
vrtices u, v G
uv uma aresta de G g(u), g(v) uma aresta de G
t
.
UFMG/ICEx/DCC PAA

Grafos 154
Isomorsmo de grafos simples (2)
Os grafos
z
b
c
d
a w y
G G
x
so isomorfos?
UFMG/ICEx/DCC PAA

Grafos 155
Isomorsmo de grafos simples (3)
z
b
c
d
a w y
G G
x
Sim, so isomorfos.
z
V(G) V(G)
g
a
b
c
d
w
x
y
A funo g preserva a funo arestavrtice
de G e de G
t
:
Arestas de G Arestas de G
t
ab yw = g(a), g(b)
ac yx = g(a), g(c)
ad yz = g(a), g(d)
cd xz = g(c), g(d)
UFMG/ICEx/DCC PAA

Grafos 156
rvore
Denio: Uma rvore (tambm chamada de rvore livre) um grafo no di-
rigido acclico e conexo.
UFMG/ICEx/DCC PAA

Grafos 157
Floresta
Denio: Uma oresta um grafo no dirigido acclico podendo ou no ser
conexo.
UFMG/ICEx/DCC PAA

Grafos 158
rvore geradora (1)
Suponha que uma companhia
area recebeu permisso para voar
nas seguintes rotas:
C
D
N
S L
I
M
A
No entanto, por questes de econo-
mia, esta empresa ir operar ape-
nas nas seguintes rotas:
C
D
N
S L
I
M
A
Este conjunto de rotas interconecta
todas as cidades.
Este conjunto de rotas mnimo?
Sim! Qualquer rvore deste grafo possui oito vrtices e sete arestas.
UFMG/ICEx/DCC PAA

Grafos 159
rvore geradora (2)
Denio: Uma rvore geradora de um grafo G um grafo que contm cada
vrtice de G e uma rvore.
Esta denio pode ser estendida para oresta geradora.
Proposio:
Cada grafo conexo tem uma rvore geradora.
Duas rvores geradores quaisquer de um grafo tm a mesma quantidade
de arestas.
UFMG/ICEx/DCC PAA

Grafos 160
rvore geradora (3)
Seja o grafo G abaixo
v
0
v
2
v
3
v
4
v
5
v
1
Este grafo possui o circuito v
2
v
1
v
4
v
2
.
A remoo de qualquer uma das trs arestas do
circuito leva a uma rvore.
Assim, todas as trs rvores geradoras so:
v
0
v
2
v
3
v
4
v
5
v
1
v
0
v
2
v
3
v
4
v
5
v
1
v
0
v
2
v
3
v
4
v
5
v
1
UFMG/ICEx/DCC PAA

Grafos 161
rvore geradora mnima ou
Minimal Spanning Tree (1)
O grafo de rotas da companhia
area que recebeu permisso para
voar pode ser rotulado com as dis-
tncias entre as cidades:
83
D
N
S
I
M
A
C
695
242
355
74
262
269
348
306
230
151
L
Suponha que a companhia deseja
voar para todas as cidades mas
usando um conjunto de rotas que
minimiza o total de distncias per-
corridas:
230
D
N
S
I
M
A
C
242
355
74
262
151
L
83
Este conjunto de rotas interconecta
todas as cidades.
UFMG/ICEx/DCC PAA

Grafos 162
rvore geradora mnima (2)
Denio: Um grafo com peso um grafo onde cada aresta possui um peso
representado por um nmero real. A soma de todos os pesos de todas as
arestas o peso total do grafo. Uma rvore geradora mnima para um grafo
com peso uma rvore geradora que tem o menor peso total possvel dentre
todas as possveis rvores geradoras do grafo.
Se G um grafo com peso e e uma aresta de G ento:
w(e) indica o peso da aresta e, e
w(G) indica o peso total do grafo G.
UFMG/ICEx/DCC PAA

Grafos 163
Algoritmos para obter a rvore geradora mnima
Algoritmo de Kruskal.
Algoritmo de Prim.
Grafo inicial:
83
D
N
S
I
M
A
C
695
242
355
74
262
269
348
306
230
151
L
rvore geradora mnima:
230
D
N
S
I
M
A
C
242
355
74
262
151
L
83
UFMG/ICEx/DCC PAA

Grafos 164
Algoritmo de Kruskal (1)
Idia bsica:
Seleciona a aresta de menor peso que conecta duas rvores de uma o-
resta.
Repita o processo at que todos os vrtices estejam conectados sempre
preservando a invariante de se ter uma rvore.
UFMG/ICEx/DCC PAA

Grafos 165
Algoritmo de Kruskal (2)
UFMG/ICEx/DCC PAA

Grafos 166
Algoritmo de Kruskal (3)
UFMG/ICEx/DCC PAA

Grafos 167
Algoritmo de Prim
Idia bsica:
Tomando como vrtice ini-
cial A, crie uma la de priori-
dades classicada pelos pe-
sos das arestas conectando
A.
Repita o processo at que
todos os vrtices tenham
sido visitados.
UFMG/ICEx/DCC PAA

Grafos 168
Algoritmos de pesquisa em grafo
Objetivo:
Pesquisa sistemtica de cada aresta e vrtice de um grafo.
Grafo G = (V, E) pode ser tanto dirigido quanto no dirigido.
Os algoritmos apresentados assumem que a estrutura de dados utilizada
uma lista de adjacncia.
Exemplos de algoritmos de pesquisa em grafo:
Pesquisa em profundidade (Depth-rst search DFS).
Pesquisa em largura (Breadth-rst search BFS).
Aplicaes:
Computao grca.
Tcnicas de vericao formal.
Compiladores.
Resoluo de problemas.
. . .
UFMG/ICEx/DCC PAA

Grafos 169
Pesquisa em largura (1)
Seja um grafo G = (V, E) e um vrtice origem s.
Pesquisa em largura:
Descobre as arestas em G que so alcanveis a partir de s.
Computa a distncia (em n
o
de arestas) de s para os vrtices que so
alcanveis.
Produz uma rvore em largura com raiz s e seus vrtices alcanveis.
Se v um vrtice alcanvel a partir de s, ento o caminho entre s e v na
rvore corresponde ao caminho mais curto entre s e v no grafo G.
UFMG/ICEx/DCC PAA

Grafos 170
Pesquisa em largura (2)
Expande a fronteira entre vrtices descobertos e no descobertos uniforme-
mente atravs da extenso (largura) da fronteira.
Pesquisa descobre todos os vrtices que esto a distncia k antes de desco-
brir os vrtices a distncia k +1.
UFMG/ICEx/DCC PAA

Grafos 171
Algoritmo para calcular BFS (1)
Estruturas de dados:
Grafo representado como uma lista de adjacncia.
Vetor color [u]: cor de cada vrtice u V .
Vetor [u]: predecessor de cada vrtice u V . Se u no tem predecessor
ou ainda no foi descoberto ento [u] = nil.
Vetor d[u]: distncia de cada vrtice u V ao vrtice s.
Fila Q: contm os vrtices j descobertos em largura.
Cores dos vrtices:
white: no visitados ainda.
gray: vrtice descoberto mas que no teve a sua lista de adjacncia total-
mente examinada.
black: vrtice descoberto que j teve a sua lista de adjacncia totalmente
examinada.
garantir que a pesquisa caminha em largura
Funes:
Enqueue e Dequeue: operaes sobre uma la FIFO.
UFMG/ICEx/DCC PAA

Grafos 172
Algoritmo para calcular BFS (2)
BFS(G, s)
1 for each vertex u V [G] s
2 do color [u] white
3 d[u]
4 [u] nil
5 color [s] gray
6 d[s] 0
7 [s] nil
8 Q s
9 while Q ,=
10 do u head[Q]
11 for each v Adj [u]
12 do if color [v] = white
13 then color [v] gray
14 d[v] d[u] + 1
15 [v] u
16 Enqueue(Q, v)
17 Dequeue(Q)
18 color [u] black
UFMG/ICEx/DCC PAA

Grafos 173
Comentrios e anlise do algoritmo (1)
19 for each vertex u V [G] s
20 do color [u] white
21 d[u]
22 [u] nil
Linhas 14: Inicializao I
Inicializao de cada vrtice para white (no des-
coberto).
Distncia para o vrtice s como .
Predecessor do vrtice desconhecido.
Anlise:
Linhas 14: O(V ).
Cada vrtice (exceto s) inicializado como white
e nenhum vrtice volta a ser white.
23 color [s] gray
24 d[s] 0
25 [s] nil
26 Q s
Linhas 58: Inicializao II
Inicializao de s com gray ( considerado desco-
berto).
Distncia para o prprio vrtice s 0.
No possui predecessor.
A la Q contm inicialmente apenas s (ir conter
apenas os vrtices gray, ou seja, os vrtices des-
cobertos em largura).
Anlise:
Linhas 58: O(1).
UFMG/ICEx/DCC PAA

Grafos 174
Comentrios e anlise do algoritmo (2)
27 while Q ,=
28 do u head[Q]
29 for each v Adj [u]
30 do if color [v] = white
31 then color [v] gray
32 d[v] d[u] + 1
33 [v] u
34 Enqueue(Q, v)
35 Dequeue(Q)
36 color [u] black
Linhas 918: Loop
Loop executado at que a la esteja vazia, ou
seja, no hajam vrtices gray.
Cada vrtice colocado e retirado da la somente
uma nica vez.
Vrtice gray um vrtice que foi descoberto mas
a sua lista de adjacncia ainda no foi totalmente
descoberta.
Vrtice black j foi totalmente examinado.
Vrtice u contm o primeiro elemento da la Q.
Linhas 1116 examinam cada vrtice v adjacente
a u que no foi descoberto ainda (white (12)),
marca como descoberto (gray (13)), calcula a sua
distncia at s (14), marca o seu predecessor
como u (15), e o coloca na la Q (16).
Quando todos os vrtices adjacentes a u forem
examinados, u retirado da la Q (17) e passa a
ser black (18).
UFMG/ICEx/DCC PAA

Grafos 175
Comentrios e anlise do algoritmo (3)
37 while Q ,=
38 do u head[Q]
39 for each v Adj [u]
40 do if color [v] = white
41 then color [v] gray
42 d[v] d[u] + 1
43 [v] u
44 Enqueue(Q, v)
45 Dequeue(Q)
46 color [u] black
Anlise:
Operaes de colocar e retirar da la cada vrtice
O(1) e o tempo total relacionado com as opera-
es de la O(V ).
A lista de adjacncia de cada vrtice u percor-
rida somente uma nica vez quando esse vrtice
ser retirado de Q.
A soma dos comprimentos das las de adjacncia
O(E), assim como o tempo para percorr-la.
Linhas 918: O(V + E), que o custo das ope-
raes associadas la e a percorrer as listas de
adjacncia.
Anlise de todo algoritmo:
Linhas 14: O(V ).
Linhas 58: O(1).
Linhas 918: O(V +E).
Custo total: O(V +E).
UFMG/ICEx/DCC PAA

Grafos 176
Execuo do algoritmo BFS (1)
UFMG/ICEx/DCC PAA

Grafos 177
Execuo do algoritmo BFS (2)
UFMG/ICEx/DCC PAA

Grafos 178
Execuo do algoritmo BFS (3)
UFMG/ICEx/DCC PAA

Grafos 179
Caminho mais curto
BFS calcula a distncia (em n
o
de arestas) de s V para os vrtices que so
alcanveis em G = (V, E).
Caminho mais curto (s, v):
Nmero mnimo de arestas em qualquer caminho de s para v, no caso de
ser alcanvel, ou se no for.
d[v] = (s, v), para todo v V .
Caminho mais curto entre s e v.
Teorema: Sub-caminhos de caminhos mais curtos so caminhos mais cur-
tos.
Prova: Se algum sub-caminho no gerar o caminho mais curto, ele poderia
ser substitudo por um sub-caminho atalho e gerar um caminho total
mais curto.
UFMG/ICEx/DCC PAA

Grafos 180
Inequao triangular
Teorema: (u, v) (u, x) +(x, v).
Caminho mais curto u Y v no mais longo que qualquer outro caminho
u Y v em particular o caminho concatenando o caminho mais curto
u Yx com o caminho mais curto x Yv.
UFMG/ICEx/DCC PAA

Grafos 181
rvore em largura (1)
BFS produz uma rvore em largura com raiz s e seus vrtices alcanveis.
rvore representada pelo vetor .
Seja o grafo G = (V, E) e o vrtice origem s. O sub-grafo predecessor de G
denido como G

= (V

, E

), onde
V

= v V [ [v] ,= nil s
e
E

= ([v], v) E [ v V

s
UFMG/ICEx/DCC PAA

Grafos 182
rvore em largura (2)
O sub-grafo predecessor G

uma rvore em largura se:


V

consiste dos vrtices alcanveis a partir de s, v V

.
um caminho simples nico de s a v emG

que tambm o caminho mais


curto de s a v em G.
[E

[ = [V

[ 1.
BFS constri o vetor tal que sub-grafo predecessor G

uma rvore em
largura.
UFMG/ICEx/DCC PAA

Grafos 183
Imprime caminho mais curto
Print-Path(G, s, v)
47 if v = s
48 then print s
49 else if [v] = nil
50 then print no path from s to v exists
51 else Print-Path(G, s, [v])
52 print v
Anlise:
Executa em tempo O(V ).
UFMG/ICEx/DCC PAA

Grafos 184
Pesquisa em profundidade (1)
Seja um grafo G = (V, E), dirigido ou no.
Pesquisa em profundidade:
Explora os vrtices do grafo a partir de arestas no exploradas ainda, mais
fundo no grafo quanto possvel.
Quando todas as arestas de v tiverem sido exploradas, a pesquisa volta
para explorar outras arestas do vrtice do qual v foi descoberto.
Processo continua at que todos os vrtices alcanveis a partir de uma
origem tenham sido descobertos.
Se existe vrtice no descoberto ainda ento um novo vrtice sele-
cionado e o processo comea todo novamente.
UFMG/ICEx/DCC PAA

Grafos 185
Pesquisa em profundidade (2)
v v
UFMG/ICEx/DCC PAA

Grafos 186
Algoritmo para calcular DFS (1)
Estruturas de dados:
Grafo representado como uma lista de adjacncia.
Vetor color [u]: cor de cada vrtice u V .
Vetor [u]: predecessor de cada vrtice u V . Se u no tem predecessor
ou ainda no foi descoberto ento [u] = nil.
Vetor d[1. . . [V []: marca quando o vrtice descoberto
(white gray).
Vetor f[1. . . [V []: marca quando o vrtice nalizado
(gray black).
Varivel global time: indica o instante em que o vrtice descoberto e
terminado, ou seja, o timestamp.
UFMG/ICEx/DCC PAA

Grafos 187
Algoritmo para calcular DFS (2)
Cores dos vrtices:
white : no visitados ainda.
gray : vrtice descoberto mas que no teve a sua lista de adjacncia to-
talmente examinada.
black : vrtice descoberto que j teve a sua lista de adjacncia totalmente
examinada e est terminado.
Funo:
DFS-VISIT: Percorre recursivamente o grafo em profundidade.
UFMG/ICEx/DCC PAA

Grafos 188
Algoritmo para calcular DFS (3)
Sada: para cada vrtice temos duas mar-
cas de tempo (timestamp) e um predeces-
sor ((v)) para construir a rvore em pro-
fundidade.
d[v]: instante de descoberta do vrtice v;
f[v]: instante de nalizao do vrtice v;
Essas informaes sero teis para out-
ros algoritmos.
Timestamps esto entre 1 e 2[V [
u V, um nico evento de descoberta
e um nico evento de trmino (inteiros
distintos).
u V, d[u] f[u] d[u] < f[u]
1 d[v] < f[v] 2[V [.
u V , tempo lgico:
d[u]
d[u]
f[u]
f[u]
white
gray
black
UFMG/ICEx/DCC PAA

Grafos 189
Algoritmo para calcular DFS (4)
DFS(G)
1 for each vertex u V [G] Inicializa variveis associadas a cada vrtice u
2 do color [u] white Marca u como no descoberto (branco)
3 [u] nil Marca o ancestral de u como inexistente
4 time 0 Inicializa a varivel de tempo
5 for each vertex u V [G] Examina cada vrtice u do grafo G
6 do if color [u] = white Vrtice no descoberto ainda?
7 then DFS-VISIT(u) Pesquisa em profundidade a partir de u
DFS-VISIT(u)
1 color [u] gray Vrtice u descoberto
2 time time +1 Gera o instante da descoberta
3 d[u] time Marca o instante da descoberta
4 for each v Adj [u] Explora todos os vrtices v adjacentes a u
5 do if color [v] = white Vrtice v no foi descoberto ainda?
6 then [v] u Marca o ancestral de v
7 DFS-VISIT(v) Explora vrtice v em profundidade
8 color [u] black Vrtice u nalizado
9 time time +1 Gera o instante de nalizao
10 f[u] time Marca o instante da nalizao
UFMG/ICEx/DCC PAA

Grafos 190
Comentrios e anlise do algoritmo (1)
DFS(G)
1 for each vertex u V [G]
2 do color [u] white
3 [u] nil
4 time 0
5 for each vertex u V [G]
6 do if color [u] = white
7 then DFS-VISIT(u)
Linhas 14: Inicializao
Inicializao de cada vrtice para branco (white)
(no descoberto linha 2).
Predecessor do vrtice desconhecido (linha 3).
Varivel global usada para indicar o timestamp
(linha 4).
Linhas 57: Loop
Para cada vrtice ainda no descoberto (linha 6)
faz a pesquisa em profundidade (linha 7). Vrtice
u torna-se a raiz de uma nova rvore (se houver)
na oresta de pesquisa em profundidade.
Anlise:
Linhas 13: (V ). Cada vrtice inicializado
como white e nenhum vrtice volta a ser white.
Linha 4: O(1).
Linhas 57: (V + E). As linhas 57 de DFS
gastam(V ) sem contar o tempo de DFS-VISIT,
que s chamado uma nica vez para cada vr-
tice branco.
DFS-VISIT executa em (E).
UFMG/ICEx/DCC PAA

Grafos 191
Comentrios e anlise do algoritmo (2)
DFS-VISIT(u)
1 color [u] gray
2 time time +1
3 d[u] time
4 for each v Adj [u]
5 do if color [v] = white
6 then [v] u
7 DFS-VISIT(v)
8 color [u] black
9 time time +1
10 f[u] time
Comentrios:
Linha 1: Vrtice u descoberto e torna-se cinza
(gray).
Linha 2: Incrementa a varivel de timestamp.
Linha 3: Marca o instante em que o vrtice u foi
descoberto.
Linhas 4 a 7: Verica cada vrtice v adjacente a
u (linha 4). Se o vrtice v ainda no foi desco-
berto (linha 5) marca como seu ancestral o vrtice
u (linha 6) e continua pesquisando o grafo em pro-
fundidade (linha 7).
Linha 8: Vrtice u nalizado e torna-se preto
(black).
Linha 9: Incrementa a varivel de timestamp.
Linha 10: Marca o instante em o vrtice u foi na-
lizado.
Anlise:
Todas as atribuies tm custo O(1).
Loop das linhas 47: executado [Adj [u][ vezes,
sendo que
vV
[Adj [v][ = (E). Assim o custo
de DFS-VISIT (E).
UFMG/ICEx/DCC PAA

Grafos 192
Execuo do algoritmo DFS
UFMG/ICEx/DCC PAA

Grafos 193
Classicao das arestas numa pesquisa em
profundidade
possvel identicar quatro tipos de arestas durante a construo da oresta de pesquisa em
profundidade G

obtida pelo algoritmo de DFS no grafo G. O primeiro tipo de aresta pertence a


oresta enquanto os outros trs no:
T (tree): aresta da oresta de pesquisa em profundidade G

. Aresta (u, v) uma aresta da


rvore se o vrtice v foi descoberto inicialmente ao explorar a aresta dirigida (u, v).
B (back): aresta (u, v) que conecta um vrtice u a um ancestral v j presente na rvore.
Loops so consideradas arestas back.
F (forward): aresta (u, v) que conecta um vrtice u a um descendente v na rvore de
pesquisa em profundidade.
C (cross): so todas as outras arestas.
UFMG/ICEx/DCC PAA

Grafos 194
Propriedades da pesquisa em profundidade (1)
O sub-grafo G

dene uma oresta de rvores (no caso do grafo G no ser


conexo).
As rvores da pesquisa em profundidade reetem a estrutura das chama-
das recursivas de DFS-VISIT.
Temos que [v] = u sse DFS-VISIT foi chamado durante uma pesquisa
da lista de adjacncia de u, i.e., vrtice v tem como ancestral o vrtice u.
Pode-se dizer que vrtice v descendente do vrtice u na oresta de
pesquisa em profundidade sse v foi descoberto quando u era cinza (gray).
Pesquisa em profundidade apresenta Estrutura de Parnteses.
Algoritmo:
Represente a descoberta do vrtice u pelo parntese da esquerda: (u.
Represente a nalizao do vrtice u pelo parntese da direita: u).
Seqencia de descobertas e nalizaes de um dado vrtice dene uma
expresso bem formada no sentido que parnteses so propriamente ani-
nhados.
UFMG/ICEx/DCC PAA

Grafos 195
Propriedades da pesquisa em profundidade (2)
Resultado de uma pesquisa em profundidade sobre
o grafo G ao lado.
Intervalos de descoberta e nalizao de cada
vrtice correspondem a estrutura de parnteses
mostrada. Cada retngulo representa o intervalo de
tempo entre o instante de descoberta e nalizao
de um vrtice. Se h sobreposio de intervalos en-
to um est inserido no outro e o vrtice que repre-
senta o menor intervalo um descendente do vrtice
que representa o maior intervalo.
O grafo acima est desenhado com todas as arestas
da rvore (T) de cima para baixo e as outras arestas
que no fazem parte dela (B, F e C).
UFMG/ICEx/DCC PAA

Grafos 196
Teorema do Parnteses (1)
Seja uma pesquisa em profundidade em um grafo G = (V, E), dirigido ou no.
Para quaisquer dois vrtices u e v desse grafo, temos que apenas uma das trs
condies abaixo verdadeira:
1. Os intervalos [d[u], f[u]] e [d[v], f[v]] so totalmente disjuntos e nem u
nem v um descendente do outro na oresta de pesquisa em profundi-
dade.
d[u] < f[u] < d[v] < d[v] ou d[v] < f[v] < d[u] < f[u].
2. O intervalo [d[u], f[u]] est contido inteiramente dentro do intervalo
[d[v], f[v]] e o vrtice u um descendente do vrtice v na rvore de
pesquisa em profundidade.
d[v] < d[u] < f[u] < f[v].
3. O intervalo [d[v], f[v]] est contido inteiramente dentro do intervalo
[d[u], f[u]] e o vrtice v um descendente do vrtice u na rvore de
pesquisa em profundidade.
d[u] < d[v] < f[v] < f[u].
UFMG/ICEx/DCC PAA

Grafos 197
Teorema do Parnteses (2)
Prova. Seja o caso d[u] < d[v]. Existem duas possibilidades:
(a) d[v] < f[u]
Vrtice v foi descoberto quando u era cinza (gray).
Vrtice v um descendente de u.
Arestas de sada de v so exploradas.
Vrtice v nalizado antes da pesquisa retornar a u e ser nalizado.
.
.
. Intervalo [d[v], f[v]] est inteiramente contido em [d[u], f[u]].
(b) d[v] ,< f[u], ou ainda, f[u] < d[v]
Sabe-se que d[u] < f[u] e d[v] < f[v].
.
.
. Intervalos so disjuntos e os dois vrtices no tm uma relao de an-
cestral e descendente.
O caso d[v] < d[u] similar ao que foi explicado acima.
Exemplos:
Certo: ()[] ([]) [()]
Errado: ([)] [(])
UFMG/ICEx/DCC PAA

Grafos 198
Aninhamento de intervalos de descendentes
Corolrio: Vrtice v um descendente prprio do vrtice u na oresta de
pesquisa em profundidade para um grafo G (dirigido ou no) sse
d[u] < d[v] < f[v] < f[u].
Prova. Imediato do Teorema do Parnteses.
UFMG/ICEx/DCC PAA

Grafos 199
Teorema do Caminho Branco
Teorema: Na oresta de pesquisa em profundidade de um grafo G = (V, E) (dirigido ou no),
o vrtice v um descendente do vrtice u sse () no instante d[u] que DFS descobre
u, o vrtice v pode ser alcanado a partir de u ao longo de um caminho formado
inteiramente de vrtices brancos.
Prova.
() [se o vrtice v um descendente do vrtice u ento no instante d[u] que DFS descobre u,
o vrtice v pode ser alcanado a partir de u ao longo de um caminho formado inteiramente de
vrtices brancos.]
Suponha que v um descendente de u. Seja w um vrtice qualquer no caminho entre u
e v na rvore de pesquisa em profundidade. Pelo corolrio do Aninhamento de Intervalos de
Descendentes (AID), d[u] < d[w] e w branco no instante d[u]. Como w um vrtice qualquer
no caminho entre u e v, a concluso verdadeira.
() [se no instante d[u] que DFS descobre u, o vrtice v pode ser alcanado a partir de
u ao longo de um caminho formado inteiramente de vrtices brancos ento o vrtice v um
descendente do vrtice u.]
Suponha que a hiptese verdadeira e que o vrtice v no se torna um descendente de u
na rvore de pesquisa em profundidade. Assuma que todos os outros vrtices ao longo do
caminho tornam-se um descendente de u. Seja w o predecessor de v no caminho tal que w
um descendente de u (w e u podem ser o mesmo vrtice) e, pelo corolrio AID, f[w] f[u].
Note que v deve ser descoberto depois que u descoberto, mas antes que w seja nalizado
(w o predecessor de v). Assim, d[u] < d[v] < f[w] f[u]. Pelo teorema do Parnteses
temos que o intervalo [d[v], f[v]] est contido inteiramente dentro do intervalo [d[u], f[u]]. Pelo
corolrio AID, v deve ser um descendente de u.
UFMG/ICEx/DCC PAA

Grafos 200
Pesquisa em profundidade e Conjectura I
Se existe um caminho do vrtice u para o vrtice v num grafo dirigido G e se
d[u] < d[v] na pesquisa em profundidade de G, ento o vrtice v um descen-
dente do vrtice u na oresta de pesquisa em profundidade obtida. [Exerccio
22.3-7 do livro CLRS]
A conjectura verdadeira ou falsa?
UFMG/ICEx/DCC PAA

Grafos 201
Pesquisa em profundidade e Conjectura I
Se existe um caminho do vrtice u para o vrtice v num grafo dirigido G e se
d[u] < d[v] na pesquisa em profundidade de G, ento o vrtice v um descen-
dente do vrtice u na oresta de pesquisa em profundidade obtida. [Exerccio
22.3-7 do livro CLRS]
A conjectura verdadeira ou falsa?
Falsa! Prova por contra-exemplo.
Existe um caminho de u para v no grafo.
A rvore de pesquisa em profundidade produzida e as arestas identicadas.
Temos que d[u] < d[v] na pesquisa em profundidade mas v no um des-
cendente de u.
UFMG/ICEx/DCC PAA

Grafos 202
Pesquisa em profundidade e Conjectura II
Se existe um caminho do vrtice u para o vrtice v num grafo dirigido G, ento
qualquer pesquisa em profundidade deve resultar em d[v] f[u]. [Exerccio
22.3-8 do livro CLRS]
A conjectura verdadeira ou falsa?
UFMG/ICEx/DCC PAA

Grafos 203
Pesquisa em profundidade e Conjectura II
Se existe um caminho do vrtice u para o vrtice v num grafo dirigido G, ento
qualquer pesquisa em profundidade deve resultar em d[v] f[u]. [Exerccio
22.3-8 do livro CLRS]
A conjectura verdadeira ou falsa?
Falsa! Prova por contra-exemplo.
Existe um caminho de u para v no grafo.
A rvore de pesquisa em profundidade produzida e as arestas identicadas.
Contudo, d[v] > f[u].
UFMG/ICEx/DCC PAA

Grafos 204
Pesquisa em profundidade e oresta com certa
propriedade
Seja um vrtice u, que tem arestas de entrada e sada, em um grafo dirigido G.
possvel que esse vrtice que sozinho na rvore de pesquisa em profundi-
dade? [Exerccio 22.3-10 do livro CLRS]
UFMG/ICEx/DCC PAA

Grafos 205
Pesquisa em profundidade e oresta com certa
propriedade
Seja um vrtice u, que tem arestas de entrada e sada, em um grafo dirigido G.
possvel que esse vrtice que sozinho na rvore de pesquisa em profundi-
dade? [Exerccio 22.3-10 do livro CLRS]
Sim!
Vrtice u tem arestas de entrada e sada no grafo G.
No entanto, a oresta de pesquisa em profundidade produzida faz com que o
vrtice u aparea sozinho na rvore de pesquisa em profundidade.
UFMG/ICEx/DCC PAA

Grafos 206
Classicao de arestas na DFS (1)
A pesquisa em profundidade pode ser usada para classicar as arestas de
um grafo G.
Exemplo de aplicao:
Um grafo dirigido acclico sse a pesquisa em profundidade no identica
nenhuma aresta do tipo back (retorno).
O procedimento DFS pode ser modicado para classicar as arestas de um
grafo G medida que elas forem sendo encontradas.
Nesta verso, arestas F (forward) e C (cross) no so discriminadas.
Idia: tem-se uma aresta incidente a um vrtice (de cor:)
white : indica uma aresta da rvore.
gray : indica uma aresta B (back).
black : indica uma aresta F (forward) ou C (cross).
UFMG/ICEx/DCC PAA

Grafos 207
Classicao de arestas na DFS (2)
Aresta incidente a um vrtice (de cor):
white : aresta T
Identicao imediata a partir da especicao do algoritmo.
gray : aresta B
Vrtices cinza (gray) formam uma seqncia linear de descendentes que
correspondem pilha de invocaes ativas ao procedimento DFS-VISIT.
Nesse processo de explorao, se um vrtice cinza encontra outro vrtice
cinza ento foi encontrado um ancestral.
black : aresta F ou C
Possibilidade restante.
possvel mostrar que uma aresta (u, v)
F (forward) se d[u] < d[v] e,
C (cross) se d[u] > d[v].
UFMG/ICEx/DCC PAA

Grafos 208
Classicao de arestas na DFS (3)
DFS-WITH-EDGE-CLASSIFICATION(G)
Idntico ao DFS
DFS-VISIT(u)
1 color [u] gray Vrtice u descoberto
2 time time +1
3 d[u] time
4 for each v Adj [u] Explore vrtices v adjacentes a u
5 do if color [v] = white
6 then (u, v) T Aresta pertence rvore
7 [v] u
8 DFS-VISIT(v)
9 else if color [v] = gray
10 then (u, v) B Aresta do tipo B
11 else (u, v) F, C Aresta do tipo F ou C
12 color [u] black Vrtice u nalizado
13 time time +1
14 f[u] time
UFMG/ICEx/DCC PAA

Grafos 209
Classicao de arestas num grafo no dirigido
Teorema: Numa pesquisa em profundidade de um grafo no dirigido G, cada aresta de G
uma aresta da rvore (T) ou uma aresta de retorno (B).
Prova.
Seja (u, v) uma aresta arbitrria de G e suponha, sem perda de generalidade, que d[u] < d[v].
Nesse caso, o vrtice v deve ser descoberto e nalizado antes de nalizar o vrtice u (enquanto
u for cinza), j que v est na lista de adjacncia de u.
Se a aresta (u, v) explorada primeiro na direo de u para v, ento v no era conhecido
(white) naquele instante, caso contrrio, a aresta j teria sido explorada na direo de v para u.
Assim, a aresta (u, v) torna-se uma aresta da rvore (T).
Se a aresta (u, v) explorada primeiro na direo de v para u, ento (u, v) uma aresta de
retorno (B), j que o vrtice u ainda tem a cor cinza (gray) no momento que a aresta primeiro
explorada.
UFMG/ICEx/DCC PAA

Grafos 210
Ordenao topolgica
A busca em profundidade pode ser usada para executar uma ordenao
topolgica em um grafo dirigido acclico (DAG Directed Acyclic Graph).
Uma ordenao topolgica de um DAG G = (V, E) uma ordenao linear
de todos os seus vrtices, tal que se G contm uma aresta (u, v), ento u
aparece antes de v na ordenao.
Se o grafo no acclico, ento no possvel nenhuma ordenao linear.
Uma ordenao topolgica de um grafo pode ser vista como uma ordenao
de seus vrtices ao longo de uma linha horizontal, de tal forma que todas as
arestas orientadas sigam da esquerda para a direita.
UFMG/ICEx/DCC PAA

Grafos 211
Ordenao topolgica
DAGs so usados em aplicaes para indicar precedncia entre eventos.
O grafo abaixo (resultado de uma pesquisa DFS) mostra como um dado
homem se veste pela manh.
Uma aresta orientada (u, v) no DAG indica que a pea de roupa u deve ser
vestida antes da pea v.
Algumas peas devem ser vestidas antes de outras (e.g., meias antes dos
sapatos);
Outras, em qualquer ordem (e.g., meias e calas).
Uma ordenao topolgica desse DAG fornece uma ordem para o processo
de se vestir.
UFMG/ICEx/DCC PAA

Grafos 212
Algoritmo de ordenao topolgica
TOPOLOGICAL-SORT(G)
1 DFS(G) Chama DFS para calcular o instante de trmino f[u] para cada vrtice u.
medida que cada vrtice terminado, ele deve ser inserido na frente de uma lista encadeada.
2 return lista encadeada de vrtices.
TOPOLOGICAL-SORT(G)
Verso modicada de DFS
1 for each vertex u V [G]
2 do color [u] white
3 [u] nil
4 time 0
5 for each vertex u V [G]
6 do if color [u] = white
7 then DFS-VISIT(u)
8 return Q
DFS-VISIT(u)
1 color [u] gray
2 time time +1
3 d[u] time
4 for each v Adj [u]
5 do if color [v] = white
6 then [v] u
7 DFS-VISIT(v)
8 color [u] black
9 time time +1
10 f[u] time
Monta a ordenao topolgica
11 Enqueue(Q, u)
UFMG/ICEx/DCC PAA

Grafos 213
Algoritmo de ordenao topolgica
Os vrtices topologicamente ordenados aparecem na ordem inversa de seus
tempos de trmino.
UFMG/ICEx/DCC PAA

Grafos 214
Ordenao topolgica: Anlise de complexidade
A busca em profundidade (V +E) e leva tempo O(1) para inserir cada
um dos n vrtices frente da lista encadeada.
Logo, a ordenao topolgica tem complexidade de tempo de (V +E).
UFMG/ICEx/DCC PAA

Grafos 215
Componentes fortemente conectados
Um grafo orientado fortemente conectado se cada um de dois vrtices
quaisquer acessvel a partir do outro.
Um componente fortemente conectado de um grafo orientado G = (V, E)
um conjunto mximo de vrtices C V tal que, para todo par de vrtices u
e v em C, temos que os vrtices u e v so acessveis um a partir do outro.
c b
e f g
d
a
h
UFMG/ICEx/DCC PAA

Grafos 216
Componentes fortemente conectados
A busca em profundidade pode ser utilizada tambm para realizar a decom-
posio de um grafo orientado em seus componentes fortemente conecta-
dos.
Vrios algoritmos que trabalham com grafos dirigidos comeam por essa
decomposio.
Uma vez feita essa decomposio, o algoritmo executado sobre cada
componente.
As solues so combinadas de acordo com a estrutura das conexes en-
tre os componentes.
UFMG/ICEx/DCC PAA

Grafos 217
Componentes fortemente conectados
Dado um um grafo G = (V, E), o seu grafo transposto G
T
= (V, E
T
) con-
siste das arestas de G com seus sentidos invertidos (E
T
).
c b
e f g
d
a
h
c b
e f g
d
a
h
G G
T
UFMG/ICEx/DCC PAA

Grafos 218
Componentes fortemente conectados: Algoritmo
O algoritmo abaixo calcula os componentes fortemente conectados de um grafo
orientado G = (V, E) fazendo duas pesquisas em profundidade, a primeira
sobre G e a segunda sobre G
T
.
STRONGLY-CONNECTED-COMPONENTS(G)
1 DFS(G) Faz a pesquisa emprofundidade e calcula o tempo de nalizao
f[u] para cada vrtice u.
2 Gere G
T
Gera o grafo transposto G
T
do grafo G.
3 DFS(G
T
) Faz a pesquisa em profundidade para o grafo G
T
, mas no lao
principal de DFS, considere os vrtices em ordem decrescente
de f[u] (como computado na linha 1).
4 Liste os vrtices de cada rvore na oresta DFS formada na linha 3 como um componente
fortemente conectado.
UFMG/ICEx/DCC PAA

Grafos 219
Componentes fortemente conectados: Anlise
Busca em profundidade sobre G : (V +E).
Clculo de G
T
: (V +E).
Busca em profundidade sobre G
T
: (V +E).
Assim, a complexidade de tempo (V +E).
UFMG/ICEx/DCC PAA

Grafos 220
Componentes fortemente conectados: Exemplo
UFMG/ICEx/DCC PAA

Grafos 221
Componentes fortemente conectados: Exemplo
Passo 1
Seja o grafo G abaixo:
Um possvel resultado para o clculo de DFS do grafo G :
Para a pesquisa resultante, temos os seguintes tempos de nalizao f[u] em ordem decres-
cente:
u b e a c d g h f
f[u] 16 15 14 10 9 7 6 4
UFMG/ICEx/DCC PAA

Grafos 222
Componentes fortemente conectados: Exemplo
Passo 2
Dado o grafo G:
O grafo transposto G
T
do grafo G :
UFMG/ICEx/DCC PAA

Grafos 223
Componentes fortemente conectados: Exemplo
Passo 3
u b e a c d g h f
f[u] 16 15 14 10 9 7 6 4
Faz a pesquisa em profundidade para o grafo G
T
, mas no lao principal de DFS, considere os
vrtices em ordem decrescente de f[u] (como computado na linha 1).
UFMG/ICEx/DCC PAA

Grafos 224
Componentes fortemente conectados: Exemplo
Passo 4
Liste os vrtices de cada rvore na oresta DFS formada na linha 3 como um componente
fortemente conectado.
O grafo G pode ser representado por um grafo de componentes G
SCC
= (V
SCC
, E
SCC
)
denido da seguinte forma:
Suponha que G tenha componentes fortemente conectados C
1
, C
2
, . . . , C
k
.
V
SCC
= v
1
, v
2
, . . . , v
k
, onde v
i
representa o componente fortemente conectado C
i
de G.
(v
i
, v
j
) E
SCC
, se G contm a aresta dirigida (x, y)[x C
i
, y C
j
.
No grafo G
SCC
, cada vrtice representa um componente e cada aresta representa a conec-
tividade entre componentes.
UFMG/ICEx/DCC PAA

Grafos 225
Conectividade entre componentes fortemente
conectados
Lema: Sejam C e C
t
dois componentes fortemente conectados distintos do
grafo G. Sejam os vrtices u, v C e u
t
, v
t
C
t
. Suponha que exista um
caminho u Yu
t
G. Ento no pode haver um caminho v Yv
t
G.
Prova.
Se existir um caminho v Y v
t
G, ento existem caminhos u Y u
t
Y v
t
e v
t
Y v Y u em G. Assim, u e v
t
so alcanveis a partir de cada um, o
que contradiz a suposio que C e C
t
so componentes fortemente conectados
distintos.
UFMG/ICEx/DCC PAA

Grafos 226
Problema do carteiro chins
Um carteiro deseja entregar cartas ao longo de todas as ruas
de sua rea de distribuio, e retornar ao posto de distribuio.
Como ele pode planejar as rotas de forma a percorrer a menor
distncia possvel?
Se o grafo for Euleriano, basta percorrer o circuito de Euler.
Caso contrrio, algumas arestas sero percorridas mais de uma vez.
Objetivo: minimizar a distncia a ser percorrida.
UFMG/ICEx/DCC PAA

Grafos 227
Variante do problema do carteiro chins
Problema da limpeza de neve de todas as ruas de uma cidade importante por conta do
tempo necessrio para executar essa tarefa e do custo do equipamento que faz a limpeza.
UFMG/ICEx/DCC PAA

Grafos 228
Problema do carteiro chins
Problema: dado um grafo valorado conexo, ache um circuito de peso total m-
nimo que inclua cada aresta pelo menos uma vez.
3
a
b v
d
c w
2
1
2
4 2 6
5 3
UFMG/ICEx/DCC PAA

Grafos 229
Problema carteiro chins
Passo 1: Identique os m ns de grau mpar de G(V, E) (m sempre par).
Passo 2: Encontre o casamento de pares com a mnima distncia (minimum-
length pairwise matching) desses m ns e identique os
m
2
caminhos mnimos
deste casamento timo.
Passo 3: Adicione estes
m
2
caminhos mnimos como arcos ligando os ns do
casamento timo. O novo grafo G(V, E) contm zero vrtices de grau mpar.
Passo 4: Encontre um ciclo euleriano em G(V, E). Este ciclo a soluo tima
do problema no grafo original G(N,A) e o seu comprimento igual ao com-
primento total das arestas do grafo original mais o comprimento total dos m/2
caminhos mnimos.
c
a
b v
d
2
1
2
4 2 6
5 3
3
w
2
a
b
d
2 2
4 6
5 3
c
v
3
1
1
3
w
2
UFMG/ICEx/DCC PAA

Grafos 230

Vous aimerez peut-être aussi