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.