Buscar

DCC059-Roteiro_Professor

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 306 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 306 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 306 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

DCC059 Teoria dos GrafosDCC059 Teoria dos Grafos
Stênio Sã
Universidade Federal de Juiz de ForaUniversidade Federal de Juiz de Fora
Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação
2DCC059 - Teoria dos Grafos
Unidade 1: CONCEITOS BÁSICOS
3DCC059 - Teoria dos Grafos
Aula 1: visão geral da 
disciplina
4DCC059 - Teoria dos Grafos
5DCC059 - Teoria dos Grafos
Em 1735, Euler provou que o problema não 
tem solução.
A prova de Euler deu início ao que se conhece 
hoje como Teoria dos Grafos.
6DCC059 - Teoria dos Grafos
Grafos são estruturas bastante utilizadas para representar ou modelar 
soluções/problemas do mundo real;
Em geral, estes modelos se dão através de representação gráfica, onde 
cada elemento do mundo real (no contexto do problema) é representado por 
um ponto, círculo ou outra figura, e as relações entre elementos são 
representados por linhas, que unem elementos da relação.
Exemplo:
G=(V,E)
V={A, B, C, D)
E={a,b,c,d,e,f,g} 
7DCC059 - Teoria dos Grafos
8DCC059 - Teoria dos Grafos
9DCC059 - Teoria dos Grafos
Note que um mesmo grafo pode ser representado graficamente de diferentes 
formas.
10DCC059 - Teoria dos Grafos
Aplicações de Grafos
11DCC059 - Teoria dos Grafos
Aplicações de Grafos
12DCC059 - Teoria dos Grafos
Aplicações de Grafos
13DCC059 - Teoria dos Grafos
Aplicações de Grafos
14DCC059 - Teoria dos Grafos
e3
e2
e4
e5
e9e6
e8
e10
e11
e1 e12e7
v1
v2
v3 v4
v5
v6
v7
v8
v9
V = {v1, v2, v3, v4, v5, v6, v7, v8, v9} n = 9
E = {e1, e2, e3, e4,..., e9, e10, e11, e12} m = 12
Aulas 2, 3 e 4 – Conceitos Aulas 2, 3 e 4 – Conceitos 
BásicosBásicos
• Grafo: Geometricamente, um grafo é um conjunto 
de pontos (vértices ou nós) conectados por linhas 
(arestas).
15DCC059 - Teoria dos Grafos
 V = {v1, v2, ..., vn} |V | = n (ordem de G)
 E = {e1, e2, ..., em} |E | = m
 G = (V, E)
vértices arestas
Conceitos BásicosConceitos Básicos
• Grafo: Geometricamente, um grafo é um conjunto 
de pontos (vértices ou nós) conectados por linhas 
(arestas).
• Um grafo G pode ser definido por um par (V,E), onde 
V é o conjunto de Vértices e E é o conjunto de 
arestas.
16DCC059 - Teoria dos Grafos
Conceitos BásicosConceitos Básicos
Dizemos que: u e v são adjacentes
e é incidente a v
e é incidente a u
• Aresta: é definida por um par não-ordenado de nós, suas 
extremidades:
e = (u , v)
e5
e4
e2 e3
e1
e = (u, v) é um laço se u =v
arestas paralelas possuem 
as mesmas extremidades
17DCC059 - Teoria dos Grafos
Conceitos BásicosConceitos Básicos
e3
e2
e4
e5
e9e6
e8
e10
e11
e1 e12e7
v1
v2
v3 v4
v5
v6
v7
v8
v9
grau de um nó v d(v) : é o número de arestas incidentes 
a v, ou seja, número de nós adjacentes a v.
d(v1) = d(v2) = d(v8) = d(v9) = 2
d(v3) = d(v4) = d(v5) = d(v6) = 3
d(v7) = 4
Quando d(v) = 0, diz-se que v é um vértice isolado
18DCC059 - Teoria dos Grafos
Conceitos BásicosConceitos Básicos
Teorema: o número de nós de grau ímpar em um grafo 
finito é par.
Demonstre: 
19DCC059 - Teoria dos Grafos
Conceitos BásicosConceitos Básicos
Um grafo G=(V,E) é regular se d(vi) = d(vj) para todo i, 
j tal que vij e vj pertencente a V.
Grafo k-regular: é o grafo em que todos os nós têm grau k.
20DCC059 - Teoria dos Grafos
Conceitos BásicosConceitos Básicos
e3
e2
e4
e5
e9e6
e8
e10
e11
e1 e12e7
v1
v2
v3 v4
v5
v6
v7
v8
v9
grau de um grafo G=(V,E) d(G): é o valor do maior 
inteiro d(v) para todo v pertencente a V.
d(G) = 4
21DCC059 - Teoria dos Grafos
Conceitos BásicosConceitos Básicos
Classes especiais de grafos
• Quando tanto V quanto E são conjuntos finitos, dizemos 
que G é um grafo finito. 
• G é um grafo vazio se E for vazio.
• G é u grafo trivial se sua ordem for 1.
• G é um multigrafo se não possui laços e apresenta 
arestas paralelas.
• G é um grafo simples se não possui laços nem arestas 
paralelas.
22DCC059 - Teoria dos Grafos
Conceitos BásicosConceitos Básicos
grafo completo: um grafo G é dito completo se existe uma aresta 
associada a cada par de vértices de G.
Teorema: o número m de arestas em um grafo completo de n nós 
é dado por: m=n*(n-1)/2.
Prove por indução!
23DCC059 - Teoria dos Grafos
Conceitos BásicosConceitos Básicos
• Kn: grafo completo com n nós
K3 K4 K5
Kn é (n-1)-regular
24DCC059 - Teoria dos Grafos
????????
????????
Conceitos BásicosConceitos Básicos
Seja G=(V,E): quando o conjunto V pode ser particionado em dois 
subconjuntos disjuntos Vi e Vj tais que Vi ∩ Vj = Φ; Vi Ụ Vj = V; 
 e ∀ (u,v) Є E ⇒ u Є Vi e v Є Vj, dizemos que G é um grafo 
bipartido.
V1 V2
????????
????????
25DCC059 - Teoria dos Grafos
Conceitos BásicosConceitos Básicos
Grafo bipartido completo Kp,q: quando o conjunto de nós pode 
ser particionado em dois subconjuntos V1 e V2 | |V1 |=p, |V2 
|=q, qualquer aresta possui uma extremidade em V1 e a outra 
em V2. e d(v) = q se v є V1 e d(v) = p se v є V2.
e
c
g
a
f
d
b
V1 V2
26DCC059 - Teoria dos Grafos
Conceitos BásicosConceitos Básicos
• é um subgrafo de :
 
• Grafo induzido em por :
onde E(X) é o subconjunto de E formado por todas as 
arestas com as duas extremidades em X.
G(X)
G X = {2, 3, 4, 5}
1 2
3
4
5
6
G=(V,E )
G=(V,E )
V'⊆V,E'⊆E
X⊆V
G'=(V ', E' )
G(X )=( X,E(X ))
27DCC059 - Teoria dos Grafos
Conceitos BásicosConceitos Básicos
• Clique: subconjunto de nós que induz um subgrafo 
completo.
1
3
2
4
5
6
28DCC059 - Teoria dos Grafos
Conceitos BásicosConceitos Básicos
• Clique: subconjunto de nós que induz um subgrafo 
completo.
C1 = {1, 2, 3}
1
3
2
4
5
6
29DCC059 - Teoria dos Grafos
Conceitos BásicosConceitos Básicos
• Clique: subconjunto de nós que induz um subgrafo 
completo.
C1 = {1, 2, 3}5
C2 = {2, 4, 5}1
3
2
4
5
6
30DCC059 - Teoria dos Grafos
Conceitos BásicosConceitos Básicos
• Clique: subconjunto de nós que induz um subgrafo 
completo.
C1 = {1, 2, 3}
C2 = {2, 4, 5}
C3 = {4, 6}
1
3
2
4
5
6
31DCC059 - Teoria dos Grafos
Conceitos BásicosConceitos Básicos
• Clique: subconjunto de nós que induz um subgrafo 
completo.
C1 = {1, 2, 3}
C2 = {2, 4, 5}
C3 = {4, 6}
C4 = {3} 
1
3
2
4
5
6
32DCC059 - Teoria dos Grafos
Conceitos BásicosConceitos Básicos
• Clique: subconjunto de nós que induz um subgrafo 
completo.
C1 = {1, 2, 3}
C2 = {2, 4, 5}
C3 = {4, 6}
C4 = {3} 
1
3
2
4
5
6
33DCC059 - Teoria dos Grafos
Conceitos BásicosConceitos Básicos
• Exemplo:
G
1
3
2
4
1
3
2
4G'
• Grafos complementares: dois grafos G=(V,E) e 
G'=(V',E') são complementares se: 
( i,j )∈E⇒( i,j)∉E' ( i,j )∉E⇒( i,j )∈E'e
34DCC059 - Teoria dos Grafos
Conceitos BásicosConceitos Básicos
• Caminho de a :
Sequência P de vértices e arestas alternados, tais que cada 
aresta é incidente ao nó anterior e ao nó posterior.
 P é um ciclo ou circuito.
v i v j
v i=v j⇒
– Caminho simples: cada vértice aparece exatamente uma 
vez
– Comprimento de um caminho: número de arestas
– Caminhos disjuntos em vértices/arestas: não têm 
vértices/arestas em comum
35DCC059 - Teoria dos Grafos
Conceitos BásicosConceitos Básicos
• Vértices vi e vj são conectados se existe um caminho de vi a 
vj.
• Dois vértices vi e vj estão na mesmacomponente conexa se 
existe um caminho entre eles.
• Um grafo é conexo se possui uma única componente conexa, 
ou seja, se existe um caminho entre qualquer par de nós
É conexo?
Problema importante: determinar se um grafo é conexo 
ou não.
36DCC059 - Teoria dos Grafos
• Um grafo gerador de um grafo conexo G=(V,E) é um subgrafo 
conexo G’ com o mesmo conjunto de nós V.
Conceitos BásicosConceitos Básicos
Grafo G Grafo gerador de G
37DCC059 - Teoria dos Grafos
• Um grafo gerador de um grafo conexo G=(V,E) é um subgrafo 
conexo G’ com o mesmo conjunto de nós V.
Conceitos BásicosConceitos Básicos
Grafo G Grafo gerador de G
38DCC059 - Teoria dos Grafos
• Um grafo gerador de um grafo conexo G=(V,E) é um subgrafo 
conexo G’ com o mesmo conjunto de nós V.
Conceitos BásicosConceitos Básicos
Grafo G Grafo gerador de G
39DCC059 - Teoria dos Grafos
• Um grafo gerador de um grafo conexo G=(V,E) é um subgrafo 
conexo G’ com o mesmo conjunto de nós V.
Conceitos BásicosConceitos Básicos
Grafo G Grafo gerador de G
40DCC059 - Teoria dos Grafos
Conceitos BásicosConceitos Básicos
• v é um ponto de articulação do grafo conexo G se sua 
remoção desconecta G.
41DCC059 - Teoria dos Grafos
Conceitos BásicosConceitos Básicos
• v é um ponto de articulação do grafo conexo G se sua 
remoção desconecta G.
• Se uma componente conexa de um grafo não contém ponto 
de articulação, então ela é uma componente 2-conexa.
Importante:
42DCC059 - Teoria dos Grafos
Conceitos BásicosConceitos Básicos
• Uma aresta e, cuja remoção desconecta um grafo conexo é 
chamada de ponte.
43DCC059 - Teoria dos Grafos
Conceitos BásicosConceitos Básicos
• Uma aresta e cuja remoção desconecta um grafo conexo é 
chamada de ponte.
44DCC059 - Teoria dos Grafos
Conceitos BásicosConceitos Básicos
• Digrafo ou grafo orientado: grafo no qual são 
associadas direções aos seus arcos.
G=(V,A )
V= {v1 , . .. ,vn }
A= {a1 , .. . ,am }
a=( i,j )∈V×V par 
ordenado
Início ou origem Fim ou destino
1
2
3
4
5
6
d−( i)
d+ ( i)
= grau de entrada de i 
= número de predecessores de i
= grau de saída de i 
= número de sucessores de i
d−(1)=
d−( 4 )=
d+ (4 )=
d+ (6 )=
1
3
0
1
j é sucessor de i
i é predecessor de j
i j
45DCC059 - Teoria dos Grafos
Conceitos BásicosConceitos Básicos
Uma cadeia a1, a2, ..., aq de arcos é uma sequência tal que 
cada arco ai tem uma extremidade comum com o arco ai-1 
e outra com o arco ai+1, 2 ≤ i ≤ q-1.
32
41
5
a1 a2
a3
a5
a6
a4
a7
a2, a5, a6, a4 → cadeia entre os nós 2 e 3
• Ciclo: cadeia cujas extremidades coincidem.
• Caminho a1, a2,..., aq: extremidade final do arco ai coincide 
com a extremidade inicial do arco ai+1.
• Circuito: caminho cujas extremidades coincidem.
46DCC059 - Teoria dos Grafos
Conceitos BásicosConceitos Básicos
Dois vértices vi e vj estão na mesma componente fortemente 
conexa de um grafo orientado se existe um caminho de vi a vj 
e um caminho de vj a vi para todo par de vértices vi e vj.
{1, 2, 3, 4, 5, 6, 8, 9, 10}
{7}
{1, 2, 3, 4}
{5, 6, 7}
3
2
4
1
5
6 7
9
10
8
32
41
5
6
7
47DCC059 - Teoria dos Grafos
Conceitos BásicosConceitos Básicos
• Grafos planares:
Um grafo é planar se ele pode ser representado no plano de 
modo tal que não haja interseção entre suas arestas.
K3 ?
K5 ?
K4 ?
K3,3 ?
PLANAR
NÃO
PLANAR
NÃO
48DCC059 - Teoria dos Grafos
Conceitos BásicosConceitos Básicos
• Árvore: grafo conexo sem circuitos
• Floresta: grafo cujas componentes conexas são 
árvores
Um caminho é uma árvore?
49DCC059 - Teoria dos Grafos
Conceitos BásicosConceitos Básicos
Teorema: Se T é uma árvore com n vértices, então:
• Existe um único caminho entre dois nós quaisquer de T.
• Sejam i, j dois nós de T tais que a aresta (i, j) não existe. 
Então, a inserção da aresta (i, j) em T provoca a formação de 
exatamente um ciclo.
• T possui n-1 arestas.
50DCC059 - Teoria dos Grafos
Conceitos BásicosConceitos Básicos
• Matriz de incidência nó-arco:
Uma linha para cada nó
Uma coluna para cada aresta
Formas de representação e matrizes associadas a um grafo
G=(V,A )
∣V ∣=n
∣A∣=m
a=( i,j )∈A
a
i
j
[ 0+10−1
0
]
1 2
34
a1
a2
a3
a4
a5
Am×n=[+1 +1 0 0 0−1 0 +1 +1 00 −1 −1 0 +10 0 0 −1 −1 ]
51DCC059 - Teoria dos Grafos
Conceitos BásicosConceitos Básicos
• Matriz de adjacência:
Uma linha para cada nó
Uma coluna para cada nó
a23
1 2
34
a12
a13
a24
a34
An×n=[0 1 1 00 0 1 10 0 0 10 0 0 0 ]
Grafos sem arcos paralelos:
1 2
34
1 2
34
n2 
posições
aij = 1 → (i , j ) ∈ A
aij = 0 → (i , j ) ∉ A
Formas de representação e matrizes associadas a um grafo
52DCC059 - Teoria dos Grafos
Conceitos BásicosConceitos Básicos
• Lista de nós:
Cada nó aponta para a lista de seus sucessores (ou 
nós adjacentes)
1 2
34
n nós m arestas ⇒ n +m posições
1
2
3
4
2 3
3 4
4
nós sucessores nós predecessores
1
2
3
4
1
1 2
2 3
Formas de representação e matrizes associadas a um grafo
53DCC059 - Teoria dos Grafos
Conceitos BásicosConceitos Básicos
1 3 5 7
m
n
1 2 3 4
1 3 1 3 2 1
1 2 3 4 5 6 7
Lista de arcos
1 2
34
S(.)
2 3 4 3 2 3
1 1 1 2 4 4
T(.)
É simples passar de uma forma de representação para outra.
Formas de representação e matrizes associadas a um grafo
54DCC059 - Teoria dos Grafos
Conceitos BásicosConceitos Básicos
Desenhar o grafo representado pela matriz de 
adjacência abaixo:
A=[
0 1 0 0 0 1
0 0 1 0 0 1
0 0 0 1 0 0
0 0 1 0 0 0
0 1 0 1 0 0
1 0 1 0 1 0
]
Quais são as componentes fortemente conexas deste 
grafo?
Representar sua matriz de incidência.
{1,2,5,6}, {3,4}[
+1 +1 −1 0 0 0 0 0 0 0 0
−1 0 0 0 +1 0 +1 −1 0 0 0
0 0 0 −1 0 0 −1 0 0 +1 −1
0 0 0 0 0 0 0 0 −1 −1 +1
0 0 0 0 0 −1 0 +1 +1 0 0
0 −1 +1 +1 −1 +1 0 0 0 0 0
]
1
2
3
4
5
6
1 2 3 4 5 6 7 8 9 10 11 
55DCC059 - Teoria dos Grafos
Conceitos BásicosConceitos Básicos
Representar o mesmo grafo por sua lista de 
adjacências.
Representar o grafo por sua lista de arcos.
1
2
3
4
5
6
2 6
3 6
4
2 4
1 3
3
5
 1 1 6 6 2 6 2 5 5 3 4
 2 6 1 3 6 5 3 2 4 4 3
 1 2 3 4 5 6 7 8 9 10 11
1 2
3
4
5
6
1
2
3
4
5
6
7
8
9
10
11
56DCC059 - Teoria dos Grafos
Conceitos BásicosConceitos Básicos
Representar o mesmo grafo por sua lista de 
adjacências.
Representar o grafo por sua lista de arcos.
1
2
3
4
5
6
2 6
3 6
4
2 4
1 3
3
5
 1 1 6 6 2 6 2 5 5 3 4
 2 6 1 3 6 5 3 2 4 4 3
 1 2 3 4 5 6 7 8 9 10 11
57DCC059 - Teoria dos Grafos
Conceitos BásicosConceitos Básicos
Algoritmo para converter uma representação de um grafo 
orientado sob forma de matriz de adjacência em matriz de 
incidência.
Ler número de nós n, matriz A
linha ← 1, coluna ← 1, arco ← 0
Enquanto linha ≤ n faça
 Enquanto coluna ≤ n faça
 Se A(linha,coluna)=1 então
 arco ← arco+1, k ← 1
 Enquanto k ≤ n faça
 B(k,arco) ← 0
 k ← k+1
 fim_enquanto
 B(linha,arco) ← +1
 B(coluna,arco) ← -1
 fim_se
 coluna ← coluna +1
 fim_enquanto
 coluna ← 1
 linha ← linha +1
fim_enquanto58DCC059 - Teoria dos Grafos
Conceitos BásicosConceitos Básicos
ISOMORFISMO
Sejam G1=(V1,E1) e G2=(V2,E2) dois grafos:
G1 é idêntico a G2 sse: V1=V2 e E1=E2.
Note que dois grafos idênticos PODEM ser representados 
graficamente de maneira idêntica (note que G1, G2 e G3 são 
idênticos).
59DCC059 - Teoria dos Grafos
Conceitos BásicosConceitos Básicos
ISOMORFISMO
Sejam G1=(V1,E1) e G2=(V2,E2) dois grafos:
G1 é idêntico a G2 sse: V1=V2 e E1=E2.
Note que G3 e G4 são representados de forma semelhante 
graficamente. Porém, eles não são grafos idênticos, já que o 
vértice c de G3 possui rótulo diferente em G4 (seu rótulo em 
G4 é z).
60DCC059 - Teoria dos Grafos
Conceitos BásicosConceitos Básicos
ISOMORFISMO
Sejam G1=(V1,E1) e G2=(V2,E2) dois grafos:
G3 e G4 são chamados grafos isomorfos
61DCC059 - Teoria dos Grafos
Conceitos BásicosConceitos Básicos
ISOMORFISMO
62DCC059 - Teoria dos Grafos
Conceitos BásicosConceitos Básicos
ISOMORFISMO
63DCC059 - Teoria dos Grafos
Conceitos BásicosConceitos Básicos
Exercício:
1 - Escrever um algoritmo para converter a representação 
de um grafo orientado sob forma de matriz de 
incidência em uma representação por listas de 
adjacência.
2 – Seja um grafo G=(V,E) tal que |V|=20 e |E|=62 e 
d(vi)=3 ou d(vi)=7 para todo i Є V. O que se pode 
afirmar quanto ao número de vértice de grau 3?
3 – Mostre se existe ou não um grafo 3-regular com 7 
vértices.
4 – Prove que em um grafo, o número de vértices de grau 
ímpar é par. 
64DCC059 - Teoria dos Grafos
Conceitos BásicosConceitos Básicos
Exercício:
5 – Prove que se um grafo G=(V,E) é um grafo k-regular, 
então |E|=(k * |V|)/2.
6 – Dados os grafos abaixo, definir se são ou não 
isomorfos:
a)
65DCC059 - Teoria dos Grafos
Conceitos BásicosConceitos Básicos
Exercício:
6 – Dados os grafos abaixo, definir se são ou não 
isomorfos:
b)
66DCC059 - Teoria dos Grafos
Conceitos BásicosConceitos Básicos
Exercício:
6 – Dados os grafos abaixo, definir se são ou não 
isomorfos:
c)
67DCC059 - Teoria dos Grafos
Conceitos BásicosConceitos Básicos
Exercício:
6 – Dados os grafos abaixo, definir se são ou não 
isomorfos:
d)
68DCC059 - Teoria dos Grafos
CAMINHAMENTOS EM GRAFOS
69DCC059 - Teoria dos Grafos
Caminhamento em GrafosCaminhamento em Grafos
Dados: 
G = (V,E)
V = {1, 2, ..., n} conjunto de nós
E = { (u1,v1), ..., (um,vm)} conjunto de arestas
Representação por listas de adjacências
5 3
1
2
4
1
2
3
4
5
4 3
3 4
1
3
1 2
5 2
70DCC059 - Teoria dos Grafos
Caminhamento em GrafosCaminhamento em Grafos
Caminhar/percorrer um grafo: 
visitar todos os nós e arestas
Enquanto for possível, aprofundar-se no grafo. 
Quando não for mais possível, recuar.
BUSCA EM PROFUNDIDADEBUSCA EM PROFUNDIDADE
8
9
1
5
4
2
6
3
7
101
4
6
7
8
3
2
10
5
9
1º1º
2º2º
3º3º
4º4º
5º5º
6º6º7º7º
8º8º
9º9º
10º10º
71DCC059 - Teoria dos Grafos
Caminhamento em GrafosCaminhamento em Grafos
8
9
1
5
4
2
6
3
7
101
4
6
7
8
3
2
10
5
9
1º1º
2º2º
3º3º
4º4º
5º5º
6º6º7º7º
8º8º
9º9º
10º10º
1
4
6 5
7
8 3
2 10
9
72DCC059 - Teoria dos Grafos
Caminhamento em GrafosCaminhamento em Grafos
A ordem em que os nós e arestas são visitados depende:
do nó inicial
da ordem em que os nós e as arestas aparecem na estrutura 
de dados
73DCC059 - Teoria dos Grafos
Caminhamento em GrafosCaminhamento em Grafos
Algoritmo recursivo para busca a partir de um nóAlgoritmo recursivo para busca a partir de um nó
Procedimento PROF(nó v)
 visitado(v) ← sim
 Para cada nó w adjacente a v faça
 Se visitado(w) = não então
 PROF(w)
 fim-para
Fim
74DCC059 - Teoria dos Grafos
Caminhamento em GrafosCaminhamento em Grafos
Exemplo:
D
A
E
B C
F G
H
A
B
C
D
E
F
G
H
B C
A
B H
F G
A D E
B H
C H
C H
D E F G
11
A
D E
B C
F G
H
22
33
44
55 66
77
88 X
X
X
X
X
X
X
X
não visitado
visitado
75DCC059 - Teoria dos Grafos
Caminhamento em GrafosCaminhamento em Grafos
Exemplo:
D
A
E
B C
F G
H
11
A
D E
B C
F G
H
22
33
44
55 66
77
88
A
B
E F
D
H
C
G
Árvore de busca Árvore de busca 
em profundidadeem profundidade
(pilha)(pilha)
Árvore de busca Árvore de busca 
em profundidadeem profundidade
(pilha)(pilha)
76DCC059 - Teoria dos Grafos
Caminhamento em GrafosCaminhamento em Grafos
Procedimento BUSCA-PROF
 Para i = 1,...,n faça
 visitado(i) ← não
 fim-para
 Para i = 1,...,n faça
 Se visitado(i) = não então
 PROF(i)
 fim-para
Fim
Algoritmo de busca em profundidadeAlgoritmo de busca em profundidade
77DCC059 - Teoria dos Grafos
Caminhamento em GrafosCaminhamento em Grafos
Exemplo:
11
8
2
3
1
7
5
6
4
11
9
14
12
10
13
8
1
322
4
33
5
44
6
55
7
66
2
77
9
88
99
14
1010
11
1111
10
1212
13
1313
12
1414
78DCC059 - Teoria dos Grafos
Caminhamento em GrafosCaminhamento em Grafos
Exemplo:
11
8
2
3
1
7
5
6
4
11
9
14
12
10
13
8
1
322
4
33
5
44
6
55
7
66
2
77
9
88
99
14
1010
11
1111
10
1212
13
1313
12
1414
79DCC059 - Teoria dos Grafos
Caminhamento em GrafosCaminhamento em Grafos
Aplicações de busca em profundidade, grafo 
G=(V,E):
G é acíclico?
G é conexo?
G é bipartido?
Quais são as componentes conexas de G?
Quais são as componentes biconexas de G?
Quais são os pontos de articulação de G?
80DCC059 - Teoria dos Grafos
Caminhamento em GrafosCaminhamento em Grafos
Procedimento COMPONENTES-CONEXAS
 Para i = 1,...,n faça
 visitado(i) ← 0
 fim-para
 componente ← 0
 Para i = 1,...,n faça
 Se visitado(i) = 0 então
 componente ← componente + 1
 PROF(i, componente)
 fim-se
 fim-para
Fim
Algoritmo para encontrar as componentes conexasAlgoritmo para encontrar as componentes conexas
81DCC059 - Teoria dos Grafos
Caminhamento em GrafosCaminhamento em Grafos
Procedimento PROF(v, marca)
 visitado(v) ← marca
 Para cada nó w adjacente a v faça
 Se visitado(w) = 0 então
 PROF(w, marca)
 fim-se
 fim-para
Fim
Algoritmo para encontrar as componentes conexasAlgoritmo para encontrar as componentes conexas
82DCC059 - Teoria dos Grafos
Caminhamento em GrafosCaminhamento em Grafos
Exemplo: Problema do mosaicoProblema do mosaico
Quantos e quais mosaicos intermediários 
existem entre dois mosaicos específicos?
Novas configurações 
(mosaicos) são obtidas através 
do movimento de um elemento 
para a posição vazia.
4 5 3
8
2
7
1
6
■
1 2 3
4
57 6
8 ■
4 5 3
8
2
7
1
6
■
83DCC059 - Teoria dos Grafos
Caminhamento em GrafosCaminhamento em Grafos
4 ■ 6
2
7
5
1
3
8
4 5 6
2
7
■
1
3
8
4 5 6
■
7
2
1
3
8
1 2 3
4
5
■
6
8
7
4 5 6
2
7
3
1
■
8
4 5 6
2
7
1
■
3
8
4 5 6
2
7
1
8
3
■
4 5 6
2
■
1
7
3
8
?
84DCC059 - Teoria dos Grafos
2 8 3
6 ■ 4
1 7 5
Caminhamento em GrafosCaminhamento em Grafos
■ 8 3
2 6 4
1 7 5
2 8 3
■ 6 4
1 7 5
2 8 3
1 6 4
■ 7 5
2 8 3
1 ■ 4
7 6 5
2 8 3
1 6 4
7 ■ 5
2 8 3
■ 1 4
7 6 5
2 ■ 3
1 8 4
7 6 5
2 8 3
1 4 ■
7 6 5
2 8 3
1 6 4
7 5 ■
■ 8 3
21 4
7 6 5
2 8 3
7 1 4
■ 6 5
■ 2 3
1 8 4
7 6 5
2 3 ■
1 8 4
7 6 5
8 ■ 3
2 6 4
1 7 5
2 ■ 3
6 8 4
1 7 5
2 8 3
6 4 ■
1 7 5
2 8 3
6 7 4
1 ■ 5
8 ■ 3
2 1 4
7 6 5
2 8 3
7 1 4
6 ■ 5
1 2 3
■ 8 4
7 6 5
8 3 ■
2 6 4
1 7 5
8 6 3
2 ■ 4
1 7 5
■ 2 3
6 8 4
1 7 5
2 3 ■
6 8 4
1 7 5
2 8 ■ 
6 4 3
1 7 5
2 8 3
6 4 5
1 7 ■ 
2 8 3
6 7 4
■ 1 5
2 8 3
6 7 4
1 5 ■ 
8 3 ■
2 1 4
7 6 5
8 1 3
2 ■ 4
7 6 5
2 8 3
7 ■ 4
6 1 5
2 8 3
7 1 4
6 5 ■ 
1 2 3
8 ■ 4
7 6 5
1 2 3
7 8 4
■ 6 5
NÓ INICIALNÓ INICIALNÓ INICIALNÓ INICIAL
NÓ ALVONÓ ALVONÓ ALVONÓ ALVO
Busca em Busca em 
profundidadeprofundidade
1
2
3
4
5
6 7 10 11 13 14 16 17
8
9 12 15
18
19
20
21
22 23
24
25
26 27
28
29
30
31
85DCC059 - Teoria dos Grafos
CAMINHOS MAIS CURTOS
86DCC059 - Teoria dos Grafos
Caminhos mais CurtosCaminhos mais Curtos
Dados: grafo G=(V,A) orientado e distância cij associada 
ao arco (i,j) ∈ A.
Problema: Obter o caminho mais curto entre dois nós s e t.
O comprimento de um caminho é igual à soma dos 
comprimentos (distâncias) dos arcos que formam o 
caminho.
A “distância” ou “comprimento” de um arco pode ter diversas 
interpretações dependendo da aplicação: custos, distâncias, 
consumo de combustível, etc.
Exemplo 1: Dado um mapa rodoviário, determinar a rota mais curta 
de uma cidade a outra.
(rota mais rápida, rota com menor consumo de combustível, ...)
87DCC059 - Teoria dos Grafos
Caminhos mais CurtosCaminhos mais Curtos
Exemplo 2: Construção de uma estrada entre duas cidades 
A e K. O grafo abaixo representa os diversos trechos 
possíveis e o custo de construção de cada um. Determinar 
o trajeto ótimo cujo custo de construção seja mínimo 
(corresponde a achar o caminho mais curto de A a K em 
relação a estes custos).
A
B
C
D
F
E
G J
I
H
K
8
7
5
6 4
2 4
5
4
4
2
244
5
2 4 4
88DCC059 - Teoria dos Grafos
Caminhos mais CurtosCaminhos mais Curtos
Exemplo 2: Construção de uma estrada entre duas cidades 
A e K. O grafo abaixo representa os diversos trechos 
possíveis e o custo de construção de cada um. Determinar 
o trajeto ótimo cujo custo de construção seja mínimo 
(corresponde a achar o caminho mais curto de A a K em 
relação a estes custos).
A
B
C
D
F
E
G J
I
H
K
8
7
5
6 4
2 4
5
4
4
2
244
5
2 4 4
Solução: A – D – G – I – K
custo = 7 + 2 + 2 + 5 = 16
89DCC059 - Teoria dos Grafos
Caminhos mais CurtosCaminhos mais Curtos
Condição de existência: 
Caminho de i a j contendo um circuito w:
k
j
i
w
Compr.(i → j) = compr.(i → k) +compr.(w) +compr.(k → j)
Qual é o comprimento do caminho mais curto de i a j se 
o comprimento do circuito w é negativo?
90DCC059 - Teoria dos Grafos
Caminhos mais CurtosCaminhos mais Curtos
Condição de existência: não há circuitos de compr. negativo.
A solução ótima (caminho mais curto) sempre será um 
caminho elementar (sem circuito).
91DCC059 - Teoria dos Grafos
Caminhos mais CurtosCaminhos mais Curtos
Problemas de Caminho mais curto:
- De um nó a outro
- De um nó a todos os demais
- Entre todos os pares de nós de um grafo
92DCC059 - Teoria dos Grafos
Caminho mais curto do nó 1 a cada nó do grafo 
G=(V,A)
Hipótese: todas as distâncias cij são positivas:
 cij ≥ 0, ∀(i,j) ∈ A
Algoritmo de Moore-Dijkstra (1957-1959)
pi*(i) = comprimento do caminho mais curto do nó 1 ao nó i
Em especial, pi*(1)=0 (distâncias positivas).
Algoritmo com n-1 iterações
No início de cada iteração, o conjunto V de nós está particionado 
em dois subconjuntos S e S, com o nó 1 em S.
Caminhos mais CurtosCaminhos mais Curtos
93DCC059 - Teoria dos Grafos
Cada nó i ∈ V possui um rótulo pi(i ), que verifica a 
seguinte propriedade:
Caminhos mais CurtosCaminhos mais Curtos
Se i∈S⇒π ( i)=π∗( i)
Se i∈ S̄⇒π ( i)≥π∗( i)
 dá o valor do caminho mais curto de 1 a i sob 
a restrição de que todos os nós utilizados (exceto o 
próprio i ) pertençam a S.
π ( i) , i∈S̄ ,
a
1 b
c
i
π (a )
π (b )
π (c )
π ( i)cai
cbi
cci
S̄S
94DCC059 - Teoria dos Grafos
Caminhos mais CurtosCaminhos mais Curtos
Teorema: Seja o nó tal que .
Então , isto é, o comprimento do 
caminho mais curto do nó 1 ao nó j é igual a .
j∈ S̄ π ( i)
π∗( j )=π ( j)
Demonstração:
Por construção, certamente existe um caminho de 1 até j 
com comprimento pi(j).
Suponhamos que exista outro caminho de 1 a j de 
comprimento menor do que pi(j).
Dividamos este caminho em duas partes:
- P1 é a parte inicial, do nó 1 ao nó L, onde L é o primeiro nó 
de encontrado
- P2 é a parte final, do nó L ao nó j
π ( j )
S̄
95DCC059 - Teoria dos Grafos
Caminhos mais CurtosCaminhos mais Curtos
comprimento de P1 ≥ pi(L) ≥ pi(j)
comprimento de P2 ≥ 0
 Logo, o comprimento de P1 + P2 ≥ pi(j).
96DCC059 - Teoria dos Grafos
Caminhos mais CurtosCaminhos mais Curtos
Algoritmo de Moore-Dijkstra
O algoritmo constrói progressivamente o conjunto dos nós mais 
próximos de 1.
→ Construção de uma arborescência com raiz em 1 que define os
 caminhos mais curtos do nó 1 a cada nó do grafo.
Inicializar S ← {2,3,...,n}, 
 S ← {1},
 pi(1)← 0,
 pi(j)← c1j se j∈Γ1+
 +∞ caso contrário
Enquanto S ≠ ∅ faça
 Selecionar j∈S tal que pi(j)= mini∈S{pi(i)}
 S ← S – {j}
 Para ∀i∈S e i∈Γj+ faça 
 pi(i) ← min{pi(i), pi(j)+cji}
fim_enquanto
97DCC059 - Teoria dos Grafos
Caminhos mais CurtosCaminhos mais Curtos
Exemplo
:
1
2
3
4
5
6
1
2
35
7
7
5
1 2
4
ITERAÇÃO 
1
pi*(1) = 0
pi*(3) = 1
1
2
3
4
5
6
1
2
35
7
7
5
1 2
4
S = {1}
S = {2,3,4,5,6}
pi(1) = 0
pi(2) = 7
pi(3) = 1
pi(4) = pi(5) = pi(6) = +∞
pi(2) = min{7, 
pi(5) = min{∞, 
pi(6) = min{∞, 
j = 3
S = {2,4,5,6}
1+5} = 6
1+2} = 3
1+7} = 8
98DCC059 - Teoria dos Grafos
Caminhos mais CurtosCaminhos mais Curtos
ITERAÇÃO 
2
pi(2) = min{6, 
pi(4) = min{∞, 
j = 5
S = {2,4,6}
3+2} = 5
3+5} = 8
pi*(1) = 0
pi*(3) = 1
1
2
3
4
5
6
1
2
35
7
7
5
1 2
4
pi*(5) = 3
ITERAÇÃO 
3
pi(4) = min{8, 
pi(6) = min{∞, 
j = 2
S = {4,6}
5+4} = 8
5+1} = 6
pi*(1) = 0
pi*(3) = 1
1
2
3
4
5
6
1
2
35
7
7
5
1 2
4
pi*(5) = 3pi*(2) = 5
99DCC059 - Teoria dos Grafos
Caminhos mais CurtosCaminhos mais Curtos
ITERAÇÃO 
4
pi(4) = 8 
j = 6
S = {4}
ITERAÇÃO 
5
j = 4
S = { }
pi*(1) = 0
pi*(3) = 1
1
2
3
4
5
6
1
2
35
7
7
5
1 2
4
pi*(5) = 3pi*(2) = 5
pi*(6) = 6
pi*(1) = 0
pi*(3) = 1
1
2
3
4
5
6
1
2
35
7
7
5
1 2
4
pi*(5) = 3pi*(2) = 5
pi*(6) = 6
pi*(4) = 8
100DCC059 - Teoria dos Grafos
Caminhos mais CurtosCaminhos mais Curtos
1
2
3
5
4
2
3
25
4
3
1 2
6
7
3
1
4
3
1 2 3 4 5 6
1
2
3
4
5
6
7
nó
Iteração
Início 0
4
2
∞
∞
∞
∞
pi
0
4
2
5
4
7
7
0
4
2
5
4
∞
∞
0
4
2
5
4
7
7
0
4
2
5
4
7
7
0
4
2
5
4
7
7
0
4
2
5
4
7
7
101DCC059 - Teoria dos Grafos
Caminhos mais CurtosCaminhos mais Curtos
Número de operações (tempo): ~ n2 
n-1 iterações, cadaiteração busca o mínimo em uma 
lista com até n-1 elementos (vetor pi)
Caminho mais curto do nó 1:
→ ao nó j
→ a todos os nós
Mesma complexidade, mas critérios de parada 
diferentes.
Distâncias negativas:
1
3
2
10
- 8
3
Caminho mais curto de 1 a 3?
Resultado do algoritmo?
2
3
Por 
que?
102DCC059 - Teoria dos Grafos
Inicializar S ← {2,3,...,n}, 
 S ← {1},
 pi(1)← 0,
 pi(j)← c1j se j∈Γ1+
 +∞ caso contrário
Enquanto S ≠ ∅ faça
 Selecionar j∈S tal que pi(j)= mini∈S{pi(i)}
 S ← S – {j}
 Para ∀i∈Γj+ faça 
 Calcular pi* ← pi(j)+ cji
 Se pi* < pi(i) então
 S ← S ∪ {i}
 pi(i) ← pi*
 fim-se
 fim-para
fim-enquanto
Caminhos mais CurtosCaminhos mais Curtos
Extensão do algoritmo de Moore-Dijkstra para o caso 
com distâncias negativas (mas sem ciclos negativos)
103DCC059 - Teoria dos Grafos
Caminhos mais CurtosCaminhos mais Curtos
1
2
3
5
4
2
3
-2-3
4
3
1 2
6
7
3
1
4
3
1 2 3 4 5 6 7 8
1
2
3
4
5
6
7
nó
Iteração
Início
0
4
2
∞
∞
∞
∞
pi
S = 2 3 4 5 6 7
0
4
2
5
4
∞
∞
0
4
1
5
4
7
7
0
4
2
5
4
7
7
0
4
1
4
2
6
6
0
4
1
4
2
5
5
0
4
1
4
2
5
5
0
4
1
4
3
7
7
0
4
1
4
3
6
6
XX 3X
3
X
5
X 5X
5
X X
7
104DCC059 - Teoria dos Grafos
Caminhos mais CurtosCaminhos mais Curtos
Caminho mais curto:
- De um nó a outro
- De um nó a todos os demais
- Entre todos os pares de nós de um grafo
105DCC059 - Teoria dos Grafos
Caminhos mais CurtosCaminhos mais Curtos
Dados: 
Grafo G=(V, A) orientado, |V | = n.
Não há circuitos negativos.
c = {cij}, j = 1,...,n, i = 1,...,n
 cij ≥ 0
 cii = 0
 cij = +∞, (i, j ) ∉ A
Ak(i, j ) = valor do caminho mais curto de i a j podendo 
usar apenas nós numerados de 1 a k como nós 
intermediários.
Caminho mais curto entre todos os pares de nós de um grafo
106DCC059 - Teoria dos Grafos
Caminhos mais CurtosCaminhos mais Curtos
Se Ak+1(i, j ) não usa o nó k+1 como intermediário, 
então: Ak+1(i, j ) = Ak(i, j ) 
Ak+1(i, j ) = min { Ak(i, j ), Ak(i, k+1) + Ak(k+1, j ) }Ak+1(i, j ) = min { Ak(i, j ), Ak(i, k+1) + Ak(k+1, j ) }
Se Ak+1(i, j ) usa o nó k+1 como intermediário, então: 
Ak+1(i, j ) = Ak(i, k+1) + Ak(k+1, j )
107DCC059 - Teoria dos Grafos
Caminhos mais CurtosCaminhos mais Curtos
A0(i, j ) = cij : caminho mais curto de i a j usando no 
máximo o nó “0” (que não existe) como nó 
intermediário (caminho mais curto de i a j 
sem nós intermediários)
Ak(i, j ) : pode usar o nó k ou não.
Ak+1(i, j ) : pode usar o nó k+1 ou não.
A0 → A1
A1 → A2
 ...
An-1 → An
An(i, j ) = valor do caminho mais curto de 
i a j podendo usar qualquer nó 
de 1 a n como nó intermediário.
108DCC059 - Teoria dos Grafos
Caminhos mais CurtosCaminhos mais Curtos
Algoritmo de Floyd:
Para i = 1,...,n faça
 Para j = 1,...,n faça
A0(i,j) ← cij
 fim-para
fim-para
Para k = 1,...,n faça
 Para i = 1,...,n faça
 Para j = 1,...,n faça
 Ak(i,j) ← min{Ak-1(i,j),
 Ak-1(i,k) + Ak-1(k,j)}
 fim-para
 fim-para
fim-para
109DCC059 - Teoria dos Grafos
073
206
1140
A1 = 
Caminhos mais CurtosCaminhos mais Curtos
Exemplo
:
1 2
3
3
6
4
1
1
2 0+∞3
206
1140
C = 
0+∞3
206
1140
A0 = 
073
206
640
A2 = 
073
205
640
A3 = 
110DCC059 - Teoria dos Grafos
Caminhos mais CurtosCaminhos mais Curtos
Algoritmo de Dijkstra: número de operações (tempo) ~ n2 
n-1 iterações, cada iteração busca o mínimo em uma lista 
com até n-1 elementos (vetor pi)
Algoritmo de Floyd: número de operações (tempo) ~ n3 
Três comandos for de 1 até n um dentro do outro
Ou seja, o problema de calcular os caminhos mais curtos 
entre todos os pares de nós pode ser resolvido com a 
mesma eficiência aplicando-se n vezes o algoritmo de 
Dijkstra, uma vez a partir de cada nó inicial.
111Teoria de Grafos
CAMINHOS MAIS LONGOS E 
SEQUENCIAMENTO DE 
TAREFAS 
112Teoria de 
Grafos
Caminhos mais Longos
Adaptação dos algoritmos para o problema de 
caminho mais curto
f* = mínimo f(x) = - máximo {- 
f(x)} 
• Condição: o grafo não pode ter circuitos de 
comprimento positivo.
f*
x*
f
- f*
- f
Multiplicar as distâncias por (-1) e 
aplicar
o algoritmo para caminhos mais 
curtos
Multiplicar as distâncias por (-1) e 
aplicar
o algoritmo para caminhos mais 
curtos
113Teoria de 
Grafos
Caminhos mais Longos
• Alternativa: adaptar os algoritmos de caminhos mais 
curtos para que calculem caminhos mais longos.
Inicializar S ← {2,3,...,n}, 
 S ← {1},
 pi(1)← 0,
 pi(j)← c1j se j∈Γ1+
 -∞ caso contrário
Enquanto S ≠ ∅ faça
 Selecionar j∈S tal que pi(j)= maxi∈S{pi(i)}
 e todos os predecessores de j já pertençam a S
 S ← S – {j}
 S ← S ∪ {j}
 Para ∀i∈S e i∈Γj+ faça 
 pi(i) ← max{pi(i,pi(j)+cji}
fim-enquanto
114Teoria de 
Grafos
Caminhos mais Longos
Problema central de seqüenciamento de tarefas
Os grandes projetos exigem acompanhamento 
constante e perfeita coordenação das tarefas, de modo 
a:
evitar atrasos
evitar custos adicionais
Problema de seqüenciamento:
– Objetivo: determinar a ordem e o calendário de execução 
das tarefas.
– Tarefa 
– Representação por um grafo
duração
restrições 
(precedências)
115Teoria de 
Grafos
Caminhos mais Longos
Exemplo: 
Preparação da construção de um prédio:
1. Executar o aterro (10 dias)
2. Instalar um guindaste (2 dias)
3. Fazer as fundações (6 dias)
4. Ligações elétricas (3 dias)
5. Instalação de esgotos (5 dias)
Restrições:
• O guindaste só pode funcionar após as ligações 
elétricas estarem prontas.
• O guindaste é necessário para fazer as fundações.
• A instalação dos esgotos e as fundações só podem ser 
executadas após o final do trabalho de aterro.
116Teoria de 
Grafos
Caminhos mais Longos
• PERT (Program Evaluation and Review Technique)
Rede PERT:
– nós: representam etapas (instantes privilegiados do 
projeto)
- etapa INÍCIO
 - etapa FIM
– arcos: representam tarefas 
- tarefas reais de duração positiva
- tarefas virtuais (ou fictícias) de duração nula para 
exprimir as restrições de precedência.
– Grafo potenciais-etapas (nós são etapas)
117Teoria de 
Grafos
Caminhos mais Longos
• Uma etapa x é atingida quando todas as tarefas (reais 
e fictícias) correspondendo a arcos dos quais x é 
extremidade final foram concluídas.
• Só é possível iniciar a execução da tarefa 
correspondente ao arco (x, y) depois que a etapa x 
tiver sido atingida.
x
t1
t2 t3
y
118Teoria de 
Grafos
Caminhos mais Longos
Exemplo: A tarefa 1 deve estar terminada para que a 
tarefa 5 possa ser iniciada.
Supressão de arcos inúteis:
3
5
2
1
4
I F
3
2
10
6
5
2
1
4
3
5
I F
3
2
10
6
5
a
b
I
b
a
F
119Teoria de 
Grafos
Caminhos mais Longos
Resolver um problema de seqüenciamento de 
tarefas corresponde a:
determinar um calendário de execução
determinar as tarefas críticas (aquelas cujo atraso 
provoca um atraso na execução do projeto como um 
todo)
controlar o desenvolvimento do projeto e saber, a 
cada instante, atualizar as previsões iniciais
120Teoria de 
Grafos
Caminhos mais Longos
Etapa x:
α(x): data mais cedo (data mínima em que a etapa x 
pode ser atingida)
β(x): data mais tarde (data máxima em que a etapa x 
pode ser atingidasem que resulte em atraso na 
execução do projeto como um todo)
• Uma tarefa é dita crítica se qualquer atraso em sua 
execução se repercute automaticamente na 
duração do projeto.
Caminho crítico: 
formado por 
tarefas 
críticas
121Teoria de 
Grafos
Caminhos mais Longos
• Para que a etapa x possa ser atingida, é necessário 
que todos os caminhos de I a x tenham sido 
percorridos.
α(x) = comprimento do caminho mais 
longo de I a x considerando-se α(I) 
= 0.
Tarefa u = (x,y):
δ(u) = β(y) - α(x) - d(u) é a folga da tarefa u.
• u ∈ caminho crítico δ(u) 
= 0 I(u)
x
T(u)
y
u
O grafo PERT não tem 
circuitos.
122Teoria de 
Grafos
Caminhos mais Longos
Algoritmo 
PERT
S ← {I}, α(I) ← 0
Enquanto ∃ x ∉ S tal que todos seus 
predecessores estão em S faça
 α(x) ← max{u: T(u)= x}{α(I(u))+d(u)}
 S ← S ∪ {x}
fim-enquanto
S ← {F}, β(F) ← α(F)
Enquanto ∃ x ∉ S tal que todos seus 
sucessores estão em S faça
 β(x) ← min{u: I(u)= x}{β(T(u))-d(u)}
 S ← S ∪ {x}
fim-enquanto
Calcular δ(u) ← β(T(u))-α(I(u))–d(u), ∀u ∈ U
123Teoria de 
Grafos
Caminhos mais Longos
Exemplo:
α(I) = 0 S={I}
α(b) = 10 S={I, b}
α(a) = 10 S={I, a, b}
α(F) = 16 S={I, a, b, 
F}
I F
3
2
10
6
5
0
a
b
β(F) = 16 S={F}
β(a) = 10 S={F, a}
β(b) = 10 S={F, b, a}
β(I) = 0 S={F, b, a, I}
ITERAÇÃO 1:
ITERAÇÃO 2:
ITERAÇÃO 3:
ITERAÇÃO 1:
ITERAÇÃO 2:
ITERAÇÃO 3:
124Teoria de 
Grafos
Caminhos mais Longos
Grafo potenciais-tarefas:
nó → tarefa
arco(i,j) → se a tarefa i deve preceder a tarefa j
3
5
2
1
4
I F
3
2
10
6
5
I
3
2
10
6
5100
0
0
4
2
1
3
5
F
125Teoria de 
Grafos
Caminhos mais Longos
A tarefa j só pode começar 
após a 
metade da execução da tarefa 
i:
A tarefa j só pode começar 
um 
tempo t após o fim de i:
A tarefa j só pode começar 
após 
a data bj:
i j
di/2
i j
di + t
I j
bj
126Teoria de 
Grafos
Caminhos mais Longos
B1C
D, C2E
A8D
D, C1F
D, C1G
F3H
H2J
E, G ,J1K
A3B
-7A
ANTERIORE
SDURAÇÃOTAREFAS
GRAFO POTENCIAIS-ETAPAS:
I 1
2
3
5 6
4 FA
B C
D E
F
H
J
K
G
7
3 1
8
1
3
2
2
1
1
α(I)=0
β(I)=0
α(1)=
7
α(3)=15
α(2)=10
α(4)=21
α(F)=22
α(6)=19α(5)=16
β(F)=22
β(4)=21
β(6)=19β(5)=16
β(3)=15β(1)=7
β(2)=14
127Teoria de 
Grafos
Caminhos mais Longos
Cálculo das folgas: 
 δ(u) = β(T(u)) – α(I(u)) – d(u)
δ(A) = 7 – 0 – 7 = 0
δ(B) = 14 – 7 – 3 = 4
δ(C) = 15 – 10 – 1 = 4
δ(D) = 15 – 7 – 8 = 0
δ(E) = 21 – 15 – 2 = 4
δ(F) = 16 – 15 – 1 = 0
δ(G) = 21 – 15 – 1 = 5
δ(H) = 19 – 16 – 3 = 0
δ(J) = 21 – 19 – 2 = 0
δ(K) = 22 – 21 – 1 = 0
Caminho crítico: 
A → D → F → H → J → K
128DCC059 - Teoria dos Grafos
 Árvore Geradora de Peso Mínimo
129DCC059 - Teoria dos Grafos
Árvore Geradora de Peso Árvore Geradora de Peso 
MínimoMínimo
Dados: G = (V,E) grafo não-orientado, com |V|=n e |E|=m
peso c(e), ∀e ∈ E
Problema 
Obter F ⊆ E tal que:
o grafo G’=(V,F) é acíclico e conexo (G’ é gerador de G) 
c(F) = Σe∈E c(e) é mínimo
130DCC059 - Teoria dos Grafos
Árvore Geradora de Peso Árvore Geradora de Peso 
MínimoMínimo
Exemplo:
9D
A
E
B
C
F3
4
8
4
7
2
2
5
9
árvore geradoraárvore geradora
peso = 15peso = 15
D
A B
C
E F
árvore geradoraárvore geradora
peso = 24peso = 24
D
A
E
B
C
F
3
4
8
4 5
D
A B
C
E F
D
A
E
B
C
F
4
3
4
2
2
D
A
E
B
C
F
131DCC059 - Teoria dos Grafos
Árvore Geradora de Peso Árvore Geradora de Peso 
MínimoMínimo
Princípio: a aresta de menor peso sempre pertence à 
árvore geradora de peso mínimo.
Algoritmo de KruskalAlgoritmo de Kruskal
Prova: 
Suponha que a aresta de peso mínimo não pertença à 
solução ótima.
Inserindo-se a aresta de peso mínimo nesta solução 
ótima, obtém-se um ciclo.
Pode-se obter uma nova árvore geradora 
removendo-se a aresta de maior peso.
Esta nova árvore geradora teria peso menor do que a 
anterior, portanto aquela solução não poderia ser 
ótima.
132DCC059 - Teoria dos Grafos
Árvore Geradora de Peso Árvore Geradora de Peso 
MínimoMínimo
Criar uma lista L com as arestas ordenadas em 
ordem crescente de pesos.
Criar |V| subárvores contendo cada uma um nó 
isolado.
F ← ∅
contador ← 0
Enquanto contador < |V|-1 e L ≠ ∅ faça
 Seja (u,v) o próximo arco de L.
 L ← L – {(u,v)}
 Se u e v não estão na mesma subárvore então
 F ← F ∪ {(u,v)}
 Unir as subárvores que contêm u e v.
 contador ← contador + 1
 fim-se
fim-enquanto
Algoritmo de KruskalAlgoritmo de Kruskal
133DCC059 - Teoria dos Grafos
Exemplo:
Árvore Geradora de Peso Árvore Geradora de Peso 
MínimoMínimo
83
9D
A
E
B
C
F
4
4
7
2
2
5
9
3
134DCC059 - Teoria dos Grafos
Exemplo:
Árvore Geradora de Peso Árvore Geradora de Peso 
MínimoMínimo
H
A
B
J
C
E
M L
G
D
I
F
4
7
4
3
7
5
6
2
2
3
1
4
2
3
8
6
4
135DCC059 - Teoria dos Grafos
Árvore Geradora de Peso Árvore Geradora de Peso 
MínimoMínimo
Começar com uma árvore formada apenas por um nó 
qualquer do grafo, ou pela aresta de peso mínimo.
Algoritmo de PrimAlgoritmo de Prim
A cada iteração, adicionar a aresta de menor peso 
que conecta um nó já conectado a um nó 
não-conectado.
136DCC059 - Teoria dos Grafos
Árvore Geradora de Peso Árvore Geradora de Peso 
MínimoMínimo
Seja (u,v) a aresta de menor peso.
F ← {(u,v)}
Para i = 1,...,n faça
 Se c(i,u) < c(i,v) então prox(i) ← u
 Senão prox(i) ← v
fim-para
prox(u), prox(v) ← 0, contador ← 0
Enquanto contador < n-2 faça
 Seja j tal que prox(j)≠0 e c(j,prox(j)) é mínimo.
 F ← F ∪ {(j,prox(j))}
 prox(j) ← 0
 Para i = 1,...,n faça
 Se prox(i) ≠ 0 e c(i,prox(i)) > c(i,j) então
 prox(i) ← j
 fim-para
 contador ← contador + 1
fim-enquanto
Algoritmo de PrimAlgoritmo de Prim
137DCC059 - Teoria dos Grafos
Árvore Geradora de Peso Árvore Geradora de Peso 
MínimoMínimo
Exemplo:
9D
A
E
B
C
F3
4
8
4
7
2
2
5
9
3
138DCC059 - Teoria dos Grafos
ÁrvoresÁrvores
Distancia ( denotado por distancia(u,v) ) entre dois vértices: 
número de arestas no menor caminho entre os vértices u e v.
Excentricidade (denotado por excentricidade(v))de um vértice v:
max( distancia(v,u) ) ∀ u ∈ V(G).
Raio (denotado por raio(G) ) de um grafo é a excentricidade 
mínima de um vértice do grafo.
Diâmetro (denotado por diametro(G)) de um grafo é a 
excentricidade máxima de um vértice do grafo.
139DCC059 - Teoria dos Grafos
ÁrvoresÁrvores
Vértice central: v é vértice central ↔ excentricidade(v) =raio(G)
ou seja, se v é um vértice com excentricidade mínima no grafo
Centro de um grafo G: é o conjunto de todos pontos centrais de G.
140DCC059 - Teoria dos Grafos
Árvores com RaizÁrvores com Raiz
Uma árvore com raiz é uma árvore que contém um vértice 
especial marcado como raiz.
Exemplo:
Aplicações:
141DCC059 - Teoria dos Grafos
Árvores com RaizÁrvores com Raiz
Para todo vértice v, de uma árvore com raiz r, existe um único 
caminho Pv de r a v.
Exemplo:
• Se w é um vértice em Pv, w é um ancestral ou predecessor de v e 
v é um descendente de w (imagine uma árvore genealógica).
• Se w é um vértice em Pv adjacente a v, w é um ancestral 
imediato, predecessor imediato ou pai de v e v é um decendente 
imediato ou filho de w.
142DCC059 - Teoria dos Grafos
Árvores com RaizÁrvores com Raiz
 Um vértice sem filho é dito folha da árvore;
 Todo vértice de uma árvore, comexceção da raiz, possui 
exatamente um pai.
 Um vértice que não é uma folha é dito um vértice interno da 
árvore.
143DCC059 - Teoria dos Grafos
Árvores com RaizÁrvores com Raiz
Para todo vértice v, de uma árvore com raiz r, existe um único 
caminho Pv de r a v.
• Se Pv possui k arestas, então v está no nível k da árvore.
• O maior nível de uma árvore é denominado altura da árvore.
• Uma subárvore T' de uma árvore T é formada por um vértice 
(que será a raiz de T') e todos os seus descendentes.
144DCC059 - Teoria dos Grafos
Árvores com RaizÁrvores com Raiz
 Uma árvore m-ária é uma árvore cujos vértices possuem, no 
máximo, m filhos.
 Cada vértice de uma árvore possui exatamente um pai (exceto a 
raiz, que não possui pai).
 Árvores 2-árias, em particular, são chamadas de árvores binárias.
145DCC059 - Teoria dos Grafos
Árvores com RaizÁrvores com Raiz
 Uma árvore m-ária cheia é uma árvore cujos vértices internos 
possuem exatamente m filhos.
Exemplo:
 Uma árvore m-ária completa é uma árvore m-ária cheia onde 
todas as folhas estão no mesmo nível.
Exemplo
146DCC059 - Teoria dos Grafos
Árvores com RaizÁrvores com Raiz
 Se G é uma árvore de altura h, todas as subárvores formadas 
pelos filhos da raiz possuem altura no máximo h-1 e pelo menos 
uma destas subárvores possui altura h-1.
Prove (dica: por contradição)
147DCC059 - Teoria dos Grafos
Árvores com RaizÁrvores com Raiz
 Uma árvore m-ária cheia com k vértices internos possui mk+1 
vértices.
Prova: cada um dos k vértices internos possui m filhos, totalizando 
mk vértices com pai. Como a raiz é o único vértice da árvore sem 
pai, o total de vértices é: mk+1.
148DCC059 - Teoria dos Grafos
Problemas em grafosProblemas em grafos
Aplicações:
Projeto de circuitos eletrônicos e VLSI.
Redes de comunicação.
Redes de tráfego.
Tubulações de gás e óleo.
Distribuição de água para irrigação e redes de drenagem.
Projetos de instalações elétricas e mecânicas.
Projetos de edificações
...
1 - Problema da Árvore de Steiner
149DCC059 - Teoria dos Grafos
Problemas em grafosProblemas em grafos
Definição:
Seja o grafo G = (V,A), e ∆ e Χ conjuntos resultantes de uma 
partição do conjunto V, ou seja, ∆ ⊆ V e Χ ⊆ V, sendo que ∆ ∪ Χ= V 
e ∆ ∩ Χ = ∅, |Χ| = r e |∆| = s. Determinar um subconjunto de 
arestas B ⊆ A que ligue todos os vértices xi ∈ Χ em um grafo 
conexo, onde i = 1, 2, ...,r, de modo a minimizar ∑cj | j ∈ B, onde
cj é o custo ou o comprimento das arestas de B.
1 - Problema da Árvore de Steiner
150DCC059 - Teoria dos Grafos
Problemas em grafosProblemas em grafos
Definição:
Seja o grafo G = (V,A), e ∆ e Χ conjuntos resultantes de uma 
partição do conjunto V, ou seja, ∆ ⊆ V e Χ ⊆ V, sendo que ∆ ∪ Χ= V 
e ∆ ∩ Χ = ∅, |Χ| = r e |∆| = s. Determinar um subconjunto de 
arestas B ⊆ A que ligue todos os vértices xi ∈ Χ em um grafo 
conexo, onde i = 1, 2, ...,r, de modo a minimizar ∑cj | j ∈ B, onde
cj é o custo ou o comprimento das arestas de B.
Os vértices pertencentes ao conjunto ∆ (pontos de Steiner) podem 
ser usados ou não pela estrutura de ligação.
1 - Problema da Árvore de Steiner
151DCC059 - Teoria dos Grafos
Problemas em grafosProblemas em grafos
Exemplo:
1 - Problema da Árvore de Steiner
1
2
8
7
3
5
3
10
9
1
1
2
8
3
5
3
10
9
1
7
1
152DCC059 - Teoria dos Grafos
Problemas em grafosProblemas em grafos
Exemplo:
1 - Problema da Árvore de Steiner
Vértices Terminais
1
2
8
7
3
5
3
10
9
1
1
2
8
3
5
3
10
9
1
7
1
153DCC059 - Teoria dos Grafos
Problemas em grafosProblemas em grafos
Exemplo:
1 - Problema da Árvore de Steiner
Vértices Terminais
1
2
8
7
3
5
3
10
9
1
7
1
154DCC059 - Teoria dos Grafos
Problemas em grafosProblemas em grafos
Exemplo:
1 - Problema da Árvore de Steiner
1
2
8
7
3
5
3
10
9
1
Vértices Terminais
155DCC059 - Teoria dos Grafos
Problemas em grafosProblemas em grafos
Exemplo:
1 - Problema da Árvore de Steiner
1
23
1
156DCC059 - Teoria dos Grafos
Problemas em grafosProblemas em grafos
Casos:
1- |Χ| = 2 
O problema torna-se um PCMC e pode ser facilmente resolvido (e.g. 
usando o algorit-mo de Dijkstra visto anteriormente).
2- Χ = N ou ∆ =∅:
Resume-se em achar uma AGM do grafo, que também pode ser 
facilmente resolvido (e.g. usando os algoritmos de Kruskal ou Prim 
vistos anteriormente)
3- |Χ| > 2 e ∆ ≠∅.
1 - Problema da Árvore de Steiner
157DCC059 - Teoria dos Grafos
Problemas em grafosProblemas em grafos
Exercício em sala (mesmo grupo dos trabalhos)
Apresente um algoritmo em pseudocódigo (detalhado) para o PAS.
1 - Problema da Árvore de Steiner
158DCC059 - Teoria dos Grafos
Problemas em grafosProblemas em grafos
Considera-se o grafo direcionado e assume-se a formulação do 
Problema de Steiner.
Exercício:
Apresente um algoritmo em pseudocódigo (detalhado) para o PAS.
2 - Problema da Arborescência de Steiner
159Teoria de Grafos
PROBLEMAS EM GRAFOS
3 – Problemas de Emparelhamento em Grafos
160Teoria de Grafos
Emparelhamento em Grafos
• Problema: Formar duplas de pessoas que 
se conhecem.
• Pessoas -> nós.
• Se conhecer -> arestas.
• Problema: Encontrar um emparelhamento 
dos nós do grafo.
3 – Problemas de Emparelhamento em Grafos
161Teoria de Grafos
Emparelhamento em Grafos
H
A
B
J
C
E
M L
G
D
I
F
162Teoria de Grafos
Emparelhamento em Grafos
• Um emparelhamento (matching) de um 
grafo G=(V, E) é um subconjunto M ⊆ E tal 
que nenhum par de arestas de M incidem 
no mesmo nó.
• Os dois extremos de uma aresta em M são 
emparelhados pelo eparelhamento M. 
3 – Problemas de Emparelhamento em Grafos
163Teoria de Grafos
Emparelhamento em Grafos
• Os nós de G incidentes a alguma aresta de 
M estão cobertos por M.
• Se todo nó de G está coberto por M, 
disse-se que M é perfeito.
• Problema: Emparelhamento máximo.
• Todo emparelhamento perfeito é máximo.
3 – Problemas de Emparelhamento em Grafos
164Teoria de Grafos
Emparelhamento em Grafos
1
2
5
3
6
4 8
7
1
2
5
3
6
4
7
EmparelhamenEmparelhamen
to máximoto máximo
EmparelhamenEmparelhamen
to perfeitoto perfeito
3 – Problemas de Emparelhamento em Grafos
165Teoria de Grafos
Emparelhamento em Grafos
• Se M é um emparelhamento, um caminho 
simples (não repete nó) alternado em M é 
um caminho cujas arestas pertencem e 
não pertencem alternadamente a M.
3 – Problemas de Emparelhamento em Grafos
166Teoria de Grafos
Emparelhamento em Grafos
1
2
5
3
6
4 8
7
1
2
5
3
6
4
7
Caminho Caminho 
alternado: (1, 2, 5, alternado: (1, 2, 5, 
3, 4)3, 4)
Caminho Caminho 
alternado: (8, 4, 7, alternado: (8, 4, 7, 
3, 5)3, 5)
3 – Problemas de Emparelhamento em Grafos
167Teoria de Grafos
Emparelhamento em Grafos
• Caminho de aumento em M: Caminho 
alternado em M tal que o nó inicial e o no 
final não estão cobertos por M.
3 – Problemas de Emparelhamento em Grafos
168Teoria de Grafos
Emparelhamento em Grafos
1
2
5
3
6
4 8
7
1
2
5
3
6
4
7
Caminhos de Caminhos de 
aumento: (7, 3, 5, aumento: (7, 3, 5, 
4)4)
(4, 7)(4, 7)
(6, 2, 1, 5, 3, 7)(6, 2, 1, 5, 3, 7)
Caminho de Caminho de 
aumento: (5, 4, 3, 7)aumento: (5, 4, 3, 7)
3 – Problemas de Emparelhamento em Grafos
169Teoria de Grafos
Emparelhamento em Grafos
• Teorema: Um emparelhamento M é 
máximo em G se e somente se G não 
contém nenhum caminho de aumento em 
M.
3 – Problemas de Emparelhamentoem Grafos
170Teoria de Grafos
Emparelhamento em Grafos
• Teorema: Uma árvore tem no máximo um 
emparelhamento perfeito.
Prova: Sejam M e M' dois emparelhamentos 
perfeitos diferentes de uma árvore. Consideremos o 
grafo induzido por M ∇ M'. Todo nó desse grafo tem 
grau 2, uma aresta incidente por M e outra por M' 
(tanto M como M' são perfeitos) e portanto tem um 
cíclo.
Como as arestas deste grafo pertencem à árvore, a 
árvore também tem um ciclo, o que é absurdo.
3 – Problemas de Emparelhamento em Grafos
171Teoria de Grafos
Emparelhamento em Grafos
• Problema de atribuição (assignment) : Em 
uma empresa n trabalhadores estão 
disponíveis para fazer n tarefas, cada 
trabalhador sabe fazer um subconjunto 
dessas tarefas.
• Existe uma maneira de atribuir a cada um 
dos trabalhadores exatamente uma tarefa 
que ele saiba fazer? 
3 – Problemas de Emparelhamento em Grafos
172Teoria de Grafos
Emparelhamento em Grafos
• Trabalhadores -> nós.
• Tarefas -> nós.
• Sabe fazer -> aresta.
• Grafo bipartido.
3 – Problemas de Emparelhamento em Grafos
173Teoria de Grafos
Emparelhamento em Grafos
• Seja S um conjunto de nós de um grafo.
• Define-se a vizinhança de S (N(S)) em G 
ao subconjunto de nós adjacente a algum 
nó de S. 
3 – Problemas de Emparelhamento em Grafos
174Teoria de Grafos
Emparelhamento em Grafos
• Seja G um grafo bipartido com bipartição 
(X, Y). G contém um emparelhamento no 
qual todo vértice de X está coberto se e 
somente se |N(S)| ≥ |S| para todo S ⊆ X.
• Prova:
• => Contém matching então |N(S)|≥|S|
– Fácil
• <= |N(S)|≥|S| então contém matching.
– + difícil 
3 – Problemas de Emparelhamento em Grafos
175Teoria de Grafos
Emparelhamento em Grafos
• Corolário: Todo grafo bipartido k-regular 
com k > 0 tem um emparelhamento 
perfeito.
3 – Problemas de Emparelhamento em Grafos
176Teoria de Grafos
Emparelhamento em Grafos
• Se K é uma cobertura por nós e M um 
emparelhamento do grafo G, então |M| ≤ 
|K|.
– Por cada aresta de M preciso um nó de 
K.
• Em particular, o tamanho da cobertura 
mínima é maior ou igual que o tamanho 
do emparelhamento máximo.
3 – Problemas de Emparelhamento em Grafos
177Teoria de Grafos
Emparelhamento em Grafos
• Teorema: Se |M| = |K| então M é 
emparelhamento máximo e K é cobertura 
mínima.
• Em geral, a igualdade não se verifica.
• Teorema: Em grafos bipartidos, |M*| = 
|K*|
3 – Problemas de Emparelhamento em Grafos
178Teoria de Grafos
Emparelhamento em Grafos
• Problema de atribuição (assignment) : Em uma 
empresa n trabalhadores estão disponíveis para 
fazer n tarefas, cada trabalhador sabe fazer um 
subconjunto dessas tarefas.
• Existe uma maneira de atribuir a cada um dos 
trabalhadores exatamente uma tarefa que ele 
saiba fazer? 
3 – Problemas de Emparelhamento em Grafos
179Teoria de Grafos
Emparelhamento em Grafos
• Trabalhadores -> nós.
• Tarefas > nós.
• Sabe fazer -> aresta.
• Grafo bipartido.
• Existe um emparelhamento perfeito em 
G?
3 – Problemas de Emparelhamento em Grafos
180Teoria de Grafos
Emparelhamento em Grafos
• Método Húngaro:
– Encontra um emparelhamento em um 
grafo bipartito com bipartição (X, Y) tal 
que X está coberto pelo 
emparelhamento ou encontra um 
subconjunto S ⊆ X tal que |N(S)| < |S|. 
3 – Problemas de Emparelhamento em Grafos
181Teoria de Grafos
Método Húngaro
• Seja M um emparelhamento qualquer. (por exemplo M = ∅).
• Se M cobre X então parar. Senão seja u um nó de X não 
coberto por M.
• Fazer S={u}, T={∅}.
• Se N(S) = T então parar pois |N(S)|<|S|. Em caso contrário, 
seja y um nó de N(S)\T.
• Se y está coberto por M seja (y, z) a aresta de M que cobre y. 
Fazer S = S ∪ {z} e T = T ∪ {y} e volte ao passo 4.
• Se y não está coberto por M determinamos um caminiho de 
aumento de u a y. Aumentar M e voltar ao passo 2. 
3 – Problemas de Emparelhamento em Grafos
182Teoria de Grafos
Problemas em Grafos
Subonjunto de nós K ⊆ V tal que toda aresta de E 
tem um extremo em um nó de K.
O problema de cobertura de vértices é minimal.
Uma variação do problema é quando tem-se um 
grafo com pesos nos nós. O problema então 
consiste em encontrar uma cobertura K em que o 
somatório dos pesos dos vértices de K seja 
mínimo.
4 – Problemas de Cobertura de Vértices
183Teoria de Grafos
1
Emparelhamento em Grafos
1
2
5
3
6
4 8
7
2
5
3
6
4
73
2
41
3
2
41 8
4 – Problemas de Cobertura de Vértices
184Teoria de Grafos
PROBLEMAS EM GRAFOS
5 – Circuito Euleriano
185Teoria de Grafos
Circuito euleriano
• É possível atravesar todas as pontes 
de uma cidade composta por ilhas 
sem repetir nenhuma ponte? 
5 – Circuito Euleriano
186Teoria de Grafos
Circuito euleriano
• É possível atravesar todas as pontes 
de uma cidade composta por ilhas 
sem repetir nenhuma ponte? 
5 – Circuito Euleriano
187Teoria de Grafos
Circuito euleriano
• É possível atravesar todas as pontes 
de uma cidade composta por ilhas 
sem repetir nenhuma ponte? 
5 – Circuito Euleriano
188Teoria de Grafos
Circuito euleriano
• É possível atravesar todas as pontes 
de uma cidade composta por ilhas 
sem repetir nenhuma ponte? 
5 – Circuito Euleriano
189Teoria de Grafos
Circuito euleriano
• É possível atravesar todas as pontes 
de uma cidade composta por ilhas 
sem repetir nenhuma ponte? 
5 – Circuito Euleriano
190Teoria de Grafos
Circuito euleriano
• É possível atravesar todas as pontes 
de uma cidade composta por ilhas 
sem repetir nenhuma ponte? 
5 – Circuito Euleriano
191Teoria de Grafos
Circuito euleriano
• É possível atravesar todas as pontes 
de uma cidade composta por ilhas 
sem repetir nenhuma ponte? 
5 – Circuito Euleriano
192Teoria de Grafos
Circuito euleriano
• É possível atravesar todas as pontes 
de uma cidade composta por ilhas 
sem repetir nenhuma ponte? 
5 – Circuito Euleriano
193Teoria de Grafos
Circuito euleriano
• É possível atravesar todas as pontes 
de uma cidade composta por ilhas 
sem repetir nenhuma ponte? 
5 – Circuito Euleriano
194Teoria de Grafos
Circuito euleriano
• É possível atravesar todas as pontes 
de uma cidade composta por ilhas 
sem repetir nenhuma ponte? 
5 – Circuito Euleriano
195Teoria de Grafos
Circuito euleriano
• É possível atravesar todas as pontes 
de uma cidade composta por ilhas 
sem repetir nenhuma ponte? 
5 – Circuito Euleriano
196Teoria de Grafos
Circuito euleriano
• É possível atravesar todas as pontes 
de uma cidade composta por ilhas 
sem repetir nenhuma ponte? 
5 – Circuito Euleriano
197Teoria de Grafos
Circuito euleriano
• É possível atravesar todas as pontes 
de uma cidade composta por ilhas 
sem repetir nenhuma ponte? 
5 – Circuito Euleriano
198Teoria de Grafos
Circuito euleriano
• É possível atravesar todas as pontes 
de uma cidade composta por ilhas 
sem repetir nenhuma ponte? 
5 – Circuito Euleriano
199Teoria de Grafos
Circuito euleriano
• É possível atravesar todas as pontes 
de uma cidade composta por ilhas 
sem repetir nenhuma ponte? 
5 – Circuito Euleriano
200Teoria de Grafos
Circuito euleriano
• Pode-se desenhar os seguintes 
grafos sem levantar o lapiz do papel?
Sim Não
5 – Circuito Euleriano
201Teoria de Grafos
Circuito euleriano
• Caminho euleriano: Caminho que passa 
por todas as arestas de um grafo 
exatamente uma vez.
• Circuito euleriano: Circuito que passa por 
todas as arestas de um grafo exatamente 
uma vez.
• Um grafo é euleriano se contém um 
circuito euleriano.
5 – Circuito Euleriano
202Teoria de Grafos
Circuitoeuleriano
• Teorema: Um grafo conexo é euleriano se 
e somente se não tem nós de grau ímpar.
• Prova:
• =>) Seja C o ciclo euleriano com inicio e 
fim no nó u.
• Por cada vez que um nó v diferente de u 
aparece no ciclo duas arestas incidentes a 
v são usadas.
5 – Circuito Euleriano
203Teoria de Grafos
Circuito euleriano
• Como todas as arestas do grafo são 
percorridas por C o grau de todo nó 
diferente de u é par.
• Considerando que o ciclo inícia e acaba 
em outro nó mostra-se que u também tem 
grau impar.
5 – Circuito Euleriano
204Teoria de Grafos
Circuito euleriano
• <=) Suponhamos que G é o grafo conexo 
não euleriano com graus sempre pares com 
o menor número de arestas possível.
• Dado que o grau de cada nó é maior ou 
igual a 2, G tem um ciclo.
• Seja C o ciclo de G com maior número de 
arestas.
• Com C não é euleriano, G-E(C) tem alguma 
componente conexa G' com mais do que 1 
aresta.
5 – Circuito Euleriano
205Teoria de Grafos
Circuito euleriano
• Como C é euleriano, todos os nós de C tem grau 
par em C.
• Então todos os nós de G' são pares.
• Então G' é euleriano por ter menos arestas que 
G. Seja C' um ciclo euleriano de G'.
• Como o grafo é conexo, existe um no v que 
pertence à interseção de C com C'.
• Escolhendo v como início e fim de ambos ciclos 
temos que CC' é um ciclo de G com mais arestas 
que C.
• Absurdo porque C era máximo em número de 
arestas.
5 – Circuito Euleriano
206Teoria de Grafos
Circuito euleriano
• Corolário: Um grafo tem um caminho 
euleriano se e somente se tem no 
máximo dois nós de grau impar.
5 – Circuito Euleriano
207Teoria de Grafos
Circuito euleriano
• Ideia para determinar que um grafo não é 
hamiltoniano: tirar conjuntos de nós com 
grau alto e contar as componentes 
conexas.
• Condição necessária mas não suficiente.
5 – Circuito Euleriano
208Teoria de Grafos
Circuito euleriano
5 – Circuito Euleriano
209
Circuito Euleriano
Algoritmo de Fleury
Encontra um ciclo euleriano em grafo 
euleriano.
• Escolher um nó v0 qualquer. Fazer vc = v0. 
• Escolher uma aresta (vc, vp) que não seja 
ponte de G a menos que seja a única 
alternativa.
• Apagar (vc, vp) e fazer vc=vp.
• Se o grafo ainda tem arestas voltar ao 
passo 2. 
5 – Circuito Euleriano
210Teoria de Grafos
Carteiro Chines
• Problema do carteiro chines: Percorrer 
todas as arestas do grafo e voltar para o 
nó de início a custo mínimo.
– Caminhão coletor de lixo.
5 – Circuito Euleriano
211Teoria de Grafos
Carteiro Chines
• Se o grafo é euleriano, o circuito euleriano 
é a solução ótima pois o carteiro percorre 
cada aresta do grafo apenas uma vez.
5 – Circuito Euleriano
212Teoria de Grafos
Carteiro Chines
• Se o grafo tem nós de grau impar, algumas 
arestas deverão ser percorridas duas vezes.
• Algumas arestas devem ser duplicadas para 
transformar o grafo em um grafo euleriano.
• As arestas a serem duplicadas devem ser 
tais que:
– Todo nó fica com grau par.
– A soma dos pesos das arestas duplicadas 
deve ser mínima.
5 – Circuito Euleriano
213Teoria de Grafos
Carteiro Chines
• Quando o grafo tem apenas dois nós com 
grau impar as arestas que são parte do 
caminho mínimo entre esses dois nós 
devem ser duplicadas.
Depois usar o algoritmo de Fleury para 
determinar um circuito euleriano.
5 – Circuito Euleriano
214Teoria de Grafos
Carteiro Chines
• Se o grafo tem mais de dois nós de grau 
impar?
– Determinar o caminho mínimo entre todo par de 
nós de grau impar.
– Criar o grafo completo dos nós de grau impar 
com peso das arestas igual ao comprimento do 
caminho mínimo.
– Resolver emparelhamento a custo mínimo nesse 
grafo.
– Duplicar as arestas dos caminhos mínimos entre 
os nós emparelhados.
– Usar o algoritmo de Fleury para determinar um 
circuito euleriano.
5 – Circuito Euleriano
215Teoria de Grafos
Caminho e Ciclo Hamiltoniano
PROBLEMAS EM GRAFOS
6 – Ciclo e caminho Hamiltoniano
216Teoria de Grafos
Caminho Hamiltoniano
• Caminho hamiltoniano: Caminho 
simples que contém todo nó de G.
• Ciclo hamiltoniano: Ciclo simples que 
contém todo nó de G.
• Grafo hamiltoniano: grafo que tem um 
ciclo hamiltoniano.
• Determinar se um grafo é hamiltoniano 
é NP-Completo.
6 – Ciclo e caminho Hamiltoniano
217Teoria de Grafos
Caminho Hamiltoniano
• Teorema: Se G é hamiltoniano, para todo 
S ⊂ V tal que |S|>0, o número de 
componentes conexas de G-S é menor 
igual a |S|.
– Tirando um nó não podem ficar mais que 1 
componente conexa. (sem ponto de 
articulação)
– Tirando dois nó não podem ficar mais que 2 
componentes conexas.
– etc.
6 – Ciclo e caminho Hamiltoniano
218Teoria de Grafos
Caminho Hamiltoniano
Problema do Caixeiro Viajante: apresentado 
em sala.
Dado um grafo ponderado G=(V,E), apresente 
um ciclo hamiltoniano de custo mínimo.
6 – Ciclo e caminho Hamiltoniano
219Teoria de Grafos
Caminho Hamiltoniano
6 – Ciclo e caminho Hamiltoniano
Outros variantes do problema de roteamento:
• PRV Capacitado
• PRV Assimétrico
• PRV Aberto
• PRV e PCV com Coleta e Entrega Simultânea
• PRV com Múltiplos Depósitos
• PRV com Frota Heterogênea
220Teoria de Grafos
PROBLEMAS EM GRAFOS
7 – Coloração de Vértices
221Teoria de Grafos
PROBLEMAS EM GRAFOS
7 – Coloração de Vértices
Aplicação
222Teoria de Grafos
PROBLEMAS EM GRAFOS
7 – Coloração de Vértices
O problema consiste em atribuir cores aos 
nós de um grafo de forma que nenhum par 
de vértices adjacentes tenha a mesma cor e 
o total de cores usadas na atribuição seja 
mínimo.
Coloração de Vértices
• Problema:
– Alunos cursam disciplinas.
– Cada disciplina tem uma prova.
– Há um único horário em que são marcadas provas em 
cada dia.
– Provas de duas disciplinas diferentes não podem ser 
marcadas para o mesmo dia se há alunos que cursam 
as duas disciplinas.
• Montar um calendário de provas:
– satisfazendo as restrições de conflito e …
– … minimizando o número de dias necessários para 
realizar todas as provas.
• Modelagem por conjuntos:
   





 






 












A
B
C
D
E
F
Coloração de Vértices
• Os alunos que fazem apenas uma disciplina influem 
na modelagem? 
– Não!
• O número de alunos que cursam simultaneamente um 
par de disciplinas influi na modelagem? 
– Não!
– E se o objetivo fosse minimizar o número de alunos 
“sacrificados”?
– Neste caso, sim!
• Este modelo pode ser simplificado?
Coloração de Vértices
• Simplificação tratando-se apenas as 
interseções:
 







 




















A
B
C
D
E
F 






A
B
C
D
E
F
Considerar apenas as 
interseções não-vazias.
Coloração de Vértices
• Simplificação com a utilização de um grafo de conflitos:







E
 





















A
B
C
D
F
disciplinas → nós 
conflitos → arestas






A
B
C
D
E
F
A
B C F
E
D
Coloração de Vértices
• Simplificação com a utilização de um grafo de 
conflitos:
 








 





















A
B
C
D
E
F A
B C F
E
D
disciplinas → nós 
conflitos → arestas
Coloração de Vértices
• As provas de um par dedisciplinas não 
podem ser marcadas simultaneamente 
se existe uma aresta entre os nós que 
representam estas duas disciplinas. 
• Outros modelos de dados: listas, 
árvores, conjuntos, circuitos
• Como representar em computador o 
modelo de dados chamado grafo?
– Matriz de incidência (nó-aresta)
– Matriz de adjacência (nó-nó)
Grafo = [ nós, arestas ]
Coloração de Vértices
• Como montar um calendário satisfazendo as 
restrições de conflito?
• Marcar para o primeiro dia qualquer 
combinação de disciplinas sem conflitos: A, B, 
C, D, E, F, AE, AF, BD, BE, BF, CD, CE, DF, BDF
B C
E
D
F
A
Coloração de Vértices
• Como montar um calendário satisfazendo as 
restrições de conflito?
• Marcar para o primeiro dia qualquer 
combinação de disciplinas sem conflitos: A, B, 
C, D, E, F, AE, AF, BD, BE, BF, CD, CE, DF, BDF
B C
E
D
F
A
Coloração de Vértices
• Como montar um calendário satisfazendo as 
restrições de conflito?
• Marcar para o primeiro dia qualquer 
combinação de disciplinas sem conflitos: A, B, 
C, D, E, F, AE, AF, BD, BE, BF, CD, CE, DF, BDF
B C
E
D
F
A
Coloração de Vértices
• Como montar um calendário satisfazendo as 
restrições de conflito?
• Marcar para o primeiro dia qualquer 
combinação de disciplinas sem conflitos: A, B, 
C, D, E, F, AE, AF, BD, BE, BF, CD, CE, DF, BDF
B C
E
D
F
A
Coloração de Vértices
• Como montar um calendário satisfazendo as 
restrições de conflito?
• Marcar para o primeiro dia qualquer 
combinação de disciplinas sem conflitos: A, B, 
C, D, E, F, AE, AF, BD, BE, BF, CD, CE, DF, BDF
B C
E
D
F
A
Coloração de Vértices
• Como montar um calendário satisfazendo as 
restrições de conflito?
• Marcar para o primeiro dia qualquer 
combinação de disciplinas sem conflitos: A, B, 
C, D, E, F, AE, AF, BD, BE, BF, CD, CE, DF, BDF
B C
E
D
F
A
Coloração de Vértices
• Como montar um calendário satisfazendo as 
restrições de conflito?
• Marcar para o primeiro dia qualquer 
combinação de disciplinas sem conflitos: A, B, 
C, D, E, F, AE, AF, BD, BE, BF, CD, CE, DF, BDF
B C
E
D
F
A
Coloração de Vértices
• Como montar um calendário satisfazendo as 
restrições de conflito?
• Marcar para o primeiro dia qualquer 
combinação de disciplinas sem conflitos: A, B, 
C, D, E, F, AE, AF, BD, BE, BF, CD, CE, DF, BDF
B C
E
D
F
A
Coloração de Vértices
• Como montar um calendário satisfazendo as 
restrições de conflito?
• Marcar para o primeiro dia qualquer 
combinação de disciplinas sem conflitos: A, B, 
C, D, E, F, AE, AF, BD, BE, BF, CD, CE, DF, BDF
B C
E
D
F
A
Coloração de Vértices
• Como montar um calendário satisfazendo as 
restrições de conflito?
• Marcar para o primeiro dia qualquer combinação 
de disciplinas sem conflitos: A, B, C, D, E, F, AE, 
AF, BD, BE, BF, CD, CE, DF, BDF
B C
E
D
F
A
Coloração de Vértices
• Como montar um calendário satisfazendo as 
restrições de conflito?
• Marcar para o primeiro dia qualquer 
combinação de disciplinas sem conflitos: A, B, 
C, D, E, F, AE, AF, BD, BE, BF, CD, CE, DF, BDF
B C
E
D
F
A
• Escolher por exemplo o par de disciplinas B e E para o primeiro 
dia e retirá-las do grafo.
Coloração de Vértices
• Como montar um calendário satisfazendo as 
restrições de conflito?
• Marcar para o primeiro dia qualquer combinação 
de disciplinas sem conflitos: A, B, C, D, E, F, AE, 
AF, BD, BE, BF, CD, CE, DF, BDF
C
D
F
A
• Escolher por exemplo o par de disciplinas B e E para o primeiro 
dia e retirá-las do grafo.
Coloração de Vértices
• Marcar para o segundo dia qualquer 
combinação de disciplinas sem conflitos: A, C, 
D, F, AF, CD, DF
C
D
F
A
• Marcar para o segundo dia qualquer 
combinação de disciplinas sem conflitos: A, C, 
D, F, AF, CD, DF
C
D
F
A
Coloração de Vértices
• Marcar para o segundo dia qualquer 
combinação de disciplinas sem conflitos: A, C, 
D, F, AF, CD, DF
C
D
F
A
Coloração de Vértices
• Marcar para o segundo dia qualquer combinação 
de disciplinas sem conflitos: A, C, D, F, AF, CD, 
DF
C
D
F
A
Coloração de Vértices
• Marcar para o segundo dia qualquer 
combinação de disciplinas sem conflitos: A, C, 
D, F, AF, CD, DF
C
D
F
A
• Escolher por exemplo o par de disciplinas D e F para o segundo 
dia e retirá-las do grafo.
Coloração de Vértices
• Marcar para o segundo dia qualquer 
combinação de disciplinas sem conflitos: A, C, 
D, F, AF, CD, DF
C
A
• Escolher por exemplo o par de disciplinas D e F para o segundo 
dia e retirá-las do grafo.
Coloração de Vértices
• Marcar A ou C para o terceiro dia e a que 
sobrar para o quarto dia:
C
A
Coloração de Vértices
• A solução assim construída utiliza quatro dias: 
B-E no primeiro dia, D-F no segundo dia, A no 
terceiro e C no quarto:
B C
E
D
F
A
• Uma solução com quatro dias corresponde a colorir os nós do 
grafo de conflitos com quatro cores!
• Esta solução utiliza o menor número possível de 
dias? ou ...
• É possível montar uma solução com menos dias? 
ou ...
• É possível colorir o grafo de conflitos com três cores?
B C
E
D
F
A
• É impossível colorir o grafo de conflitos com menos de três 
cores! (por que?)
Sim!
Coloração de Vértices
251Teoria de Grafos
Subconjunto Independente 
Máximo
PROBLEMAS EM GRAFOS
Um subconjunto independente de um grafo é um 
subconjunto de nós sem que no grafo não exista 
nenhuma aresta entre seus elementos.
8 – Subconjunto independente máximo
• Na aplicação do problema anterior, como 
montar um escalonamento com o menor 
número possível de dias?
• Recordando: um subconjunto independente de 
um grafo é um subconjunto de nós sem 
nenhuma aresta entre eles.
• Logo, um conjunto de disciplinas que forma um 
subconjunto independente dos nós do grafo de 
conflitos pode ter suas provas marcadas para o 
mesmo dia.
• Os nós deste subconjunto independente podem 
receber a mesma cor.
Subconjunto independente máximo
• Quanto mais disciplinas forem marcadas para o 
primeiro dia, menos disciplinas sobram para os 
dias seguintes e, portanto, serão necessários 
menos dias para realizar as provas das 
disciplinas restantes.
• Então, marcar para o primeiro dia as provas das 
disciplinas correspondentes a um subconjunto 
independente máximo.
• Retirar os nós correspondentes a estas 
disciplinas do grafo de conflitos.
• Continuar procedendo da mesma maneira, até 
as provas de todas as disciplinas terem sido 
marcadas. 
Subconjunto independente máximo
• Subconjunto independente máximo no grafo 
de conflito?
BDF
B C
E
D
F
A
Subconjunto independente máximo
• Subconjunto independente máximo no grafo 
de conflito?
BDF
B C
E
D
F
A
• Eliminar os nós B, D e F do grafo de conflitos.
Subconjunto independente máximo
• Subconjunto independente máximo no grafo 
de conflito?
BDF
C
E
A
• Eliminar os nós B, D e F do grafo de conflitos.
Subconjunto independente máximo
• Subconjunto independente máximo no grafo 
de conflito?
CE
C
E
A
Subconjunto independente máximo
• Subconjunto independente máximo no grafo 
de conflito?
CE
C
E
A
• Eliminar os nós C e E do grafo de conflitos.
Subconjunto independente máximo
• Subconjunto independente máximo no grafo 
de conflito?
CE
A
• Eliminar os nós C e E do grafo de conflitos.
Subconjunto independente máximo
• Subconjunto independente máximo no grafo 
de conflito?
A
A
Subconjunto independente máximo
• Subconjunto independente máximo no grafo

Outros materiais