1 Postulado de Church-Turing 1
|
|
|
- Branca Flor Arantes Faro
- 7 Há anos
- Visualizações:
Transcrição
1 1 Postulado de Church-Turing 1 Alguns modelos alternativos no estudo da computabilidade Turing: Máquina de Turing Gödel-Kleene: Funções recursivas Church: Cáluculo λ (funções definidas por termos λ) Post: Sistemas de derivação de Post Markov: Algoritmos de Markov Shepherdson-Sturgis: Máquina URM As abordagens anteriores são equivalentes, no sentido em que definem a mesma classe de funções. Postulado de Church-Turing 2 A classe intuitiva e informal das funções efectivamente computáveis coincide com a classe das funções computáveis pela máquina URM. Como se prova que a classe das funções computáveis pela máquina URM coincide com (i) a classe das funções computáveis pela máquina de Turing, (ii) a classe das funções (parciais) recursivas, (iii) a classe das funções computáveis pelos sistemas de Post, (iv) a classe das funções computáveis pelos algoritmos de Markov, (v) a classe das funções definidas no âmbito do cálculo-λ de Church, é obviamente uma consequência deste postulado que a classe das funções efectivamente computáveis coincide com as várias classes atrás mencionadas. As razões que motivam este postulado são as seguintes: Diversas propostas para a formulação precisa do conceito intuitivo de função efectivamente computável têm conduzido à mesma classe de funções. Todas as funções efectivamente computáveis conhecidas são computáveis pela máquina URM. Ainda não foi encontrada uma função intuitivamente computável que não seja computável pela máquina URM. 1 Estas notas são baseadas em Sintaxe e Semântica de Linguagens I, J-F Costa, DMIST, 2000 e Computability-an introduction to recursive function theory, N. Cutland, Cambridge University Press, em Computability-an introduction to recursive function theory, N. Cutland, Cambridge University Press, 1980, pag. 67 1
2 2 Máquina URM, comandos e programas URM Neste texto, IN representa o conjunto IN 0 \{0} e, para cada k IN, 1..k representa o conjunto {1, 2,..., k}. Definição: Máquina URM (Unlimited Register Machine) Uma máquina URM é constituída por uma sucessão de registos < R i > i IN. Cada registo pode conter um valor r IN 0. É usual usar a seguinte notação: para cada n IN, r n designa o número natural guardado no registo R n uma configuração da máquina é uma sucessão de naturais < r i > i IN É possível escrever programas para as máquinas URM. Estes são sequências finitas de comandos URM. Estes comandos permitem alterar o conteúdo dos registos da máquina. Definição: Programas URM Um programa URM é uma sequência finita < p i > i 1..k (com k IN) de comandos URM. Comandos URM Comandos zero: para cada n 1 Z(n) é o comando que regista 0 em R n e deixa inalterados os outros registos. Comandos sucessor: para cada n 1 S(n) é o comando incrementa de uma unidade o conteúdo de R n e deixa inalterados os outros registos. Comandos salto: para cada m 1, n 1, q 1 é o comando que J(m, n, q) compara r m com r n deixando inalterados todos registos se r m = r n a máquina passa a executar o q-ésimo comando do programa se existir e pára caso tal comando não exista se r m r n a máquina passa a executar o comando seguinte 2
3 Comandos transferência (ou cópia): para cada m 1, n 1 T (m, n) é o comando que coloca o valor r m no registo R n, deixando os outros inalterados 3. Definição: Espaço de trabalho de um programa Sendo P um programa URM, representa-se por ρ(p ) o maior n IN tal que o registo R n é referenciado no programa. Ao valor ρ(p ) chama-se espaço de trabalho de P. Exemplo: Seguem-se alguns exemplos de programas URM. Para facilitar a análise dos programas, é usual numerar os comandos de um programa embora tal não faça parte da definição. Faz-se referência informal à noção de execução de um programa a partir de uma configuração da máquina. Esta assunto será abordado com mais detalhe na próxima secção J(3, 2, 5) 2 S(1) 3 S(3) 4 J(1, 1, 1) O espaço de trabalho deste programa é 3. Observe-se que: se este programa for executado a partir de uma configuração em que o conteúdo do registo R 1 é um natural x, o conteúdo do registo R 2 é um natural y e o conteúdo do registo R 3 é 0, então a execução do programa termina sempre e quando termina o conteúdo do registo R 1 é x + y, o conteúdo do registo R 3 é y e o conteúdo dos outros registos não se alterou; se este programa for executado a partir de uma configuração em que o conteúdo dos registos R 2 e R 3 são iguais, a execução do programa termina sempre (só é executado o primeiro comando) e a configuração da máquina não é alterada; se este programa for executado a partir de uma configuração em que o conteúdo do registo R 2 é menor que o conteúdo do registo R 3, a execução do programa não termina. 3 Este comando não é necessariamente primitivo, pois pode ser substituído por < Z(n)J(m, n, 5)S(n)J(1, 1, 2) > 3
4 1 J(1, 4, 10) 2 S(3) 3 J(1, 3, 7) 4 S(2) 5 S(3) 6 J(1, 1, 3) 7 T (2, 1) O espaço de trabalho deste programa é 4. Observe-se que: se este programa for executado a partir de uma configuração em que o conteúdo do registo R 1 é um natural x e o conteúdo dos registos R 2, R 3 e R 4 são 0, então a execução do programa termina sempre e quando termina o conteúdo do registo R 1 é 0 se x = 0 e é x 1 se x 0, o conteúdo do registo R 2 é igual ao do registo R 1, o conteúdo do registo R 3 é 0 se x = 0 e é x se x 0, e o conteúdo dos outros registos não se alterou; se este programa for executado a partir de uma configuração em que o conteúdo dos registos R 1 e R 4 são iguais, a execução do programa termina sempre (só é executado o primeiro comando) e a configuração da máquina não é alterada; se este programa for executado a partir de uma configuração em que o conteúdo do registo R 2 é menor que o conteúdo do registo R 3, a execução do programa não termina. Observação: De um modo informal, pode dizer-se que existem duas formas de um programa P =< p i > i 1..k terminar a sua execução: (i) execução de um comando de salto J(m, n, q) com q > k, numa situação em que os conteúdos dos registos R n e R m são iguais; (ii) execução do último comando (p k ) no caso de este ser um comando zero, sucessor, tranferência ou ainda comando salto J(m, n, q) com q k numa situação em que os conteúdos dos registos R n e R m são diferentes. Este assunto será apresentado do modo mais preciso na secção seguinte. Definição: Programa URM normalizado O programa P =< p i > i 1..k diz-se normalizado sse, para cada i 1..k, se p i = J(m, n, q) então q k + 1. Proposição: Qualquer programa P =< p i > i 1..k pode ser transformado num programa normalizado P equivalente, no sentido em que, se P e P começarem a ser executados a partir de uma dada configuração (inicial) da máquina, então a execução de P termina sse a de P termina e quando terminam a sua execução, a configuração (final) da máquina é a mesma nos dois casos. 4
5 Prova: Basta substituir em P cada comando J(m, n, q) com q > k + 1 por J(m, n, k + 1). Exemplo: O programa apresentado em 1. normalizado. do Exemplo anterior é um programa O programa apresentado em 2. do Exemplo anterior não é um programa normalizado. Normalizando este programa, obtém-se o programa: 1 J(1, 4, 8) 2 S(3) 3 J(1, 3, 7) 4 S(2) 5 S(3) 6 J(1, 1, 3) 7 T (2, 1) Observação: Emulador URM e Fichas electrónicas Pode ser utilizada uma sintaxe diferente para os comandos URM acima mencionados. No âmbito do emulador da máquina URM disponibilizado através da página www desta disciplina, e também no âmbito do sistema de fichas electrónicas, a sintaxe dos comandos acima referidos é a seguinte: Comandos zero: ZERO[n] Comandos sucessor: SU CC[n] Comandos salto: JUMP [m, n, q] Comandos transferência ou cópia: COP Y [m, n] Ainda neste âmbito considera-se também o comando seguinte. Comando de paragem: HALT [] é o comando que faz terminar a execução do programa. Note-se que o comando HALT [] permite que para terminar a execução de um programa se possa deixar de utilizar comandos salto JUMP [m, n, q], com q maior que o número de comandos do programa. Assumindo que se trabalha apenas com programas normalizados, nestas situações basta introduzir, na posição q, o comando HALT []. É fácil perceber que para cada programa P escrito com recurso ao comando HALT [] existe um programa P equivalente (no sentido atrás referido) escrito sem recurso ao comando HALT [] e vice-versa. No âmbito do emulador URM referido, e também nas fichas electrónicas que os alunos devem realizar, existe ainda a possibilidade de utilizar oráculos 5
6 num programa. Os oráculos podem ser vistos como módulos que calculam determinadas funções. Através da página www da disiciplina pode encontrar-se a lista de oráculos disponíveis. Como exemplo refere-se aqui o caso do oráculo SUM[n, m, q]. Este oráculo, ao ser executado, coloca no registo R q o valor da soma dos conteúdos de R n e R m. Note-se que a execução deste oráculo só vai modificar (eventualmente) o conteúdo do registo R q. Por razões operacionais, os programas URM que podem ser executados no emulador da máquina URM, bem como os programas que os alunos têm submeter através do sistema de fichas electrónicas, devem obeceder à seguinte sintaxe: cada programa é uma lista 1 : cmd 1 ; 2 : cmd 2 ;... k : cmd k ; onde, para cada 1 j k, cmd j é ZERO[n], SUCC[n], COP Y [n], JUMP [m, n, q] com q k, HALT [] ou um dos oráculos disponíveis. Deste modo, neste âmbito, é obrigatória a numeração (sequencial) dos comandos, devendo existir : entre o número e o comando e ; após cada comando (incluindo o último). Note-se que como os comandos de salto permitidos são apenas do tipo JUMP [m, n, q] com q k, a terminação da execução através de comandos salto com q > k tal como anteriormente acontecia já não é aqui possível, pelo que, como se referiu acima, situações desse tipo têm resolvidas com recurso ao comando HALT []. Existe ainda um outro requisito que deve ser observado: a execução de um programa deve sempre terminar através da execução de um comando HALT []. Isto significa, em particular, que se anteriormente a execução de um programa terminava com a execução de um comando zero, sucessor, tranferência ou um comando salto J(m, n, q) com q k numa situação em que os conteúdos dos registos R n e R m eram diferentes, agora, para que a execução do programa possa terminar, há que acrescentar o comando HALT [] imeditamente a seguir ao comando em causa. Com estes requisitos o programa 1. apresentado no primeiro Exemplo deve ser escrito do seguinte modo 1 : JUMP [3, 2, 5]; 2 : SUCC[1]; 3 : SUCC[3]; 4 : JUMP [1, 1, 1]; 5 : HALT []; e o programa 2. deve ser escrito do seguinte modo 1 : JUMP [1, 4, 8] 2 : SUCC[3]; 3 : JUMP [1, 3, 7] 4 : SUCC[2] 5 : SUCC[3] 6
7 6 : JUMP [1, 1, 3]; 7 : COP Y [2, 1]; 8 : HALT []; 3 Funções URM-computáveis Antes de definir a noção de função URM-computável, há que introduzir a noção de computação de um programa a partir de uma configuração e a noção de função (de aridade n) calculada por um programa. Informalmente, a computação de um programa URM, P =< p i > i 1..k, a partir de uma configuração r é uma sequência finita (computação finita) η 1 q 1 η 2 q 2... η n q n η n+1 ou uma sequência infinita (computação infinita) η 1 q 1 η 2 q 2... η n q n... de configurações e comandos que se inicia com a configuração r (i.e. η 1 = r), a configuração inicial, e prossegue até ser possível alternando os comandos de P que vão sendo executados, q i, com as configurações resultantes dessa execução (a partir da configuração imediatamente anterior), η i+1. No caso de ser uma sequência finita, a configuração η n+1, que é a configuração resultante da execução do último comando a ser executado, diz-se configuração final. A noção rigorosa de computação de um programa URM a partir de uma configuração é algo elaborada sendo necessário definir algumas noções preliminares auxiliares. No fim destas notas apresenta-se a definição rigorosa para a noção de computação. Notação: Sendo P um programa URM e r =< r i > i IN uma configuração da máquina, usa-se P (r) para representar a computação de P a partir da configuração inicial r P (r) significa que P (r) é computação finita P (r) b significa que P (r) é computação finita e na configuração final, o valor guardado no primeiro registo é b P (r 1,..., r i,...) significa que P (r) é computação infinita se, em particular, existe k IN tal que r j = 0 para cada j > k usam-se as notações P (r 1,..., r k ), P (r 1,..., r k ), P (r 1,..., r k ) e P (r 1,..., r k ) b Definição: Função de aridade n calculada por programa Sendo f : IN n 0 IN 0, diz-se que o programa P calcula f sse 7
8 P (r 1,..., r n ) sse (r 1,..., r n ) D f e P (r 1,..., r n ) b sse (r 1,..., r n ) D f e f(r 1,..., r n ) = b Exemplo: O programa apresentado em 1. do Exemplo anterior calcula a função unária f : IN 0 IN 0 tal que f(x) = x e calcula função binária g : IN 0 IN 0 IN 0 tal que g(x, y) = x + y. O programa apresentado em 2. do Exemplo anterior calcula a função unária f : IN 0 IN 0 tal que f(x) = se x = 0 então 0 senão x 1 e calcula a função binária g : IN 0 IN 0 IN 0 tal que g(x, y) = se x = 0 então 0 senão x + y 1. Definição: Função computável pela máquina URM A função f : IN n 0 IN 0 é computável pela máquina URM sse existe um programa URM, P, que calcula f. Notação: Representa-se por C a classe das funções computáveis pela máquina URM. Representa-se por C n a classe das funções de aridade n que pertencem a C. Observação: Dado um programa P e n IN existe uma e uma só função de aridade n que é calculada por P. Esta função é representada por f (n) P. Por outro lado, dada uma função computável, esta pode ser calculada/computada por mais de um programa. 4 Predicados e predicados decidíveis Informalmente, um predicado n-ário, ou de aridade n, sobre IN 0, com n IN 0, é uma asserção acerca de números naturais na qual são referenciados n naturais: M 1 x é par (predicado unário ou de aridade 1) M 2 x é maior que y (predicado binário ou de aridade 2) M 3 z é o resto da divisão de x por y (predicado ternário ou de aridade 3) Definição: Predicado n-ário sobre os naturais Um predicado n-ário M, n IN 0, sobre os naturais é um subconjunto de IN n 0, ou seja M IN n 0. 8
9 Dado (x 1,..., x n ) IN n 0, diz-se que o predicado é verdadeiro para (x 1,..., x n ) sse (x 1,..., x n ) M. Usa-se a notação M(x 1,..., x n ) para representar este facto. Definição: Função característica de um predicado Seja M um predicado sobre os naturais. A função característica de M, ou característica de M, é a função tal que c M : IN n 0 IN 0 c M (x 1,..., x n ) = 1 se M(x 1,..., x n ) e c M (x 1,..., x n ) = 0 caso contrário. Definição: O predicado M é decidível sse c M C. Exemplo: O predicado unário sobre os naturais x é par é decidível pois o programa 1 J(1, 2, 6) 2 S(2) 3 J(1, 2, 7) 4 S(2) 5 J(1, 1, 1) 6 S(3) 7 T (3, 1) calcula a função característica do predicado, ou seja, a função c : IN 0 IN 0 tal que c(x) = 1 se x é par e c(x) = 0 se x não é par. O predicado binário sobre os naturais x é maior que y é decidível pois o programa 1 J(1, 3, 6) 2 J(2, 3, 5) 3 S(3) 4 J(1, 1, 1) 5 S(4) 6 T (4, 1) calcula a função característica do predicado, ou seja, a função c : IN 0 IN 0 IN 0 tal que c(x, y) = 1 se x é maior que y e c(x, y) = 0 se x não é maior que y. 9
10 5 Algumas noções necessárias na sequência Definição: Composição sequencial de programas Sendo P =< p i > i 1..k e Q =< q i > i 1..r dois programas normalizados, a composição sequencial de P e Q é o programa S =< s j > j 1..k+r tal que, para cada j 1..k + r, s j = p j se 1 j k s j = q j k se k < j k + r e q j k é Z(n) ou S(n) J(m, n, q + k) se k < j k + r e q j k é J(m, n, q). Na sequência, será relevante poder utilizar um programa P (normalizado) num contexto mais geral, isto é, no contexto de um programa maior, em que os argumentos não estão necessariamente nos primeiros registos e em que se pretende que o resultado do programa (se existir) não seja colocado necessariamente no primeiro registo. No que se segue representa o programa P [l 1,..., l n l] T (l 1, 1)... T (l n, n) Z(n + 1)... Z(ρ(P )) P T (1, l) que representa o programa que calcula a mesma função n-ária que P mas indo buscar os argumentos iniciais aos registos R l1,..., R ln e colocando o valor final no registo R l. 10
11 6 Definição rigorosa para a noção de computação de um programa Como se referiu anteriormente, a noção rigorosa de computação de um programa URM a partir de uma configuração é algo elaborada sendo necessário definir algumas noções preliminares auxiliares. Seguidamente apresenta-se a definição rigorosa para a noção de computação. Notação: Sendo P um programa URM e < r i > i IN uma configuração da máquina, [n R j ] < r i > i IN com n IN 0 e j IN, representa a configuração que se obtém a partir de < r i > i IN colocando o valor n no registo R j e deixando inalterados os outros registos No que se segue IP designa o conjunto de todos os programas URM e R o conjunto de todas as configurações. As noções auxiliares são as funções ord : IP IN R IN tal que ord(<p i > i 1..k, j, <r i > i IN ) = j + 1 q nd (ordem do próximo comando) se 1 j < k e p j é Z(n), S(n), T (m, n)ou ou J(m, n, q) com r m r n se 1 j k e p j é J(m, n, q) tal que 1 q k e r m = r n nos outros casos Esta função indica qual é a ordem do comando que se vai executar após a execução do comando de ordem j (p j ) sobre a configuração < r i > i IN. conf : IP IN R R tal que conf(<p i > i 1..k, j, <r i > i IN ) = [0 R n ]<r i > i IN (próxima configuração) se 1 j k e p j é Z(n) [r n +1 R n ]<r i > i IN se 1 j k e p j é S(n) [r m R n ] <r i > i IN se 1 j k e p j é T (m, n) <r i > i IN se 1 j k e p j é J(m, n, q) nd nos outros casos 11
12 Esta função indica qual é a configuração que se obtém quando se executa o comando de ordem j (p j ) sobre a configuração < r i > i IN. ξ : IN IN e η : IN R, funções mutuamente recursivas, que se definem no contexto de um programa P e uma configuração r da seguinte forma ξ(j) = 1 se j = 1 ord(p, ξ(j 1), η(j 1)) se j > 1, ξ(j 1) e ord(p, ξ(j 1), η(j 1)) nd nos outros casos r se j = 1 η(j) = conf(p, ξ(j 1), η(j 1)) nd se j > 1, ξ(j 1) e conf(p, ξ(j 1), η(j 1)) nos outros casos tendo em conta que ξ(j 1) e η(j 1) significam que ξ(j 1) e η(j 1) estão definidos. A função ξ indica, para cada j, qual é (se existir) a ordem do comando que vai ser executado após a execução do comando de ordem ξ(j 1) sobre a configuração η(j 1). A função η indica, para cada j, qual é (se existir) a configuração que se obtém quando se executa o comando de ordem ξ(j 1) sobre a configuração η(j 1). Definição: Computação de P a partir de uma configuração r Seja P =< p i > i 1..k um programa URM e r uma configuração. Uma computação finita de P a partir de r é, se existir, a sequência alternada de configurações e comandos tal que η 1 q 1 η 2 q 2... η n q n η n+1 η j = η(j) para cada 1 j n + 1 ξ(j) para cada 1 j n e ξ(n + 1) 4 q j = p ξ(j) para cada 1 j n. A configuração η 1 é a configuração inicial e a configuração η n+1 é a configuração final. 4 ou seja, ξ(n + 1) não está definido 12
13 Uma computação infinita de P a partir de r é, se existir, a sequência alternada de configurações e comandos tal que η j = η(j) para cada j 1 ξ(j) para cada j 1 q j = p ξ(j) para cada j 1. η 1 q 1 η 2 q 2... η n q n... A configuração η 1 é a configuração inicial. 13
1 Máquina URM, comandos e programas URM
1 Máquina URM, comandos e programas URM Definição 1 : Máquina URM (Unlimited Register Machine) Uma máquina URM é constituída por uma sucessão de registos 2 < R i > i IN. Cada registo pode conter um valor
1 Lógica de primeira ordem
1 Lógica de primeira ordem 1.1 Sintaxe Para definir uma linguagem de primeira ordem é necessário dispor de um alfabeto. Este alfabeto introduz os símbolos à custa dos quais são construídos os termos e
Procedimentos e Algorítmos Programas e Linguagens de Programação Tese de Church-Turing Formas de Representação de Linguagens
Procedimentos e Algorítmos Programas e Linguagens de Programação Tese de Church-Turing Formas de Representação de Linguagens 1 Introdução Estudar computação do ponto de vista teórico é sinônimo de caracterizar
Universidade da Madeira Ano lectivo 2006/07-2º semestre Responsável: Prof. José Carmo
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
Capítulo 2: Procedimentos e algoritmos
Capítulo 2: Procedimentos e algoritmos Para estudar o processo de computação de um ponto de vista teórico, com a finalidade de caracterizar o que é ou não é computável, é necessário introduzir um modelo
Teoria da Computação
Ciência da Computação Teoria da Computação (ENG10395) Profa. Juliana Pinheiro Campos E-mail: [email protected] Funções recursivas Os formalismos usados para especificar algoritmos podem ser classificados
I.2 Introdução a Teoria da Computação
I.2 Introdução a Teoria da Computação O que é? Fundamento da Ciência da Computação Tratamento Matemático da Ciência da Computação Estudo Matemático da Transformação da Informação Qual sua importância?
Juliana Kaizer Vizzotto. Universidade Federal de Santa Maria. Disciplina de Teoria da Computação
Universidade Federal de Santa Maria Disciplina de Teoria da Computação Quais são as capacidades e limitações fundamentais dos computadores? Funções Computáveis Algoritmo: descrição finitade uma computação
Teoria da Computação. Exercícios. 1 Máquinas de Registos Ilimitados 2013/2014
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) quatro(x) = 4 (b) sg(x) retorna 0 se x > 0, 1 no
INE5317 Linguagens Formais e Compiladores AULA 3: Introdução a Teoria da Computação
INE5317 Linguagens Formais e Compiladores AULA 3: Introdução a Teoria da Computação bas eado em material produzido pelo prof Olinto Jos é Varela Furtado Ricardo Azambuja Silveira INE-CTC-UFSC E-Mail: [email protected]
Modelos de Computação Folha de trabalho n. 10
Modelos de Computação Folha de trabalho n. 10 Nota: Os exercícios obrigatórios marcados de A a D constituem os problemas que devem ser resolvidos individualmente. A resolução em papel deverá ser depositada
Máquinas de Turing 3
Máquinas de Turing 3 Máquinas de Turing com Múltiplas Fitas Máquinas de Turing Não-deterministicas A Tese/Hipótese de Church-Turing Linguagens decidíveis por Máquinas de Turing (Recursivas) Linguagens
Computabilidade 2012/2013. Sabine Broda Departamento de Ciência de Computadores Faculdade de Ciências da Universidade do Porto
Computabilidade 2012/2013 Sabine Broda Departamento de Ciência de Computadores Faculdade de Ciências da Universidade do Porto Capítulo 1 Computabilidade 1.1 A noção de computabilidade Um processo de computação
Um alfabeto é um conjunto de símbolos indivisíveis de qualquer natureza. Um alfabeto é geralmente denotado pela letra grega Σ.
Linguagens O conceito de linguagem engloba uma variedade de categorias distintas de linguagens: linguagens naturais, linguagens de programação, linguagens matemáticas, etc. Uma definição geral de linguagem
Departamento de Matemática e Engenharias. Emulação da Máquina URM no Mathematica
Departamento de Matemática e Engenharias Emulação da Máquina URM no Mathematica José Laurindo de Góis Nóbrega Sobrinho UMa, 13 de Novembro de 2003 Motivação: Na cadeira de Paradigmas da Programaçã ção
Aulas Práticas. 1ª Aula Prática Perguntas sobre a Implementação de Funções Simples na Máquina URM...1
Aulas Práticas 1ª Aula Prática Perguntas sobre a Implementação de Funções Simples na Máquina URM...1 2ª Aula Prática Perguntas sobre a Implementação de Funções Recursivas na Máquina URM...2 3ª Aula Prática
Draft-v0.1. Máquinas de Turing Máquinas de Turing
13 Máquinas de Turing A necessidade de formalizar os processos algorítmicos levou, nas décadas 20 e 30 do século XX, a diversos estudos, entre os quais os de Post, Church e Turing, com vista a estudo formal
5. Expressões aritméticas
5. Expressões aritméticas DIM0320 2015.1 DIM0320 5. Expressões aritméticas 2015.1 1 / 37 Sumário 1 Operadores inteiros 2 Precedências 3 Alteração de prioridades 4 Operadores reais 5 Expressões de tipo
Disciplina: LINGUAGENS FORMAIS, AUTÔMATOS E COMPUTABILIDADE Prof. Jefferson Morais
UNIVERSIDADE FEDERAL DO PARÁ INSTITUTO DE CIÊNCIAS EXATAS E NATURAIS FACULDADE DE COMPUTAÇÃO CURSO DE BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO Disciplina: LINGUAGENS FORMAIS, AUTÔMATOS E COMPUTABILIDADE Prof.
LINGUAGENS FORMAIS E AUTÔMATOS
LINGUGENS FORMIS E UTÔMTOS Introdução reve Histórico Em 1936, lan Turing (matemático) propôs a possibilidade de se construir um computador digital através da formalização de um procedimento em tempo finito.
5. Expressões aritméticas
5. Expressões aritméticas 5.1. Conceito de Expressão O conceito de expressão em termos computacionais está intimamente ligado ao conceito de expressão (ou fórmula) matemática, onde um conjunto de variáveis
EXPRESSÕES ARITMÉTICAS PARTE 1
AULA 5 EXPRESSÕES ARITMÉTICAS PARTE 1 5.1 Operadores aritméticos Os operadores aritméticos definem as operações aritméticas que podem ser realizadas sobre os números inteiros e reais. Para os inteiros,
Fundamentos de Programação
Fundamentos de Programação CP41F Aula 2 Prof. Daniel Cavalcanti Jeronymo Conceito de algoritmo. Raciocínio lógico na construção de algoritmos. Estrutura de algoritmos. Universidade Tecnológica Federal
Teoria das Linguagens. Linguagens Formais e Autómatos (Linguagens)
Teoria das Lic. em Ciências da Computação Formais e Autómatos () Carla Mendes Dep. Matemática e Aplicações Universidade do Minho 2010/2011 Teoria das - LCC - 2010/2011 Dep. Matemática e Aplicações - Univ.
Máquina de Turing. Controle finito
Máquinas de Turing Máquinas de Turing podem fazer tudo o que um computador real faz. Porém, mesmo uma Máquina de Turing não pode resolver certos problemas. Estes problemas estão além dos limites teóricos
6. Decidibilidade, indecidibilidade e decidibilidade parcial
6. Decidibilidade, indecidibilidade e decidibilidade parcial Nos capítulos anteriores, já foram referidos diversos problemas decidíveis. Apenas foi analisado um único problema indecidível ( φ é total )
Teoria da Computação. Unidade 3 Máquinas Universais. Referência Teoria da Computação (Divério, 2000)
Teoria da Computação Referência Teoria da Computação (Divério, 2000) 1 L={(0,1)*00} de forma que você pode usar uma Máquina de Turing que não altera os símbolos da fita e sempre move a direita. MT_(0,1)*00=({0,1},{q
Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Condicionais e de Repetição
Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Condicionais e de Repetição 1 Comando while Deseja-se calcular o valor de: 1 + 2 + 3 +... + N. Observação: não sabemos, a priori, quantos termos
Teoria da Computação. Dep. Matemática Instituto Superior Técnico (em construção) Carlos Caleiro F. Miguel Dionísio Paula Gouveia João Rasga
Teoria da Computação Dep. Matemática Instituto Superior Técnico (em construção) Carlos Caleiro F. Miguel Dionísio Paula Gouveia João Rasga May 18, 2016 2 Contents 1 Preliminares 7 1.1 Conjuntos, funções
Teoria da Computação. Aula 01
Teoria da Computação Aula 01 Celso Olivete Júnior [email protected] www.fct.unesp.br/docentes/dmec/olivete/tc 1 Professor Celso Olivete Júnior Bacharelado em Ciência da Computação (Unoeste-2002) Mestrado
Dedução Natural e Sistema Axiomático Pa(Capítulo 6)
Dedução Natural e Sistema Axiomático Pa(Capítulo 6) LÓGICA APLICADA A COMPUTAÇÃO Professor: Rosalvo Ferreira de Oliveira Neto Estrutura 1. Definições 2. Dedução Natural 3. Sistemas axiomático Pa 4. Lista
O Cálculo λ sem Tipos
Capítulo 2 O Cálculo λ sem Tipos 21 Síntaxe e Redução Por volta de 1930 o cálculo lambda sem tipos foi introduzido como uma fundação para a lógica e a matemática Embora este objectivo não tenha sido cumprido
Lógica de Predicados
Lógica de Predicados Slides da disciplina Lógica para Computação ministrada pelo Prof. Celso Antônio Alves Kaestner, Dr. Eng. ([email protected]) entre 2007 e 2008. Alterações feitas em 2009
Teoria da Computação. Engenharia Informática pós-laboral. Pedro Mariano. Ano Lectivo 2013/2014
Teoria da Computação Engenharia Informática pós-laboral Pedro Mariano Departamento de Informática Faculdade de Ciências Universidade de Lisboa Ano Lectivo 2013/2014 Introdução 1 Apresentação 2 Programa
MUST: Mais Um Simulador da Máquina de Turing
MUST: Mais Um Simulador da Máquina de Turing Claudio Cesar de Sá, Rajshekhar Sunderraman 2 Departamento de Ciência da Computação (DCC) Universidade do Estado de Santa Catarina (UDESC) Campus Universitário
ANÁLISE MATEMÁTICA II
ANÁLISE MATEMÁTICA II Acetatos de Ana Matos Séries de Potências DMAT Séries de Potências As séries de potências são uma generalização da noção de polinómio. Definição: Sendo x uma variável e a, chama-se
Lógica Proposicional
Lógica Proposicional Lógica Computacional Carlos Bacelar Almeida Departmento de Informática Universidade do Minho 2007/2008 Carlos Bacelar Almeida, DIUM LÓGICA PROPOSICIONAL- LÓGICA COMPUTACIONAL 1/28
Paradigmas de Linguagens de Programação. Expressões e Instruções de Atribuição
Expressões e Instruções de Atribuição Cristiano Lehrer Introdução Expressões são o meio fundamental de especificar computações em uma linguagem de programação: Familiarização com as ordens de avaliação
Interpolação polinomial: Diferenças divididas de Newton
Interpolação polinomial: Diferenças divididas de Newton Marina Andretta ICMC-USP 16 de maio de 2012 Baseado no livro Análise Numérica, de R. L. Burden e J. D. Faires. Marina Andretta (ICMC-USP) sme0500
Programação I Apresentação
Programação I Apresentação Prof. Carlos Alberto [email protected] [email protected] Referências JUNIOR, D. P.; NAKAMITI, G. S.; ENGELBRECHT, A. de M. E.; BIANCHI, F. Algoritmos e Programação
SIMULAÇÃO DE MÁQUINA DE REGISTRADORES COM MÁQUINA DE TURING MULTIFITA
SIMULAÇÃO DE MÁQUINA DE REGISTRADORES COM MÁQUINA DE TURING MULTIFITA Neste trabalho você deverá construir e testar, com a ferramenta JFLAP, uma MT multifita que simula o funcionamento de um computador
sumário 1 introdução e conceitos básicos 1 2 noções de lógica e técnicas de demonstração introdução à matemática discreta...
sumário 1 introdução e conceitos básicos 1 1.1 introdução à matemática discreta... 2 1.2 conceitos básicos de teoria dos conjuntos... 3 1.2.1 conjuntos...3 1.2.2 pertinência...5 1.2.3 alguns conjuntos
Máquina de Turing Linguagens Sensíveis ao Contexto e Enumeráveis Recursivamente
ESIN/UCPel 058814 Linguagens Formais e Autômatos TEXTO 5 Máquina de Turing Linguagens Sensíveis ao Contexto e Enumeráveis Recursivamente Prof. Luiz A M Palazzo Maio de 2007 0. Introdução A Ciência da Computação
Máquinas de Turing: uma introdução
Máquinas de Turing: uma introdução Nelma Moreira Armando Matos Departamento de Ciência de Computadores Faculdade de Ciências, Universidade do Porto email: {nam,acm}@ncc.up.pt 1996 Revisão: Maio 2001 1
Aula prática 5. Funções Recursivas
Programação Funcional UFOP DECOM 2014.1 Aula prática 5 Funções Recursivas Resumo Definições recursivas são comuns na programação funcional. Nesta aula vamos aprender a definir funções recursivas. Sumário
CONCEITOS DE ALGORITMOS
CONCEITOS DE ALGORITMOS Fundamentos da Programação de Computadores - 3ª Ed. 2012 Editora Prentice Hall ISBN 9788564574168 Ana Fernanda Gomes Ascênsio Edilene Aparecida Veneruchi de Campos Algoritmos são
Linguagens de Programação Princípios e Paradigmas
Copyright The McGraw-Hill Companies, Inc. Permission required for reproduction or display. Linguagens e Ambientes de Programação 2002-2003 Linguagens de Programação Princípios e Paradigmas Gladys Castillo
a = bq + r e 0 r < b.
1 Aritmética dos Inteiros 1.1 Lema da Divisão e o Algoritmo de Euclides Recorde-se que a, o módulo ou valor absoluto de a, designa a se a N a = a se a / N Dados a, b, c Z denotamos por a b : a divide b
Funções Recursivas. Prof.: Edson Holanda Teoria da computação - Diverio e Menezes
Funções Recursivas Prof.: Edson Holanda [email protected] Teoria da computação - Diverio e Menezes Tipos de Formalismos Operacional Define-se uma máquina abstrata, baseada em estados, em instruções
SCC Capítulo 4 Máquinas de Turing e a Teoria da Computabilidade
SCC-505 - Capítulo 4 Máquinas de Turing e a Teoria da Computabilidade João Luís Garcia Rosa 1 1 Departamento de Ciências de Computação Instituto de Ciências Matemáticas e de Computação - Universidade de
Centro Universitário do Triângulo
Centro Universitário do Triângulo Cálculo Lambda 1. Introdução A elaboração de modelos de computação (resolução de problemas por uma máquina) baseia-se em trabalhos de dois pesquisadores com enfoques bastante
Introdução a Computação
Edirlei Soares de Lima Introdução a Computação Aula 02 Lógica de Programação Lógica de Programação Lógica de Programação é a técnica de criar sequências lógicas de ações para atingir
Matemática Discreta para Ciência da Computação
Matemática Discreta para Ciência da Computação P. Blauth Menezes [email protected] Departamento de Informática Teórica Instituto de Informática / UFRGS Matemática Discreta para Ciência da Computação
MD Lógica de Proposições Quantificadas Cálculo de Predicados 1
Lógica de Proposições Quantificadas Cálculo de Predicados Antonio Alfredo Ferreira Loureiro [email protected] http://www.dcc.ufmg.br/~loureiro MD Lógica de Proposições Quantificadas Cálculo de Predicados
Já falamos que, na Matemática, tudo se baseia em axiomas. Já estudamos os números inteiros partindo dos seus axiomas.
Teoria dos Conjuntos Já falamos que, na Matemática, tudo se baseia em axiomas. Já estudamos os números inteiros partindo dos seus axiomas. Porém, não é nosso objetivo ver uma teoria axiomática dos conjuntos.
Lógica Computacional
Aula Teórica 1: Apresentação Departamento de Informática 14 de Fevereiro de 2011 O que é a lógica? Lógica: de que se trata? A lógica está na base do raciocínio É um processo inerentemente humano, tão básico
Introdução Maquinas de Turing universais O problema da parada. Indecidibilidade. Rodrigo Gabriel Ferreira Soares DEINFO - UFRPE.
DEINFO - UFRPE Julho, 2014 Motivação Introdução O que pode ser computado? E mais intrigantemente, o que não pode ser computado? Motivação Introdução O que pode ser computado? E mais intrigantemente, o
UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo
UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO TEORIA DA COMPUTAÇÃO Aula 04 Programa Recursivo e Máquinas Prof.ª Danielle Casillo Funções recursivas Alguma função é recursiva quando
Este conceito é bastante simples e será útil e conveniente nos itens seguintes, na definição das estruturas básicas de controle de execução.
Capítulo 7 Controle de Fluxo de Execução Até o momento os algoritmos estudados utilizam apenas instruções primitivas de atribuição, e de entrada e saída de dados. Qualquer conjunto de dados fornecido a
Números Inteiros Algoritmo da Divisão e suas Aplicações
Números Inteiros Algoritmo da Divisão e suas Aplicações Diferentemente dos números reais (R), o conjunto dos inteiros (Z) não é fechado para a divisão. Esse não-fechamento faz com que a divisão entre inteiros
Camada de rede do modelo OSI Redes de Comunicação Módulo 3 Parte 3
Curso Profissional de Gestão de Programação de Sistemas Informáticos Ano Letivo 2015/2016 Camada de rede do modelo OSI Redes de Comunicação Módulo 3 Parte 3 CONVERSÃO DE IP S PARA BINÁRIO E VICE-VERSA
xy 2 (b) A função é contínua na origem? Justique sua resposta! (a) Calculando o limite pela reta y = mx:
NOME: UNIVERSIDADE FEDERAL DO RIO DE JANEIRO Instituto de Matemática PRIMEIRA PROVA UNIFICADA CÁLCULO II Politécnica, Engenharia Química e Ciência da Computação 21/05/2013. 1 a QUESTÃO : Dada a função
Algoritmos Estrutura Condicional
Algoritmos Estrutura Condicional Aula 06 Diogo Pinheiro Fernandes Pedrosa http://www2.ufersa.edu.br/portal/professor/diogopedrosa [email protected] Universidade Federal Rural do Semiárido Bacharelado
UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo
UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO Prof.ª Danielle Casillo Diferentes computadores podem ter diferentes arquiteturas e os diversos tipos de linguagem de programação.
Dízimas e intervalos encaixados.
Dízimas e intervalos encaixados. Recorde que uma dízima com n casas decimais é um número racional da forma a 0.a a 2...a n = a 0 + a 0 + a 2 0 2 + + a n n 0 n = a j 0 j em que a 0,a,...,a n são inteiros
Projeto de máquina de Turing com múltiplas fitas reconhecedora de número primo
Projeto de máquina de Turing com múltiplas fitas reconhecedora de número primo CCO 410 Aspectos Formais da Computação Prof.º Wanderley Lopes de Souza Universidade Federal de São Carlos Diego Luiz Cavalca
ANÁLISE MATEMÁTICA II 2007/2008. Cursos de EACI e EB
ANÁLISE MATEMÁTICA II 2007/2008 (com Laboratórios) Cursos de EACI e EB Acetatos de Ana Matos 1ª Parte Sucessões Séries Numéricas Fórmula de Taylor Séries de Potências Série de Taylor DMAT Ana Matos - AMII0807
ALGORITMOS 3ª Aula. 3. Introdução Tipos de dados, variáveis e operadores Tipos de dados
3. Introdução Segundo alguns especialistas, qualquer programa de computador pode ser escrito utilizando apenas três estruturas básicas: Seqüência, Condição e Repetição. Isto significa que, na construção
Faculdade de Computação
UNIVERSIDADE FEDERAL DE UBERLÂNDIA Faculdade de Computação Disciplina : Teoria da Computação Professora : Sandra de Amo Solução da Lista de Exercícios n o 8 - Indecidibilidade Exercicio 1-5.5 do Livro
2. DISCIPLINA REQUISITO (RECOMENDAÇÃO) 3. INDICAÇÃO DE CONJUNTO (BCC) Obrigatória TEORIA: 60 LABORATÓRIO: 30
Universidade Federal do ABC Rua Santa Adélia, 166 - Bairro Bangu - Santo André - SP - Brasil CEP 09.210-170 - Telefone/Fax: +55 11 4996-3166 1. CÓDIGO E NOME DA DISCIPLINA MC3106 - LINGUAGENS FORMAIS E
Lógica Computacional DCC/FCUP 2017/18
2017/18 1 Lógica de primeira ordem Linguagens da lógica de primeira ordem Termos Fórmulas Semântica de Lógica de primeira ordem Lógica de primeira ordem Na lógica proposicional não é possível representar
UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo
UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO TEORIA DA COMPUTAÇÃO Aula 05 Computações Prof.ª Danielle Casillo Computação Será visto como as definições de programas e máquinas caminham
MATEMÁTICA Sequência & Progressões 1. Professor Marcelo Gonsalez Badin
MATEMÁTICA Sequência & Progressões 1 Professor Marcelo Gonsalez Badin Seqüência Série Sucessão {2, 3, 5, 10} = {3, 10, 2, 5} Num conjunto não importa a ordem na qual os elementos são apresentados Conjunto
ESTRUTURAS DE REPETIÇÃO - PARTE 1
AULA 15 ESTRUTURAS DE REPETIÇÃO - PARTE 1 15.1 O comando enquanto-faca- Considere o problema de escrever um algoritmo para ler um número inteiro positivo, n, e escrever todos os números inteiros de 1 a
Teoria dos Conjuntos. Teoria dos Conjuntos. Teoria dos Conjuntos. Teoria dos Conjuntos. Teoria dos Conjuntos. Teoria dos Conjuntos
Pode-se dizer que a é em grande parte trabalho de um único matemático: Georg Cantor (1845-1918). noção de conjunto não é suscetível de definição precisa a partir d noções mais simples, ou seja, é uma noção
1 bases numéricas. capítulo
capítulo 1 bases numéricas Os números são representados no sistema decimal, mas os computadores utilizam o sistema binário. Embora empreguem símbolos distintos, os dois sistemas formam números a partir
Textos de apoio às aulas práticas. Jaime Ramos, Francisco Miguel Dionísio
Computação e Programação Textos de apoio às aulas práticas Jaime Ramos, Francisco Miguel Dionísio DMIST, Dezembro de 2010 Parte I MATLAB 1 Capítulo 1 Exercícios preliminares 1. Defina a função conta divisores
Matemática Discreta para Ciência da Computação
Matemática Discreta para Ciência da Computação P. Blauth Menezes [email protected] Departamento de Informática Teórica Instituto de Informática / UFRGS Matemática Discreta para Ciência da Computação
CURSO ANUAL DE MATEMÁTICA VOLUME 1
CURSO ANUAL DE MATEMÁTICA VOLUME ) SISTEMA DE NUMERAÇÃO DECIMAL O sistema de numeração que usamos é o sistema de numeração decimal, pelo fato de contarmos os elementos em grupos de dez. Dezenas cada grupo
) a sucessão definida por y n
aula 05 Sucessões 5.1 Sucessões Uma sucessão de números reais é simplesmente uma função x N R. É conveniente visualizar uma sucessão como uma sequência infinita: (x(), x(), x(), ). Neste contexto é usual
UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo
UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO TEORIA DA COMPUTAÇÃO Aula 08 Equivalência de programas Parte 2 Prof.ª Danielle Casillo Poder computacional dos diversos tipos de programas
Curso de C. Introdução by Arnaldo V. Moura e Daniel F. Ferber 3/10/ :43 AM
Curso de C Introdução 1 Introdução Roteiro: Recordando Algoritmos Linguagem de Programação O computador Instruções de Máquina Níveis de Abstração Compilação 2 Algoritmos Recordando: Algoritmo: conjunto
Aula 10: Decidibilidade
Teoria da Computação Aula 10: Decidibilidade DAINF-UTFPR Prof. Ricardo Dutra da Silva Definição 10.1. Um problema de decisão P é um conjunto de questões para as quais as respostas são sim ou não. Exemplo
UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo
UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO Prof.ª Danielle Casillo NORMA (NumberTheOreticRegisterMAchine) Possui como memória um conjunto infinito de registradores naturais e
Cálculo diferencial em IR n
Cálculo diferencial em IR n (Limites e Continuidade) Sandra Nunes e Ana Matos DMAT 3 Maio 2001 Conteúdo 1 Limites e Continuidade em Campos Escalares 2 1.1 NoçãodeLimite... 2 1.2 LimitesRelativos... 4 1.3
Introdução à Programação Funcional
Introdução à Programação Funcional PPGIA - PUCPR Prof. Fabrício Enembreck 1 Conteúdo Introdução ao Cálculo Lambda e à Programação Funcional Introdução ao LISP e ao CLisp Funções Lambda e binding Funções
Variáveis e Memória. Revisão. Conceitos. Operações sobre a memória
Variáveis e Memória Revisão Estudamos, na Introdução, que os programas de computador implementam algoritmos, os quais manipulam um conjunto de dados para produzir um resultado. O algoritmo é um conjunto
SEMÂNTICA. Rogério Rocha. rode = program simples = var x : int := 3 in x := x + 5 end.
SEMÂNTICA program simples = var x : int := 3 in x := x + 5 end. rode =? Rogério Rocha Roteiro Introdução Sintaxe Semântica Dinâmica (Métodos formais) Operacional Axiomática Denotacional Estática Conclusão
Existem conjuntos em todas as coisas e todas as coisas são conjuntos de outras coisas.
MÓDULO 3 CONJUNTOS Saber identificar os conjuntos numéricos em diferentes situações é uma habilidade essencial na vida de qualquer pessoa, seja ela um matemático ou não! Podemos dizer que qualquer coisa
