Você está na página 1de 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

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.

Você também pode gostar