3a prova de Análise de Algoritmos – 2016/1

Propaganda
3a prova de Análise de Algoritmos – 2016/1
Avisos:
• Justifique todas suas respostas.
• É terminantemente proibido consultar qualquer material ou colega, usar celular ou calculadora.
1. Se x é um inteiro, chamamos de divisores triviais de x os inteiros 1 e x.
composto é o problema de decisão: Dado um inteiro positivo x, decidir se x tem um divisor não
trivial.
fator é o problema de decisão: Dados dois inteiros positivos x e y, decidir se x tem um divisor
não trivial menor que y.
Prove que composto ≤p fator.
Considere um algoritmo que recebe a instância x de composto e devolve a instância (x, x) de
fator.
Claramente, esse algoritmo é de tempo polinomial.
Ainda, x tem um divisor não trivial se e somente se se x tem um divisor não trivial menor que x.
Portanto, composto ≤p fator.
2. Escolha um dos problemas abaixo e prove que ele está em NP.
(a) subsetsum (soma de subconjunto): Dados números naturais p1 , . . . , pn e c, decidir se existe
um subconjunto K de {1, . . . , n} tal que a soma dos pj para j ∈ K seja igual a c.
Um certificado é um subconjunto K ⊂ {1, . . . , n}.
P
Dados p1 , . . . , pn e c e um certificado K um verificador soma j∈K pj e verifica se a
soma é c. Isso é feito em tempo polinomial.
(b) mochila: Dados os valores s e v e um conjunto X onde cada elemento x ∈ X tem associado
um tamanho t(x) e um valor v(x), determinar se existe B ⊆ X tal que a soma dos tamanhos
dos elementos de B é no máximo s e a soma dos valores dos elementos de B é pelo menos v.
Um certificado é um subconjunto B ⊆ X.
P
Dados s, v, X e um certificado B um verificador soma x∈B t(x) e verifica se a soma
P
é ≤ s; soma x∈B s(x) e verifica se a soma é ≥ v. Isso é feito em tempo polinomial.
3. Assuma que exista um algoritmo M eficiente para sat. Exiba um algoritmo eficiente que recebe
uma fórmula booleana e usa M para determinar, caso exista, uma atribuição que satisfaça a
fórmula.
Se Φ = Φ(x1 , x2 , . . . , xm ) e existe um algoritmo M para sat de tempo TM (n) então, caso
Φ seja satisfazı́vel, podemos determinar uma valoração da seguinte maneira: usamos M
para decidir se Φ(V, x2 , . . . , xm ) é satisfazı́vel, se não for satisfazı́vel então Φ(F, x2 , . . . , xm )
é satisfazı́vel; assim determinamos o valor de x1 . Determinado o valor de x1 , repetimos
o processo para determinar o valor de x2 , e assim por diante. Tal algoritmo tem tempo
2m · TM (n) = O(nTM (n))
que é polinomial caso TM seja um polinômio.
4. Suponha que P 6= NP. Quais das seguintes afirmações são verdadeiras a respeito de um problema
A? Justifique suas escolhas.
(a) Se A é NP-completo então A não pode ser resolvido em tempo polinomial.
(V) Se A é NP-completo todo problema em NP pode ser reduzido em tempo polinomial a A, portanto se A é resolvido em tempo polinomial então P=NP, um absurdo.
(b) Se A está em NP então A não pode ser resolvido em tempo polinomial.
(F) Como P ⊂ NP mesmo quando P 6= NP, pode ser que A possa ser resolvido em
tempo polinomial.
(c) Se A está em NP mas não é NP-completo então A pode ser resolvido em tempo polinomial.
(F) Pode ser que A possa ser resolvido em tempo polinomial mas também pode ser
que A não possa ser resolvido em tempo polinomial.
(d) Se A está em P então A não é NP-completo.
(V) Se A ∈ P, caso seja NP-completo todo problema em NP pode ser reduzido em
tempo polinomial a A, portanto se A é resolvido em tempo polinomial então P=NP,
um absurdo.
Download