Universidade da Madeira Ano lectivo 2006/07-2º semestre Responsável: Prof. José Carmo

Documentos relacionados
Teoria da Computação I

printing problem: dado um programa e um valor arbitrários, o problema de determinar se sim ou não se vai obter como output do programa esse valor;

Aulas Práticas. 1ª Aula Prática Perguntas sobre a Implementação de Funções Simples na Máquina URM...1

Teoria da Computação I

6. Decidibilidade, indecidibilidade e decidibilidade parcial

Exercícios de Teoria da Computação Computabilidade

2. Geração de Funções Computáveis

Exercícios de Teoria da Computação Computabilidade

1 Postulado de Church-Turing 1

Os Limites da Computabilidade. Dois Conceitos Distintos. Tese de Church Turing. O Que É Computável? O Que É Possível De Ser Computado?

Teoria da Computação 31 de Maio de 2017 Teste 2A Duração: 1h30

Teoria da Computação

COMPUTABILIDADE 2. Indecidibilidade

Teoria da Computação

Teoria da Computação. Exercícios. 1 Máquinas de Registos Ilimitados 2013/2014

Noção de Computabilidade

Teoria da Computação 27 de Maio de 2015 Teste 2A Duração: 1h30

Capítulo 9: Linguagens sensíveis ao contexto e autômatos linearmente limitados.

Problemas Computáveis

Exercícios de Teoria da Computação Computabilidade

Capítulo 2: Procedimentos e algoritmos

COMPUTABILIDADE 3. Funções Parciais Recursivas

Máquinas Universais. Departamento de Ciência de Computadores da FCUP MC Aula 23 1

Teoria da Computação Exame 1 30 de Junho de 2003

Linguagem Universal. assim como a entrada ser processada por a. (b) A segunda fita de representa a fita de

Draft-v0.1. Máquinas de Turing Máquinas de Turing

Capítulo 8: O problema da parada. Decidibilidade e computabilidade. José Lucas Rangel Introdução.

I.2 Introdução a Teoria da Computação

Computabilidade. da Computação que estudam, formalmente, as capacidades e as limitações da computação.

Juliana Kaizer Vizzotto. Universidade Federal de Santa Maria. Disciplina de Teoria da Computação

Departamento de Matemática e Engenharias. Emulação da Máquina URM no Mathematica

Computação efectiva. Que linguagens podem ser reconhecidas por algum tipo de autómato?

INE5317 Linguagens Formais e Compiladores AULA 3: Introdução a Teoria da Computação

Notas sobre os anéis Z m

Apostila 06. Objetivos: Estudar a Computabilidade Estudar a Decidibilidade Estudar a Redutibilidade

Teresa Galvão LEIC - Teoria da Computação I 3.1

Outras abordagens à computabilidade. Nota

Aula 10: Decidibilidade

Funções Recursivas. Prof.: Edson Holanda Teoria da computação - Diverio e Menezes

Máquinas de Turing: uma introdução

ax + by 347 = 0 k = text UNIDADE CURRICULAR: Matemática Finita CÓDIGO: DOCENTES: Gilda Ferreira e Ana Nunes

Aula 10: Decidibilidade

Turing e Complexidade

Linguaguens recursivamente enumeráveis

Projecto Delfos: Escola de Matemática Para Jovens 1 FICHA DE TRABALHO

Máquina de Turing. Controle finito

Máquina de Turing Linguagens Sensíveis ao Contexto e Enumeráveis Recursivamente

Linguagens recursivamente enumeráveis

Procedimentos e Algorítmos Programas e Linguagens de Programação Tese de Church-Turing Formas de Representação de Linguagens

Máquinas de Turing 3

Instituto Superior Técnico Teoria da Computação - LEIC 2013/2014 Aula prática 1

0.1 Seja S o subconjunto de P(N) definido indutivamente pelas 3 regras apresentadas de seguida.

Lógica Computacional

Redutibilidade. Mário S. Alvim Fundamentos de Teoria da Computação (FTC) DCC-UFMG (2018/02)

Marcos Castilho. DInf/UFPR. 16 de maio de 2019

U.C Matemática Finita. 6 de junho de Questões de escolha múltipla

Análise de algoritmos. Parte I

UNIVERSIDADE FEDERAL DO ABC. 1 Existência e unicidade de zeros; Métodos da bissecção e falsa posição

Teoria da Computação. Unidade 3 Máquinas Universais. Referência Teoria da Computação (Divério, 2000)

Computação e Programação Exame Época de recurso

Ficha de trabalho Decomposição e resolução de equações e inequações polinomiais

Computabilidade para Complexidade...

Máquinas de Turing para construção: Foram encontrados dois modelos que se destacaram em nossas pesquisas.

Curso de Engenharia de Computação - UTFPR Teoria da Computação - Prof. Celso Kaestner Lista de exercícios

Introdução à Teoria de Grupos Grupos cíclicos Grupos de permutações Isomorfismos

Aula 05 - Limite de uma Função - Parte I Data: 30/03/2015

Exercícios Data Modeling

Modelos de Computação Folha de trabalho n. 10

Teoria da Computação. Computabilidade e complexidade computacional

S. C. Coutinho. Máquina de Turing Universal p. 1/22

Linguagens Formais e Autômatos Decidibilidade

Limites da Computação Algorítmica: Problemas Indecidíveis

Definição 3.1: Seja x um número real. O módulo de x, denotado por x, é definido como: { x se x 0 x se x < 0

Sobre Desenvolvimentos em Séries de Potências, Séries de Taylor e Fórmula de Taylor

Exercícios de MATEMÁTICA COMPUTACIONAL. 1 0 Semestre de 2009/2010 Resolução Numérica de Equações Não-Lineares

SCC Capítulo 4 Linguagens Recursivamente Enumeráveis e Máquinas de Turing

Estruturação de Procedimentos

Capítulo 5. séries de potências

Exercícios de ANÁLISE E SIMULAÇÃO NUMÉRICA

Matemática Computacional

Teoria da Computação. Computabilidade

Capítulo A máquina de Turing (TM) padrão Combinações de máquinas de Turing A Tese de Turing. ADC/TC/Cap.9/ /LEI/DEIFCTUC 375

11º ano - Indução matemática

Instruções de repetição

Linguagens Formais e Autômatos P. Blauth Menezes

Linguaguens recursivamente enumeráveis e recursivas

Máquinas Universais. Máquina de Turing. Celso Olivete Júnior.

LÓGICOS E ALGÉBRICOS DA PROGRAMAÇÃO Licenciaturas em Engenharia Informática, Ensino de Informática e Matemática 2º Semestre 2005/2006

Conjuntos Enumeráveis e Não-Enumeráveis

Fundamentos de Programação

Resolução Exe 2.12 Monolítico Recursivo

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo

Linguagens Formais e Autômatos (LFA)

Máquinas de Turing - Computabilidade

2007/2008 Resolução do 1 o exame

Sucessões. , ou, apenas, u n. ,u n n. Casos Particulares: 1. Progressão aritmética de razão r e primeiro termo a: o seu termo geral é u n a n1r.

1. O que podemos dizer sobre a imagem da função. f : Z Z, f(x) = x 2 + x + 1?

Teoria dos Conjuntos. (Aula 6) Ruy de Queiroz. O Teorema da. (Aula 6) Ruy J. G. B. de Queiroz. Centro de Informática, UFPE

CDI-II. Resumo das Aulas Teóricas (Semana 1) 2 Norma. Distância. Bola. R n = R R R

Transcrição:

TEORIA DA COMPUTABILIDADE E COMPLEXIDADE Licenciatura em Engenharia Informática (2ª ano) Licenciatura em Ensino da Informática (2ª ano) Licenciatura em Matemática (2ª ano) Universidade da Madeira Ano lectivo 2006/07-2º semestre Responsável: Prof. José Carmo Exame Frequência final (2/4/07) (Duração 3h + 30m de tolerância; Cotação: 20 valores) I (3 valores) Especifique uma máquina de Turing que calcule a função f : Ν 0 Ν 0 assim definida: f(n) = 0 se n é par; f(n) = n se n é ímpar. Pretende-se especificar uma máquina de Turing que calcule a função: 0, se né par f (n) = n, se né ímpar Configuração inicial da fita para o cálculo de f(n): n+ uns consecutivos e tudo o resto em branco... β... β... Estado inicial: q O resultado da função calculada é dado pelo número de uns na fita quando a computação pára (sendo indefinido se esta não parar). Ideia (Há sempre outras soluções):. Começar por determinar se o número representado é par, guardando em cada momento (no estado) a informação sobre se o número lido até ao momento é par; 2. Se o número representado na fita for par, apagar todos os uns (para o que são precisos dois estados); 3. Se o número representado na fita for ímpar, apagar um (pois há na fita n+ uns). Significado dos estados considerados (Há outras alternativas): q : estado inicial (ainda não foi processado qualquer ) q 2 : o número (já) lido até ao momento é par (sem contar com o símbolo de leitura) q 3 : o número (já) lido até ao momento é ímpar q 4 : apagar o símbolo em leitura se este for (e mudar de estado para avançar uma casa para a esquerda) q 5 : avançar uma casa para a esquerda (para continuar a apagar uns) q 6 : apagar um e um só q 7 : parar (desnecessário)

Especificação da máquina de Turing (onde _ significa casa em branco): (q,, R, q 2 ) (q 2,, R, q 3 ) (q 2, β, L, q 4 ) (q 3,, R, q 2 ) (q 3, β, L, q 6 ) (q 4,, β, q 5 ) (q 5, β, L, q 4 ) (q 4, β, β, q 7 ) (q 6,, β, q 7 ) OU (q,, R, q 2 ) (q 2,, R, q 3 ) (q 2, β, L, q 4 ) (q 3,, R, q 2 ) (q 3, β, L, q 6 ) (q 4,, β, q 5 ) (q 5, β, L, q 4 ) (q 6,, β, q 6 ) II (6.5 valores) ) Construa um programa URM (sem instruções de chamadas de outros programas) que calcule a função característica parcial do predicado x<y. Pretende-se construir um programa URM que calcule a seguinte função:, se x < y f ( x, y) =, se x y (indefinida) Configuração Inicial: x y 0 2 Por exemplo, o programa URM a seguir calcula f. (a) I : S() (a) I 2 : J(, 2, 4) I 3 : J(,, ) I 4 : Z() I 5 : S() 2) O programa Mathematica qpq, a seguir, testa se um número natural x é um quadrado perfeito, começando por calcular a raiz quadrada inteira de x (onde a raiz quadrada inteira de um natural x é o maior número natural cujo quadrado é x), e depois testando se o seu quadrado é igual a x. qpq = Function[x, Module[ {i}, i = 0 ; While[ (i+)^2 <= x, i = i+ ] ; If[ i^2 ==x,, 0] ]] ; 2

Sabendo que C é um programa URM que calcula a função característica do predicado, e que P é um programa URM que calcula a função produto (de dois naturais), indique como obter um programa URM generalizado (podendo envolver sub-programas - instruções de chamada de outros programas) que que emule o programa qpq. (Sugestão: aconselha-se a que mantenham/guardem os valores de i, de i+ e de (i+)^2 em três células de memória distintas.) Seja m = máximo{2, ρ(c), ρ(p)} número máximo de argumentos da função a calcular e das funções relevantes calculadas pelos programas C e P Configuração Inicial: x 0 Reservaremos as células: R m+ para guardar o valor inicial de x R m+2 para guardar o valor de i R m+3 para guardar o valor de i+ R m+4 para guardar o valor de (i+) 2 e usaremos a célula R m+5, guardando o valor zero, para os testes. Configuração típica :?...? x i i+ m m+ m+2 m+3 m+4 m+5 O seguinte programa URM generalizado emula o programa Mathematica em causa: I : T(, m+) (podíamos fazer aqui Z(m+2), mas não é necessário) I 2 : S(m+3) I 3 : call P[m+3, m+3 m+4] I 4 : call C[m+4, m+ ] (a) I 5 : J(, m+5, 8) I 6 : S(m+2) OU I 7 : J(,, 2) (a) I 8 : call P[m+2, m+2 ] (b) I 9 : J(, m+, 2 ) I 0 : Z() parar I : J(,, 4 ) (b) I 2 : Z() I 3 : S() (i+) 2 0... S(m+2) S(m+3) call P[m+3, m+3 m+4] J(,, 4) 3

3) Considere o programa URM P = ( J(,2,3), J(,,4), S(2), T(2,) ). a) Diga a que é igual ρ(p). ρ(p) = 2 (pois ρ(p) = máximo{,2,,,2,2,}) b) Supondo que a é o código de P (isto é, a = γ(p)), diga a que é igual: φa (), Wa () e Ea (). () Sendo a = γ (P), então φ a é a função unária calculada pelo programa Configuração Inicial: P = ( J(,2,3), J(,,4), S(2), T(2,) ) x 0 0 2 Tem-se: φ (), se x = 0 a (x) = 0, se x 0 Wa () = dom( φ a () ) = IN0 Ea () = cod( φ a () ) = {0,} III (5 valores) Neste grupo pode usar (se tal lhe for útil), sem demonstrar, o facto de serem recursivas primitivas as funções constantes, de qualquer aridade, bem como as seguintes funções: 2 soma: Ν 0 Ν 0, com soma(x,y) = x+y prod: Ν 2 0 Ν 0, com prod(x,y) = x*y ant: Ν 0 Ν 0, com ant(n)=if[n>0, n-, 0] dif: Ν 2 0 Ν 0, com dif(x,y) = If[x y, x-y, 0] = If[x > y, x-y, 0] sg: Ν 0 Ν 0, com sg(n) = If[n,, 0] (isto é, sg(0)=0, e sg(n)=, se n ) sg: Ν 0 Ν 0, com sg(n) = If[n, 0, ] (isto é, sg(0)=, e sg(n)=0, se n ) ) Mostre que a função f (x, y) = x y! é recursiva primitiva. A função factorial, que a seguir designaremos de fact, é recursiva primitiva, pois pode ser definida, por recursão, à custa de funções recursivas primitivas (mais precisamente, à custa da constante, e das funções sucessor e produto), como se segue: fact( 0 ) = fact( k+ ) = ( k+ ) * k! = prod( k+, fact(k) ) suc(k) 4

( Tecnicamente o factorial é definido recursivamente à custa da constante e da função g, como se segue: fact ( 0 ) = fact ( k+ ) = g ( k, fact(k) ) com g ( x, y ) = prod ( suc(x), y ) = prod ( suc(x), Id(y) ) sendo g recursiva primitiva, pois obtém-se por substituição à custa da função recursiva primitiva prod e das funções básicas suc e Id = U ) A função potência, a seguir designada por pot, é recursiva primitiva, pois pode ser definida, por recursão, à custa de funções recursivas primitivas (mais precisamente, à custa da função unária constantemente igual a e da função prod), como se segue: pot (x, 0) = x 0 = ( = (x) ) pot (x, k+) = x k+ = x k x = prod ( x, pot(x, k) ) Assim, a função f é recursiva primitiva, pois pode ser definida, por substituição, à custa das funções recursivas primitivas pot e fact, como se segue: f (x, y) = pot ( x, fact( y ) ) ( = Id(x) ou = U 2 ( x, ) ) y 2) Mostre que a função característica do predicado x>y é recursiva primitiva. A função característica de x > y é dada por:, se x > y, se x y > 0 f ( x, y) = = 0, se x y 0, se x y 0 Assim, f pode ser definida como se segue: f ( x, y ) = sg ( dif( x, y) ) Logo f define-se, por substituição, à custa das funções sg e dif. Como estas funções são recursivas primitivas, f também o é. 3) Justifique a seguinte afirmação (sem recorrer ao postulado de Church): a função f : Ν 0 Ν 0 assim definida: f(x) = menor inteiro cujo factorial é superior a x, é computável. Considere-se o predicado M ( n, x ) = n! > x 5

A função característica de M:, se n!> x C M (n, x) = 0, se n! x pode ser definida, por substituição, à custa de C > e de fact, como se segue: C M ( n, x ) = C > ( n!, x ) = C > ( fact(n), x ) Assim, como C > e fact são recursivas primitivas, C M também o é e, portanto, C M é computável. Logo M é decidível. Mas então a função definida por minimização (ilimitada) f (x) = µ n (n!> x) é computável (de acordo com um resultado provado nas teóricas) IV (5.5 valores) ) Defina a função universal para funções unárias computáveis e, recorrendo ao postulado de Church, esboce a demonstração de que ela é computável. A função universal para funções unárias computáveis é a função (binária) que se denota por ψ U () ou, simplesmente, por ψu, e se define como se segue: ψ U (x, y) = φ x (y) Usando o Postulado/Tese de Church, podemos concluir que esta função é computável, uma vez que é intuitivamente imediato que o algoritmo a seguir permite calcular ψ U (x, y) : ) Descodificar x, obtendo-se o programa que x representa (codifica): Px = γ (x) (Recorde-se que γ é efectivamente computável) 2) Emular (simular) a execução de P x, a partir da configuração inicial y 0 0 0 2 3 Passo a passo, seguindo a evolução do estado da máquina URM, até ao fim da execução de P x (se esta ocorrer). Se a computação P x (y) terminar (i.e. se a emulação de P x, a partir daquela configuração inicial, terminar), o resultado de ψ U (x, y) será o valor guardado no registo R, quando se dá a terminação de P x (y). Se a computação P x (y) não terminar (divergir), então a função φx não está definida no ponto y, pelo que ψ U (x, y) não está definido. 6

2) Recorrendo ao método da diagonal, demonstre que existe uma função unária total que não é computável. Seja f : IN0 IN a função assim definida: 0 f (x) = φ x (x) +, se x W x (i.e.seφ x (x) está definida) x IN 0 0,se x W x É imediato que f(x) está sempre definida, pelo que f é uma função total (uma aplicação). Por outro lado, é igualmente imediato que f (x) φ x (x) x ( IN 0 ) Assim: f φ x x E como φ 0,φ,φ 2, constitui uma enumeração de todas as funções unárias computáveis, concluímos que f não pode ser computável. (c.q.d.) 3) Sem recorrer ao postulado de Church, mostre que a função característica parcial do predicado Px(y) é computável. Queremos mostrar que é computável a seguinte função: f (x, y) =, se P x (y) (i.e.seφ x (y) está definida), caso contrário Ora, f pode ser definido, por substituição, à custa da função unária constantemente igual a e da função universal para as funções unárias computáveis, como se segue: = φ x (y) f (x, y) = (ψ U (x, y)) Assim, como a função unária constantemente igual a e a função ψ U são computáveis, a função f também é computável (pois obtém-se, por substituição, à custa dessas funções). (c.q.d.) 4) Recorrendo ao teorema de Rice, demonstre que o problema "φx é sobrejectiva" é indecidível. Seja β = {g C : gé sobrejectiva} (com C o conjunto das funções unárias computáveis). Tem-se: φ é sobrejectiva <=> φ x β x Assim, pelo Teorema de Rice, teremos provado que φ é sobrejectiva é indecidível, se provarmos que: 7 x

a) β b) β C (istoé, β C ) Ora, β pois (por exemplo) a função identidade Id( = U ) pertence a β. E β C pois (por exemplo) a função zero pertence a C β. (c.q.d.) 5) Demonstre que o problema "8 Ex" é indecidível, reduzindo o problema "x Wx" a este problema (recorrendo, para tal, à versão simples do teorema s-m-n). a) Comecemos por provar que: qualquer que seja a função k total e computável, se "8 E k(x) " for indecidível, então "8 E x " também o é. Dem: Suponha-se que "8 E x " é decidível e que k é total e computável. Então (a função característica de "8 E x ") C(x) =, se 8 Ε x 0, se 8 Ε x é computável. Mas então também é computável g(x) = C(k(x)) =, se 8 Ε k(x) 0, se 8 Εk(x) pois g obtém-se por substituição à custa de C e de k. Mas g é a função característica de 8 Ε k(x). Logo, o problema "8 E k(x) " será decidível (se "8 E x " o for). b) Pela versão simples do Teorema s-m-n, dada uma função f : IN 2 IN0, 0 computável, existe uma função (unária) k total e computável, tal que f (x, y) = φ k(x) (y) c) Assim, se conseguirmos definir f, computável, de modo a que (*) 8 Ε k(x) x W x = = cod(φ k(x) ) dom(φ x ) 8

Teremos mostrado que o problema "8 E k(x) " é indecidível, por redução do problema x W x (que é indecidível) a este problema (e, pela alínea a), podemos concluir que "8 E x " é indecidível, como pretendemos) d) Defina-se f como se segue: ( φ k(x) (y) = ) f (x, y) = 8,se x W x (i.e.seφ x (x) está definida), se x W x Verifica-se (*), pois: x W x y ( f (x, y) = 8) 8 cod(φ k(x) ) = φ k(x) (y) (Nota: para se ter isto bastava que y ( f (x, y) = 8 ) x W x y (φ k(x) (y) = ) 8 cod(φ k(x) ) e) Resta-nos provar que f é computável (para isso não podemos recorrer à computabilidade da definição por casos, pois o problema x W x é indecidível). Que f é computável sai de f poder ser definida por substituição à custa de funções computáveis (a função ψ U (x, y) e a função 8(x), isto é, a função unária constantemente igual a 8), como se segue f (x, y) = 8(ψ U (x, x)) =φ x (x) 9