Capítulo 13 Outros modelos de computação 13.1. 1 Funções recursivas 13.2. Sistemas de Post 13.3. Sistemas de rescrita 13.4. Cálculo Lambda 497
Máquinas de Turing (1936): os modelos de computação mais gerais Outros modelos de computação desenvolvidos entre 1930 e 40 funções recursivas (Kurt( Gödel, 1929, http://www-groups.dcs.stand.ac.uk/~history/mathematicians/godel.html, Skolem, http://www-groups.dcs.stand.ac.uk/~history/mathematicians/skolem.html, Herbrand http://www-groups.dcs.stand.ac.uk/~history/mathematicians/herbrand.html sistemas de Post (Emil Post, http://www-groups.dcs.stand.ac.uk/~history/mathematicians/post.html) sistemas de rescrita (Emil Post) cálculo- l (Alonzo Church, h 1930, http://www-gap.dcs.stand.ac.uk/~history/mathematicians/church.html) Grande objectivo: saber se é possível encontrar máquinas capazes de provar proposições matemáticas, a partir de um conjunto de axiomas, num número finito de passos, através de sucessivas inferências e deduções- um sistema formal de prova. 498
Um tal sistema formal deveria ser: consistente: uma proposição não pode ser considerada verdadeira por uma dada sequência de passos e falsa por outra sequência de passos, completo: toda a proposição que se possa exprimir no sistema pode-se demonstrar ser verdadeira ou falsa. 499
K. Gödel Teorema da Incompletude (1931): Qualquer sistema consistente tem que ser incompleto, deve conter algumas proposições que não se podem provar. 500
Podem distinguir-se as proposições demonstráveis das não demonstráveis, de tal forma que as demonstráveis o possam ser com rigor por meios mecânicos? Foi esta questão que motivou Turing, Church, Kleen, Post, etc., ao desenvolvimento de modelos de computação. 501
Tese de Church Todos os modelos de computação, desde que sejam suficientemente gerais, são equivalentes. Têm todos as mesmas limitações, mantendose em todos zonas de não computabilidade. 502
Tese de Church-Turing combinação da tese de Church (equivalência dos modelos de computação) com a tese de Turing (tudo o que é computável pode sê-lo por uma MT)... não demonstrável... define um princípio geral para a computação algorítmica 503
13.1. 1 Funções recursivas (Gödel) Usualmente uma função denota-se na forma de receita para a sua computação: f (n) = n 3 + n exprime o facto de que a computação da função segue a receita: multiplicar n por si próprio três vezes e depois adicionar n. Alternativa: Qualquer função (computável) )pode-se especificar de um modo recursivo. 504
13.1.1. Funções recursivas primitivas I I I I I Funções básicas ou iniciais I = Inteiros não negativos 1. função zero : z (x) = 0, para todo o x I 2. função sucessora : s (x) = x+1, o inteiro que segue x 3. função projecção: p 1 (x 1, x 2 )=x x 1 p 2 (x 1, x 2 ) = x 2 505
definição de funções mais complexas a partir das básicas: 1. Composição : f (x, y) = h ( g 1 (x,y), g 2 (x,y)) a partir de funções g 1, g 2, h definidas. 2. Recursão primitiva, uma função pode ser recursivamente definida através de f (x,0) = g 1 (x) f (x, y+1) = h ( g 2 (x,y), f (x,y)) a partir de funções g 1, g 2, h definidas. 506
Exemplo 1: adição de números inteiros pode ser definida d pela função add (x, y) definida d por add (x,0) = x add (x, y+1) = add(x,y) + 1 add (4,3) = add (4,2) + 1 = (add (4, 1) +1) + 1 = ((add (4, 0) +1) + 1) +1 = ((4+1)+1)+1 = (5+1)+1 = 6+1 = 7 507
13.2. Sistemas de Post Definição 13.3 Um sistema de Post,,, é definido pelo quarteto em que = ( C, V, A, P ) C é um conjunto finito de constantes, composto por dois conjuntos distintos - C N,asco constantes tes não terminais, - C T, as constantes terminais V é um conjunto finito de variáveis A é um conjunto finito de C*, chamado axioma, o símbolo inicial P é um conjunto finito de produções. 508
As produções num sistema de Post devem verificar algumas restrições (aqui difere de uma gramática não restringida): id são da forma x 1 V 1 x 2 V 2... x n V n x n+1 y 1 W 1 y 2 W 2... y m W m y m+1 em que x i, y i C* (axiomas) V i, W i V (variáveis) qualquer variável pode aparecer na esquerda no máximo uma vez, e por isso V i V j para i j toda a variável que aparece na direita deve aparecer na m n esquerda, e por isso W i i 1 j 1 V j 509
Exemplo Seja um sistema de Post com C T = {1, +, =}, constantes t terminais i C N = V = {V 1, V 2, V 3 }, variáveis A = {1+1=11}, axioma e as produções V 1 +V 2 = V 3 V 1 1 + V 2 = V 3 1, V 1 +V 2 = V 3 V 1 + V 2 1 = V 3 1. 510
Comparando com a produção padrão, temos para a 1ª produção x 1, V 1 V 1, x 2 +, V 2 V 2, x 3 =, V 3 V 3, x 4 y 1, W 1 V 1, y 2 1+, W 2 V 2, y 3 =, W 3 V 3, y 4 1 e para a segunda x 1, V 1 V 1, x 2 +, V 2 V 2, x 3 =, V 3 V 3, x 4, y 1, W 1 V 1, y 2 +, W 2 V 2, y 3 1=, W 3 V 3, y 4 1 511
Pode-se obter a seguinte derivação: 1+1=11 11+1=111 11+11=1111 111+11=11111 Se as cadeias forem interpretadas como a representação unária dos números inteiros não-negativos, teremos 1+1=2 2+1=3 2+2=4 3+2=5 A linguagem gerada por este sistema de Post é o conjunto de todas as identidades de adições de inteiros. A intenção original de Post era encontrar um mecanismo de prova rigorosa de afirmações matemáticas, a partir de um conjunto de axiomas. Mas é de utilização complicada. É no entanto um modelo geral de computação. 512
13.3. Sistemas de rescrita (rewriting systems) Um sistema de rescrita é composto por um alfabeto e um conjunto de regras ou produções através das quais se produz uma cadeia a partir de outra, isto é se rescreve a partir de outra. Todas as gramáticas que estudámos são sistemas de rescrita O que distingue um sistema de rescrita de um outro é a natureza do alfabeto e as restrições aplicadas às produções. 513
13.3.1. 3 1 Gramáticas matriciais Gramáticas de estrutura de frase (phrase-structure grammars) : Aplica-se uma produção de cada vez, por qualquer ordem e em cada produção substitui-se se uma variável apenas uma vez. Nas gramáticas matriciais há uma certa ordem obrigatória na aplicação das produções e podem-se aplicar várias em cada derivação 514
Nas gramáticas matriciais o conjunto P das produções consiste em subconjuntos P 1, P 2,..., P n cada um dos quais é uma sequência ordenada x 1 y 1, x 2 y 2, x 3 y 3,... Sempre que se aplica a primeira produção de um dado P i, de seguida deve aplicar-se a segunda produção à cadeia acabada de criar, depois a terceira produção à cadeia resultante, e assim sucessivamente. Só se pode aplicar a primeira produção de P i se todas as outras (de P i ) puderem ser aplicadas. 515
Exemplo: P 1 : S S 1 S 2 P 2 : S 1 as 1, S 2 bs 2 c P 3 : S 1, S 2, Uma derivação SS 1 2 as1 bs2c S S 1 S 2 as 1 bs 2c aas 1bbS 2cc aaas 1bbbS 2ccc aaabbbccc A produção P 2 introduz sucessivamente um a, um b e um c. A linguagem gerada é por isso L ={a a n b n c n, n 0} Vantagem: as GM s são por vezes uma solução mais simples. 516
13.3.2. Algoritmos de Markov é um sistema de rescrita cujas produções x y se consideram ordenadas, numa derivação deve usar-se a primeira produção aplicável, a derivação faz-se pela (extrema) esquerda, algumas das produções podem ser assinaladas como terminais, x.y. y começa-se uma derivação com uma cadeia w * continuando até que ou se aplica uma produção terminal ou não há mais produções aplicáveis. 517
Para aceitação de linguagens, identifica-se um conjunto T. Começando com uma cadeia terminal, aplicam-se produções até se obter a cadeia vazia. Definição 13.5. Seja M um Algoritmo de Markov com alfabeto e terminais T. O conjunto L(M) = {w T * : w } * é a linguagem aceite por M. 518
Exemplo: Seja o algoritmo de Markov com =T ={ab} {a, e as produções ab ba Em cada passo de uma derivação apaga-se um a e um b. ababaabbba b bbb abaabbba bbb aabbba abba ba a linguagem aceite é composta por cadeias com um número de a s igual ao de b s. 519
Exemplo: Encontrar uma algoritmo de Markov para L = { a n b n, n 0} Uma solução ab S S ab asb S S.. CFG S asb S Até certo ponto os algoritmos de Markov são gramáticas de estrutura em frase revertidas, trabalhando para trás (não considerando a última produção). 520
Uma linguagem é recursivamente enumerável se e só se existir um algoritmo de Markov para ela (teorema 13.7 Linz). 521
13.3.3. Sistemas-L (Sistemas de rescrita paralelos) estendidos Ossse sistemas s L (de Aristid Lindenmayer) foram desenvolvidos v dos para modelizar o crescimento de organismos vivos. São essencialmente il sistemas de rescrita paralelos: ll em cada passo de uma derivação tem que se rescrever todo e qualquer símbolo, como na reprodução de um organismo vivo (células, plantas, ). As produções são da forma a u em que a e u *. 522
Exemplo Seja = {a} e um sistema-l definido por a aa Uma sua produção, iniciando-se com a, será a aa aaaa aaaaaaaa aaaaaaaaaaaaaaaa 2 n L a 2, n 0 muito mais difícil de obter por uma gramática de estrutura em frase. 523
Prusinkiewicz P. and A. Lindenmayer - The Algorithmic Beauty of Plants, Springer Verlag, 1990. Início Início Semente w 0 : F-F-F-F Prod: F F-F+F+FF-F-F+F F: seguir em frente distância d + rodar à esquerda 90º - rodar à direita 90 º Dividir d por 4 em cada etapa n Imagens produzidas por uma sistema - L 524
ema - L Pro oduzida as por um ma sist Prusinkiewicz P. and A. Lindenmayer- The Algorithmic Beauty of Plants, Springer Verlag, 1990. 525
os sistemas-l estendidos podem ter produções da forma (x, a, y) u a, x, y, u * só se pode substituir a por u quando a ocorrer como parte de uma cadeia xay, isto é, contextualizada. Os sistemas-l contextualizados são modelos gerais de computação. 526
13.4. Cálculo - ( - calculus) Criado por Alonzo o Church, cerca c de 1930, como o a primeira expressão de computabilidade, um conceito puramente matemático na época. É uma linguagem de programação abstracta que deu lugar à programação funcional (LISP, Scheme, ML- MetaLanguage, etc.). É um sistema matemático para definir funções computáveis, i.e, é um modelo de computação. Tem o poder de exprimir qualquer computação em termos de funções 527
Mais em Cursos on-line sobre cálculo- http://www.maths.cam.ac.uk/casm/courses/descriptions/node27.html http://www.cs.unc.edu/~stotts/comp20/lambda/overview.html http://www.cs.rpi.edu/~robbic3/proglang/project3/introduction.html http://www.dcs.gla.ac.uk/~pat/ml/lambda p http://depinfo.unice.fr/~roy/linfo/cours5.pdf 528
Bibliografia An Introduction to Formal Languages and Automata, Peter Linz, 3rd Ed., Jones and Bartelett Computer Science, 2001. Models of Computation and Formal Languages, R. Gregory Taylor, Oxford University Press, 1998. Introduction to Automata Theory, Languages and Computation, 2nd Ed., John Hopcroft, Rajeev Motwani, Jeffrey Ullman, Addison Wesley, 2001. Elements for the Theory of Computation, Harry Lewis and Christos Papadimitriou, 2nd Ed., Prentice Hall, 1998. Introduction th the Theory of Computation, Michael Sipser, PWS Publishing Co, 1997. Barendregt, H., The Lambda Calculus: its Syntax and Semantics, 2nd ed., Nolrth- Holland, 1984. Hindley, J.R. and J.P. Seldin, Introduction ti to Combinators and -calculus, l l LMS Student Texts, Cambridge Universty Press, 1986. Prusinkiewicz P. and A. Lindenmayer- The Algorithmic Beauty of Plants, Springer Verlag, 1990. 529