You are on page 1of 230

Projeto e Anlise de Algoritmos

Grafos: Conceitos e Algoritmos


Antonio Alfredo Ferreira Loureiro
loureiro@dcc.ufmg.br
http://www.dcc.ufmg.br/~loureiro
UFMG/ICEx/DCC PAA

Grafos: Conceitos e Algoritmos 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: Conceitos e Algoritmos 2


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

Grafos: Conceitos e Algoritmos 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: Conceitos e Algoritmos 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: Conceitos e Algoritmos 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: Conceitos e Algoritmos 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: Conceitos e Algoritmos 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: Conceitos e Algoritmos 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: Conceitos e Algoritmos 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: Conceitos e Algoritmos 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: Conceitos e Algoritmos 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: Conceitos e Algoritmos 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: Conceitos e Algoritmos 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: Conceitos e Algoritmos 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: Conceitos e Algoritmos 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: Conceitos e Algoritmos 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 dife-
rentes 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: Conceitos e Algoritmos 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: Conceitos e Algoritmos 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: Conceitos e Algoritmos 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: Conceitos e Algoritmos 20


Modelos usando grafos
Vegetarianos e Canibais (3)
Uma possvel sequncia 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: Conceitos e Algoritmos 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: Conceitos e Algoritmos 22


Grafo simples
Denio: Um grafo simples um grafo que no possui laos nem arestas pa-
ralelas. 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: Conceitos e Algoritmos 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: Conceitos e Algoritmos 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: Conceitos e Algoritmos 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: Conceitos e Algoritmos 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: Conceitos e Algoritmos 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: Conceitos e Algoritmos 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: Conceitos e Algoritmos 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: Conceitos e Algoritmos 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: Conceitos e Algoritmos 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: Conceitos e Algoritmos 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: Conceitos e Algoritmos 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: Conceitos e Algoritmos 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: Conceitos e Algoritmos 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: Conceitos e Algoritmos 36


Grafo bipartido (1)
Denio: Um grafo bipartido um grafo 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. as arestas do grafo, cada aresta conecta algum vrtice v
i
a algum vrtice
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
;
UFMG/ICEx/DCC PAA

Grafos: Conceitos e Algoritmos 37


Grafo bipartido (1)
Denio: Um grafo bipartido um grafo 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. as arestas do grafo, cada aresta conecta algum vrtice v
i
a algum vrtice
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
;
As duas ltimas propriedades so consequncias da primeira.
UFMG/ICEx/DCC PAA

Grafos: Conceitos e Algoritmos 38


Grafo bipartido (2)
Exemplo: Grafos bipartidos.
1
w
4
v
3
w
3
v
4
w
v
1
2
v
3
v
4
v
1
w
2
w
3
w
7
v
8
v
v
6
5
v
4
w
5
w
2
v v
1
1
w
2
w
3
w
4
w
2
w
2
v
v
1
UFMG/ICEx/DCC PAA

Grafos: Conceitos e Algoritmos 39


Grafo bipartido completo (1)
Denio: Um grafo bipartido completo 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
;
UFMG/ICEx/DCC PAA

Grafos: Conceitos e Algoritmos 40


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

Grafos: Conceitos e Algoritmos 41


Grafo de Petersen
Denio: grafo no dirigido cbico com 10 vrtices e 15 arestas, como ilustrado
abaixo. um grafo largamente utilizado como exemplo e contra-exemplo para
muitos problemas em teoria dos grafos.
[Recebe esse nome em homenagem ao matemtico dinamarqus Julius Petersen, que o utilizou
em um trabalho publicado em 1898. No entanto, o primeiro registro do uso desse grafo se deve
a um trabalho de Alfred Kempe, matemtico ingls, 12 anos antes, em 1886.]
Em teoria dos grafos, existem vrios outros grafos que recebem nomes es-
peciais sejam eles baseados em nomes de pessoas (e.g, Folkman, Gabriel,
Heawood, Turn, Yao) ou em propriedades (e.g., autocomplementar, com-
plementar, disco unitrio, intervalar, orientado balanceado, poliedro).
UFMG/ICEx/DCC PAA

Grafos: Conceitos e Algoritmos 42


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: Conceitos e Algoritmos 43


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: Conceitos e Algoritmos 44


Multigrafo dirigido
Denio: Um multigrafo dirigido um grafo que pode ter laos e arestas pa-
ralelas. 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: Conceitos e Algoritmos 45


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: Conceitos e Algoritmos 46


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: Conceitos e Algoritmos 47


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: Conceitos e Algoritmos 48


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: Conceitos e Algoritmos 49


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: Conceitos e Algoritmos 50


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: Conceitos e Algoritmos 51


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: Conceitos e Algoritmos 52


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: Conceitos e Algoritmos 53


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: Conceitos e Algoritmos 54


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: Conceitos e Algoritmos 55


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: Conceitos e Algoritmos 56


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: Conceitos e Algoritmos 57


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: Conceitos e Algoritmos 58


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: Conceitos e Algoritmos 59


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: Conceitos e Algoritmos 60


Caracterstica de um grafo
Teorema: Em qualquer 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: Conceitos e Algoritmos 61


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: Conceitos e Algoritmos 62


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: Conceitos e Algoritmos 63


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: Conceitos e Algoritmos 64


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: Conceitos e Algoritmos 65


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: Conceitos e Algoritmos 66


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: Conceitos e Algoritmos 67


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: Conceitos e Algoritmos 68


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 sequncia 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: Conceitos e Algoritmos 69


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: Conceitos e Algoritmos 70


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: Conceitos e Algoritmos 71


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: Conceitos e Algoritmos 72


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: Conceitos e Algoritmos 73


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: Conceitos e Algoritmos 74


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: Conceitos e Algoritmos 75


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: Conceitos e Algoritmos 76


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: Conceitos e Algoritmos 77


Caminhamentos em grafos
Notao simplicada (1)
Em geral um caminho pode ser identicado de forma no ambgua atravs de
uma sequncia 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: Conceitos e Algoritmos 78


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 sequncia de vrtices.
UFMG/ICEx/DCC PAA

Grafos: Conceitos e Algoritmos 79


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: Conceitos e Algoritmos 80


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: Conceitos e Algoritmos 81


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: Conceitos e Algoritmos 82


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: Conceitos e Algoritmos 83


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: Conceitos e Algoritmos 84


Conectividade (1)
Informalmente um grafo conexo (conectado) se for possvel caminhar de qual-
quer vrtice para qualquer outro vrtice atravs de uma sequncia 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: Conceitos e Algoritmos 85


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: Conceitos e Algoritmos 86


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: Conceitos e Algoritmos 87


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: Conceitos e Algoritmos 88


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: Conceitos e Algoritmos 89


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: Conceitos e Algoritmos 90


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 co-
nexo j que o vrtice v
5
no alcanvel a partir do vrtice
v
4
.
UFMG/ICEx/DCC PAA

Grafos: Conceitos e Algoritmos 91


Circuito Euleriano (1)
Denio: Seja G um grafo. Um circuito Euleriano um circuito que contm
cada vrtice e cada aresta de G. uma sequncia 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: Conceitos e Algoritmos 92


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: Conceitos e Algoritmos 93


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: Conceitos e Algoritmos 94


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: Conceitos e Algoritmos 95


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: Conceitos e Algoritmos 96


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: Conceitos e Algoritmos 97


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: Conceitos e Algoritmos 98


Circuito Euleriano (8)
Prova (continuao):
PASSO 2:
Escolha uma sequncia 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 sequncia de arestas adjacentes distintas pode ser obtida enquanto o vrtice v
no seja alcanado.
Esta sequncia de arestas deve voltar em v j que existe um nmero nito de arestas.
]
UFMG/ICEx/DCC PAA

Grafos: Conceitos e Algoritmos 99


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: Conceitos e Algoritmos 100


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: Conceitos e Algoritmos 101


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: Conceitos e Algoritmos 102


Circuito Euleriano (12)
Prova (continuao):
PASSO 3C:
Escolha uma sequncia 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: Conceitos e Algoritmos 103


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: Conceitos e Algoritmos 104


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: Conceitos e Algoritmos 105


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: Conceitos e Algoritmos 106


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: Conceitos e Algoritmos 107


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: Conceitos e Algoritmos 108


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: Conceitos e Algoritmos 109


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 sequncia 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: Conceitos e Algoritmos 110


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: Conceitos e Algoritmos 111


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: Conceitos e Algoritmos 112


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. Seu trabalho provou ser sig-
nicante para o desenvolvimento da
mecnica quntica.
Em 1859, props um jogo na forma de um
dodecaedro (slido de 12 faces).
UFMG/ICEx/DCC PAA

Grafos: Conceitos e Algoritmos 113


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: Conceitos e Algoritmos 114


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 sequncia de vrtices adja-
centes e arestas distintas tal que cada vrtice de G aparece exatamente uma
nica vez.
UFMG/ICEx/DCC PAA

Grafos: Conceitos e Algoritmos 115


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: Conceitos e Algoritmos 116


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: Conceitos e Algoritmos 117


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: Conceitos e Algoritmos 118


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: Conceitos e Algoritmos 119


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: Conceitos e Algoritmos 120


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: Conceitos e Algoritmos 121


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: Conceitos e Algoritmos 122


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: Conceitos e Algoritmos 123


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: Conceitos e Algoritmos 124


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: Conceitos e Algoritmos 125


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: Conceitos e Algoritmos 126


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: Conceitos e Algoritmos 127


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: Conceitos e Algoritmos 128


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: Conceitos e Algoritmos 129


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: Conceitos e Algoritmos 130


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: Conceitos e Algoritmos 131


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: Conceitos e Algoritmos 132


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: Conceitos e Algoritmos 133


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: Conceitos e Algoritmos 134


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: Conceitos e Algoritmos 135


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: Conceitos e Algoritmos 136


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: Conceitos e Algoritmos 137


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: Conceitos e Algoritmos 138


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: Conceitos e Algoritmos 139


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: Conceitos e Algoritmos 140


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: Conceitos e Algoritmos 141


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: Conceitos e Algoritmos 142


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: Conceitos e Algoritmos 143


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: Conceitos e Algoritmos 144


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: Conceitos e Algoritmos 145


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 diferen-
tes apesar de possurem os
mesmos conjuntos de vr-
tices e arestas.
As funes arestavrtice
no so as mesmas.
UFMG/ICEx/DCC PAA

Grafos: Conceitos e Algoritmos 146


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: Conceitos e Algoritmos 147


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: Conceitos e Algoritmos 148


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: Conceitos e Algoritmos 149


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: Conceitos e Algoritmos 150


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: Conceitos e Algoritmos 151


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: Conceitos e Algoritmos 152


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: Conceitos e Algoritmos 153


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: Conceitos e Algoritmos 154


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: Conceitos e Algoritmos 155


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: Conceitos e Algoritmos 156


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: Conceitos e Algoritmos 157


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: Conceitos e Algoritmos 158


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

Grafos: Conceitos e Algoritmos 159


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: Conceitos e Algoritmos 160


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

Grafos: Conceitos e Algoritmos 161


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

Grafos: Conceitos e Algoritmos 162


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: Conceitos e Algoritmos 163


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: Conceitos e Algoritmos 164


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: Conceitos e Algoritmos 165


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 u-
sando 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: Conceitos e Algoritmos 166


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: Conceitos e Algoritmos 167


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: Conceitos e Algoritmos 168


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: Conceitos e Algoritmos 169


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

Grafos: Conceitos e Algoritmos 170


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

Grafos: Conceitos e Algoritmos 171


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: Conceitos e Algoritmos 172


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: Conceitos e Algoritmos 173


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: Conceitos e Algoritmos 174


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: Conceitos e Algoritmos 175


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: Conceitos e Algoritmos 176


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: Conceitos e Algoritmos 177


Comentrios e anlise do algoritmo (1)
1 for each vertex u V [G] s
2 do color [u] white
3 d[u]
4 [u] nil
Linhas 14: Inicializao I
Inicializao de cada vrtice para white (no
descoberto).
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.
5 color [s] gray
6 d[s] 0
7 [s] nil
8 Q s
Linhas 58: Inicializao II
Inicializao de s com gray ( considerado
descoberto).
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 descobertos em largura).
Anlise:
Linhas 58: O(1).
UFMG/ICEx/DCC PAA

Grafos: Conceitos e Algoritmos 178


Comentrios e anlise do algoritmo (2)
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
Linhas 918: Loop
Loop executado at que a la esteja vazia,
ou seja, no hajam vrtices gray.
Cada vrtice colocado e retirado da la so-
mente 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 adja-
cente 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: Conceitos e Algoritmos 179


Comentrios e anlise do algoritmo (3)
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
Anlise:
Operaes de colocar e retirar da la cada
vrtice O(1) e o tempo total relacionado
com as operaes de la O(V ).
A lista de adjacncia de cada vrtice u per-
corrida somente uma nica vez quando esse
vrtice ser retirado de Q.
A soma dos comprimentos das las de ad-
jacncia O(E), assim como o tempo para
percorr-la.
Linhas 918: O(V + E), que o custo das
operaes 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: Conceitos e Algoritmos 180


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

Grafos: Conceitos e Algoritmos 181


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

Grafos: Conceitos e Algoritmos 182


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

Grafos: Conceitos e Algoritmos 183


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: Conceitos e Algoritmos 184


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: Conceitos e Algoritmos 185


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: Conceitos e Algoritmos 186


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: Conceitos e Algoritmos 187


Imprime caminho mais curto
PRINT-PATH(G, s, v)
1 if v = s
2 then print s
3 else if [v] = nil
4 then print no path from s to v exists
5 else PRINT-PATH(G, s, [v])
6 print v
Anlise:
Executa em tempo O(V ).
UFMG/ICEx/DCC PAA

Grafos: Conceitos e Algoritmos 188


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: Conceitos e Algoritmos 189


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

Grafos: Conceitos e Algoritmos 190


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: Conceitos e Algoritmos 191


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: Conceitos e Algoritmos 192


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: Conceitos e Algoritmos 193


Algoritmo para calcular DFS (4)
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)
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 [v] u
7 DFS-VISIT(v)
8 color [u] black Vrtice u nalizado
9 time time +1
10 f[u] time
UFMG/ICEx/DCC PAA

Grafos: Conceitos e Algoritmos 194


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: Conceitos e Algoritmos 195


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 o vrtice u foi des-
coberto.
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: Conceitos e Algoritmos 196


Execuo do algoritmo DFS
UFMG/ICEx/DCC PAA

Grafos: Conceitos e Algoritmos 197


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: Conceitos e Algoritmos 198


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
chamadas 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.
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: Conceitos e Algoritmos 199


Propriedades da pesquisa em profundidade (2)
Resultado de uma pesquisa em profundidade sobre
um grafo G.
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 de cima para baixo e as outras arestas que
no fazem parte dela (B, F e C).
UFMG/ICEx/DCC PAA

Grafos: Conceitos e Algoritmos 200


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: Conceitos e Algoritmos 201


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: Conceitos e Algoritmos 202


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: Conceitos e Algoritmos 203


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 descendentes 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: Conceitos e Algoritmos 204


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: Conceitos e Algoritmos 205


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: Conceitos e Algoritmos 206


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: Conceitos e Algoritmos 207


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: Conceitos e Algoritmos 208


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: Conceitos e Algoritmos 209


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 o vr-
tice u aparea sozinho na rvore de pesquisa em profundidade.
UFMG/ICEx/DCC PAA

Grafos: Conceitos e Algoritmos 210


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
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: Conceitos e Algoritmos 211


Classicao de arestas na DFS (2)
Aresta incidente a um vrtice:
white : aresta T
Identicao imediata a partir da especicao do algoritmo.
gray : aresta B
Vrtices cinza (gray) formam uma sequncia 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: Conceitos e Algoritmos 212


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: Conceitos e Algoritmos 213


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: Conceitos e Algoritmos 214


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: Conceitos e Algoritmos 215


Ordenao topolgica
DAGs so usados em aplicaes para indicar precedncia entre eventos.
O grafo abaixo 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 (meias antes dos sa-
patos);
Outras, em qualquer ordem (meias e calas).
Uma ordenao topolgica desse DAG fornece uma ordem para o processo
de se vestir.
UFMG/ICEx/DCC PAA

Grafos: Conceitos e Algoritmos 216


Algoritmo de ordenao topolgica
TOPOLOGICAL-SORT(G)
1 DFS(G) Chama DFS para calcular o instante de trmino f[u] para cada vr-
tice 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: Conceitos e Algoritmos 217


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

Grafos: Conceitos e Algoritmos 218


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: Conceitos e Algoritmos 219


Componentes fortemente conexos
Um grafo orientado fortemente conexo se cada um de dois vrtices quais-
quer acessvel a partir do outro.
Um componente fortemente conexo 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.
UFMG/ICEx/DCC PAA

Grafos: Conceitos e Algoritmos 220


Componentes fortemente conexos
A busca em profundidade pode ser utilizada tambm para realizar a decom-
posio de um grafo orientado em seus componentes fortemente conexos.
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: Conceitos e Algoritmos 221


Componentes fortemente conexos
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
).
G G
T
UFMG/ICEx/DCC PAA

Grafos: Conceitos e Algoritmos 222


Componentes fortemente conexos: Algoritmo
O algoritmo abaixo calcula os componentes fortemente conexos 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 prin-
cipal 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 conexo..
UFMG/ICEx/DCC PAA

Grafos: Conceitos e Algoritmos 223


Componentes fortemente conexos: 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: Conceitos e Algoritmos 224


Componentes fortemente conexos: 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: Conceitos e Algoritmos 225


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

Grafos: Conceitos e Algoritmos 226


Componentes fortemente conexos: Exemplo
Passo 3
Pesquisa em profundidade o grafo G
T
, sendo que no lao principal do DFS os vrtices so
considerados em ordem decrescente de f[u] (como computado no passo 1).
u b e a c d g h f
f[u] 16 15 14 10 9 7 6 4
UFMG/ICEx/DCC PAA

Grafos: Conceitos e Algoritmos 227


Componentes fortemente conexos: Exemplo
Passo 4
Os vrtices de cada rvore na oresta DFS formada no passo 3 so listados como um compo-
nente fortemente conexo do grafo original.
Grafo G
T
com a oresta DFT:
Grafo G com os componentes conexos:
UFMG/ICEx/DCC PAA

Grafos: Conceitos e Algoritmos 228


Componentes fortemente conexos e o grafo G
SCC
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 conexos C
1
, C
2
, . . . , C
k
.
V
SCC
= v
1
, v
2
, . . . , v
k
, onde v
i
representa o componente fortemente conexo 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 conectivi-
dade entre componentes.
Grafo G com os componentes conexos Grafo G
SCC
UFMG/ICEx/DCC PAA

Grafos: Conceitos e Algoritmos 229


Conectividade entre componentes fortemente
conexos
Lema: Sejam C e C
t
dois componentes fortemente conexos 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
t
Yv G.
Prova. Suponha que exista um caminho v
t
Y v G. Devem existir, ento,
caminhos u Y u
t
Y v
t
e v
t
Y v Y u G. Assim, u, que pertence ao
componente fortemente conexo C, alcanvel por um caminho que passa pelo
componente fortemente conexo C
t
, o que implica que os componentes conexos
C e C
t
deveriam ser um nico componente. Isso contradiz a suposio que eles
so distintos e, assim, no pode haver o caminho v
t
Yv G.
UFMG/ICEx/DCC PAA

Grafos: Conceitos e Algoritmos 230