1. Funções Computáveis



Documentos relacionados
1 Máquina URM, comandos e programas URM

Teoria dos Números. A Teoria dos Números é a área da matemática que lida com os números inteiros, isto é, com o conjunto

Computabilidade 2012/2013. Sabine Broda Departamento de Ciência de Computadores Faculdade de Ciências da Universidade do Porto

CAP. I ERROS EM CÁLCULO NUMÉRICO

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES

Estruturas de Controle A Tomada de Decisões

Prova de Aferição de Matemática

A lógica de programação ajuda a facilitar o desenvolvimento dos futuros programas que você desenvolverá.

ULA Sinais de Controle enviados pela UC

AMBIENTE PARA AUXILIAR O DESENVOLVIMENTO DE PROGRAMAS MONOLÍTICOS

Problemas insolúveis. Um exemplo simples e concreto

Respostas de MAIO. A sequência é formada elevando-se ao quadrado os números 2,3,4... e somandolhes 2 em cada caso.

Bases Matemáticas. Aula 2 Métodos de Demonstração. Rodrigo Hausen. v /15

COMPUTADOR SIMPLIFICADO E COMPUTADOR DIGITAL. Algoritmos e Programação APG0001

ALGORITMOS PARTE 01. Fabricio de Sousa Pinto

1. NÍVEL CONVENCIONAL DE MÁQUINA

Exemplo de Subtração Binária

Curso de C. Introdução by Arnaldo V. Moura e Daniel F. Ferber

1.1. Organização de um Sistema Computacional

Resolução de problemas e desenvolvimento de algoritmos

Autómatos Finitos Determinísticos

Organização e Arquitetura de Computadores I

Introdução à Programação de Computadores

Curso Técnico em Redes

Sumário. INF01040 Introdução à Programação. Elaboração de um Programa. Regras para construção de um algoritmo

Aplicações de Combinatória e Geometria na Teoria dos Números

INTRODUÇÃO ÀS LINGUAGENS DE PROGRAMAÇÃO

MA14 - Aritmética Unidade 4. Representação dos Números Inteiros (Sistemas de Numeração)

Programação Estruturada

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES

O processador é composto por: Unidade de controlo - Interpreta as instruções armazenadas; - Dá comandos a todos os elementos do sistema.

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br

Fração como porcentagem. Sexto Ano do Ensino Fundamental. Autor: Prof. Francisco Bruno Holanda Revisor: Prof. Antonio Caminha M.

Programação de Computadores I Fluxogramas PROFESSORA CINTIA CAETANO

ARQUITETURA DE COMPUTADORES

3. Arquitetura Básica do Computador

¹CPTL/UFMS, Três Lagoas, MS,Brasil, ²CPTL/UFMS, Três Lagoas, MS, Brasil.

Sistema de Numeração e Aritmética Básica

Introdução à Lógica de Programação

ARQUITETURA DE COMPUTADORES - CONCEITUAL

Cap.2.5: Design de Algoritmos e Programação Estruturada. Algoritmos, fluxogramas e pseudo-código

BARRAMENTO DO SISTEMA

INE Fundamentos de Matemática Discreta para a Computação

Sistemas de Numerações.

Apostila de Fundamentos de Programação I. Prof.: André Luiz Montevecchi

ICC Introdução para JavaScript

Introdução a Algoritmos Parte 04

Processamento da Informação Teoria. Algoritmos e Tipos de dados

Tópico 2. Conversão de Unidades e Notação Científica

Unidade VI. Validação e Verificação de Software Teste de Software. Conteúdo. Técnicas de Teste. Estratégias de Teste

TIC Unidade 2 Base de Dados. Informação é todo o conjunto de dados devidamente ordenados e organizados de forma a terem significado.

Figura 1 - O computador

Princípios de funcionamento dos computadores

3 Sistemas de Numeração:

Universidade Federal de Alfenas

Prof. Dr. Abel Gomes Cap.4: Design de Algoritmos e Programação Estruturada. Algoritmos, fluxogramas e pseudo-código

Metodos de Programação

Capítulo 3. Avaliação de Desempenho. 3.1 Definição de Desempenho

Universidade Federal do ABC. Sinais Aleatórios. Prof. Marcio Eisencraft

CPU Unidade Central de Processamento. História e progresso

Introdução. INF1005 Programação I 33K Prof. Gustavo Moreira gmoreira@inf.puc-rio.br

Algoritmos e Programação I

EQUAÇÕES E INEQUAÇÕES DE 1º GRAU

Aluísio Eustáquio da Silva

Cálculo Numérico Aula 1: Computação numérica. Tipos de Erros. Aritmética de ponto flutuante

PROGRAMADOR JAVA. Aula 0 20 semanas. Instrutor : Léo Billi leo.billi@gmail.com

Representação de Dados

Atividade 11. Caça ao Tesouro Autômatos de Estados Finitos

2. ALGORITMOS. Unesp Campus de Guaratinguetá. Curso de Programação Computadores Prof. Aníbal Tavares Profa. Cassilda Ribeiro

COLÉGIO MILITAR DE BELO HORIZONTE CONCURSO DE ADMISSÃO 2006 / 2007 PROVA DE MATEMÁTICA 5ª SÉRIE DO ENSINO FUNDAMENTAL

Sumário. Arquitetura do Universo

Arquitetura de Computadores. Tipos de Instruções

I. MATEMÁTICA FINANCEIRA - ANDRÉ ARRUDA TAXAS DE JUROS. Taxas Proporcionais

2aula TEORIA DE ERROS I: ALGARISMOS SIGNIFICATIVOS, ARREDONDAMENTOS E INCERTEZAS. 2.1 Algarismos Corretos e Avaliados

2. Representação Numérica

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008

LÓGICA DE PROGRAMAÇÃO

Algoritmos não se aprendem: Copiando algoritmos Estudando algoritmos Algoritmos só se aprendem: Construindo algoritmos Testando algoritmos

Programação para Computação

Curso: Técnico de Informática Disciplina: Redes de Computadores. 1- Apresentação Binária

PROGRAMAÇÃO ESTRUTURADA. CC 2º Período

Plano Curricular de Matemática 3.º Ano - Ano Letivo 2015/2016

Aritmética Binária e. Bernardo Nunes Gonçalves

CP C U P U - Un U i n da d d a e d e Ce C n e t n ral a de d e Pr P oc o es e sam a e m n e t n o o Pr P oc o es e sad a o d r o Aula 03

Matéria: Matemática Assunto: Máximo Divisor Comum Prof. Dudan

Tutorial de Matlab Francesco Franco

Algoritmos I Aula 13 Java: Tipos básicos, variáveis, atribuições e expressões

Estruturas de Repetição Parte II PARA-ATÉ

Erros. Número Aproximado. Erros Absolutos erelativos. Erro Absoluto

&XUVRGH,QWURGXomRDR (GLWRUGH3ODQLOKDV([FHO

Arquitetura de Rede de Computadores

Introdução. A Informação e sua Representação (Parte III) Universidade Federal de Campina Grande Departamento de Sistemas e Computação

Lógica. Everson Santos Araujo

37ª OLIMPÍADA BRASILEIRA DE MATEMÁTICA PRIMEIRA FASE NÍVEL 1 (6º e 7º anos do Ensino Fundamental) GABARITO

Orientação a Objetos

O modelo do computador

Programação de Computadores I Pseudocódigo PROFESSORA CINTIA CAETANO

5 Equacionando os problemas

Cálculo das Probabilidades e Estatística I

1. Introdução 2. Representação de números 2.1. Conversão Numérica 2.2. Aritmética de ponto flutuante 3. Erros 3.1 Erros Absolutos e Relativos

Transcrição:

1. Funções Computáveis 1.1 Algoritmos ou Procedimentos Efectivos 1.2 A máquina URM - Unlimited Register Machine 1.3 Funções computáveis por URM 1.4 Predicados decidíveis e problemas 1.5 Computabilidade noutros domínios Teresa Galvão LEIC - Teoria da Computação I 1.1

1.1 Algoritmos ou Procedimentos Efectivos Quando queremos multiplicar 12 x 12 podemos desenhar no chão um quadrado de 12 por 12 e contar os pequeno quadrados dentro dele. Ou então: 12 12 24 12 144 E se pretendermos multiplicar 987654321 x 123456789? Em primeiro lugar, é virtualmente impossível construir o rectângulo apropriado. Mas mesmo que fosse construído, exércitos de pessoas demorariam séculos a contar os pequenos quadrados e, no fim, quem iria acreditar no resultado? Teresa Galvão LEIC - Teoria da Computação I 1.2

1.1 Algoritmos ou Procedimentos Efectivos (2) O processo simbólico de manipulação de dígitos de acordo com certas regras simples é baseado em propriedades da adição e da multiplicação que se verificam para todos os números. Estes métodos são designados por algoritmos ou procedimentos efectivos. Em geral, um algoritmo é uma regra mecânica ou um procedimento automático para executar alguma operação matemática. Quando um algoritmo é usado para calcular o valor de alguma funç numérica, diz-se que essa função é computável. Teresa Galvão LEIC - Teoria da Computação I 1.3

1.1 Algoritmos ou Procedimentos Efectivo (3) Exemplos: Somar dois números Decidir se um número é primo Considere-se agora a função: g( n) = 1 0, se existir uma sequência de exactamente n 7 s seguidos na expansão decimal de π, senão Do ponto de vista matemático, esta função é aceitável. Mas será computável? Teresa Galvão LEIC - Teoria da Computação I 1.4

A demonstração de Euclides Existem infinitos número primos Esta demonstração mostra que qualquer que seja o número escolhido, existe sempre um número primo maior do que ele. Escolhemos um número: N. Calculemos N! N! é divisível por todos os números até N. Se adicionarmos 1 a N!, N! + 1 não é múltiplo de 2 ( se dividirmos por 2 o resto é 1) N! + 1 não é múltiplo de 3 ( se dividirmos por 3 o resto é 1) N! + 1 não é múltiplo de 4 ( se dividirmos por 4 o resto é 1) N! + 1 não é múltiplo de N ( se dividirmos por N o resto é 1) Por outras palavras, se N!+1 for divisível por algum número diferente de 1 e de si próprio, só o poderá ser por um número superior a N. Então ou el número primo, ou os seus divisores primos são superiores a N. De qualquer forma, tem que existir um número primo superior a N! Teresa Galvão LEIC - Teoria da Computação I 1.5

1.2 A máquina URM Idealização matemática de um computador Constituída por um número infinito de registos: R 1, R 2, R 3, cada um dos quais contendo um número natural R 1 R 2 R 3 R 4 R 5 R 6 R 7... r 1 r 2 r 3 r 4 r 5 r 6 r 7... Teresa Galvão LEIC - Teoria da Computação I 1.6

1.2 A máquina URM (2) O conteúdo dos registos pode ser alterado através de instruções. Uma sequência finita de instruções designa-se por programa. Instruções: Zero Z(n): para cada n: 0 R n atribui o valor 0 ao conteúdo do registo R n (r n := 0) Sucessor S(n): para cada n: r n +1 R n atribui o valor r n +1 ao conteúdo do registo R n (r n := r n +1) Tranferência T(m,n): para cada m, n: r m R n atribui o valor r m ao conteúdo do registo R n (r n := r m ) Salto J(m,n,q): para cada m,n,q: se r m = r n, executa a instrução I q Teresa Galvão LEIC - Teoria da Computação I 1.7

Exemplo I 1 J(1,2,6) I 2 S(2) I 3 S(3) I 4 J(1,2,6) I 5 J(1,1,2) I 6 T(3,1) R 1 R 2 R 3 R 4... 9 7 0 0... 9 7 0 0... 9 8 0 0... 9 8 1 0... Teresa Galvão LEIC - Teoria da Computação I 1.8

Programa URM P = I 1, I 2,, I s. Seja I k uma instrução de P. Define-se a instrução seguinte da forma: Se I k não é uma instrução de salto a instrução seguinte é I k+1 Se I k = J(m,n,q), a instrução seguinte é I q, se rm = rn I, senao O programa termina quando não existir instrução seguinte, i.e: (i) se k = s e I s é uma instrução aritmética, (ii) se I k = J(m,n,q), r m = r n e q > s, (iii) se I k = J(m,n,q), r m r n e k = s. k+ 1 A configuração final é a sequência r 1,r 2,r 3,, após a execução de P. Teresa Galvão LEIC - Teoria da Computação I 1.9

Exercício Execute o programa anterior para a configuração inicial: R 1 R 2 R 3 R 4... 8 4 2 0... E para a configuração inicial: R 1 R 2 R 3 R 4... 2 3 0 0... O que faz este programa? Teresa Galvão LEIC - Teoria da Computação I 1.10

Diagramas de Fluxo Não Início r 1 = r 2? Não r 2 = r 2 +1 r 3 = r 3 +1 r 1 = r 2? Sim r 3 R 1 Fim Sim Teresa Galvão LEIC - Teoria da Computação I 1.11

1.3 Funções computáveis em URM Seja a 1, a 2, a 3, uma sequência infinita em N e seja P um programa. (i) P(a 1,a 2,a 3, ) é a execução de P para a configuração inicial a 1,a 2,a 3, (ii) P(a 1,a 2,a 3, ) significa que a computação P(a 1,a 2,a 3, ) pára (converge) (iii) P(a 1,a 2,a 3, ) significa que a computação P(a 1,a 2,a 3, ) nunca pára (diverge) Considerando que todos excepto um número finito dos a i serão nulos, usaremos a seguinte notação: P(a 1,a 2,,a n ). Seja f uma função de N n em N. Calcular o valor de f (a 1,a 2,,a n ) pode ser interpretado como a execução do programa P com a configuração inicial a 1,a 2,,a n,0,0,, ou seja, P(a 1,a 2,,a n ). O valor da função será o número r 1 contido no registo R 1. Teresa Galvão LEIC - Teoria da Computação I 1.12

1.3 Funções computáveis em URM Seja f uma função parcial de N n em N. Definição Seja P um programa e a 1,a 2,,a n, b N. (i) A computação P(a 1,a 2,,a n ) converge para b se P(a 1,a 2,,a n ) e, na configuração final, b está em R 1. (ii) P URM-computa f se, para qualquer a 1,a 2,,a n, b, P(a 1,a 2,,a n ) (a 1,a 2,,a n ) Dom (f) e f (a 1,a 2,,a n ) = b Em particular P (a 1,a 2,,a n ) se e só se (a 1,a 2,,a n ) Dom (f). b se e só se Definição A função f é computável por URM se existe um programa P que computa f. A classe das funções computáveis por designada por C. Teresa Galvão LEIC - Teoria da Computação I 1.13

1.3 Funções computáveis em URM Dado um qualquer programa P e uma qualquer configuração inicial a 1,a 2,,a n,0,0,, existe uma única função n-ária que P computa, designada ( n) por f P : f ( n ) P ( a 1,a 2, K,a n ) = o único b tal indefinida que P( a 1,a 2, K,a n ) b se se P( a 1 P( a 1,a,a 2 2, K,a, K,a n n ) ) Teresa Galvão LEIC - Teoria da Computação I 1.14

Exercício Mostre que, para cada instrução de transferência T(m,n), existe um programa sem instruções de transferência que tem exactamente o mesmo efeito que T(m,n). Ou seja, as instruções de transferência são redundantes, mas convenientes. Início I 1 Z(n) I 2 J(m,n,5) I 3 S(n) I 4 J(1,1,2) r n = 0 r m = r n? Sim Fim Não r n = r n + 1 Teresa Galvão LEIC - Teoria da Computação I 1.15

Exercícios Mostre que as seguintes funções são computáveis, apresentando programas URM que as calculem: x & 1 = x 1 se x > 0 0 se x = 0 f ( x) = 1 x 2 indefinida se x par se x impar Teresa Galvão LEIC - Teoria da Computação I 1.16

x & 1 = I 1 J(1,4,9) I 2 S(3) I 3 J(1,3,7) I 4 S(2) I 5 S(3) I 6 J(1,1,3) I 7 T(2,1) Não r 2 = r 2 +1 r 3 = r 3 +1 x 1 se x > 0 0 se x = 0 Início r 1 = 0? Sim Não r 3 = r 3 +1 r 1 = r 3? Sim r 2 R 1 Fim Teresa Galvão LEIC - Teoria da Computação I 1.17

f ( x ) = 1 x se x par 2 indefinida se x impar Início r 1 = r 2? Sim r 3 R 1 Não r 3 = r 3 + 1 Fim r 2 = r 2 + 2 I 1 J(1,4,6) I 2 S(3) I 3 S(2) I 4 S(2) I 5 J(1,1,1) I 6 T(3,1) Teresa Galvão LEIC - Teoria da Computação I 1.18

1.4 Predicados e problemas decidíveis Dados dois números x e y, queremos saber se verificam a propriedade x é múltiplo de y f ( x, y ) = 1 0 se se x é multiplo de y x não é múltiplo de y O predicado (propriedade) x é múltiplo de y é efectivamente decidível ou decidível se a função f é computável. Teresa Galvão LEIC - Teoria da Computação I 1.19

1.4 Predicados e problemas decidíveis Seja M (x) = M (x 1,x 2,,x n ) um predicado n-ário de números naturais. M( x ) : N B n B = { nao, sim} ~ Defina-se função característica: 1 se M( x) se verifica c M ( x ) = 0 se M( x) não se verifica n { } c M ( x ) : N 0,1 sim 1 não 0 Definição O predicado M(x) é decidível se a função M(x) é indecidível se M(x) não é decidível. c M ( x ) é computável; Teresa Galvão LEIC - Teoria da Computação I 1.20

Exemplos Os seguintes predicados são decidíveis: " x y" cm ( x, y) = 0 se x = y 1 se x y I 1 Z(3) I 2 J(1,2,4) I 3 S(3) I 4 T(3,1) " x = 0" c M ( x ) = 1 se x = 0 0 se x 0 I 1 J(1,2,3) I 2 J(1,1,4) I 3 S(2) I 4 T(2,1) Teresa Galvão LEIC - Teoria da Computação I 1.21

O gira-discos perfeito A tartaruga tinha um amigo, o caranguejo, que comprou um gira-discos convencido que tinha a capacidade de reproduzir qualquer som - era o gira-discos perfeito. A tartaruga tentou-o convencer que isso não podia ser, mas não o conseguiu. Um dia levou-lhe um disco chamado Não posso ser tocado pelo gira-discos I. Quando o caranguejo o tentou ouvir, após algumas notas o gira-discos começou a vibrar e, depois de um altíssimo POP, desfez-se em milhares de pedaços. O caranguejo, muito irritado, foi queixar-se ao vendedor do gira-discos que lhe forneceu outro mais potente e mais caro. Quando contou a novidade à tartaruga, esta escreveu ao fornecedor dos gira-discos e obteve toda a informação sobre a forma como eles eram construídos. Maldosamente, ela fabricou um novo disco chamado Não posso ser tocado pelo gira-discos II. Mais uma vez, o gira-discos perfeito se desfez em mil pedaços. Teresa Galvão LEIC - Teoria da Computação I 1.22

O gira- discos perfeito (cont.) O caranguejo, desesperado, pensou em obter um gira-discos de baixa fidelidade, que não seria capaz de captar nem de reproduzir os sons que o iriam destruir, mas esse gira-discos estaria longe de ser perfeito. Mas então, para qualquer gira-discos X a tartaruga fabricaria um disco chamado Não posso ser tocado pelo gira-discos X. Mas os sons encontram-se gravados no disco! Os sons existem (são verdadeiros), apesar de não poderem ser reproduzidos (provados) em nenhum gira-discos. Teresa Galvão LEIC - Teoria da Computação I 1.23

Um isomorfismo Gira-discos Gira-discos de baixa fidelidade Gira-discos de alta fidelidade Gira-discos perfeito Modelo do gira-discos Disco Disco tocável Disco intocável Som Som reproduzível Som irreproduzível Sistema axiomática de TN Sistema axiomático fraco Sistema axiomático forte Sistema axiomático completo axiomas e regras do sistema Expressão do sistema Teorema do sistema Não-teorema do sistema Afirmação verdadeira de TN Teorema interpretado Afirmação verdadeira que não é um teorema Teresa Galvão LEIC - Teoria da Computação I 1.24

1.5 Computabilidade em outros Domínios O modelo URM é definido apenas para números naturais. As noções de computabilidade e decidibilidade podem ser estendidas a outros domínios através de uma codificação: Uma codificação de um domínio D de objectos é uma função explícita e injectiva: α : D N Diz-se que o objecto está codificado pelo número natural. Seja f : D D. f d é codificada pela função D α (d ) f : N N f = α o f o α 1 f é computável se f é uma função computável de números naturais Teresa Galvão LEIC - Teoria da Computação I 1.25

Considere-se o domínio α(n) = 2n -2n-1 se n 0 se n< Seja f x x em. ( ) = 1 /Z f : N N 0 /Z é dada por Exemplo. Uma codificação explícita é dada por: 1 á - f (m) = m 2 m+ 1 2 1 (x) = x 2 x + 2 se se se m par se m ímpar x = 0 x > 0 e x par se x ímpar f é computável por URM. Então x-1 é computável em. /Z Teresa Galvão LEIC - Teoria da Computação I 1.26