Vous êtes sur la page 1sur 21

Cincia da Computao

Teoria da Computao
(ENG10395)

Profa. Juliana Pinheiro Campos E-mail: jupcampos@gmail.com

TEORIA DA COMPUTAO

Funes recursivas
Os formalismos usados para especificar algoritmos podem ser classificados nos seguintes tipos: Operacional: define-se uma mquina abstrata baseada em estados, em instrues primitivas e na especificao de como cada instruo modifica cada estado. Ex: MT. Axiomtico: Associam-se regras s componentes da linguagem. As regras permitem afirmar o que ser verdadeiro aps a ocorrncia de cada clusula, considerando-se o que era verdadeiro antes da ocorrncia. Ex: gramtica.

TEORIA DA COMPUTAO

Funes recursivas
Denotacional ou funcional: Trata-se de uma funo construda a partir de funes elementares de forma composicional, no sentido em que o algoritmo denotado pela funo pode ser determinado em termos de suas funes componentes. Ex: funes recursivas parciais (de Stephen C. Kleene) e clculo lambda (de Alonzo Church)

TEORIA DA COMPUTAO

Funes recursivas de Kleene (ou funes recursivas parciais)


So funes construdas sobre 3 funes naturais bsicas (funes recursivas primitivas): natural zero visto como uma funo sucessor (de um nmero natural) projeo (na realidade, uma famlia de funes, pois depende do n de componentes, bem como de qual componente deseja-se projetar) juntamente com as seguintes operaes: substituio composicional (generaliza o conceito usual de composio de funes)

TEORIA DA COMPUTAO

Funes recursivas de Kleene (ou funes recursivas parciais)


recurso (definio de uma funo em termos dela mesma) minimizao (busca, em um tempo finito, o menor valor para o qual uma certa condio ocorre) constituindo uma forma compacta e natural para definir muitas funes e suficientemente poderosa para descrever toda funo intuitivamente computvel.

TEORIA DA COMPUTAO

Definio por induo de funes recursivas


Quando voc aprendeu a operao de exponenciao pela primeira vez provavelmente foi da forma: xn= x . x . . x (n vezes) Essa forma bem simples de entender. Mais tarde voc aprendeu uma definio prpria por induo: x0= 1 xn+1= xn . x

TEORIA DA COMPUTAO

Definio por induo de funes recursivas


Na sua forma mais simples, a definio de uma funo f por induo a partir de uma outra funo g da forma f(0) = m f(n + 1) = g(f(n))
Para
0 1 2

Associe
f(0) = m f(1) = g(m) f(2) = g(f(1)) ...

A partir de agora, consideramos funes que podem ser obtidas usando a induo e a composio, comeando por algumas que so obviamente computveis.

TEORIA DA COMPUTAO

Definio das funes recursivas primitivas


As funes primitivas so incontestavelmente computveis. So elas: Funo constante zero fzero: N N tal que, x N, fzero(x) = 0 Sucessor sucessor: N N tal que, x N, sucessor(x) = x + 1 Projeo proj ki: Nk N tal que (x1, , xk) Nk, proj ki (x1, , xk) = xi para 1 <= i <=k (retorna o i-esimo elemento de uma sequencia de k valores)

Ex: proj33: N3 N (projeo da 3 componente de uma tripla)


proj33(x, y, z) = z

TEORIA DA COMPUTAO

Definio das funes recursivas primitivas


Elas so usadas para definir todas as outras funes recursivas parciais. Todas as funes tratadas sero sempre entre nmeros naturais. Algumas vezes as projees so chamadas funes de seleo. Proj11 chamada de funo identidade e escrita como id(x) = x.

TEORIA DA COMPUTAO

Operaes bsicas
Composio (substituio composicional): Sejam as funes parciais: g: Nk N e f1, f2, ..., fk: Nn N. A funo parcial: h: Nn N a substituio composicional de funes, ou simplesmente substituio de funes, definida a partir de g, f1, f2, ... fk como segue:
h(x1, x2, ..., xn) = g(f1(x1, x2, ..., xn), f2(x1, x2, ..., xn), ... fk(x1, x2, ..., xn))

h dita definida para (x1, x2, ..., xn) se, e somente se: fi(x1, x2, ..., xn) definida para todo i {1,2,..., k} g(f1(x1, x2, ..., xn), f2(x1, x2, ..., xn), ... fk(x1, x2, ..., xn)) definida

TEORIA DA COMPUTAO

Operaes bsicas
Composio (substituio composicional): Exemplos: fum: sucessor(fzero) fdois: sucessor(fum) ftres: adio(fum, fdois)

funo constante um funo constante dois funo constante trs

OBS: Para qualquer nmero natural n a funo constante pode ser definida como a aplicao de n vezes a funo sucessor.

TEORIA DA COMPUTAO

Operaes bsicas
Recurso primitiva Sejam as funes parciais: f: Nn N e g: Nn+2 N. A funo parcial: h: Nn+1 N definida por recurso primitiva a partir de f e g como segue:
h(x1, x2, ..., xn, 0 ) = f (x1, x2, ..., xn) h(x1, x2, ..., xn, y + 1) = g(x1, x2, ..., xn, y, h(x1, x2, ..., xn, y)

A funo parcial h dita definida para (x1, x2, ..., xn, ) se, e somente se: f (x1, x2, ..., xn) definida g(x1, x2, ..., xn, i, h(x1, x2, ..., xn, i) definida para todo i {1,2,..., y}

TEORIA DA COMPUTAO

Operaes bsicas
Recurso primitiva Exemplo: A adio definida usando recurso primitiva: adio(x, 0) = id(x) adio(x, y+1) = proj33(x, y, sucessor(adio(x, y)))
adio(3,2) = proj33(3, 1, sucessor(adio(3, 1))) = sucessor(adio(3, 1)) = sucessor(proj33(3, 0, sucessor(adio(3, 0)))) = sucessor(sucessor(adio(3, 0))) = sucessor(sucessor(3)) = sucessor(4) = 5

TEORIA DA COMPUTAO

Operaes bsicas
Minimizao Seja f:Nn+1N uma funo parcial. A funo parcial: h: NnN fita definida por minimizao de f e tal que, (x1,
x2, ..., xn, y) Nn+1: h(x1, x2, ..., xn) = min{y | f(x1, x2, ..., xn, y) = 0 e, z tal que z < f(x1, x2, ..., xn, z) definida} y,

A funo h, para o valor (x1, x2, ..., xn) definida como o menor natural y tal que f(x1, x2, ..., xn, y) = 0. Adicionalmente, a condio z tal que z < y, f(x1, x2, ..., xn, z) definida garante que possvel determinar, em um tempo finito, se, para qualquer valor z menor do que y, f(x1, x2, ..., xn, z) diferente de zero

TEORIA DA COMPUTAO

Operaes bsicas
Minimizao Exemplo: funo nmero zero. Suponha a funo constante fzero. Seja constZero o n 0 nos naturais (no confundir com a funo constante zero): constZero: 1 N (funo nmero zero constZero(*)= 0) Podemos representar tambm como constZero: N Podemos defin-la por minimizao da seguinte forma: constZero = min{y | fzero(y) = 0}. De fato, o menor natural y tal que fzero(y) = 0 o 0.

TEORIA DA COMPUTAO

Funes recursivas
Funo recursiva total Como o prprio nome indica, funo recursiva total nada mais que uma funo recursiva parcial que total, ou seja, definida para todos os elementos do domnio. Como podemos ver, as seguintes classes de funes so equivalentes: funes recursivas parciais e funes turingcomputveis; funes recursivas totais e funes turing-computveis totais.

TEORIA DA COMPUTAO

Funes recursivas
Operaes limitadas Uma vez que estamos limitados aos nmeros naturais, no podemos ter algumas operaes convencionais como as operaes de subtrao e diviso. A subtrao realizada em sala de aula a subtrao limitada m n = mx{m n, 0} A funo diviso div(m, n):diviso inteira de m por n pode ser realizada convencionando que o resultado nulo quando n = 0.

TEORIA DA COMPUTAO

Funes recursivas
Predicado recursivo primitivo: uma funo recursiva parcial que assume somente os valores 0 e 1. Exemplo: funo ezero: retorna 1 para o argumento 0 e 0, caso contrrio. e_zero(0) = fum e_zero(n+1) = constZero

TEORIA DA COMPUTAO

Funes recursivas
Predicado recursivo primitivo:
Ex: funo maior_ou_igual: maior_ou_igual(m,n) = 1 quando m >= n; e 0 caso contrrio.
maior_ou_igual (m, n) = e_zero(sub(n, m)

Ex: E a funo menor_que(m,n) como seria?


menor_que(m, n) = fum maior_ou_igual(m, n)

OBS: A negao de qualquer predicado recursivo tambm um predicado recursivo.

TEORIA DA COMPUTAO

Funes recursivas
Predicado recursivo primitivo: Resumindo, se f e g so funes recursivas e p um predicado recursivo, todos os trs com o mesmo nmero de argumentos k, ento a funo definida por casos
f(n1, , nk) = g(n1, , nk), se p(n1, , nk); f(n1, , nk) = h(n1, , nk), caso contrrio;

tambm recursiva primitiva, uma vez que pode ser reescrita como:
f(n1, , nk) = p(n1, , nk) x g(n1, , nk) + (1 - p(n1, , nk)) x h(n1, , nk) ;

TEORIA DA COMPUTAO

Referncias
Diverio, T. A.; Menezes, P. B.. Teoria da Computao: Mquinas Universais e Computabilidade. Porto Alegre: Sagra Luzzato, 2000. Carnielli, W. A.; Epstein, R. L.; Computabilidade, funes computveis, lgica e os fundamentos da matemtica. 2.ed. So Paulo: Editora UNESP, 2009.