Teoria da Computação 2013/2014 Exercícios 1 Máquinas de Registos Ilimitados 1. Construa programas URM sem módulos que calculem as seguintes funções (a) (b) (c) (d) (e) (f ) (g) (h) (i) (j) quatro(x) = 4 sg(x) retorna 0 se x > 0, 1 no caso contrário halfd(x) devolve metade de x se x for par, diverge se x for ímpar max(x, y) devolve o máximo dos dois argumentos qt(x, y) devolve o quociente da divisão inteira de x por y raiz(x) devolve a raiz quadrada de x se x é um quadrado perfeito, diverge caso contrário A função característica do predicado x é igual a 2 A função característica do predicado x é maior que y A função característica do predicado o resto da divisão de x por 3 é 1 A função característica do predicado x é quadrado perfeito 2. Construa programas URM para calcular as funções com assinatura (a) f (x) = −x (b) f (x) = −2x (c) A função característica de x < 0 (d) A função característica de x é ímpar Z←Z 3. Utilizando os programas que fez como módulos, construa programas URM que calculem as seguintes funções (a) f (x, y, z) = x + y + z (b) f (x, y, z) = max(x, y) + z (c) Função característica do predicado x é primo (d) Função característica do predicado x é cubo perfeito (e) p(x) devolve o x-ésimo primo 4. Faça a expansão dos seguintes programas com módulos (a) Considere que o programa tem dois argumentos. J(1, 2, 4) Soma[1, 2 → 1] J(1, 1, 5) Dois[→ 1] (b) Considere que o programa tem dois argumentos. J(1, 2, 4) Xyz = Foo[→ 1] Abc[1, 2 → 1] S(1) Foo = S(1) S(1) Z(2) S(3) Abc = J(1, 3, 1) T(2, 1) 5. Codique os seguintes programas URM. Seguem algumas funções úteis. Codicação de Π: Inversas de N2 : N2 → N (m, n) 7→ 2n (2m + 1) − 1 Π: Π1 : N x → 7→ expoente do número 2 na factorização prima de Π2 : N x N (x + 1)1 x. → N 1 x+1 ( − 1) 7→ 2 2Π1 (x) (a) Soma = [J(3, 2, 5), S(1), S(3), J(1, 1, 1)] (b) Eq = [J(1, 2, 4), Z(1), J(1, 1, 6), Z(1), S(1)] 6. Encontre os programas que estão associados aos números (a) dec(64) (b) dec(256) (c) dec(225) (d) dec(523) 7. O modelo URM pode ser denido unicamente à custa das instruções (a) Como programaria a instrução T(n, m) Z(n), S(n) e J(n, m, q). usando as três instruções anteriores? (b) Como caria a codicação de programas URM restritos a estas três instruções? Soma = [J(3, 2, 5), S(1), S(3), J(1, 1, 1)]. Apresente 3 conjuntos de N. Sugestão: considere suxos ao programa unicamente por instruções Z(n), S(n) e T(n, m). 8. Considere o programa programas de cardinalidade igual ao conjunto Soma compostos Page 2 2 Funções Parciais Recursivas 1. Considere as seguintes funções f : N2 → N g : N3 → N h : N4 → N Diga para cada uma das expressões seguintes se estão correctas e se sim qual a aridade (número de argumentos) da expressão resultante. (a) C[g; P12 , P22 , P12 ] (b) C[f ; P12 , P22 , P12 ] (c) C[h; P14 , P13 , P12 ] (d) R[f ; h] (e) R[2; f ] (f ) R[g; P35 ] (g) (h) (i) R[P12 ; g] P z<y f (x, y) P z<y f (x, y) 2. Prove por via axiomática, a computabilidade das seguintes funções: (a) quatro(x) = 4 (b) dobro(x) = 2x (c) triplo(x) = 3x (d) exp2(x) = x2 (e) exp(x, y) = xy (f ) max(x, y) (g) sg(x) (h) halfd(x) devolve o máximo dos dois argumentos retorna 0 se x > 0, 1 no caso contrário devolve metade de x se x for par, diverge se x for ímpar (i) qt(x, y) (j) raiz(x) devolve a raiz quadrada de x se x é um quadrado perfeito, diverge caso contrário devolve o quociente da divisão inteira de (k) A função característica do predicado (l) (x)1 x por y x é quadrado perfeito retorna o valor do primeiro expoente da expansão prima de x. de um número é igual ao produto de potências de números primos: (m) (n) D(x), devolve o número de divisores de primo(x), x. função característica do predicado (o) A função característica do predicado x > y. (p) A função característica do predicado x|y , x é número primo. ou seja 3. Para cada uma das funções seguintes obtenha o Page 3 x é divisor de y. A expansão prima 2x 3y 5z · · · . 3 Indecibilidade 1. Considere um alfabeto A = {a1 , a2 , . . . , an }. (a) Apresente uma função computável que codique A? . (b) Apresente uma função computável que descodique 2. Sejam LA e LB A? . linguagens recursivas. Prove as seguintes armações: (a) LA (b) LA ∪ LB é uma linguagem recursiva (c) LA ∩ LB é uma linguagem recursiva (d) LA \ LB é uma linguagem recursiva é uma linguagem recursiva 3. Prove que as seguintes linguagens são decidíveis: (a) LA AF D = {hM, ui|M é um AFD e aceita u} (b) LV AF D = {hM i|M é um AFD ∧ L(M ) = ∅} 4. Prove a indecibilidade das seguintes linguagens: (a) Linguagem da aceitação LA = {hM, ui|M aceita u} (b) Linguagem da paragem LH = {hM, ui|M termina comu} (c) Conjunto das linguagens que reconhecem linguagens regulares. LR = hM i|M gera uma linguagem regular (d) Conjunto das linguagens que reconhecem linguagens independentes de contexto. LIC = hM i|M gera uma linguagem independente de contexto (e) Conjunto das linguagens que reconhecem uma palavra e a sua inversa. LP 1 = hM i|w ∈ L(M ) ⇔ wR ∈ L(M ) wR representa a palavra w invertida. 5. Considere o problema em que as instâncias representam triplos programa URM, u um argumento do argumento e i tâncias positivas são os triplos em que o programa executa a considera-se que a computação P (u) u em que i-ésima P P. instrução. Se é um As ins- i > |P | termina. Mostre que este problema é indecidível. 6. Considere o problema em que as instâncias representam tuplos programa URM, (P, u, i) um índice de instrução de um argumento do argumento, r (P, u, r, v) em que um índice de registo e v P é um um número natural. As instâncias positivas são os triplos em que durante a computação do programa ou após o seu término o registo r tem o valor v. Page 4 Mostre que este problema é indecidível. 7. Considere o modelo de computação R1 URM que representa uma restrição do modelo URM em que os registos só têm k -bits. (a) Mostre que a linguagem da aceitação restrita a este modelo é decidível. LA R1 U RM = hP, ui|P é um R1 URM ∧ P (u) ↓ 1 (b) Mostre que a linguagem vazio restrita a este modelo é decidível. LV R1 U RM = {hP i|L(P ) = ∅} 8. Mostre que o problema da Correspondência de Post restrito ao alfabeto 4 {0} é decidível. Complexidade 1. Dê uma denição para a relação ser (a) 2 1/2n − 3n 3 é 6n (c) (n + a)b (d) n2 − 100000n (e) 200n2 + n é de e mostre que O(n ) O(n2 ) (b) não é O 2 O(nb ) é não é O(n) O(n2 ) 2. De um modo geral, para podermos tratar computacionalmente um problema temos que converter instâncias de um problema em números naturais. É preciso uma função que codique instâncias em números naturais f : I 7→ N (a) Apresente uma função que codique instâncias do problema 3SAT . Uma instância representa conjuntos nitos de cláusulas com três literais. (b) Apresente uma função que codique instâncias do problema CF C . Uma instância re- SAT . Uma instância re- presenta conjuntos nitos de cláusulas. (c) Apresente uma função que codique instâncias do problema presenta uma fórmula conjuntiva. (d) Apresente uma função que codique instâncias do problema um par (G, k) em que G é um grafo e k COBV . Uma instância é um número natural. 3. Para cada um dos seguintes problemas mostre que pertencem à classe NP. (a) Uma clique é um grafo não direccionado em que todos os vértices estão ligados a todos os outros. Um grafo pode conter um sub-grafo que forma uma clique. Uma é um grafo clique com exactamente k k -clique vértices. O problema clique é determinar se um grafo contém uma clique de um determinado tamanho. LCLIQU E = hG, ki|G é um grafo não direccionado e contém uma (b) Dado um conjunto de números existe um subconjunto de X X = {x1 , x2 , . . . , xn } e um valor tal que a soma dos números é t k -clique queremos saber se t. X LSU BSET −SU M = hX, ti|X = {x1 , x2 , . . . , xn } ∧ {y1 , y2 , . . . , yl } ⊆ X ∧ yi = t i Page 5 4. O que caracteriza as linguagens da classe de complexidade temporal P? E as da classe NP? Considere as frases seguintes; diga, JUSTIFICANDO, se são verdadeiras, falsas, ou se nada pode concluir acerca da sua veracidade: (a) P 6= NP (b) P ⊆ NP (c) NP ⊆ P 5. Explique de forma clara e concisa o que tem que fazer se quiser provar que uma dada linguagem L é NP-completa. Que outra forma tem de provar que uma linguagem é NP- completa? 6. Para além do tempo e do espaço existem outros recursos que são usados para classicar as linguagens. Um desses recursos é o acesso a números aleatórios. Um algoritmo probabilístico utiliza o resultado de um processo aleatório. Que acrescentos são necessários fazer ao modelo BURM para podermos estudar este tipo de algoritmos e classes de complexidade? 7. No contexto do Teorema de Cook, apresente as fórmulas conjuntivas que descrevem o transição das instruções BURM. 8. Mostre que a linguagem COBV é NP-completa. Page 6