José Carlos Costa DMA-UMinho 2 de Dezembro de 2011 1/17 Licenciatura em Ciências da Computação COMPUTABILIDADE 3. Funções Parciais Recursivas José Carlos Costa Dep. Matemática e Aplicações Universidade do Minho 2 de Dezembro de 2011
José Carlos Costa DMA-UMinho 2 de Dezembro de 2011 2/17 Em 1921/22, o matemático alemão David Hilbert (1862-1943) deu um curso sobre fundações da matemática no qual propõe que estas sejam reformuladas de forma rigorosa, partindo da aritmética. O programa de Hilbert era que toda a matemática poderia ser reduzida a um número finito de axiomas a partir dos quais qualquer proposição da matemática poderia ser provada. Em 1931, o matemático austríaco Kurt Gödel (1906-1978) provou, através do seu Teorema da incompletude, que esta tarefa é impossível. Este teorema diz que em qualquer sistema axiomático contendo a aritmética de Peano, existem afirmações verdadeiras que não podem ser demonstradas a partir dos axiomas.
José Carlos Costa DMA-UMinho 2 de Dezembro de 2011 3/17 As funções recursivas primitivas são aquelas que podem ser obtidas de certas funções básicas usando composição e recursão primitiva. A maior parte das funções usuais (tais como adição, multiplicação, exponenciação,...) são recursivas primitivas. Em On the Infinite (1925), Hilbert conjeturou que a (agora chamada) função de Ackermann não é recursiva primitiva, mas esse facto só foi provado em 1928 por um seu aluno, o matemático alemão Wilhelm Ackermann (1896-1962), no artigo On Hilbert s construction of the real numbers. As funções recursivas primitivas formam uma subclasse estrita da classe das funções parciais recursivas (que, como se pode provar, coincide com a classe das funções computáveis) à qual pertence a função de Ackermann. Note-se que na demonstração do Teorema da incompletude, Gödel mostrou que existem funções não computáveis.
José Carlos Costa DMA-UMinho 2 de Dezembro de 2011 4/17 FUNÇÕES INICIAIS DEFINIÇÃO (FUNÇÕES BÁSICAS) As funções iniciais ou básicas são as seguintes: 1 Funções zero: para cada k C 0, a função zero de aridade k é a função zeroˆk N k 0 N 0. ˆx 1,..., x k ( 0 2 Função sucessor: é a função s N 0 N 0. x ( x 1 3 Funções projeção: para cada k C 1 e 1 B j B k, a função de aridade k de projeção sobre a componente j é a função pˆk j N k 0 N 0. ˆx 1,..., x k ( x j
José Carlos Costa DMA-UMinho 2 de Dezembro de 2011 5/17 OPERADOR DE COMPOSIÇÃO DEFINIÇÃO (OPERADOR DE COMPOSIÇÃO) Seja uma função k-ária e sejam funções n-árias. A função f N k 0 N 0 g 1,..., g k N n 0 N 0 h N n 0 N 0 definida, para cada x 1,..., x n > N 0, por hˆx 1,..., x n f g 1ˆx 1,..., x n,..., g kˆx 1,..., x n Ž é chamada a composição de f com g 1,..., g k, e escreve-se h f X g 1,..., g k Ž.
José Carlos Costa DMA-UMinho 2 de Dezembro de 2011 6/17 EXEMPLO Seja ad N 0 N 0 N 0 ˆx, y ( x y a função de adição em N 0 e consideremos as funções g 1 N 0 N 0 e g 2 N 0 N 0 x ( x 3 x ( 2x. Então h ad X g 1, g 2 Ž é a função h N 0 N 0 x ( x 3 2x. TEOREMA Se f N k 0 N 0 e g 1,..., g k N n 0 N 0 são funções computáveis, então a função composição f X g 1,..., g k Ž é computável.
José Carlos Costa DMA-UMinho 2 de Dezembro de 2011 7/17 OPERADOR DE RECURSÃO PRIMITIVA DEFINIÇÃO (OPERADOR DE RECURSÃO PRIMITIVA) Sejam f N k 0 N 0 e g N k2 0 N 0 duas funções. A função h N k1 0 N 0 definida, para cada x 1,..., x k, y > N 0, por hˆx 1,..., x k, 0 fˆx 1,..., x k hˆx 1,..., x k, y 1 g x 1,..., x k, y, hˆx 1,..., x k, y Ž é dita a função obtida de f e g por recursão primitiva (ou definida recursivamente por f e g), e denota-se h Recˆf, g. TEOREMA Se f N k 0 N 0 e g N k2 0 N 0 são funções computáveis, então a função h Recˆf, g obtida de f e g por recursão primitiva também é computável.
José Carlos Costa DMA-UMinho 2 de Dezembro de 2011 8/17 EXEMPLO Mostremos que a função de adição ad N 0 N 0 N 0 ˆx, y ( x y pode ser obtida por recursão primitiva de funções f e g, ou seja, ad Recˆf, g. Para tal tem que se verificar adˆx, 0 fˆx adˆx, y 1 g x, y, adˆx, y Ž para cada x, y > N 0. Ora dado que adˆx, 0 x, adˆx, y 1 x y 1 e adˆx, y x y, basta tomar f pˆ1 1 N 0 N 0 a ( a e g N 3 0 N 0 ˆa, b, c ( c 1.
José Carlos Costa DMA-UMinho 2 de Dezembro de 2011 9/17 FUNÇÕES RECURSIVAS PRIMITIVAS DEFINIÇÃO As funções recursivas primitivas são as funções iniciais e todas aquelas que podem ser obtidas das funções iniciais pela aplicação de um número finito de vezes das operações de composição e de recursão primitiva. EXEMPLO A função ad, de adição em N 0, é recursiva primitiva. De facto, como vimos no exemplo anterior, ad Recˆf, g é obtida por recursão primitiva das funções f pˆ1 1 N 0 N 0 a ( a e g N 3 0 N 0 ˆa, b, c ( c 1 Ora f 1 é uma função inicial e g s X pˆ3 3 é a composição de duas funções iniciais. Logo a adição em N 0 é recursiva primitiva. Podemos decompô-la como ad Recˆpˆ1 1, s X pˆ3 3. pˆ1.
José Carlos Costa DMA-UMinho 2 de Dezembro de 2011 10/17 TEOREMA Todas as funções recursivas primitivas são computáveis. Demonstração: Basta notar que todas as funções iniciais são computáveis e que as funções obtidas de funções computáveis por composição ou recursão primitiva ainda são computáveis.j TEOREMA Todas as funções recursivas primitivas são funções totais. Demonstração: Basta notar que as funções iniciais são totais e que as funções obtidas de funções totais por composição ou recursão primitiva ainda são totais. j
José Carlos Costa DMA-UMinho 2 de Dezembro de 2011 11/17 Dado que existem funções computáveis que não são totais, deduz-se portanto que a classe das funções recursivas primitivas está propriamente contida na classe das funções computáveis. Pode-se provar mesmo o seguinte resultado. TEOREMA Existem funções totais computáveis que não são recursivas primitivas. EXEMPLO Seja A N 2 0 N 0 a função definida por: i) Aˆ0, y y 1; ii) Aˆx 1, 0 Aˆx, 1 ; iii) Aˆx 1, y 1 A x, Aˆx 1, y Ž. A função A é chamada função de Ackermann.
José Carlos Costa DMA-UMinho 2 de Dezembro de 2011 12/17 A função A é uma função total computável. Tem-se por exemplo, Aˆ1, 1 A 0, Aˆ1, 0 Ž por iii) Aˆ1, 0 1 por i) Aˆ0, 1 1 3 por i).. Aˆ4, y 2 ² 2 2.. 3. y3 vezes por ii) TEOREMA A função de Ackermann não é recursiva primitiva.
José Carlos Costa DMA-UMinho 2 de Dezembro de 2011 13/17 OPERADOR DE MINIMIZAÇÃO DEFINIÇÃO (OPERADOR DE MINIMIZAÇÃO) Se f N k1 0 N 0 é uma função, então a minimização (ilimitada) de f é a função (parcial) M f N k 0 N 0 Ñx ( min y > N 0 fˆñx, y 0, 0 em vez de M fˆñx. onde Ñx representa um k-uplo Ñx ˆx 1,..., x k arbitrário. Por vezes usa-se a notação µy fˆñx, y
José Carlos Costa DMA-UMinho 2 de Dezembro de 2011 14/17 EXEMPLO Seja f a função ternária f pˆ3 1 N 3 0 N 0 ˆx 1, x 2, x 3 ( x 1 de projeção na primeira componente. A função M f, de minimização de f, é dada por M f N 2 0 N 0 ˆx 1, x 2 ( min y > N 0 fˆx 1, x 2, y min y > N 0 x 1 0. Logo, a função M f apenas está definida nos pontosˆx 1, x 2 tais que x 1 0, tendo-se M fˆ0, x 2 min N 0 0. 0
José Carlos Costa DMA-UMinho 2 de Dezembro de 2011 15/17 EXEMPLO Consideremos agora a função ternária g pˆ3 3 N 3 0 N 0 ˆx 1, x 2, x 3 ( x 3 de projeção na terceira componente. Neste caso tem-se M g N 2 0 N 0 ˆx 1, x 2 ( min y > N 0 gˆx 1, x 2, y 0 min y > N 0 y 0 min 0 0. Ou seja, M g zeroˆ2.
José Carlos Costa DMA-UMinho 2 de Dezembro de 2011 16/17 EXEMPLO Seja f a função f N 2 0 N 0 ˆx, y ( œ 0 se x y 2 1 senão. A função M f, de minimização de f, é a função M f N 0 N 0 x ( min y > N 0 fˆx, y 0 min y > N 0 x y œ º 2 x n.d. se x é um quadrado perfeito senão.
José Carlos Costa DMA-UMinho 2 de Dezembro de 2011 17/17 FUNÇÕES PARCIAIS RECURSIVAS DEFINIÇÃO Uma função diz-se parcial µ-recursiva (ou simplesmente parcial recursiva) se é uma função inicial ou pode ser obtida destas pela aplicação de um número finito de vezes das operações de composição, recursão primitiva e minimização. Uma função parcial recursiva que seja total diz-se recursiva. TEOREMA Uma função f N k 0 N 0 é parcial recursiva se e só se é computável.