SlideShare ist ein Scribd-Unternehmen logo
1 von 71
Downloaden Sie, um offline zu lesen
Complexidade de Algoritmos
Classes de Complexidades de Problemas
Prof. Osvaldo Luiz de Oliveira
Estas anotações devem
ser complementadas por
apontamentos em aula.
Tempo polinomial
Um algoritmo A, com entrada de tamanho igual
a n, é polinomial se a sua complexidade (tempo,
pior caso) é O(nk) pata algum k ≥ 0.
CP 2
Problemas
• Todo problema para o qual existe um algoritmo
polinomial é dito ser tratável.
• Inversamente, o problema é dito ser intratável.
CP 3
Por que o tempo polinomial é o divisor
de águas?
• Embora O(n1000) seja um limite superior muito grande,
existem poucos problemas práticos que admitem
algoritmos polinomiais com alto grau polinomial.
CP 4
“Deus não é tão cruel assim”.
• As diferenças entre tempo polinomial e super-polinomial
são astronômicas.
Problemas de decisão
• Problema cuja resposta é 1 (“sim”) ou 0 (“não”).
CP 5
• A teoria estudada restringe a atenção a
problemas de decisão.
CLIQUE
Dado um grafo não orientado G = (V, E) e uma constante k ≥ 0.
CP 6
Cliques de tamanho 2: {2, 4}, {5, 7} etc. .
Problema: determinar se G tem uma clique de tamanho igual a k.
1
2 3
4 5
76
Uma clique de G = (V, E) é um conjunto de vértices
C ⊆ V tal que existe aresta em E entre dois quaisquer
vértices de C.
Cliques de tamanho 3: {1, 2, 3}, {4, 5, 6} etc.
Clique de tamanho 4: {4, 5, 6, 7}.
COBERTURA DE VÉRTICES (VC)
Dado um grafo não orientado G = (V, E) e uma constante k ≥ 0.
Uma VC de tamanho igual a 7:
C = {1, 2, 3, 4, 5, 6, 7}.
Problema: determinar se G tem VC de tamanho igual a k.
1
2 3
4 5
76
C ⊆ V é VC de G = (V, E) se e somente se para toda
aresta (u, v) ∈ E ocorre de u ∈ C ou v ∈ C.
Uma VC de tamanho igual a 5:
C = {2, 3, 4, 5, 7}.
CP 7
CICLO HAMILTONIANO
Dado um grafo não orientado G = (V, E).
Problema: determinar se G tem um ciclo hamiltoniano.
Um ciclo hamiltoniano é um circuito (simples) que contém cada
vértice de G exatamente uma vez.
CP 8
CAIXEIRO VIAJANTE
(TRAVELING SALESMAN – TSP)
Dado um grafo não orientado G = (V, E), completo, com custo nas
arestas, e um número W.
Problema: determinar se G tem um ciclo hamiltoniano de custo ≤ W.
A C
DB
55
23
25
15
13
W = 80
27
Um ciclo hamiltoniano de custo ≤ 80:
A, D, B, C, A
CP 9
CP 10
COLORAÇÃO COM TRÊS CORES (3-COLORING)
Dado um grafo não orientado G = (V, E).
Problema: determinar se G pode ser colorido com três cores.
Grafo de Petersen.
CP 11
COLORAÇÃO COM K CORES (K-COLORING)
Dado um grafo não orientado G = (V, E) e um inteiro k.
Problema: determinar se G pode ser colorido com k cores.
Em outras palavras, determinar se existe função
f : V→ {1, 2, ..., k} tal que para toda aresta (u, v) ∈ E
ocorre que f (u) ≠ f (v).
CP 12
SOMA DO SUBCONJUNTO (SUBSET-SUM)
Dado conjunto S de n inteiros e um inteiro k.
Problema: determinar se existe subconjunto S´ de S cuja soma seja
igual a k.
Exemplo: sejam S = {2, 5, 8, 9, 15, 18} e k = 22.
Neste caso existe S´ = {2, 5, 15}.
CP 13
PARTIÇÃO
Dado um conjunto S = {s1, s2, ..., sn} de números.
Problema: determinar se existe subconjunto T de S tal que
.∑∑ −∈∈
=
TSs
i
Ts
i
ii
ss
Exemplo: seja S = {1, 3, 8, 9, 15, 18}.
Neste caso existe T = {1, 3, 8, 15}, uma vez que
S – T = {9, 18}.
MOCHILA (KNAPSACK)
Dado um conjunto S de objetos numerados de 1 a n. Cada objeto i
tem associado um inteiro si e um valor wi. Também são dados dois
valores C e W.
Problema: determinar se existe subconjunto T de S tal que
.WweCs
Ti
i
Ti
i ∑∑ ∈∈
≥≤
1 2 3 4 5 6 7
5 3 7 2 6 4 8
5.2 3.1 2.2 2.3 3.3 1.1 2.4
s
w
SExemplo: sejam , C = 10 e W = 6
Neste caso existe T ⊆ S, T = {2, 4, 6}.
CP 14
“SATISFATIBILIDADE” DE CIRCUITO
(CIRCUIT-SAT)
Dado um circuito composto por portas NOT, OR e AND com um
único pino de saída.
Problema: determinar se existe uma atribuição de valores para as
entradas de forma que a saída seja igual a 1.
CP 15
“SATISFATIBILIDADE” DE FÓRMULA BOOLEANA
(SAT)
Dado uma formula φ composta variáveis booleans x1, x2, ... xn,
conectivos lógicos (∧, ∨, ¬, →, ↔) e parênteses.
Problema: determinar se existe uma atribuição de valores para as
variáveis de φ de forma que a fórmula seja avaliada igual a 1.
φ = (x1 ∧ x2) pode ser satisfeita com x1 = 1 e x2 = 1.
Pode ser satisfeita com x1 = 0, x2 = 0, x3 = 1 e x4 = 1.
CP 16
Codificação da entrada
• Cada problema de decisão possui uma infinidade de
instâncias de problema.
• Uma instância do problema de decisão CLIQUE:
• Cada instância está associada a uma cadeia (codificação).
Exemplo:
x = #grafo G#3#
1
2 3
4
, k = 3
O grafo possui uma
clique de tamanho igual a 3?
1,2,3,4$(1,2),(1,3),(2,3),(3,4)
x = #1,2,3,4$(1,2),(1,3),(2,3),(3,4)#3#
G
CP 17
Um pouco de linguagens formais
• ∑ (alfabeto): conjunto finito de símbolos.
∑ = { #, $, ,, (, ), 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }
• ∑ . ∑ = ∑2 (concatenação de ∑ com ∑)
∑ . ∑ = { ##, #$, #,, #(, #), #0, #1, ... $#, $$, $,, ... }
• ∑ . ∑2 = ∑3
∑ . ∑2 = { ###, ##$, ##,, ##(, ... #$#, #$$, #$,, ... }
• ∑0 = { ε }, onde ε representa a cadeia vazia.
CP 18
• ∑* (conjunto de todas as cadeias que podem ser
construídas com o alfabeto ∑, ou seja,
∑* = ∑0 ∪ ∑ ∪ ∑2 ∪ ∑3 ∪ ... .
Um pouco de linguagens formais
∑* = { ε,
#, $, ,, (, ), 0, ...,
##, #$, #,, #(, #), #0, #1, ...,
###, ##$, ##,, ##(, ...
...
}
Palavras de comprimento
0
1
2
3
CP 19
• Linguagem L: subconjunto de cadeias de ∑*.
Um pouco de linguagens formais
L1 = ∅ = { } (linguagem vazia).
L3 = { #1,2,3,4$(1,2),(1,3),(2,3),(3,4)#3# }
L2 = { #, ##, #$# }
L4 = { ε } (linguagem que contém apenas a cadeia vazia)
CP 20
• Algumas operações sobre linguagens. Sejam L, L1 e L2
linguagens sobre o alfabeto ∑.
Um pouco de linguagens formais
- União: L1 ∪ L2 = { x ∈ ∑* | x ∈ L1ou x ∈ L2}
- Intersecção: L1 ∩ L2 = { x ∈ ∑* | x ∈ L1 e x ∈ L2}
- L* (fecho reflexivo e transitivo de L ou fecho de Kleene)
L* = { ε } ∪ L ∪ L2 ∪ L3 ∪ ...
- Concatenação de L k vezes
Lk = L . Lk-1, para k > 0
L0 = { ε }
- Concatenação: L1 . L2 = { x1 x2 ∈ ∑* | x1 ∈ L1 e x2 ∈ L2}
- Complemento: L = ∑* - L = { x ∈ ∑* | x ∉ L}
CP 21
Problema de decisão e linguagem
• Instâncias de um problema de decisão Q podem ser codificadas
sobre um alfabeto ∑.
• Uma linguagem L sobre ∑ pode representar as instâncias de
um problema de decisão.
L = { x ∈ ∑* | Q (x) = 1 }
• Problema de decisão: problema cuja solução tem como
resposta 1 (“sim”) ou 0 (“não).
CP 22
Exemplo
Problema de decisão CLIQUE e Linguagem CLIQUE
• Problema de decisão CLIQUE: dado grafo G=(V, E) e uma
constante k, responder 1 (“sim”) caso G tenha uma clique de
tamanho igual a k e 0 (“não”), caso contrário.
• Linguagem CLIQUE (Lc)
Lc = { x ∈ ∑*, x = #grafo G#k# |
existe clique de tamanho igual a k em G }
• Observe que Lc é formado por cadeias cujo problema de
decisão tem resposta 0 (“não”) e também aquelas com formato
impróprio.
x = #1, 2, 3, 4 $ (1, 2), (1, 3), (2, 3), (3, 4)#3# ∈ Lc.
x = #1, 2, 3, 4 $ (1, 2), (1, 3), (2, 3), (3, 4)#4# ∉ Lc.
CP 23
Algoritmo de decisão e linguagem aceita
• Linguagem L aceita por um algoritmo de decisão A.
• Algoritmo de decisão: algoritmo que recebe uma cadeia x e
retorna 1 (“sim”) ou 0 (“não”).
L = { x ∈ ∑* | A(x) = 1 }
• Linguagem M rejeitada por um algoritmo de decisão A.
M = { x ∈ ∑* | A(x) = 0 }
• L ∪ M pode ser diferente de ∑*, pois para A pode entrar em
looping para alguma cadeia e, assim, nem aceitar, nem rejeitar.
CP 24
Linguagem decidida por um algoritmo
• Um algoritmo A decide uma linguagem L se, para toda cadeia
x ∈ ∑*, A (x) = 1 ou A(x) = 0.
CP 25
Tamanho da entrada (n)
• Quantidade de símbolos (ou de bits) utilizados para
codificar uma instância do problema
x = #1,2,3,4$(1,2),(1,3),(2,3),(3,4)#2#
n =| x | = 35 ou
x = 35 . 8 = 280 bits para uma certa codificação em que cada símbolo é
representado por 8 bits.
CP 26
Classe de complexidade P
• Observe que a definição da classe P, nada é dito sobre o tempo
de execução para rejeitar uma cadeia x não pertencente a L.
Em outras palavras: conjunto de todos os problemas de decisão para os quais
existe algoritmo polinomial ao tamanho da entrada, no pior caso.
• P = { linguagens L | existe algoritmo A que aceita L em tempo
polinomial ao tamanho da entrada, no pior caso }
CP 27
A classe P é fechada para, união, intersecção,
complemento, concatenação e fecho de kleene. Ou seja,
se L, L1, L2 ∈ P, então:
Fechos da classe P
• L1 ∪ L2 ∈ P;
• L1 ∩ L2 ∈ P;
• L ∈ P;
• L1 . L2 ∈ P;
• L* ∈ P.
CP 28
Outra definição da classe de complexidade P
Como P é fechado sobre o complemento, então podemos dizer que
P = { linguagens L | existe algoritmo A que decide L em tempo
polinomial ao tamanho da entrada, no pior caso }
CP 29
CP 30
Algoritmos de verificação
Por exemplo, alguém
diz y = {1, 2, 3}para esta
instância do problema
• Suponha que alguém lhe ofereceu um conjunto de vértices que
ele diz solucionar o problema da CLIQUE igual a k em um
grafo G.
• É fácil verificar se o certificado y = {1, 2, 3} é uma clique em G
de tamanho igual 3.
y é chamado de certificado
1
2 3
4
, k = 3
G
CP 31
Algoritmo de verificação
• Um algoritmo de verificação toma duas entradas: x (a cadeia a
ser verificada) e y (o certificado).
Algoritmo A (x, y)
Entrada: x ∈ ∑*, x = #grafo G#k# e y (certificado), um conjunto de vértices.
Saída: 1 se y é uma clique de G de tamanho igual a k e 0, caso contrário.
{
se o tamanho de y for igual a k
se para cada vértice em y houver em G aresta para os outros vértices de y
retornar 1
senão
retornar 0
senão
retornar 0
}
CP 32
Classe de complexidade NP
Em outras palavras: conjunto de todos os problemas de decisão para os quais
existe algoritmo de verificação polinomial ao tamanho da entrada, no pior
caso.
• NP = { linguagens L | existe algoritmo de verificação A que
aceita L em tempo polinomial ao tamanho da entrada, no pior
caso }
• Observe que a definição da classe NP, nada é dito sobre o
tempo de execução para rejeitar uma cadeia x não pertencente a
L.
Obs.: o nome NP vem de nondeterministic polynomial. Esta classe foi originalmente estudada no
contexto do não determinismo. A definição que estamos usando é equivalente a uma outra que
diz que NP é a classe das linguagens que definem problemas de decisão para as quais existe
algoritmo não determinístico que executa em um tempo polinomial, no pior caso.
CP 33
Linguagem CLIQUE Lc ∈ NP
1 - O certificado | y | = O(n)
2 - Algoritmo A aceita Lc em tempo polinomial.
Logo, Lc ∈ NP.
O que também significa que o problema de decisão CLIQUE ∈ NP.
Algoritmo A (x, y)
Entrada: x ∈ ∑*, x = #grafo G#k# e y (certificado), um conjunto de vértices.
Saída: 1 se y é uma clique de G de tamanho igual a k e 0, caso contrário.
{
se o tamanho de y for igual a k
se para cada vértice em y houver em G aresta para os outros vértices de y
retornar 1
senão
retornar 0
senão
retornar 0
}
O(n2)
A questão P = NP
• Não se sabe se P = NP.
• P ⊆ NP.
Prova
Seja L ∈ P. Então existe um algoritmo A que decide L em tempo polinomial.
Podemos usar A para desenvolver um algoritmo de verificação B que aceita L em
tempo polinomial.
Algoritmo B (x, y)
{
retornar A (x) // Ignora o certificado y.
}
O algoritmo de verificação B aceita x se e somente se A aceita x, assim B aceita
L. Além disso B executa em tempo polinomial, pois A executa em tempo
polinomial. Logo L ∈ NP. Ou seja P ⊆ NP.
CP 34
Possíveis cenários
• Não se sabe se NP é fechado pelo complemento, isto é,
se L ∈ NP implica que L ∈ NP.
• co-NP = { L ∈ NP | L ∈ NP }.
CP 35
Reduções em tempo polinomial
• Um problema Q pode ser reduzido a um problema R se Q puder
ser “refraseado” em termos de R.
O problema de resolver uma equação linear a x + b = 0 pode ser reduzido ao
problema de resolver uma equação do segundo grau 0x2 + a x + b = 0.
CP 36
Reduções em tempo polinomial
• Uma linguagem L1 é redutível em tempo polinomial a uma
linguagem L2, escreve-se L1 ≤ p L2, se existe um algoritmo
polinomial A tal que, para todo x ∈ ∑*:
- A(x) = y (i. e., A transforma x em y)
- x ∈ L1 se e somente se y ∈ L2.
A
CP 37
∑* ∑*
Exemplo: Lc ≤ p Lvc
• Lc: Linguagem CLIQUE
Lc = { x ∈ ∑*, x = #grafo G#k# |
existe clique de tamanho igual a k em G }
• Lvc: Linguagem COBERTURA DE VERTICES
Lvc = { x ∈ ∑*, x = #grafo G#k# |
existe cobertura de vértices de tamanho igual a k em G
}
CP 38
CP 39
Idéia sobre o algoritmo que Lc ≤ p Lvc
1
2 3
4
, k = 3
G = (V, E)
Clique C = {1, 2, 3}
1
2 3
4
, k’ = |V| - |C| = 1
G = (V, E)
Cobertura de vértices
VC = V – C ={4}
1
2 3
4 5
76
, k = 4
Clique C = {4, 5, 6, 7}
G = (V, E)
Cobertura de vértices
VC = V – C ={1, 2, 3}
1
2 3
4 5
76
G = (V, E)
, k’ = |V| - |C| =
3
CP 40
Algoritmo Reduz_Lc_Lvc (x)
Entrada: x ∈ ∑*, x = #grafo G#k#
Saída: y ∈ ∑*, x = #grafo G#k’#
{
1 - Computar o grafo G = (V, E) a partir do grafo G =(V, E), onde
E = { (u, v) | (u, v) ∉ E };
2 – k’ = | V | - k;
3 – y := #grafo G#k’#
4 – retornar y
}
T(n) = O(n2). O algoritmo de redução é polinomial.
O algoritmo de redução
O(n2)
CP 41
Completando a prova
Precisamos mostrar que: x∈Lc se e somente se y ∈ Lvc.
i) Mostrando: Se x∈Lc ⇒ y ∈ Lvc.
x = #grafo G#k#.
x∈Lc ⇒ existe uma clique em G = (V, E), digamos C, de tamanho igual a k.
O algoritmo de redução transforma x em y = #grafo G#k’#.
Seja (u, v) uma aresta de E. ⇒ (u, v)∉ E ⇒ u ou v (ou ambos) não pertencem a
C, já que em uma clique todos os vértices estão conectados.
Logo u ou v pertencem a V – C, o que significa que (u, v) é coberto por V – C.
Como (u, v) foi escolhido arbitrariamente em E, então toda aresta de E é coberta
por V – C. ⇒ V – C é uma cobertura de vértices em G. Esta cobertura tem
tamanho k’ = | V | - k.
CP 42
Completando a prova
i) Mostrando: Se y∈Lvc ⇒ x ∈ Lc.
y = #grafo G#k’#.
y∈Lvc ⇒ existe uma cobertura de vértices em G = (V, E), digamos C, de
tamanho igual a k’ = | V | - k.
Para todo u, v ∈ V, se (u, v) ∈ E, então u ∈ C ou v ∈ C (ou ambos pertencem a
C). A contrapositiva desta afirmação é que para todo u, v ∈ V, se u ∉ C e v ∉ C
então (u, v) ∈ E. Em outras palavras V – C é uma clique. O tamanho desta
clique é | V | - | C | = | V | - ( | V | - k ) = k.
CP 43
Implicação importante das reduções polinomiais
Se LA ≤ p LB e existe algoritmo B que decide LB em tempo polinomial
então
existe algoritmo A que decide LA em tempo polinomial.
Algoritmo A (x)
{
y := Reduz_LA_LB (x); // Obtém uma instância y do problema B a partir de
// uma instância x do problema A.
retornar B (y) // Retorna 1 (“sim”) se B retornar 1 e 0 (“não”), caso contrário.
}
O (n k), i.e, polinomial
O (n c), i.e, polinomial
Complexidade de A: T(n) = O (nk) + O (nc) = O(n k + c), i.e, polinomial.
Classe de complexidade NP-difícil (NP-hard)
NP-difícil =
{ linguagens L | para todo L’ ∈ NP ocorre que L’ ≤ p L }
Isto é, L’ não é mais do que um fator polinomial difícil do que L.
CP 44
Classe de complexidade NP-completo
NP-completo =
{ linguagens L | L ∈ NP e L ∈ NP-difícil}
CP 45
Primeiro problema NP-completo
LCIRCUIT-SAT =
{ #circuito C# | existe uma atribuição de valores para a entrada de
forma que a saída seja igual a 1 }
Obs.: C é uma codificação do circuito usando símbolos de um alfabeto ∑.
CP 46
Primeiro problema NP-completo
Teorema de Cook-Levin:
LCIRCUIT-SAT ∈ NP-completo.
Cook mostrou em 1971que CNF-SAT é NP-completo. Levin formulou a noção de NP completude de
forma independente de Cook, quase na mesma época. Garey e Johnson (indicado na bibliografia da
disciplina) é um catálogo para muitos problemas NP-completos. Cormen (livro texto) fornece uma
prova simplificada do teorema.
Stephen Cook. The complexity of theorem proving procedures. In Proceedings of the Third
Annual ACM Symposium on Theory of Computing, pages 151–158, 1971.
L. A. Levin. Universal sorting problems. Problemy Peredachi Informatsii, 9(3):265–266,
1973. In Russian.
CP 47
Outra definição para a classe NP-completo
NP-completo =
{ linguagens L | L ∈ NP e
L’ ≤p L para algum L’ ∈ NP-completo }
Esta definição simplifica a prova de que um problema de decisão é
NP-completo. Não há necessidade de provar L ∈ NP-difícil, i.e,
que para todo L’∈ NP ocorre de L’ ≤p L. Basta provar que existe
L’∈ NP-completo tal que L’ ≤p L.
Isto decorre do fato: se existe tal L’ então todo L’’∈ NP, L’’ ≤p L’.
Então, por transitividade L’’ ≤p L’ ≤p L.
CP 48
Prova de que uma linguagem L ∈ NP-completo
1 - Mostrar L ∈ NP.
2 – Mostrar que L ∈ NP-difícil
Achar uma linguagem L’ ∈ NP-completo tal que L’ ≤p L.
2.1 – Descrever um algoritmo A(x) que reduz em tempo polinomial uma
instância x ∈∈∈∈ ∑* de L’ a uma instância y de L.
2.2 – Mostrar que o algoritmo A executa em tempo polinomial.
2.3 – Mostrar que x ∈∈∈∈ L’ se e somente se y ∈∈∈∈ L.
CP 49
Um pequeno quadro de reduções clássicas em tempo polinomial de
problemas NP-completos
Cada problema em NP
CIRCUIT-SAT
SAT
CNF-SAT
3-CNF-SAT
CLIQUE
COBERTURA DE
VÉRTICES (VC)
CICLO
HAMILTONIANO
TSP
SUBSET-SUM
MOCHILA
O mesmo que SAT só que
formula na forma normal
conjuntiva (CNF)
(... ∨ ... ) ∧ (... ∨ ... ) ∧ ...
O mesmo que CNF-SAT só
cláusulas terão extamente três
variáveis
CP 50
Prova de que LSAT ∈ NP-completo
LSAT = { #formula φ# | existe atribuição de valores às variáveis de
φ de maneira que φ seja igual a 1 }
1 – Mostrando que LSAT ∈ NP.
Isto é, temos que mostrar que existe algoritmo de verificação A que aceita
LSAT em tempo polinomial ao tamanho da entrada, no pior caso.
Precisamos mostrar que:
1 - LSAT ∈ NP.
2 - LSAT ∈ NP-difícil.
CP 51
CP 52
- O certificado | y | = O(n)
- Algoritmo A aceita LSAT em tempo polinomial.
Logo, LSAT ∈ NP.
Algoritmo A (x, y)
Entrada: x ∈ ∑*, x = #φ# e y (certificado), uma atribuição de valores para as variáveis de φ.
Saída: 1 se y é uma atribuição de valores que faz φ ser igual a 1e 0, caso contrário.
{
1 – substituir em φ cada variável pelo valor associado a ela no certificado;
2 – avaliar a expressão resultante;
3 – se valor da expressão resultante for igual a 1
retornar 1
senão
retornar 0
}
O(n)
O(n)
Continuação
2 – Mostrando que LSAT ∈ NP-difícil.
LCIRCUIT-SAT ∈ NP-completo.
Mostraremos que LCIRCUIT-SAT ≤p LSAT
Idéia do algoritmo que reduz em tempo polinomial LCIRCUIT-SAT a LSAT.
LCIRCUIT-SAT = { #circuito C# | existe uma atribuição de valores para as entradas
de forma que a saída de C seja igual a 1 }
Continuação
CP 53
CP 54
Algoritmo Reduz_LCIRCUIT-SAT_LSAT (x)
Entrada: x ∈ ∑*, x = #circuito C#
Saída: y ∈ ∑*, y = #fórmula φ#
{
1 – Para cada porta lógica de C gerar uma sub-formula φi, conforme:
- porta AND Entrada (x1, x2, ...xn) Saída (z): gerar ( z ↔ (x1 ∧ x2 ∧ ... ∧ xn) );
- porta OR Entrada (x1, x2, ...xn) Saída (z): gerar ( z ↔ (x1 ∨ x2 ∨ ... ∨ xn) );
- porta NOT Entrada (x) Saída (z): gerar ( z ↔ ( ¬ x ) );
2 – φ := xo ∧ φ1 ∧ φ2 ∧ ... ∧ φm , onde xo é a variável que representa o pino de
saída do circuito C.
3 – y := #fórmula φ#
4 – retornar y
}
O(n)
O(n)
T(n) = O(n). O algoritmo de redução é polinomial em relação ao tamanho (n) de x.
Continuação
CP 55
Precisamos mostrar que: x∈LCIRCUIT-SAT se e somente se y ∈ LSAT.
i) Mostrando: Se x∈LCIRCUIT-SAT ⇒ y ∈ LSAT.
Continuação
CP 56
ii) Mostrando: y ∈ LSAT ⇒ Se x∈LCIRCUIT-SAT.
y = #fórmula φ#.
y∈ LSAT ⇒ existe uma atribuição de valores às variáveis de φ de modo que a o
resultado de φ é igual a 1.
Quando associamos às variáveis xi de φ cada cláusula avalia igual a 1 e
conjunção de valores avalia 1. De forma análoga o circuito C tem saída igual a
1.
Continuação
Muitos acreditam neste relacionamento
NP
NP-completo
P
CP 57
CP 58
Extras
Conjuntos
CP 59
CP 60
Conjunto
Coleção de zero ou mais elementos distintos. ∅ denota um conjunto vazio (zero
elemento).
a) Pertinência
Se um elemento x pertence a um conjunto A, denota-se por x∈∈∈∈ A. Caso contrário
escreve-se x ∉∉∉∉A.
b) Subconjunto e subconjunto próprio
- A ⊆ B: o conjunto A é subconjunto de B, i.e, para todo x∈ A ocorre de x∈ B.
- A ⊂ B: o conjunto A é subconjunto próprio de B, i.e, para todo x∈ A ocorre
de x∈ B, mas existe pelo menos um y ∈ B tal que y ∉A.
c) Igualdade entre conjuntos A e B
A = B se e somente se A ⊆ B e B ⊆ A.
Definições
CP 61
a) União
A ∪ B = { x | x ∈ A ou x ∈ B }
b) Intersecção
A ∩ B = { x | x ∈ A e x ∈ B }
c) Diferença
A – B = { x | x ∈ A e x ∉ B }
d) Complemento em relação a um conjunto universo U definido.
A = { x | x ∈ U e x ∉ A }
e) Conjunto das partes
℘= 2A = { S | S ⊆ A }
f) Produto cartesiano
A x B = { (x, y) | x ∈ A e y ∈ B }
Operações
CP 62
Sejam os conjuntos A = { 0, 1, 2 }, B = { 2, 3 } e N números naturais.
A ∪ B = { 0, 1, 2, 3}
A ∩ B = { 2 }
A – B = { 0, 1}
A = { x ∈ N | x > 2 }
℘= 2B = { ∅, {2}, {3}, {2, 3} }
A x B = { (0, 2), (0, 3), (1, 2), (1, 3), (2, 2), (2, 3)}
Exemplos
CP 63
a) Idempotência
A ∪ A = A
A ∩ A = A
b) Comutatividade
A ∪ B = B ∪ A
A ∩ B = B ∩ A
c) Associatividade
A ∪ ( B ∪ C) = (A ∪ B) ∪ C
A ∩ (B ∩ C) = (A ∩ B) ∩ C
d) Distributividade
A ∩ ( B ∪ C) = (A ∩ B) ∪ (A ∩ C)
A ∪ ( B ∩ C) = (A ∪ B) ∩ (A ∪ C)
e) Morgan
A ∪ B = (A ∩ B)
A ∩ B = (A ∪ B)
Algumas propriedades
Lógica
CP 64
CP 65
Operadores
Conjunto lógico: { 0, 1} ou { F, V }.
a) Negação (Not): ¬
b) E (and): ∧
c) Ou (Or): ∨
d) Se então: →
e) Se e somente se: ↔
Tabela de verdade
0 0 1 0 0 1 1
x y ¬ x x ∨ y x ∧ y x → y x ↔ y
0 1 1 1 0 1 0
1 0 0 1 0 0 0
1 1 0 1 1 1 1
CP 66
a) Idempotência
x ∨ x ↔ x
x ∧ x ↔ x
b) Comutatividade
x ∨ y = y ∨ x
x ∧ y = y ∧ x
c) Associatividade
x ∨ (y ∨ z) = (x ∨ y) ∨ z
x ∧ (y ∧ z) = (x ∧ y) ∧ z
d) Distributividade
x ∧ (y ∨ z) = (x ∧ y) ∨ (x ∧ z)
x ∨ (y ∧ z) = (x ∨ y) ∧ (x ∨ z)
e) Morgan
x ∨ y = ¬ (¬ x ∧ ¬ y)
x ∧ y = ¬ (¬ x ∨ ¬ y)
Algumas propriedades
CP 67
Grafos
CP 68
Definição e tipos
Definição
Um grafo G = (V, E) é um sistema matemático constituído por um conjunto de
vértices V (ou nós) e um conjunto de arestas E. A cada aresta E corresponde um
par de vértices.
1
2 3
4 5
Não orientado
V = { 1, 2, 3, 4, 5 }
E = { {1, 2}, {1, 3}, {2, 3},
{2, 4}, {4, 5} }
G = (V, E)
1
2 3
4 5
Orientado
G = (V, E)
V = { 1, 2, 3, 4, 5 }
E = { (1, 2), (3, 1), (3, 2)},
(4, 2), (4, 5) }
CP 69
Matriz de adjacências
1
2
3
4
5
1 2 3 4 5
1 1
11
11
1
M
M [v, w] = 1: existe aresta de v para w
1
2 3
4 5
G = (V, E)
1
1 1
1
2 3
4 5
G = (V, E)
1
2
3
4
5
1 2 3 4 5
1
11
M
1 1
CP 70
2
1
1
2
3
4
5
2
2
5
Lista de adjacências
1
2 3
4 5
G = (V, E)
CP 71

Weitere ähnliche Inhalte

Was ist angesagt?

Np completeness
Np completenessNp completeness
Np completenessRajendran
 
Coin change Problem (DP & GREEDY)
Coin change Problem (DP & GREEDY)Coin change Problem (DP & GREEDY)
Coin change Problem (DP & GREEDY)Ridhima Chowdhury
 
Matrix chain multiplication
Matrix chain multiplicationMatrix chain multiplication
Matrix chain multiplicationRespa Peter
 
Implementation of quantum gates using verilog
Implementation of quantum gates using verilogImplementation of quantum gates using verilog
Implementation of quantum gates using verilogShashank Kumar
 
Greedy Algorithm - Knapsack Problem
Greedy Algorithm - Knapsack ProblemGreedy Algorithm - Knapsack Problem
Greedy Algorithm - Knapsack ProblemMadhu Bala
 
Calculo limites de funcoes
Calculo limites de funcoesCalculo limites de funcoes
Calculo limites de funcoesGeorge Marinho
 
Análise de Algoritmos - Mais problemas NP-Completos
Análise de Algoritmos - Mais problemas NP-CompletosAnálise de Algoritmos - Mais problemas NP-Completos
Análise de Algoritmos - Mais problemas NP-CompletosDelacyr Ferreira
 
Soal pilihan ganda operasi himpunan
Soal pilihan ganda operasi himpunanSoal pilihan ganda operasi himpunan
Soal pilihan ganda operasi himpunanAnderzend Awuy
 
Matrix chain multiplication
Matrix chain multiplicationMatrix chain multiplication
Matrix chain multiplicationKiran K
 
Longest Common Subsequence (LCS) Algorithm
Longest Common Subsequence (LCS) AlgorithmLongest Common Subsequence (LCS) Algorithm
Longest Common Subsequence (LCS) AlgorithmDarshit Metaliya
 
Knapsack problem solved by Genetic Algorithms
Knapsack problem solved by Genetic AlgorithmsKnapsack problem solved by Genetic Algorithms
Knapsack problem solved by Genetic AlgorithmsStelios Krasadakis
 
RNA - Redes neurais artificiais
RNA - Redes neurais artificiaisRNA - Redes neurais artificiais
RNA - Redes neurais artificiaisiaudesc
 
CS8461 - Design and Analysis of Algorithms
CS8461 - Design and Analysis of AlgorithmsCS8461 - Design and Analysis of Algorithms
CS8461 - Design and Analysis of AlgorithmsKrishnan MuthuManickam
 

Was ist angesagt? (20)

Np completeness
Np completenessNp completeness
Np completeness
 
Coin change Problem (DP & GREEDY)
Coin change Problem (DP & GREEDY)Coin change Problem (DP & GREEDY)
Coin change Problem (DP & GREEDY)
 
Matrix chain multiplication
Matrix chain multiplicationMatrix chain multiplication
Matrix chain multiplication
 
27 NP Completness
27 NP Completness27 NP Completness
27 NP Completness
 
Implementation of quantum gates using verilog
Implementation of quantum gates using verilogImplementation of quantum gates using verilog
Implementation of quantum gates using verilog
 
Bin packing
Bin packingBin packing
Bin packing
 
Greedy Algorithm - Knapsack Problem
Greedy Algorithm - Knapsack ProblemGreedy Algorithm - Knapsack Problem
Greedy Algorithm - Knapsack Problem
 
Calculo limites de funcoes
Calculo limites de funcoesCalculo limites de funcoes
Calculo limites de funcoes
 
Análise de Algoritmos - Mais problemas NP-Completos
Análise de Algoritmos - Mais problemas NP-CompletosAnálise de Algoritmos - Mais problemas NP-Completos
Análise de Algoritmos - Mais problemas NP-Completos
 
Np completeness
Np completenessNp completeness
Np completeness
 
Soal pilihan ganda operasi himpunan
Soal pilihan ganda operasi himpunanSoal pilihan ganda operasi himpunan
Soal pilihan ganda operasi himpunan
 
Matrix chain multiplication
Matrix chain multiplicationMatrix chain multiplication
Matrix chain multiplication
 
Recorrência
RecorrênciaRecorrência
Recorrência
 
Chapter 13 - Curve Sketching
Chapter 13 - Curve SketchingChapter 13 - Curve Sketching
Chapter 13 - Curve Sketching
 
Longest Common Subsequence (LCS) Algorithm
Longest Common Subsequence (LCS) AlgorithmLongest Common Subsequence (LCS) Algorithm
Longest Common Subsequence (LCS) Algorithm
 
Np complete
Np completeNp complete
Np complete
 
Les1+2
Les1+2Les1+2
Les1+2
 
Knapsack problem solved by Genetic Algorithms
Knapsack problem solved by Genetic AlgorithmsKnapsack problem solved by Genetic Algorithms
Knapsack problem solved by Genetic Algorithms
 
RNA - Redes neurais artificiais
RNA - Redes neurais artificiaisRNA - Redes neurais artificiais
RNA - Redes neurais artificiais
 
CS8461 - Design and Analysis of Algorithms
CS8461 - Design and Analysis of AlgorithmsCS8461 - Design and Analysis of Algorithms
CS8461 - Design and Analysis of Algorithms
 

Ähnlich wie Classes de complexidades de problemas

Apresentacao N P Completude Loiane
Apresentacao  N P Completude  LoianeApresentacao  N P Completude  Loiane
Apresentacao N P Completude LoianeLoiane Groner
 
Aulas 11-guloso Algoritmos
Aulas 11-guloso AlgoritmosAulas 11-guloso Algoritmos
Aulas 11-guloso AlgoritmosKevin Takano
 
Resolução ef 2 – 9º ano – prova anglo – p2 d9-2015
Resolução ef 2 – 9º ano – prova anglo – p2 d9-2015Resolução ef 2 – 9º ano – prova anglo – p2 d9-2015
Resolução ef 2 – 9º ano – prova anglo – p2 d9-2015Alpha Colégio e Vestibulares
 
Prova 02 de Autômatos e Computabilidade
Prova 02 de Autômatos e ComputabilidadeProva 02 de Autômatos e Computabilidade
Prova 02 de Autômatos e Computabilidadeshichibukai_01
 
Expoente 12 prova modelo de exame-enunciado
Expoente 12 prova modelo de exame-enunciadoExpoente 12 prova modelo de exame-enunciado
Expoente 12 prova modelo de exame-enunciadoSusana Figueiredo
 
Formula luderiana racional para extracao de raiz quadrada (completo)
Formula luderiana racional para extracao de raiz quadrada (completo)Formula luderiana racional para extracao de raiz quadrada (completo)
Formula luderiana racional para extracao de raiz quadrada (completo)ludenir
 
Md 4 sequenciae_inducaomatematica
Md 4 sequenciae_inducaomatematicaMd 4 sequenciae_inducaomatematica
Md 4 sequenciae_inducaomatematicaMauricio Wieler
 
Criptografia com curva_eliptica_dbetoni
Criptografia com curva_eliptica_dbetoniCriptografia com curva_eliptica_dbetoni
Criptografia com curva_eliptica_dbetonidrbetoni
 
Árvores Espalhadas Mínimas
Árvores Espalhadas MínimasÁrvores Espalhadas Mínimas
Árvores Espalhadas MínimasDiego Cavalca
 
Gerando triângulos pitagóricos
Gerando triângulos pitagóricosGerando triângulos pitagóricos
Gerando triângulos pitagóricosSandro de Macedo
 
Cálculo I - Limites - Aula 01 - 2018.1.ppt
Cálculo I - Limites - Aula 01 - 2018.1.pptCálculo I - Limites - Aula 01 - 2018.1.ppt
Cálculo I - Limites - Aula 01 - 2018.1.pptVITORHUGO395490
 
Apostila de-matemática-ester-parte-i
Apostila de-matemática-ester-parte-iApostila de-matemática-ester-parte-i
Apostila de-matemática-ester-parte-iClaudia Sá de Moura
 

Ähnlich wie Classes de complexidades de problemas (20)

Matemática discreta cap. 1
Matemática discreta   cap. 1Matemática discreta   cap. 1
Matemática discreta cap. 1
 
Apresentacao N P Completude Loiane
Apresentacao  N P Completude  LoianeApresentacao  N P Completude  Loiane
Apresentacao N P Completude Loiane
 
Resumo Matemática 3º Ciclo
Resumo Matemática 3º CicloResumo Matemática 3º Ciclo
Resumo Matemática 3º Ciclo
 
Mat regra de sinais
Mat regra de sinaisMat regra de sinais
Mat regra de sinais
 
PDF PA e PG.pptx
PDF PA e PG.pptxPDF PA e PG.pptx
PDF PA e PG.pptx
 
Gv economia 1fase_2010
Gv economia 1fase_2010Gv economia 1fase_2010
Gv economia 1fase_2010
 
Aulas 11-guloso Algoritmos
Aulas 11-guloso AlgoritmosAulas 11-guloso Algoritmos
Aulas 11-guloso Algoritmos
 
Resolução ef 2 – 9º ano – prova anglo – p2 d9-2015
Resolução ef 2 – 9º ano – prova anglo – p2 d9-2015Resolução ef 2 – 9º ano – prova anglo – p2 d9-2015
Resolução ef 2 – 9º ano – prova anglo – p2 d9-2015
 
Prova 02 de Autômatos e Computabilidade
Prova 02 de Autômatos e ComputabilidadeProva 02 de Autômatos e Computabilidade
Prova 02 de Autômatos e Computabilidade
 
Binomio de newton
Binomio de newtonBinomio de newton
Binomio de newton
 
Expoente 12 prova modelo de exame-enunciado
Expoente 12 prova modelo de exame-enunciadoExpoente 12 prova modelo de exame-enunciado
Expoente 12 prova modelo de exame-enunciado
 
Formula luderiana racional para extracao de raiz quadrada (completo)
Formula luderiana racional para extracao de raiz quadrada (completo)Formula luderiana racional para extracao de raiz quadrada (completo)
Formula luderiana racional para extracao de raiz quadrada (completo)
 
Md 4 sequenciae_inducaomatematica
Md 4 sequenciae_inducaomatematicaMd 4 sequenciae_inducaomatematica
Md 4 sequenciae_inducaomatematica
 
Prova final mat9 ch2 2013
Prova final mat9 ch2 2013Prova final mat9 ch2 2013
Prova final mat9 ch2 2013
 
Criptografia com curva_eliptica_dbetoni
Criptografia com curva_eliptica_dbetoniCriptografia com curva_eliptica_dbetoni
Criptografia com curva_eliptica_dbetoni
 
Árvores Espalhadas Mínimas
Árvores Espalhadas MínimasÁrvores Espalhadas Mínimas
Árvores Espalhadas Mínimas
 
Gerando triângulos pitagóricos
Gerando triângulos pitagóricosGerando triângulos pitagóricos
Gerando triângulos pitagóricos
 
Cálculo I - Limites - Aula 01 - 2018.1.ppt
Cálculo I - Limites - Aula 01 - 2018.1.pptCálculo I - Limites - Aula 01 - 2018.1.ppt
Cálculo I - Limites - Aula 01 - 2018.1.ppt
 
Apostila de-matemática-ester-parte-i
Apostila de-matemática-ester-parte-iApostila de-matemática-ester-parte-i
Apostila de-matemática-ester-parte-i
 
Gabarito avaliação saerjinho 9 an0 1ºbim 2014
Gabarito avaliação saerjinho 9 an0 1ºbim 2014Gabarito avaliação saerjinho 9 an0 1ºbim 2014
Gabarito avaliação saerjinho 9 an0 1ºbim 2014
 

Kürzlich hochgeladen

Simulado Bernoulli Enem_2-Primeiro dia.pdf
Simulado Bernoulli Enem_2-Primeiro dia.pdfSimulado Bernoulli Enem_2-Primeiro dia.pdf
Simulado Bernoulli Enem_2-Primeiro dia.pdfAnnaCarolina242437
 
I.1 Boas Práticas fitossanitarias.pptxCC
I.1 Boas Práticas fitossanitarias.pptxCCI.1 Boas Práticas fitossanitarias.pptxCC
I.1 Boas Práticas fitossanitarias.pptxCCJudite Silva
 
Antonio Pereira_Vale+comunidade_set a dez_2023.pdf
Antonio Pereira_Vale+comunidade_set a dez_2023.pdfAntonio Pereira_Vale+comunidade_set a dez_2023.pdf
Antonio Pereira_Vale+comunidade_set a dez_2023.pdfAnnaCarolina242437
 
Exame De Suficiencia Para Obtencao Do Titulo De Especialista Em Medicina De F...
Exame De Suficiencia Para Obtencao Do Titulo De Especialista Em Medicina De F...Exame De Suficiencia Para Obtencao Do Titulo De Especialista Em Medicina De F...
Exame De Suficiencia Para Obtencao Do Titulo De Especialista Em Medicina De F...AnnaCarolina242437
 
AVALIA_CHUM_EFI_5 ANO_AV_2SEMESTRE_2023.pdf
AVALIA_CHUM_EFI_5 ANO_AV_2SEMESTRE_2023.pdfAVALIA_CHUM_EFI_5 ANO_AV_2SEMESTRE_2023.pdf
AVALIA_CHUM_EFI_5 ANO_AV_2SEMESTRE_2023.pdfAnnaCarolina242437
 
GESTÃO FINANceiraaaaaaaaaaaaaaaaaaaaaaaaaa
GESTÃO FINANceiraaaaaaaaaaaaaaaaaaaaaaaaaaGESTÃO FINANceiraaaaaaaaaaaaaaaaaaaaaaaaaa
GESTÃO FINANceiraaaaaaaaaaaaaaaaaaaaaaaaaayasminlarissa371
 
I.2 Meios de Proteção das culturass.pptx
I.2 Meios de Proteção das culturass.pptxI.2 Meios de Proteção das culturass.pptx
I.2 Meios de Proteção das culturass.pptxJudite Silva
 
MARANATA - 19_04_2024.pptx | Maranata 2024
MARANATA - 19_04_2024.pptx | Maranata 2024MARANATA - 19_04_2024.pptx | Maranata 2024
MARANATA - 19_04_2024.pptx | Maranata 2024CarolTelles6
 
Simulado Enem Bernoulli-Primeiro dia.pdf
Simulado Enem Bernoulli-Primeiro dia.pdfSimulado Enem Bernoulli-Primeiro dia.pdf
Simulado Enem Bernoulli-Primeiro dia.pdfAnnaCarolina242437
 

Kürzlich hochgeladen (9)

Simulado Bernoulli Enem_2-Primeiro dia.pdf
Simulado Bernoulli Enem_2-Primeiro dia.pdfSimulado Bernoulli Enem_2-Primeiro dia.pdf
Simulado Bernoulli Enem_2-Primeiro dia.pdf
 
I.1 Boas Práticas fitossanitarias.pptxCC
I.1 Boas Práticas fitossanitarias.pptxCCI.1 Boas Práticas fitossanitarias.pptxCC
I.1 Boas Práticas fitossanitarias.pptxCC
 
Antonio Pereira_Vale+comunidade_set a dez_2023.pdf
Antonio Pereira_Vale+comunidade_set a dez_2023.pdfAntonio Pereira_Vale+comunidade_set a dez_2023.pdf
Antonio Pereira_Vale+comunidade_set a dez_2023.pdf
 
Exame De Suficiencia Para Obtencao Do Titulo De Especialista Em Medicina De F...
Exame De Suficiencia Para Obtencao Do Titulo De Especialista Em Medicina De F...Exame De Suficiencia Para Obtencao Do Titulo De Especialista Em Medicina De F...
Exame De Suficiencia Para Obtencao Do Titulo De Especialista Em Medicina De F...
 
AVALIA_CHUM_EFI_5 ANO_AV_2SEMESTRE_2023.pdf
AVALIA_CHUM_EFI_5 ANO_AV_2SEMESTRE_2023.pdfAVALIA_CHUM_EFI_5 ANO_AV_2SEMESTRE_2023.pdf
AVALIA_CHUM_EFI_5 ANO_AV_2SEMESTRE_2023.pdf
 
GESTÃO FINANceiraaaaaaaaaaaaaaaaaaaaaaaaaa
GESTÃO FINANceiraaaaaaaaaaaaaaaaaaaaaaaaaaGESTÃO FINANceiraaaaaaaaaaaaaaaaaaaaaaaaaa
GESTÃO FINANceiraaaaaaaaaaaaaaaaaaaaaaaaaa
 
I.2 Meios de Proteção das culturass.pptx
I.2 Meios de Proteção das culturass.pptxI.2 Meios de Proteção das culturass.pptx
I.2 Meios de Proteção das culturass.pptx
 
MARANATA - 19_04_2024.pptx | Maranata 2024
MARANATA - 19_04_2024.pptx | Maranata 2024MARANATA - 19_04_2024.pptx | Maranata 2024
MARANATA - 19_04_2024.pptx | Maranata 2024
 
Simulado Enem Bernoulli-Primeiro dia.pdf
Simulado Enem Bernoulli-Primeiro dia.pdfSimulado Enem Bernoulli-Primeiro dia.pdf
Simulado Enem Bernoulli-Primeiro dia.pdf
 

Classes de complexidades de problemas

  • 1. Complexidade de Algoritmos Classes de Complexidades de Problemas Prof. Osvaldo Luiz de Oliveira Estas anotações devem ser complementadas por apontamentos em aula.
  • 2. Tempo polinomial Um algoritmo A, com entrada de tamanho igual a n, é polinomial se a sua complexidade (tempo, pior caso) é O(nk) pata algum k ≥ 0. CP 2
  • 3. Problemas • Todo problema para o qual existe um algoritmo polinomial é dito ser tratável. • Inversamente, o problema é dito ser intratável. CP 3
  • 4. Por que o tempo polinomial é o divisor de águas? • Embora O(n1000) seja um limite superior muito grande, existem poucos problemas práticos que admitem algoritmos polinomiais com alto grau polinomial. CP 4 “Deus não é tão cruel assim”. • As diferenças entre tempo polinomial e super-polinomial são astronômicas.
  • 5. Problemas de decisão • Problema cuja resposta é 1 (“sim”) ou 0 (“não”). CP 5 • A teoria estudada restringe a atenção a problemas de decisão.
  • 6. CLIQUE Dado um grafo não orientado G = (V, E) e uma constante k ≥ 0. CP 6 Cliques de tamanho 2: {2, 4}, {5, 7} etc. . Problema: determinar se G tem uma clique de tamanho igual a k. 1 2 3 4 5 76 Uma clique de G = (V, E) é um conjunto de vértices C ⊆ V tal que existe aresta em E entre dois quaisquer vértices de C. Cliques de tamanho 3: {1, 2, 3}, {4, 5, 6} etc. Clique de tamanho 4: {4, 5, 6, 7}.
  • 7. COBERTURA DE VÉRTICES (VC) Dado um grafo não orientado G = (V, E) e uma constante k ≥ 0. Uma VC de tamanho igual a 7: C = {1, 2, 3, 4, 5, 6, 7}. Problema: determinar se G tem VC de tamanho igual a k. 1 2 3 4 5 76 C ⊆ V é VC de G = (V, E) se e somente se para toda aresta (u, v) ∈ E ocorre de u ∈ C ou v ∈ C. Uma VC de tamanho igual a 5: C = {2, 3, 4, 5, 7}. CP 7
  • 8. CICLO HAMILTONIANO Dado um grafo não orientado G = (V, E). Problema: determinar se G tem um ciclo hamiltoniano. Um ciclo hamiltoniano é um circuito (simples) que contém cada vértice de G exatamente uma vez. CP 8
  • 9. CAIXEIRO VIAJANTE (TRAVELING SALESMAN – TSP) Dado um grafo não orientado G = (V, E), completo, com custo nas arestas, e um número W. Problema: determinar se G tem um ciclo hamiltoniano de custo ≤ W. A C DB 55 23 25 15 13 W = 80 27 Um ciclo hamiltoniano de custo ≤ 80: A, D, B, C, A CP 9
  • 10. CP 10 COLORAÇÃO COM TRÊS CORES (3-COLORING) Dado um grafo não orientado G = (V, E). Problema: determinar se G pode ser colorido com três cores. Grafo de Petersen.
  • 11. CP 11 COLORAÇÃO COM K CORES (K-COLORING) Dado um grafo não orientado G = (V, E) e um inteiro k. Problema: determinar se G pode ser colorido com k cores. Em outras palavras, determinar se existe função f : V→ {1, 2, ..., k} tal que para toda aresta (u, v) ∈ E ocorre que f (u) ≠ f (v).
  • 12. CP 12 SOMA DO SUBCONJUNTO (SUBSET-SUM) Dado conjunto S de n inteiros e um inteiro k. Problema: determinar se existe subconjunto S´ de S cuja soma seja igual a k. Exemplo: sejam S = {2, 5, 8, 9, 15, 18} e k = 22. Neste caso existe S´ = {2, 5, 15}.
  • 13. CP 13 PARTIÇÃO Dado um conjunto S = {s1, s2, ..., sn} de números. Problema: determinar se existe subconjunto T de S tal que .∑∑ −∈∈ = TSs i Ts i ii ss Exemplo: seja S = {1, 3, 8, 9, 15, 18}. Neste caso existe T = {1, 3, 8, 15}, uma vez que S – T = {9, 18}.
  • 14. MOCHILA (KNAPSACK) Dado um conjunto S de objetos numerados de 1 a n. Cada objeto i tem associado um inteiro si e um valor wi. Também são dados dois valores C e W. Problema: determinar se existe subconjunto T de S tal que .WweCs Ti i Ti i ∑∑ ∈∈ ≥≤ 1 2 3 4 5 6 7 5 3 7 2 6 4 8 5.2 3.1 2.2 2.3 3.3 1.1 2.4 s w SExemplo: sejam , C = 10 e W = 6 Neste caso existe T ⊆ S, T = {2, 4, 6}. CP 14
  • 15. “SATISFATIBILIDADE” DE CIRCUITO (CIRCUIT-SAT) Dado um circuito composto por portas NOT, OR e AND com um único pino de saída. Problema: determinar se existe uma atribuição de valores para as entradas de forma que a saída seja igual a 1. CP 15
  • 16. “SATISFATIBILIDADE” DE FÓRMULA BOOLEANA (SAT) Dado uma formula φ composta variáveis booleans x1, x2, ... xn, conectivos lógicos (∧, ∨, ¬, →, ↔) e parênteses. Problema: determinar se existe uma atribuição de valores para as variáveis de φ de forma que a fórmula seja avaliada igual a 1. φ = (x1 ∧ x2) pode ser satisfeita com x1 = 1 e x2 = 1. Pode ser satisfeita com x1 = 0, x2 = 0, x3 = 1 e x4 = 1. CP 16
  • 17. Codificação da entrada • Cada problema de decisão possui uma infinidade de instâncias de problema. • Uma instância do problema de decisão CLIQUE: • Cada instância está associada a uma cadeia (codificação). Exemplo: x = #grafo G#3# 1 2 3 4 , k = 3 O grafo possui uma clique de tamanho igual a 3? 1,2,3,4$(1,2),(1,3),(2,3),(3,4) x = #1,2,3,4$(1,2),(1,3),(2,3),(3,4)#3# G CP 17
  • 18. Um pouco de linguagens formais • ∑ (alfabeto): conjunto finito de símbolos. ∑ = { #, $, ,, (, ), 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 } • ∑ . ∑ = ∑2 (concatenação de ∑ com ∑) ∑ . ∑ = { ##, #$, #,, #(, #), #0, #1, ... $#, $$, $,, ... } • ∑ . ∑2 = ∑3 ∑ . ∑2 = { ###, ##$, ##,, ##(, ... #$#, #$$, #$,, ... } • ∑0 = { ε }, onde ε representa a cadeia vazia. CP 18
  • 19. • ∑* (conjunto de todas as cadeias que podem ser construídas com o alfabeto ∑, ou seja, ∑* = ∑0 ∪ ∑ ∪ ∑2 ∪ ∑3 ∪ ... . Um pouco de linguagens formais ∑* = { ε, #, $, ,, (, ), 0, ..., ##, #$, #,, #(, #), #0, #1, ..., ###, ##$, ##,, ##(, ... ... } Palavras de comprimento 0 1 2 3 CP 19
  • 20. • Linguagem L: subconjunto de cadeias de ∑*. Um pouco de linguagens formais L1 = ∅ = { } (linguagem vazia). L3 = { #1,2,3,4$(1,2),(1,3),(2,3),(3,4)#3# } L2 = { #, ##, #$# } L4 = { ε } (linguagem que contém apenas a cadeia vazia) CP 20
  • 21. • Algumas operações sobre linguagens. Sejam L, L1 e L2 linguagens sobre o alfabeto ∑. Um pouco de linguagens formais - União: L1 ∪ L2 = { x ∈ ∑* | x ∈ L1ou x ∈ L2} - Intersecção: L1 ∩ L2 = { x ∈ ∑* | x ∈ L1 e x ∈ L2} - L* (fecho reflexivo e transitivo de L ou fecho de Kleene) L* = { ε } ∪ L ∪ L2 ∪ L3 ∪ ... - Concatenação de L k vezes Lk = L . Lk-1, para k > 0 L0 = { ε } - Concatenação: L1 . L2 = { x1 x2 ∈ ∑* | x1 ∈ L1 e x2 ∈ L2} - Complemento: L = ∑* - L = { x ∈ ∑* | x ∉ L} CP 21
  • 22. Problema de decisão e linguagem • Instâncias de um problema de decisão Q podem ser codificadas sobre um alfabeto ∑. • Uma linguagem L sobre ∑ pode representar as instâncias de um problema de decisão. L = { x ∈ ∑* | Q (x) = 1 } • Problema de decisão: problema cuja solução tem como resposta 1 (“sim”) ou 0 (“não). CP 22
  • 23. Exemplo Problema de decisão CLIQUE e Linguagem CLIQUE • Problema de decisão CLIQUE: dado grafo G=(V, E) e uma constante k, responder 1 (“sim”) caso G tenha uma clique de tamanho igual a k e 0 (“não”), caso contrário. • Linguagem CLIQUE (Lc) Lc = { x ∈ ∑*, x = #grafo G#k# | existe clique de tamanho igual a k em G } • Observe que Lc é formado por cadeias cujo problema de decisão tem resposta 0 (“não”) e também aquelas com formato impróprio. x = #1, 2, 3, 4 $ (1, 2), (1, 3), (2, 3), (3, 4)#3# ∈ Lc. x = #1, 2, 3, 4 $ (1, 2), (1, 3), (2, 3), (3, 4)#4# ∉ Lc. CP 23
  • 24. Algoritmo de decisão e linguagem aceita • Linguagem L aceita por um algoritmo de decisão A. • Algoritmo de decisão: algoritmo que recebe uma cadeia x e retorna 1 (“sim”) ou 0 (“não”). L = { x ∈ ∑* | A(x) = 1 } • Linguagem M rejeitada por um algoritmo de decisão A. M = { x ∈ ∑* | A(x) = 0 } • L ∪ M pode ser diferente de ∑*, pois para A pode entrar em looping para alguma cadeia e, assim, nem aceitar, nem rejeitar. CP 24
  • 25. Linguagem decidida por um algoritmo • Um algoritmo A decide uma linguagem L se, para toda cadeia x ∈ ∑*, A (x) = 1 ou A(x) = 0. CP 25
  • 26. Tamanho da entrada (n) • Quantidade de símbolos (ou de bits) utilizados para codificar uma instância do problema x = #1,2,3,4$(1,2),(1,3),(2,3),(3,4)#2# n =| x | = 35 ou x = 35 . 8 = 280 bits para uma certa codificação em que cada símbolo é representado por 8 bits. CP 26
  • 27. Classe de complexidade P • Observe que a definição da classe P, nada é dito sobre o tempo de execução para rejeitar uma cadeia x não pertencente a L. Em outras palavras: conjunto de todos os problemas de decisão para os quais existe algoritmo polinomial ao tamanho da entrada, no pior caso. • P = { linguagens L | existe algoritmo A que aceita L em tempo polinomial ao tamanho da entrada, no pior caso } CP 27
  • 28. A classe P é fechada para, união, intersecção, complemento, concatenação e fecho de kleene. Ou seja, se L, L1, L2 ∈ P, então: Fechos da classe P • L1 ∪ L2 ∈ P; • L1 ∩ L2 ∈ P; • L ∈ P; • L1 . L2 ∈ P; • L* ∈ P. CP 28
  • 29. Outra definição da classe de complexidade P Como P é fechado sobre o complemento, então podemos dizer que P = { linguagens L | existe algoritmo A que decide L em tempo polinomial ao tamanho da entrada, no pior caso } CP 29
  • 30. CP 30 Algoritmos de verificação Por exemplo, alguém diz y = {1, 2, 3}para esta instância do problema • Suponha que alguém lhe ofereceu um conjunto de vértices que ele diz solucionar o problema da CLIQUE igual a k em um grafo G. • É fácil verificar se o certificado y = {1, 2, 3} é uma clique em G de tamanho igual 3. y é chamado de certificado 1 2 3 4 , k = 3 G
  • 31. CP 31 Algoritmo de verificação • Um algoritmo de verificação toma duas entradas: x (a cadeia a ser verificada) e y (o certificado). Algoritmo A (x, y) Entrada: x ∈ ∑*, x = #grafo G#k# e y (certificado), um conjunto de vértices. Saída: 1 se y é uma clique de G de tamanho igual a k e 0, caso contrário. { se o tamanho de y for igual a k se para cada vértice em y houver em G aresta para os outros vértices de y retornar 1 senão retornar 0 senão retornar 0 }
  • 32. CP 32 Classe de complexidade NP Em outras palavras: conjunto de todos os problemas de decisão para os quais existe algoritmo de verificação polinomial ao tamanho da entrada, no pior caso. • NP = { linguagens L | existe algoritmo de verificação A que aceita L em tempo polinomial ao tamanho da entrada, no pior caso } • Observe que a definição da classe NP, nada é dito sobre o tempo de execução para rejeitar uma cadeia x não pertencente a L. Obs.: o nome NP vem de nondeterministic polynomial. Esta classe foi originalmente estudada no contexto do não determinismo. A definição que estamos usando é equivalente a uma outra que diz que NP é a classe das linguagens que definem problemas de decisão para as quais existe algoritmo não determinístico que executa em um tempo polinomial, no pior caso.
  • 33. CP 33 Linguagem CLIQUE Lc ∈ NP 1 - O certificado | y | = O(n) 2 - Algoritmo A aceita Lc em tempo polinomial. Logo, Lc ∈ NP. O que também significa que o problema de decisão CLIQUE ∈ NP. Algoritmo A (x, y) Entrada: x ∈ ∑*, x = #grafo G#k# e y (certificado), um conjunto de vértices. Saída: 1 se y é uma clique de G de tamanho igual a k e 0, caso contrário. { se o tamanho de y for igual a k se para cada vértice em y houver em G aresta para os outros vértices de y retornar 1 senão retornar 0 senão retornar 0 } O(n2)
  • 34. A questão P = NP • Não se sabe se P = NP. • P ⊆ NP. Prova Seja L ∈ P. Então existe um algoritmo A que decide L em tempo polinomial. Podemos usar A para desenvolver um algoritmo de verificação B que aceita L em tempo polinomial. Algoritmo B (x, y) { retornar A (x) // Ignora o certificado y. } O algoritmo de verificação B aceita x se e somente se A aceita x, assim B aceita L. Além disso B executa em tempo polinomial, pois A executa em tempo polinomial. Logo L ∈ NP. Ou seja P ⊆ NP. CP 34
  • 35. Possíveis cenários • Não se sabe se NP é fechado pelo complemento, isto é, se L ∈ NP implica que L ∈ NP. • co-NP = { L ∈ NP | L ∈ NP }. CP 35
  • 36. Reduções em tempo polinomial • Um problema Q pode ser reduzido a um problema R se Q puder ser “refraseado” em termos de R. O problema de resolver uma equação linear a x + b = 0 pode ser reduzido ao problema de resolver uma equação do segundo grau 0x2 + a x + b = 0. CP 36
  • 37. Reduções em tempo polinomial • Uma linguagem L1 é redutível em tempo polinomial a uma linguagem L2, escreve-se L1 ≤ p L2, se existe um algoritmo polinomial A tal que, para todo x ∈ ∑*: - A(x) = y (i. e., A transforma x em y) - x ∈ L1 se e somente se y ∈ L2. A CP 37 ∑* ∑*
  • 38. Exemplo: Lc ≤ p Lvc • Lc: Linguagem CLIQUE Lc = { x ∈ ∑*, x = #grafo G#k# | existe clique de tamanho igual a k em G } • Lvc: Linguagem COBERTURA DE VERTICES Lvc = { x ∈ ∑*, x = #grafo G#k# | existe cobertura de vértices de tamanho igual a k em G } CP 38
  • 39. CP 39 Idéia sobre o algoritmo que Lc ≤ p Lvc 1 2 3 4 , k = 3 G = (V, E) Clique C = {1, 2, 3} 1 2 3 4 , k’ = |V| - |C| = 1 G = (V, E) Cobertura de vértices VC = V – C ={4} 1 2 3 4 5 76 , k = 4 Clique C = {4, 5, 6, 7} G = (V, E) Cobertura de vértices VC = V – C ={1, 2, 3} 1 2 3 4 5 76 G = (V, E) , k’ = |V| - |C| = 3
  • 40. CP 40 Algoritmo Reduz_Lc_Lvc (x) Entrada: x ∈ ∑*, x = #grafo G#k# Saída: y ∈ ∑*, x = #grafo G#k’# { 1 - Computar o grafo G = (V, E) a partir do grafo G =(V, E), onde E = { (u, v) | (u, v) ∉ E }; 2 – k’ = | V | - k; 3 – y := #grafo G#k’# 4 – retornar y } T(n) = O(n2). O algoritmo de redução é polinomial. O algoritmo de redução O(n2)
  • 41. CP 41 Completando a prova Precisamos mostrar que: x∈Lc se e somente se y ∈ Lvc. i) Mostrando: Se x∈Lc ⇒ y ∈ Lvc. x = #grafo G#k#. x∈Lc ⇒ existe uma clique em G = (V, E), digamos C, de tamanho igual a k. O algoritmo de redução transforma x em y = #grafo G#k’#. Seja (u, v) uma aresta de E. ⇒ (u, v)∉ E ⇒ u ou v (ou ambos) não pertencem a C, já que em uma clique todos os vértices estão conectados. Logo u ou v pertencem a V – C, o que significa que (u, v) é coberto por V – C. Como (u, v) foi escolhido arbitrariamente em E, então toda aresta de E é coberta por V – C. ⇒ V – C é uma cobertura de vértices em G. Esta cobertura tem tamanho k’ = | V | - k.
  • 42. CP 42 Completando a prova i) Mostrando: Se y∈Lvc ⇒ x ∈ Lc. y = #grafo G#k’#. y∈Lvc ⇒ existe uma cobertura de vértices em G = (V, E), digamos C, de tamanho igual a k’ = | V | - k. Para todo u, v ∈ V, se (u, v) ∈ E, então u ∈ C ou v ∈ C (ou ambos pertencem a C). A contrapositiva desta afirmação é que para todo u, v ∈ V, se u ∉ C e v ∉ C então (u, v) ∈ E. Em outras palavras V – C é uma clique. O tamanho desta clique é | V | - | C | = | V | - ( | V | - k ) = k.
  • 43. CP 43 Implicação importante das reduções polinomiais Se LA ≤ p LB e existe algoritmo B que decide LB em tempo polinomial então existe algoritmo A que decide LA em tempo polinomial. Algoritmo A (x) { y := Reduz_LA_LB (x); // Obtém uma instância y do problema B a partir de // uma instância x do problema A. retornar B (y) // Retorna 1 (“sim”) se B retornar 1 e 0 (“não”), caso contrário. } O (n k), i.e, polinomial O (n c), i.e, polinomial Complexidade de A: T(n) = O (nk) + O (nc) = O(n k + c), i.e, polinomial.
  • 44. Classe de complexidade NP-difícil (NP-hard) NP-difícil = { linguagens L | para todo L’ ∈ NP ocorre que L’ ≤ p L } Isto é, L’ não é mais do que um fator polinomial difícil do que L. CP 44
  • 45. Classe de complexidade NP-completo NP-completo = { linguagens L | L ∈ NP e L ∈ NP-difícil} CP 45
  • 46. Primeiro problema NP-completo LCIRCUIT-SAT = { #circuito C# | existe uma atribuição de valores para a entrada de forma que a saída seja igual a 1 } Obs.: C é uma codificação do circuito usando símbolos de um alfabeto ∑. CP 46
  • 47. Primeiro problema NP-completo Teorema de Cook-Levin: LCIRCUIT-SAT ∈ NP-completo. Cook mostrou em 1971que CNF-SAT é NP-completo. Levin formulou a noção de NP completude de forma independente de Cook, quase na mesma época. Garey e Johnson (indicado na bibliografia da disciplina) é um catálogo para muitos problemas NP-completos. Cormen (livro texto) fornece uma prova simplificada do teorema. Stephen Cook. The complexity of theorem proving procedures. In Proceedings of the Third Annual ACM Symposium on Theory of Computing, pages 151–158, 1971. L. A. Levin. Universal sorting problems. Problemy Peredachi Informatsii, 9(3):265–266, 1973. In Russian. CP 47
  • 48. Outra definição para a classe NP-completo NP-completo = { linguagens L | L ∈ NP e L’ ≤p L para algum L’ ∈ NP-completo } Esta definição simplifica a prova de que um problema de decisão é NP-completo. Não há necessidade de provar L ∈ NP-difícil, i.e, que para todo L’∈ NP ocorre de L’ ≤p L. Basta provar que existe L’∈ NP-completo tal que L’ ≤p L. Isto decorre do fato: se existe tal L’ então todo L’’∈ NP, L’’ ≤p L’. Então, por transitividade L’’ ≤p L’ ≤p L. CP 48
  • 49. Prova de que uma linguagem L ∈ NP-completo 1 - Mostrar L ∈ NP. 2 – Mostrar que L ∈ NP-difícil Achar uma linguagem L’ ∈ NP-completo tal que L’ ≤p L. 2.1 – Descrever um algoritmo A(x) que reduz em tempo polinomial uma instância x ∈∈∈∈ ∑* de L’ a uma instância y de L. 2.2 – Mostrar que o algoritmo A executa em tempo polinomial. 2.3 – Mostrar que x ∈∈∈∈ L’ se e somente se y ∈∈∈∈ L. CP 49
  • 50. Um pequeno quadro de reduções clássicas em tempo polinomial de problemas NP-completos Cada problema em NP CIRCUIT-SAT SAT CNF-SAT 3-CNF-SAT CLIQUE COBERTURA DE VÉRTICES (VC) CICLO HAMILTONIANO TSP SUBSET-SUM MOCHILA O mesmo que SAT só que formula na forma normal conjuntiva (CNF) (... ∨ ... ) ∧ (... ∨ ... ) ∧ ... O mesmo que CNF-SAT só cláusulas terão extamente três variáveis CP 50
  • 51. Prova de que LSAT ∈ NP-completo LSAT = { #formula φ# | existe atribuição de valores às variáveis de φ de maneira que φ seja igual a 1 } 1 – Mostrando que LSAT ∈ NP. Isto é, temos que mostrar que existe algoritmo de verificação A que aceita LSAT em tempo polinomial ao tamanho da entrada, no pior caso. Precisamos mostrar que: 1 - LSAT ∈ NP. 2 - LSAT ∈ NP-difícil. CP 51
  • 52. CP 52 - O certificado | y | = O(n) - Algoritmo A aceita LSAT em tempo polinomial. Logo, LSAT ∈ NP. Algoritmo A (x, y) Entrada: x ∈ ∑*, x = #φ# e y (certificado), uma atribuição de valores para as variáveis de φ. Saída: 1 se y é uma atribuição de valores que faz φ ser igual a 1e 0, caso contrário. { 1 – substituir em φ cada variável pelo valor associado a ela no certificado; 2 – avaliar a expressão resultante; 3 – se valor da expressão resultante for igual a 1 retornar 1 senão retornar 0 } O(n) O(n) Continuação
  • 53. 2 – Mostrando que LSAT ∈ NP-difícil. LCIRCUIT-SAT ∈ NP-completo. Mostraremos que LCIRCUIT-SAT ≤p LSAT Idéia do algoritmo que reduz em tempo polinomial LCIRCUIT-SAT a LSAT. LCIRCUIT-SAT = { #circuito C# | existe uma atribuição de valores para as entradas de forma que a saída de C seja igual a 1 } Continuação CP 53
  • 54. CP 54 Algoritmo Reduz_LCIRCUIT-SAT_LSAT (x) Entrada: x ∈ ∑*, x = #circuito C# Saída: y ∈ ∑*, y = #fórmula φ# { 1 – Para cada porta lógica de C gerar uma sub-formula φi, conforme: - porta AND Entrada (x1, x2, ...xn) Saída (z): gerar ( z ↔ (x1 ∧ x2 ∧ ... ∧ xn) ); - porta OR Entrada (x1, x2, ...xn) Saída (z): gerar ( z ↔ (x1 ∨ x2 ∨ ... ∨ xn) ); - porta NOT Entrada (x) Saída (z): gerar ( z ↔ ( ¬ x ) ); 2 – φ := xo ∧ φ1 ∧ φ2 ∧ ... ∧ φm , onde xo é a variável que representa o pino de saída do circuito C. 3 – y := #fórmula φ# 4 – retornar y } O(n) O(n) T(n) = O(n). O algoritmo de redução é polinomial em relação ao tamanho (n) de x. Continuação
  • 55. CP 55 Precisamos mostrar que: x∈LCIRCUIT-SAT se e somente se y ∈ LSAT. i) Mostrando: Se x∈LCIRCUIT-SAT ⇒ y ∈ LSAT. Continuação
  • 56. CP 56 ii) Mostrando: y ∈ LSAT ⇒ Se x∈LCIRCUIT-SAT. y = #fórmula φ#. y∈ LSAT ⇒ existe uma atribuição de valores às variáveis de φ de modo que a o resultado de φ é igual a 1. Quando associamos às variáveis xi de φ cada cláusula avalia igual a 1 e conjunção de valores avalia 1. De forma análoga o circuito C tem saída igual a 1. Continuação
  • 57. Muitos acreditam neste relacionamento NP NP-completo P CP 57
  • 60. CP 60 Conjunto Coleção de zero ou mais elementos distintos. ∅ denota um conjunto vazio (zero elemento). a) Pertinência Se um elemento x pertence a um conjunto A, denota-se por x∈∈∈∈ A. Caso contrário escreve-se x ∉∉∉∉A. b) Subconjunto e subconjunto próprio - A ⊆ B: o conjunto A é subconjunto de B, i.e, para todo x∈ A ocorre de x∈ B. - A ⊂ B: o conjunto A é subconjunto próprio de B, i.e, para todo x∈ A ocorre de x∈ B, mas existe pelo menos um y ∈ B tal que y ∉A. c) Igualdade entre conjuntos A e B A = B se e somente se A ⊆ B e B ⊆ A. Definições
  • 61. CP 61 a) União A ∪ B = { x | x ∈ A ou x ∈ B } b) Intersecção A ∩ B = { x | x ∈ A e x ∈ B } c) Diferença A – B = { x | x ∈ A e x ∉ B } d) Complemento em relação a um conjunto universo U definido. A = { x | x ∈ U e x ∉ A } e) Conjunto das partes ℘= 2A = { S | S ⊆ A } f) Produto cartesiano A x B = { (x, y) | x ∈ A e y ∈ B } Operações
  • 62. CP 62 Sejam os conjuntos A = { 0, 1, 2 }, B = { 2, 3 } e N números naturais. A ∪ B = { 0, 1, 2, 3} A ∩ B = { 2 } A – B = { 0, 1} A = { x ∈ N | x > 2 } ℘= 2B = { ∅, {2}, {3}, {2, 3} } A x B = { (0, 2), (0, 3), (1, 2), (1, 3), (2, 2), (2, 3)} Exemplos
  • 63. CP 63 a) Idempotência A ∪ A = A A ∩ A = A b) Comutatividade A ∪ B = B ∪ A A ∩ B = B ∩ A c) Associatividade A ∪ ( B ∪ C) = (A ∪ B) ∪ C A ∩ (B ∩ C) = (A ∩ B) ∩ C d) Distributividade A ∩ ( B ∪ C) = (A ∩ B) ∪ (A ∩ C) A ∪ ( B ∩ C) = (A ∪ B) ∩ (A ∪ C) e) Morgan A ∪ B = (A ∩ B) A ∩ B = (A ∪ B) Algumas propriedades
  • 65. CP 65 Operadores Conjunto lógico: { 0, 1} ou { F, V }. a) Negação (Not): ¬ b) E (and): ∧ c) Ou (Or): ∨ d) Se então: → e) Se e somente se: ↔
  • 66. Tabela de verdade 0 0 1 0 0 1 1 x y ¬ x x ∨ y x ∧ y x → y x ↔ y 0 1 1 1 0 1 0 1 0 0 1 0 0 0 1 1 0 1 1 1 1 CP 66
  • 67. a) Idempotência x ∨ x ↔ x x ∧ x ↔ x b) Comutatividade x ∨ y = y ∨ x x ∧ y = y ∧ x c) Associatividade x ∨ (y ∨ z) = (x ∨ y) ∨ z x ∧ (y ∧ z) = (x ∧ y) ∧ z d) Distributividade x ∧ (y ∨ z) = (x ∧ y) ∨ (x ∧ z) x ∨ (y ∧ z) = (x ∨ y) ∧ (x ∨ z) e) Morgan x ∨ y = ¬ (¬ x ∧ ¬ y) x ∧ y = ¬ (¬ x ∨ ¬ y) Algumas propriedades CP 67
  • 69. Definição e tipos Definição Um grafo G = (V, E) é um sistema matemático constituído por um conjunto de vértices V (ou nós) e um conjunto de arestas E. A cada aresta E corresponde um par de vértices. 1 2 3 4 5 Não orientado V = { 1, 2, 3, 4, 5 } E = { {1, 2}, {1, 3}, {2, 3}, {2, 4}, {4, 5} } G = (V, E) 1 2 3 4 5 Orientado G = (V, E) V = { 1, 2, 3, 4, 5 } E = { (1, 2), (3, 1), (3, 2)}, (4, 2), (4, 5) } CP 69
  • 70. Matriz de adjacências 1 2 3 4 5 1 2 3 4 5 1 1 11 11 1 M M [v, w] = 1: existe aresta de v para w 1 2 3 4 5 G = (V, E) 1 1 1 1 2 3 4 5 G = (V, E) 1 2 3 4 5 1 2 3 4 5 1 11 M 1 1 CP 70