Buscar

Algoritmo em Grafos - Notas de Aula

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 47 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 47 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 47 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

Universidade do Estado do Rio de Janeiro
Centro de Tecnologia e Ciências
Instituto de Matemática e Estat́ıstica
Matéria: Algoritmo em Grafos
Notas de aula
Prof. Dr.: Luérbio Farias
Rio de Janeiro
SUMÁRIO
1 GRAFOS E SUBGRAFOS 3
1.1 Notação O, ω, θ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Grafo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2.1 Grau do Grafo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3 Subgrafo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.4 Tipos de Grafos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.5 Isomorfismo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.6 Classes de Grafos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.6.1 Grafo Completo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.6.2 Grafo Bipartido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.6.3 Clique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.6.4 Grafo Complementar . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.6.5 Grafo Caminho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.6.6 Grafo Ciclo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.6.7 Grafo Roda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.6.8 Grafo n-Cubo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.6.9 Grafo R-regular . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.6.10 Grafo Trivial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2 CONECTIVIDADE 13
2.1 Componente Conexa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2 Grafo Conexo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.3 Busca em Profundidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.4 Corte de Vértices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.5 Corte de Arestas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3 ÁRVORES E FLORESTAS 18
3.1 Árvores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.2 Geodésia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4 PLANARIDADE 25
5 COLORAÇÃO 32
6 TRILHAS EULERIANAS E CICLOS HAMILTONIANO 33
6.1 Trilha Euleriana . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
6.2 Ciclo Hamiltoniano . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
7 PROBLEMAS DE DECISÃO 37
7.1 Classe P . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
7.2 Classe NP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
7.3 Satisfabilidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
7.4 Transformação Polinomial . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
7.5 NP-Completo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
7.6 3 Satisfabilidade (3SAT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
7.6.1 SAT ∝ 3SAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
7.6.2 3SAT ∝ ConjuntoIndependente . . . . . . . . . . . . . . . . . . . 45
7.6.3 Conjunto Independente está em NP . . . . . . . . . . . . . . . . . 46
3
Caṕıtulo 1
GRAFOS E SUBGRAFOS
1.1 Notação O, ω, θ
Definição 1.1: Dado um par de funções f, g : R→ R, dizemos que
• f é O(g) se existe α ∈ R+ e n0 ∈ N tal que ∀x ≥ n0, f(x) ≤ α · g(x).
• f é ω(g) se existem α ∈ R+ e n0 ∈ N tal que ∀x > n0, g(x) ≤ α · f(x).
• f é θ(g), f é O(g) e f é ω(g).
(a) f é O(g). (b) f é θ(g).
(c) f é ω(g).
Figura 1.1: Notações Assintóticas.
4
1.2 Grafo
Definição 1.2: Um grafo é uma dupla G = (V, E) de conjuntos, onde V é o
conjunto finito, não vazio, de vértices e E é o conjunto de arestas formado por pares, não
ordenados, de distintos elementos de V. Notamos n = |V | e m = |E|.
Definição 1.3: Se uv ∈ E, então notamos uv = (u, v), e, neste caso, dizemos que
u é Adjacente à v, e que a aresta uv é Incidente em u e em v.
Definição 1.4: A vizinhança N(v) de v, ou vizinhança aberta de v, é o conjunto
N(v) = u:uv ∈ E. A vizinhança fechada de v é N(v) = N(v) ∪ v. Se uv ∈ E dizemos
tambem que u é vizinho de v.
Definição 1.5: O grau d(v) de v é d(v) = |N(v)|.
Representamos um grafo por uma matriz de adjacência M, ondeMij =
0, se ij 6∈ E1, se ij ∈ E .
(a) Exemplo de Grafo.
(b) Matriz Adjacncia do grafo ao lado.
Figura 1.2: Exemplo de Grafo.
Note que a soma de todas as linhas de M totaliza
∑
v∈V d(v). Que em nosso exem-
plo,
∑
v∈V d(v) = 12 = 2 ·m = 2 · 6.
Teorema 1.1: Dado um grafo G = (V, E). Então
∑
v∈V d(v) = 2 ·m.
Prova: Note que em M, a matriz adjacência de G, a linha correspondente ao vértice
v ∈ V soma igual ao grau d(v) de v. Assim, a soma de todas as linhas dá
∑
v∈V d(v).
Agora esta soma pode ser parcelada com a soma de 2 unidades (1 em Mij e 1 em Mji)
para cada aresta ij ∈ E. Assim,
∑
v∈V d(v) = 2 ·m.
5
Corolário 1.1: O número de vértices de grau ı́mpar em G = (V, E) é par.
Prova: Veja que ∑
v∈V
d(v) = 2 ·m
∑
v∈V ,d(v)par
d(v) +
∑
v∈V ,d(v)impar
d(v) = 2 ·m
Assim,
∑
v∈V ,d(v)impar
d(v) = (2 ·m)−
∑
v∈V ,d(v)par
d(v)
Como a soma de ı́mpares é par, o número de parcelas é par. Logo, existe um
número par de vértices de grau ı́mpar.
1.2.1 Grau do Grafo
Notamos o grau mı́nimo de um grafo G, dado por δ(G), é igual ao menor d(v). Já
o grau máximo de um grafo G, dado por ∆(G), é igual ao maior d(v).
1.3 Subgrafo
Definição 1.6: Dizemos que o grafo F é um subgrafo do grafo G = (V, E) se
V(F) ⊂ V(G) e E(F) ⊂ E(G).
Dado um conjunto S ⊂ V (G). O subgrafo G[S] de G induzido por S possui um
conjunto de vértices igual a S e se u, v ∈ S e uv ∈ E(G), então uv ∈ E(G[S]).
Exemplo, Figura 1.3.
6
(a) Grafo A.
(b) Subgrafo B.
(c) Subgrafo C.
Figura 1.3: Grafo e seus subgrafos.
O grafo B e o grafo C são subgrafos de A. Porém, B não é subgrafo de C e C não
é subgrafo de B.
1.4 Tipos de Grafos
Definição 1.7: Dado um grafo G = (V, E). Dada S = (v1, v2, ..., vn) uma
sequência de vértices de V. Dizemos que S é um Passeio se vivi+1 ∈ E para todo
i ∈ (1, 2, ..., n− 1). Dizemos que o passeio S é fechado se v1 = vk.
Definição 1.8: Dizemos que o passeio S é uma Trilha se vivi+1 6= vjvj+1 e i 6= j
(S não repete arestas).
Definição 1.9: Dizemos que o Comprimento de S é k − 1 o número de arestas
(repetidas ou não) de S.
7
Definição 1.10: Dizemos que o passeio é um Caminho se vi 6= vj e i 6= j.
Definição 1.11: Um Ciclo é uma trilha fechada com uma única repetição de
vértices (v1 = vk).
Definição 1.12: Dizemos que um grafo é Aćıclico se não possui ciclos.
Exemplo.
Baseado no grafo G acima, mostre:
1. Um passeio que não é trilha.
(A, B, C, D, E), (A, B, A), (A, B, C, A, B)
2. Uma trilha que não é caminho.
(A, B, C, A, E), (A, B, C, A)
3. Um caminho com seu comprimento máximo.
(A, B, C, D, E) com comprimento igual a 4.
4. Todos os ciclos de G.
(A, B, C, A), (A, B, C, D, E, A), (A, C, D, E, A), com comprimentos iguais a 3,
5 e 4, respectivamente.
1.5 Isomorfismo
Definição 1.13: Dados dois grafos, G e H. Dizemos que G é isomorfo a H se
existe f : V (G)
−→
bijV (H) e uv ∈ E(G) se, somente se, f(u)f(v) ∈ E(H). E, neste caso,
escrevemos G ∼ H.
8
(a) Grafo K5.
(b) Grafo Q3.
Figura 1.4: Grafos não isomorfos.
(a) Grafo K4,4.
(b) Grafo Q3.
Figura 1.5: Grafos isomorfos.
1.6 Classes de Grafos
1.6.1 Grafo Completo
Definição 1.14: Dado n ≥ 1, n ∈ N, um Grafo Completo Kn = (V,E) satisfaz
que para todo u, v ∈ V , uv ∈ E.
9
Tabela 1.1: Número vértices e de arestas do Kn
|V (G)| |E(G)|
1 0
2 1
3 3
4 6
5 10
...
...
n n·(n−1)
2
C(n,p) =
n!
p! · (n− p)!
Como uma aresta é entre dois vértices, a fórmula fica da seguintemaneira.
C(n,2) =
n!
2!·(n−2)! => C(n,2) =
n·(n−1)·(n−2)!
2!·(n−2)! => 2! = 2 => C(n,2) =
n·(n−1)
2
Figura 1.6: Grafo Completo, K5
1.6.2 Grafo Bipartido
Definição 1.15: Um Grafo Bipartido G = (V, E) satisfaz que V = V1 ∪ V2 e
V1 ∩ V2 = 0, e escrevemos V = (V1 ∪ V2), tal que se uv ∈ E, então u ∈ V1 e v ∈ V2. Os
conjuntos V1 e V2 são conjuntos independentes. Um exemplo de Grafo Bipartido é o grafo
da Figura 1.7.
10
Figura 1.7: Grafo Bipartido.
Definição 1.16: Um Grafo Bipartido é dito Completo, Kn1,n2 = G(V,E), se existe
uma partição V = (V1, V2) em conjuntos independentes V1 e V2 tal que se u ∈ V1 e v ∈ V2,
então uv ∈ E e |V1| = n1 e |V2| = n1.
O número de vértices e o número de arestas para um grafo bipartido completo
Kn1,n2 é, respectivamente, |V (G)| = n+m e |E(G)| = n1 · n2.
1.6.3 Clique
Definição 1.17: Dado um grafo G = (V,E) uma Clique S ⊂ V de G, satisfaz que
se u, v ∈ S, então uv ∈ E.
1.6.4 Grafo Complementar
Definição 1.18: Dado um grafo G = (V,E), o Grafo Complementar Ḡ = (V, Ē)
satisfaz que e ∈ E se, somente se, e 6∈ Ē.
(a) Grafo G. (b) Grafo Ḡ.
Figura 1.8: Grafo Complementar.
No exemlo da Figura 1.8, os grafos são chamados de Grafos Auto-complementares.
11
1.6.5 Grafo Caminho
Definição 1.19: Um Grafo Caminho satisfaz que Pn = (V,E), n ∈ N, V =
(v1, v2, ..., vn) e E = (vivi+1 : i ∈ (1, 2, ..., n− 1)). Exemplo de Grafo Caminho na Figura
1.9.
Figura 1.9: Grafo P4
1.6.6 Grafo Ciclo
Definição 1.20: Dado n ∈ N∗, n ≥ 3, o Grafo Ciclo satisfaz que Cn = (V,E),
V = (v1, v2, ..., vn) e E = vivi+1 : i ∈ (1, 2, ..., n− 1) ∪ (v1vn).
Figura 1.10: Cn
1.6.7 Grafo Roda
Definição 1.21: Um Grafo Roda (Wheel)Wn = (V,E) satisfaz que V = (v1, v2, ..., vn, c)
e E = (vivi+1 : i ∈ (1, 2, ..., n− 1)) ∪ (cvi : i ∈ (1, 2, ..., n)).
Figura 1.11: Grafo Roda W5
1.6.8 Grafo n-Cubo
Definição 1.22: Dado n ∈ N, um n-Cubo Qn = (V,E), onde |V | = 2n e |E| =
n · 2n−1, existe f : (0, 1)n
−→
bijV e E = (uv : |diff(u, v)| = 1).
12
Figura 1.12: Grafo Cubo Q3
1.6.9 Grafo R-regular
Definição 1.23: Um grafo G = (V,E) é R-regular se ∀v ∈ V , d(v) = R. Se G é
3-regular, G é cúbico.
Fato:
• Qn é n-regular.
• Kn é (n-1)-regular.
• Cn é 2-regular.
1.6.10 Grafo Trivial
Definição 1.24: Dado um grafo conexo, dizemos que é Trivial se n = 1.
13
Caṕıtulo 2
CONECTIVIDADE
2.1 Componente Conexa
Definição 2.1: Dizemos que dois vértices, u e v, estão na mesma Componente
Conexa de um grafo G = (V,E) se existe um caminho P que liga u até v, em G.
2.2 Grafo Conexo
Definição 2.2: Dizemos que um grafo G = (V,E) é Conexo se o número de
componentes conexas de G é igual a 1.
2.3 Busca em Profundidade
Dado um grafo G = (V,E), o algoritmo DFS (Depth First Search) explora as
arestas do vértice mais recente pesquisado que ainda possui arestas não exploradas. Este
processo continua até termos explorado todos os vértices a partir do vértice fonte. Se
ainda existirem vértices não explorados, o algoritmo inicia a DFS em um deles. Após
a execução, o algoritmo particiona E nos conjuntos Arestas da floresta de DFS, Arestas
Back, Arestas Foward e Arestas Across.
• Arestas da floresta de DFS são arestas uv onde v é explorado imediatamente após
u ser explorado.
• Arestas Back, ou Arestas Retorno, v é ancestral de u e v não é pai de u (aresta −→uv).
14
• Arestas Foward são arestas −→uv tais que u foi explorado antes de v.
• Arestas Across (cruzadas) são as arestas restantes.
Exemplo a Figura 2.1.
(a) Grafo G.
(b) Árvore gerada pelo DFS no grafo G.
Figura 2.1: Grafos e sua árvore da DFS.
2.4 Corte de Vértices
Definição 2.3: Um corte de vértices de G é um conjunto S ⊂ V tal que o grafo
H = (V-S, E’), onde E ′ = (uv : u ∈ S e v ∈ S) é desconexo ou trivial.
Um corte de vértices com 1 vértice é chamado articulação.
A conectividade de vértices cv(G) de G é o tamanho do menor corte de vértices de
G.
2.5 Corte de Arestas
Definição 2.4: Um corte de arestas de G é um conjunto Y ⊂ E tal que o grafo F
= (V, E-Y) é desconexo. Um corte de arestas com 1 arestas é chamado ponte.
A conectividade de arestas ce(G) de G é o tamanho (número de arestas) do menor
corte de arestas de G.
15
Kn Kn1,n2 Cn Pn Wn Qn
cv(G) n-1 min(n1,n2) 2 0, se n = 1 3 n
1, se n > 1
ce(G) n-1 min(n1,n2) 2 0, se n = 1 3 n
1, se n > 1
δ n-1 min(n1,n2) 2 0, se n = 1 3 n
1, se n > 1
Exemplo
G e H na 2.3 são conexos, então cv(G) > 0, cv(H) > 0, ce(G) > 0 e ce(H) > 0.
(a) Grafo G.
(b) Grafo H.
Figura 2.2: Grafos de exemplo para corte de vértice e corte de aresta.
No grafo G, 2.2a, cv(G) = 1, pois existe a articulação b e ce(G) = 2, pois G não
tem ponte ce(G) > 1 e existe o corte bc, bd de tamanho 2.
No grafo H, 2.2b, cv(H) = 1, pois existem as articulações 3 e 4 e ce(H) = 1, pois
H tem uma ponte (3,4) em H.
Teorema 2.1: Dado G = (V,E) um grafo conexo. Se G tem uma ponte uv, então
G tem uma articulação que é u ou v.
Prova
Suponha que G é conexo e que uv é uma ponte de G.
Se G = K2, então u e v são articulações, porque G− u é trivial.
Se G não é K2, então existe w, w 6= u e w 6= v tal que, por exemplo, wu ∈ E e
wv 6∈ E.
16
Vamos olhar para H = G − uv. O grafo H tem 2 coponentes conexas: Cu que
contém vértice u e Cv que contém o vértice v. Note que em G todos os caminhos de w
até v passam por u, caso contrário H não seria desconexo. (existiria um caminho em H
de u até v).
Logo, em G − u temos uma componente conexa contendo v e uma componente
conexa distinta contendo w. Logo u é a articulação procurada.
Teorema 2.2: Dado G = (V,E), então δ ≥ ce(G).
Prova
Se G é desconexo, então ce(G) = 0, como δ ≥ 0, este caso está certo.
Se G é conexo, então seja v o vértice com d(v) = δ e E
′
= (vv1, vv2, ..., vvδ) as
arestas incidentes à v. Veja que G − E ′ é desconexo (com a componente Cv = (v, 6 0)
trivial). Como ce(G) é o tamanho do menor corte de arestas, ce(G) ≤ |E ′ | = δ.
Teorema 2.3: Dado um grafo G = (V,E), cv(G) ≤ ce(G).
Prova:
Indução em ce(G) ≥ 0.
Suponha que ce(G) = 0. Então G é desconexo ou trivial.
Logo, 0 = cv(G) ≤ 0 = ce(G) (Base k = 0).
Suponha (indução forte) que para algum k ≥ 0. Se ce(G) ≤ k, então cv(G) ≤
ce(G) (hipótese de indução forte).
Tome G com ce(G) = k + 1. Sejam e1, e2, ..., ek, ek+1 as arestas tal que G −
(e1, e2, ..., ek, ek+1) é desconexo, com ce(G) ≥ k + 1 ≥ 1, precisamos tirar, pelo menos,
uma aresta. Portanto, G − (e1, e2, ..., ek, ek+1) não é trivial (G − (e1, e2, ..., ek, ek+1) tem,
pelo menos, 2 vértices).
Veja que ce(G− (e1)) = k. Pela hipótese de indução, cv(G− (e1)) ≤ k. Tome um
corte de vértices S de G− (e1) com |S| = cv(G− (e1)).
Vamos olhar para G - S, duas coisas podem acontecer.
1. G - S é desconexo. Isso é ótimo! Porque cv(G) ≤ |S| ≤ k < k + 1 = ce(G).
2. G - S é conexo. Logo, G − S = ((G − e1) − S) ∪ (e1). Onde ((G − e1) − S) é
desconexo.
17
Logo e1 é uma ponte de G - S.
Pelo teorema prévio, existe uma articulação v em G - S.
Logo, G− (s ∪ (v)) é desconexo ou trivial.
Portanto, S ∪ (v) é um corte de vértices de G e cv(G) ≤ |S ∪ (v)| ≤ k+ 1 = ce(G).
Corolário 2.1: Dado G = (V,E), cv(G) ≤ ce(G) ≤ δ.
Prova
A partir dos teoremas prévios.
Teorema 2.4: cv(Qn) = n.
Prova
É válido se n = 0, pois Qn é trivial neste caso e cv(Qn) = 0. (Base)
Suponha que para algum k ≥ 0, se n ≤ k, então cv(Qn) = n.
Considere que o produto de um grafo G por um grafo H é um grafo G x H, onde
V (G · H) = ((u, v) : u ∈ V (G) e v ∈ V (H)) e E = ((u, v), (u,w), (a, b), (t, b)) com
vw ∈ E(H) e at ∈ E(G).
(a) Grafo G.
(b) Grafo H.
(c) Grafo G × H.
Figura 2.3: Produto entre os Grafos G e H
Note que Qn = Qn−1 ×K2, n > 0.
18
Caṕıtulo 3
ÁRVORES E FLORESTAS
3.1 Árvores
Definição 3.1: Dado um grafo G = (V,E) dizemos que G é aćıclico se G não
possui ciclo como subgrafo.
Definição 3.2: Uma floresta é um grafo aćıclico.
Definição 3.3: Uma árvore é um grafoaćıclico e conexo.
Teorema 3.1: Um grafo G = (V,E) é uma árvore se, somente se, para cada par
de vértices u, v ∈ V (G), existe um único caminho que liga u até v.
Prova
Suponha que G é uma árvore.
Logo G é conexo.
Se u, v ∈ V , então, porque G é conexo, existe um caminho P que liga u até v,
P = (u = p1, p2, ..., pk = v).
Vamos provar que P é único.
Suponha por absurdo que existe Q = (u = p1, q2, q3, ..., qr−1, qr = pk = v) com
Q 6= P , onde Q liga u até v. Afirmo que existe menor i ∈ (1, 2, ..., k) tal que qi = pi e
qi+1 6= pi+1, caoso contrário, Q = P . Afirmo tambem que existe um menor a > i + 1 e
um menor b > i+ 1 tais que qa = pb, pois Q e P terminam em v, isto é, se a = r e b = k,
então qr = pk.
19
Figura 3.1: Caminho único.
Note que (qi, qi+1, ..., qa, pb−1, pb−2, ..., pi+1, pi) é um ciclo de G, uma contradição,
porque G é uma árvore e, portanto, aćıclio. Logo, para cada u, v ∈ V existe um único
caminho que liga u até v.
Suponha que para cada par de vértices u, v ∈ V existe um único caminho P que
liga u até v. Logo, G é conexo.
Suponha que G não é aćıclico. Logo existe um ciclo (a1, a2, a3, ..., ak, a1) em G.
Portanto, dados a1 e a2 existem caminhos distintos P = (a1, a2) e Q = (a1, ak, ak−1, ..., a2)
que ligam a1 até a2, uma contradição porque, por hipótese, estes caminhos seriam únicos
(P = Q). Logo, G é aćıclico. E Portanto, G é uma árvore.
Teorema 3.2: Se G = (V,E) é uma árvore, então m = n− 1.
Prova:
Indução em n ≥ 1.
Se n = 1, então m = 0 = 1− 1 = n− 1 (Base de indução).
Suponha que exista k ≥ 1 tal que se n ≤ k, e G é uma árvore, então m = n − 1
(hipótese de indução forte).
Tome uma árvore G = (V,E) com k + 1 = n.
Portanto, n ≥ 2 (porque n = k + 1 ≥ 1 + 1 = 2).
Como G é conexo, existe uma aresta e = uv em G.
Lema 3.1: Se uv ∈ E e G = (V,E) é uma árvore, então uv é uma ponte.
Prova:
Note que (u,v) é um caminho que liga u até v. Pelo teorema prévio, não existe
caminho que ligue u até v em G− (uv).
Colorário 3.1: Todas as arestas de uma árvore são pontes.
20
Pelo lema, G − uv é uma floresta com duas componentes conexas, T1 e T2, cada
uma com número de vértices n1 e n2. Mais ainda, n1 ≤ k e n2 ≤ k.
Figura 3.2: Árvore com mais de 1 componente conexa.
Pela Hipótese de Indução, se |E(T1) = m1, e |E(T2)| = m2 temos que m1 =
n1 − 1 e m2 = n2 − 1. Logo:
m = |E(T1)|+ |E(T2)|+ |uv|
m = (n1 − 1) + (n2 − 1) + 1
m = n1 + n2 − 1
Como n = n1 + n2.
m = n− 1
Definição 3.4: Dado um grafo G = (V,E) e v ∈ V , se d(v) = 1, dizemos que v é
um vértice pendente de G. G é uma árvore, chamamos v de folha.
Teorema 3.3: Se G = (V,E) é uma árvore não trivial, então G tem, pelo menos,
duas folhas.
Prova: Suponha que G é uma árvore não trivial (por absurdo) com zero folhas.
Logo, n ≥ 2 (G não é trivial) e assim, cada v ∈ V tem d(v) = 2 (Pois se d(v) = 0,
v é isolado e como n ≥ 2, G não é conexo. E se d(v) = 1, então v é uma folhaque não
existe pela hipótese de zero folhas).
Agora, 2n− 2 = 2m = Σv∈V d(v) ≥ 2m. E assim, −2 ≥ 0, uma contradição.
Suponha, por absurdo, que G é uma árvore com, exatamente, uma folha v.
Logo, existem n−1 vértices cada grau maior, ou igual, a dois. Dáı, 2n−2 = 2m =
Σv∈V d(v) ≥ 2(n − 1) + 1 = 2n − 1. A contradição (−1 ≥ 0) final. Logo, existem pelo
21
menos 2 folhas na árvore G.
3.2 Geodésia
Definição 3.5: Dado um grafo G = (V,E) e u, v ∈ V . A distância, d(u,v), de u
até v é o númeor de arestas em um menor caminho que liga u até v (o comprimento de
um menor caminho) se u e v pertencem a mesma componente conexa e d(u, v) = ∞, se
u,v pertencem a diferentes componentes conexas. Chamamos tal caminho de Geodésia de
u e v. O diâmetro de G é o comprimento de sua maior Geodésia.
Geodésica de a,b: (a,b)
Geodésica de a,d: (a, c, d), (a, e, d)
d(a,a) = 0
d(a,b) = 1
d(a,c) = 1
d(a,d) = 2
d(a,e) = 1
diâmetro(G) = 2
G Kn Cn Kn1,n2 Wn Qn Pn Sn
diâmetro 0, se n = 0 bn
2
c 1, se n1 = n2 = 1 1, n = 3 n n− 1 1, se n = 1
1, se n > 1 2, caso contrário 2, n > 3 2, se n > 1
Teorema 3.4: G(V,E) é bipartido se, somente se, todos os cilcos de G tem número
par de vértices.
22
Prova: Suponha que G é um grafo bipartido.
Suponha, por absurdo, que Ck = (v1, v2, ..., vk) é um ciclo subgrafo de G, tal que
k = 2q + 1, q ∈ N.
Seja V = (V1, V2) uma partição em conjuntos independentes de G.
Assuma que v1 ∈ V1.
Por causa de
v1v2 ∈ E, v2v3 ∈ E, · · · , v2q+1v2q ∈ E.
E como V1 e V2 são independentes, temos que
v1 ∈ V1, v2 ∈ V2, v3 ∈ V1, · · · , v2q+1 ∈ V1, v1 ∈ V2 (contradição).
Figura 3.3: Exemplo para o teorema 1.2.
Logo, todos os ciclos em G são pares.
Suponha que todos os ciclos de G são pares.
Assumimos que G é conexo.
Considere a receita.
Tome um vértice v ∈ V . Para todo u ∈ V , coloque u ∈ V1, se d(u,v) é ı́mpar. Ou
u ∈ V2, se d(u,v) é par.
Vamos ver se a receita funciona. Com certeza V = (V1, V2) é uma partição. Supo-
nha por absurdo que V1 não é independente. Seja uv ∈ E com u, v ∈ V1.
23
Figura 3.4
Assuma que d(v, u) ≤ d(v, w). Se d(v, u) < d(v, w), então d(v, w) ≤ d(v, w) + 1
considerando a geodésica de v e u mais a aresta uv. Como u, v ∈ V 1, temos que d(u, v) =
d(v, w).
Tome o menor ciclo que contenha u e v com vértices x tal que d(x, v) < d(v, u).
Figura 3.5
Se o vértice t do ciclo com menor distância até v é, tal que
24
(a)
(b)
Figura 3.6
Se t ∈ V1, as seções de t até u e w tem comprimento (númeor de arestas) par. Isto
da um ciclo com uw de comprimento 2k + 2q + 1 = 2p+ 1, uma contradição.
Se t ∈ V2, o ciclo tem número de arestas (2q + 1) + (2p + 1) = 2k + 1, a outra
contradição.
25
Caṕıtulo 4
PLANARIDADE
Definição 4.1: Dizemos que um grafo G = (V,E) é planar se existe um desenho
D(G) no plano de G sem cruzamento de arestas. Neste caso, dizemos que D(G) é um
desenho plano de G.
Exemplos:
(a)
(b)
(a) Desenho de K4 não planar. (b) Desenho de K4 planar.
Figura 4.2
26
Figura 4.3: K2,n é planar.
Teorema 4.1: K5 não é planar.
Prova: Suponha por absurdo que K5 é planar. Seja V (K5) = (a, b, c, d, e). Seja
D(K5) um desenho plano de K5. Como K5 não tem cruzamentos, o cilco (a, b, c, a)
divide o plano em 2 regiões conexas, R1 e R2.
O vértice d está em uma dessas regiões (digamos R1). Como d é adjacente a a, b
e c, temos agora 4 regiões do plano.
R1 = (a, b, c, a)
R2 = (a, d, b, a)
R3 = (b, d, c, b)
R4 = (a, d, c, a)
27
Pergunta: Onde fica o vértice e?
Como cada região tem 3 vértices e o vértice e tem grau 4, não há lugar para o
vértice e, uma contradição. Logo, K5 não é planar.
Teorema 4.2: K3,3 não é planar.
Suponha por absurdo que K3,3 é planar.
Seja V = (V1, V2) = (a, b, c, 1, 2, 3) a partição em conjuntos independentes de V.
Considere que o ciclo (a, 1, b, 2, a) divide o plano nas regiões conexas R1 e R2 em
um desenho plano D(3,3).
O vértice c pertence a R1. Logo temos 3 regiões.
R1 = (a, 1, b, 2, a)
R2 = (a, 1, c, 2, a)
R3 = (b, 1, c, 2, b)
Pergunta: Em qual destas 3 regiões fica vértice 3 ?
Resposta: Não existe lugar para o vértice 3. Pois cada uma das 3 regiões (R1, R2
e R3) tem exatamente 2 vértices em a, b, c, enquanto N(3) = a, b, c. Uma contradição.
Logo k3,3 não é planar.
Definição 4.2: Dizemos que um grafo H é uma subdivisão de um grafo G se
existe uma função f : E(G) −→ N tal que V (G) ⊂ V (H) e para cada e ∈ E(G) existem
adicionais ua1, a1a2, ..., af(e)−1af(e), af(e)v ∈ E(H).
Exemplo:
28
(a) (b)
Teorema 4.3 (KURATOWSKI, 1936):
Um grafo G não é planar se, somente se, G tem uma subdivisão de K5 ou K3,3.
Exemplo:
Q4 não é planar.
(a)
(b)
29
Definição 4.3: Dado um desenho plano D(G) de um grafo planar G = (V, E).
Uma face f de D(G) é um passeio fechado que define uma região conexa R de D(G). O
tamanho |f | de f é o número de suas arestas e notamos |f | = d(f), ou Grau da Face f.
Exemplo:
f1 = (a, b,c, j, k, l, k, a)
f2 = (c, d, i, c)
f3 = (i, d, e, i)
f4 = (f, g, h, f)
f5 = (a, b, c, d, e, f, g, h, f, e, i, c, j, k, a)
d(f1) = 7
d(f2) = 3
d(f3) = 3
d(f4) = 3
d(f5) = 14
∑
d(f) = 2m = 30
Teorema 4.4: Se D(G) é um desenho plano de um grafo conexo planar, então∑
f∈D(G) d(f) = 2m.
Prova:
Arestas em ciclos são contadas uma vez em cada face e pontes são contadas duas
vezes em uma mesma face.
Teorema 4.5: Se G = (V, E) é um grafo planar e conexo, D(G) é um desenho
plano de G, então F + n = m+ 2, onde F é o número de faces de G.
Prova:
30
Por indução em F ≥ 1.
Se F = 1, então G é aćıclico, pois caso contrário F ≥ 2 (uma face dentro do ciclo
e outra face fora do ciclo). Logo, G é aćıclico e conexo. Assim, G é uma árvore.
Em uma árvore, m = n+ 1. Assim:
n = m+ 1
F + n = 1 + (m+ 1)
F + n = 2 +m(Base)
Suponha que ∃k ≥ 1 tal que se F ≤ k, então F +n = m+ 2. (Hipótese de indução
- HI)
Seja um desenho D(G) plano de um grafo planar G com F = k + 1 faces.
Como K ≥ 1 e F ≥ 2. Portanto existe um ciclo em G. Logo, existe uma aresta e
em G que não é ponte (e = uv do ciclo).
Vamos olhar para H = G− e.
Sabemos que H é conexo porque G é conexo, e não é ponte e que F (H) = k.
Pois as duas faces F1 e F2 que e pertencia tornam-se uma única face em D(H) =
D(G− e). Assim, pela HI temos que
k + n = m− 1 + 2
Onde:
F (H) = k
|V (H)| = |V (G)|
|E(H)| = m
Portanto em D(G) temos
31
k + 1 + n = (m− 1) + 1 + 2
Onde:
F = k + 1
m = (m− 1) + 1
Logo:
K + 1 + n = m+ 2
Teorema 4.6: Se G = (V, E) é um grafo planar e n ≥ 3, então m ≤ 3n− 6.
Prova:
Veja que 2m =
∑
d(f). Como G tem n ≥ 3, d(f) ≥ 3.
Logo, 2m =
∑
f∈F d(f) ≥ 3F .
Assim,
2m =≥ 3F = 3(m+ 2− n)
2m ≥ 3(m+ 2− n)
2m ≥ 3m+ 6− 3n
−m ≥ 6− 3n
m ≤ 3n− 6
Teorema 4.6: Se G é um grafo plano conexo sem triângulos com n ≥ 3, então
m ≤ 2n− 4.
Prova:
Análoga, pois d(f) ≥ 4 e temos 2m ≥ 4F = 4(m+ 2− n).
E assim, 2m ≤ 4n− 8 ou m ≤ 2n− 4.
32
Caṕıtulo 5
COLORAÇÃO
Definição 5.1: Dado um grafo G = (V,E) e k ∈ N∗ um inteiro positivo. Uma k-
coloração de G é uma função f : v −→ (1, 2, 3, ..., k) tal que se uv ∈ E, então f(u) 6= f(v).
O número cromático χ(G) é o menor k tal que G tem um χ(G)− coloração.
Exemplo: m ≥ 1 se, somente se, χ(G) ≥ 2.
G Kn Bipartido Cn Wn Qn Pn
χ(G) n 2 2, se n for par 3, se n for par 1, n = 0 1, n = 1
3, se n for ı́mpar 4, se n for ı́mpar 2, n > 0 2, n > 1
33
Caṕıtulo 6
TRILHAS EULERIANAS E
CICLOS HAMILTONIANO
6.1 Trilha Euleriana
Definição 6.1: Dado um grafo G = (V, E). Uma Trilha Euleriana T em G é uma
trilha fechada que contém todas as arestas e todos os vértices de G.
Se existe uma trilha euleriana em G = (V, E), dizemos que G é Euleriano.
(a) Não é Euleriano
(b) É Euleriano. Certificado: (1, 2, 3, 4, 5, 3, 1)
Teorema 6.1 (Teorema de Euler): G é um grafo Euleriano se, somente se, G
é conexo e cada vértice de G tem grau par.
Prova:
Suponha que G é Euleriano. Então existe uma Trilha Euleriana T em G.
Como T contém todos os vértices de G, tem que ser conexo. Como T conta grau
1 para o vértice inicial v e conta grau 2 para um vértice intermediário u, quando entra e
quando sai de u. E, finalmente, conta 1 quando fecha em v. Temos que cada vértice tem
34
grau par.
Suponha que G é conexo e que cada vértice tem grau par.
Logo, cada vértice tem grau 2q com q > 1, se n ≥ 2.
Logo, um caminho aleatório sempre define um ciclo. Seja C
′
esse ciclo.
d(v1) ≥ 2
d(v2) ≥ 2
d(v3) ≥ 2
d(v4) ≥ 2
d(vn) ≥ 2
Olhe que G−E(C ′) = G1 tem todos os vértices com grau par tambem. Assim, se
recorre as componentes conexas de Gi, i ≥ 1, obtendo uma partição em ciclos das arestas
de G : (C1, C2, ..., CK).
Agora defino T uma trilha euleriana de G.
T ←− C1, remova C1 de C = (C1, C2, ..., CK).
Algorithm 1 Algoritmo para verificar se o Grafo é Euleriano
while (C 6= 0) do
tome Ci ∈ C tal que v ∈ T
⋂
Ci;
T ←− Percorra Ci a partir de v e percorra T ;
C ←− C − Ci;
end while
retorne T;
Grafo G usado de exemplo.
C1 = (a, b, j, a)
35
C2 = (d, e, i, d)
C3 = (i, h, e, f, i)
C4 = (b, c, d, b)
C5 = (h, g, f, h)
36
Trilha Ci C
- C1 C = (C1, C2, C3, C4, C5)
C1 C4 C = (C2, C3, C4, C5)
(a, b, j, a)
C1 + C4 C2 C = (C2, C3, C5)
(b, c, d, b, j, a, b)
C1 + C4 + C2 C3 C = (C3, C5)
(d, e, i, d, b, j, a, b, c, d)
C1 + C4 + C2 + C3 C5 C = (C5)
(i, h, e, f, i, d, b, j, a, b, c, d, e, i)
C1 + C4 + C2 + C3 + C5 - -
(h, f, g, h, e, f, i, d, b, j, a, b, c, d, e, i, h)
6.2 Ciclo Hamiltoniano
Definição 6.2: Dado um grafo G = (V,E) dizemos que G é Hamiltoniano se Cn
é um subgrafo de G e dizemos que Cn é um Ciclo Hamiltoniano de G, onde n = |V (G)|.
(a) G é Hamiltoniano com certificado (a, b, c,
d, e, a). (b) H não é Hamiltoniano.
37
Caṕıtulo 7
PROBLEMAS DE DECISÃO
Definição 7.1: Um problema de decisão é formado por uma entrada e uma per-
gunta cuja resposta é sim ou não.
Exemplo
• Ciclo Hamiltoniano
Instância: Grafo G = (V,E)
Pergunta: G é Hamiltoniano?
• Trilha Euleriana
Instância: Grafo G = (V,E)
Pergunta: G é Euleriano?
• Coloração
Instância: Grafo G = (V,E) e inteiro K
Pergunta: G é k-coloŕıvel?
• k-coloração
Instância: Grafo G = (V,E)
Pergunta: G é k-coloŕıvel?
• Conexidade
Instância: Grafo G = (V,E)
Pergunta: G é conexo?
38
Definição 7.2: Dado um algoritmo A. A complexidade de espaço de A corresponde
a uma função f(n), onde f(n) é o espaço em memória ocupado por uma entrada de
tamanho n. A textitcomplexidade de tempo de A corresponde ao tempo de execução g(n)
de uma instância de tamanho n de A.
Exemplo
Dado A, sendo o algoritmo DFS (Depth First Search), possui complexidade de
espaço (.pai + .cor + .f) igual a 3n + n2∗. Complexidade de tempo é de 2n porque para
cada aresta olhamos exatamente duas vezes quando visitamos cada um de seus vértices.
Logo, espaço(n2) = O(n2) e tempo(n2) = O(n2).
∗3n = .pai+ .cor + .f
n2 = matriz adjacência
Definição 7.3: Dado um problema π = (Instância, Pergunta), a complexidade
de espaço f(n) de π é a menor complexidade de espaço entre todos os algoritmos que
resolvem π para uma instância de tamanho n de π. A complexidade de tempo de π é
g(n) a menor complexidade de tempo entre todos os algoritmos que resolvem π para uma
instância de tamanho n de π. O algoritmo que realiza a complexidade (espaço/tempo) é
chamado de ótimo.
Exemplo
Nosso algoritmo que produz a ávore de DFS é ótimo em espaço (precisa armazenar
a entrada) e em tmepo (precisa ler a entrada) pois ambas são lineares.
7.1 Classe P
Definição 7.4: A Classe Polinomial (P ) consite dos problemas de decisão que
possuem um algoritmo com complexidade de tempo polinomial no tamanho da entrada.
Exemplo
DFS com algoritmo de certificado com complexidade linear.
Trilha Euleriana:
Algoritmo:
1o Verifique se é conexo, O(m)
39
2o Verifique se ∀v ∈ V , d(v) é par, O(m)
7.2 Classe NP
Definição 7.5: A Classe Não Deterministica de Tempo Polinomial (NP ) consite
dos problemas de decisão π que o problema de decisão é tempo polinomial no tamanho
da instância.
Entrada: Instância I de π e certificado c de I.
Pergunta: c é um certificado para a resposta sim de I?
Exemplo
Ciclo Hamiltoniano
(a) O certificado conhecido para a resposta Não
tem tamanho ω(n!).
(b) Certificado para a resposta Sim: (1, 2, 3, 4,
5, 1).
Ciclo Hamiltoniano está em NP , porque dado um grafo G = (V,E) (instância de
ciclo hamiltoniano - CH) e uma permutação (v1, v2, ..., vn, v1) de V (certificado) se projeta
um algoritmo que verifica se vivi+1 ∈ E que repsonda sim ou não, caso contrário.
40
O algoritmo roda em tempo O(n), portanto, em tempo polinomial no tamanho n2
da entrada. Logo, CH ∈ NP .
7.3 Satisfabilidade
Instância I = (U,C) onde U é um conjunto de variáveis lógicas e C é uma conjunção
(and) de disjunções (or) chamado de conjunção de cláusulas (or).
Pergunta
Existe uma atribuição de verdadef : U −→ (V, F ) para U que satisfaz C, ou seja,
cada cláusula tem pelo menos um literal (u ou ū) verdadeiro?
Quando a resposta é Sim dizemos que a instância I é satisfat́ıvel e quando a
resposta é Não, a instância I não é satisfat́ıvel.
Exemplo
I1 = (U1, C1) = ({u1, u2}, {(u1
∨
u2), (u1
∨
ū2), (ū1
∨
u2), (ū1
∨
ū2)})
I2 = (U2, C2) = ((u1, u2, u3), {(u1
∨
u2
∨
u3), (u1
∨
ū2
∨
ū3), (ū1
∨
ū2
∨
u3),
(ū1
∨
u2
∨
ū3)})
u2
V F
u1 V F F
F F F
Tabela 7.1: Tabela para I1
I2 é satisfat́ıvel com o certificado (u1, u2, u3) = (V, V, V )
7.4 Transformação Polinomial
Definição 7.6: Dados π1 e π2 dois problemas de decisão. Uma transformação
polinomial T : π1 −→ π2 e I1 −→ T (I1) = I2 de π em π2 leva uma instância qualquer
I1 de |pi1 em uma instância I2 = T (I1) de π2 em tmepo polinomial no tamanho |I1| de
I1 tal que I1 é uma instância sim se, somente se, I2 é uma instância sim. Neste caso,
escrevemos π1 ∝ π2
41
Exemplo
Clique Máxima (π1)
- Instância: Grafo G = (V,E), k ∈ N∗
- Pergunta: ∃ S ⊂ V, |S| ≥ k, S é uma clique de G?
Conjunto Independente (π2)
- Instância: Grafo G = (V,E), k ∈ N
- Pergunta: ∃ S ⊂ V, |S| ≥ k, S é um conjunto independente de G?
Considere T : π1 −→ π2 e (G, k) −→ (G, k).
Note que T roda em tempo polinomial O(n2), linear, no tamanho da entrada de
π1 (Ω(n
2))
Suponha que π1 tem respota sim em I1. Então existe S ⊂ V . Tal que S é uma
clique de G com |S| ≥ k.
Note que em Ḡ, o conjunto S é independente, logo π2 tem resposta sim em I2.
Suponha que π2 tem resposta sim em I2 = T (I1). Logo existe S ⊂ V , |S| ≥ k, tal
que S é um conjunto S é uma clique. Portanto, π1 tem resposta sim em I1. Logo, I1 é
uma instância sim de π1 se, somente se, I2 = T (I1) é uma instância sim de π2.
Teorema 7.1: Se π1 ∝ π2 ∝ π3, então π1 ∝ π3.
Prova
Veja que pela hipótese ∃ T1 : π1 −→ π2 e ∃ T2 : π2 −→ π3 onde dada I1 de π1, I2 =
42
T1(I1) é computada em tempo polinomial no tamanho de I1. Dada I2 de π2, I3 = T3 =
T2(I2) é computada em tempo polinomial de I2. Portanto T2(T1(I1)) = T2 ◦ T1(I1) = I3
é uma instância de I3 computada em tempo polinomial no tamanho de I1, e I1 é uma
instância sim de π1 se, somente se, I3 é uma instância sim de π3. Logo π1 ∝ π3.
7.5 NP-Completo
Definição 7.7: Dizemos que um problema de decisão π é NP-Completo se π ∈ NP ,
e ∀p ∈ NP , p ∝ π.
Teorema 7.2: Teorema de Cook (1971)
Em 1971, Steve Cook provou que SAT é NP-Completo.
Figura 7.2: Tese de Church
Teorema 7.3: Se π1 é NP-Completo, π2 ∈ NP e π1 ∝ π2, então π2 é NP-Completo.
43
Prova
Como π1 é NP-Completo, π1 ∈ NP e dado π ∈ NP existe T1 : π −→ π1, como
π1 ∝ π2 ∃ T2 : π1 −→ π2. Logo, pelo teorema anterior, ∀ π ∈ NP .
∃ T2 ◦ T1 : π1 −→ π2. Como, π ∈ NP , temos que π2 é NP-Completo.
Teorema 7.4: P ⊂ NP
Prova
Suponha que π ∈ P . Mostraremos que dada uma instância Iπ de π e um certificado
CI de Iπ, podemos checar se CI é um certificado para a resposta sim de Iπ em tempo
polinomial de Iπ. Podemos considerar Iπ = CI e o algoritmo A resolve π e se A(Iπ) = sim,
temos a verificação. Logo, π ∈ NP . E temos que P ⊂ NP .
Exemplo
3SAT ∝ Conjuntoindependente
Conjunto Independente
- Instância: Grafo G = (V,E) e inteiro k ∈ N
-Pergunta: ∃ S ⊂ V , |S| ≥ k e S é um conjunto independente de G?
7.6 3 Satisfabilidade (3SAT)
Instância: I = (U,C) de SAT tal que ∀ c ∈ C, |c| = 3.
Pergunta: I é satisfat́ıvel?
7.6.1 SAT ∝ 3SAT
Prova
Seja I = (U,C) uma instância de SAT , vamos construir I
′
= (U
′
, C
′
) uma instância
de 3SAT em tempo polinomial no tamanho de I tal que I é satisfat́ıvel se, somente se,
I
′
é satisfat́ıvel.
Considere T : SAT −→ 3SAT , I = (U,C) 7−→ I ′ = (U ′ , C ′).
Onde U
′ ←− U e C ′ ←− ∅.
Para cada c ∈ C com |c| = 3, C ′ ←− C ′ ∪ {c}
Para cada c ∈ C tal que
44
1- c = (u), adicione novos uc1, u
c
2 para U
′
= {U ′ ←− U ′ ∪ {wc1, wc2}} e (u, uc1, uc2),
(u, uc1, u
c
2), (u, u
c
1, u
c
2), (u, ū
c
1, u
c
2) para C
′
.
2- c = (u, v), adicione novo wc para U
′
e (u, v, wc), (u, v, w̄c) para C
′
.
Para cada c ∈ C com c = (u1, u2, u3, ..., uk) com k ≥ 4 adicione (u1, u2, wc1),
(wc1, u3, w
c
2), (w
c
2, u4, w
c
3), (w
c
3, u5, w
c
4), ..., (w
c
k−3, uk−1, uk) para C
′
e novos w
c
1, w
c
2, ..., w
c
k−3 para
U
′
.
Exemplo
I = (C,U) = ({u1, u2, u3, u4, u5}, {(u1, u2, u3, u4, u5), (u1, u2, u3, u4, u5), (u1),
(u1, u3), (u1, u2, u3)})
c1 = (u1, u2, u3, u4, u5)
c2 = (u1, u2, u3, u4, u5)
c3 = (u1)
c4 = (u1, u3
c5 = (u1, u2, u3)
I
′
= ({u1, u2, u3, u4, u5, w11, w12, w21, w22, w31, w32, w41}, {(u1, u2, w11), (w11, u3, w12),
(w12, u4, u5), (u1, u2, w
2
1), (w
2
1, u3, w
2
2), (w
2
2, u4, u5), (u1, w
3
1, w
3
2), (u1, w
3
1, w
3
2), (u1, w
3
1, w
3
2),
(u1, w31, w
3
2), (u1, u3, w
4
1), (u1, u3, w
4
1), (u1, u2, u3)})
c1 = {(u1, u2, w11), (w11, u3, w12), (w12, u4, u5)}
c2 = {(u1, u2, w21), (w21, u3, w22), (w22, u4, u5)}
c3 = {(u1, w31, w32), (u1, w31, w32), (u1, w31, w32), (u1, w31, w32)}
c4 = {(u1, u3, w41), (u1, u3, w41)}
c5 = {(u1, u2, u3)}
Adotando u1 V (verdadeiro), não é dif́ıcil ver que I é satisfat́ıvel se, somente se, I
′
é satisfat́ıvel.
Veja que I
′
é uma instância de 3SAT e que T consome tempo O(m · n) onde
m = |C| e n = |U |.
Logo, SAT ∝ 3SAT .
45
7.6.2 3SAT ∝ ConjuntoIndependente
Seja I = (U,C) = ({u1, u2, ..., un}, {c1, c2, ..., cn}) uma instância de 3SAT . Vamos
constrir (G = (V,E), k) uma instância de conjunto independente tal que I é satisfat́ıvel
se, somente se, G tem um conjunto independente S ⊂ V de tamanho |S| ≥ k, em tempo
polinomial no tamanho de I(m · n). Para cada u ∈ U vértice, u, ū para V e uū para E.
Para cada cláusla c = (x, y, z) ∈ C adicione cx, cy, cz para V , cxx, cyy, czz, cxcy, cxcz,
cycz para E.
Exemplo
I = (U,C) = ({u1, u2, u3}, {(u1, u2, u3), (u1, u2, u3), (u1, u2, u3), (u1, u2, u3)})
k = 3 + 4 = 7
u1 = u2 = u3 = V , ∃ S ⊂ V , S independente tal que |S| ≥ k, onde S =
{u1, u2, u3, 1u1 , 2u3 , 3u2 , 4u2}
Suponha que I é satisfat́ıvel. Seja ξ(xi) uma atribuição de verdade satisfat́ıvel.
Vamos dar uma receita para construir S com tamanho |S| = n + m. Tome os vértices
x ∈ ξ para S. Para cada cláusula Cj = (x, y, z) com o literal x = V . Tome jx par S.
Note que S é independente pois xjx ∈ E(xjx ∈ E).
Suponha que G tem um conjunto independente S com |S| ≥ n + m. Como
{u, u},u ∈ U é uma clique e {jx, jy, jz}, cj = (x, y, z) é uma clique. Sabemos que S
tem no máximo 1 vértice em cada clique {u, u}, {jx, jy, jz}. Como existe n cliques da
forma {u, u}, existem m cliques da forna {jx, jy, jz} e |S| ≥ n + m. Nossa receita é da
forma, fazendo a literal u = V , se, somente se, u ∈ S. Veja que cada cláusla cj = (x, y, z)
46
de C tem um literal x satisfeito correspondente ao vértice jx ∈ S, pois jxx ∈ E e assim
x ∈ S e x = V .
7.6.3 Conjunto Independente está em NP
Um certificado para o conjunto independente é um conjunto S ⊂ V com tamanho
|S| ≥ k.
Nosso algoritmo checa se S é, de fato, em tempo O(n2).
k = 4
Certificado: {a, f, c, h}
(n− 1) + (n+ 2) + ...+ 2 + 1 = (n−1)(1+(n−1))
2
(n− 1) + (n+ 2) + ...+ 2 + 1 = n(n−1)
2
Dáı, 3SAT (π1) ∝ Conjunto Independente (π2), Conj.Independente ∈ NP e
3SAT é NP-Completo. Pelo teorema anterior, Conj. Independente é NP − Completo.
	GRAFOS E SUBGRAFOS
	Notação O, , 
	Grafo
	Grau do Grafo
	Subgrafo
	Tipos de Grafos
	Isomorfismo
	Classes de Grafos
	Grafo Completo
	Grafo Bipartido
	Clique
	Grafo Complementar
	Grafo Caminho
	Grafo Ciclo
	Grafo Roda
	Grafo n-Cubo
	Grafo R-regular
	Grafo Trivial
	CONECTIVIDADE
	Componente Conexa
	Grafo Conexo
	Busca em Profundidade
	Corte de Vértices
	Corte de Arestas
	ÁRVORES E FLORESTAS
	Árvores
	Geodésia
	PLANARIDADE
	COLORAÇÃO
	TRILHAS EULERIANAS E CICLOS HAMILTONIANO
	Trilha Euleriana
	Ciclo Hamiltoniano
	PROBLEMAS DE DECISÃO
	Classe P
	Classe NP
	Satisfabilidade
	Transformação Polinomial
	NP-Completo
	3 Satisfabilidade (3SAT)
	SAT 3SAT
	3SAT Conjunto Independente
	ConjuntoIndependente está em NP

Continue navegando