Escolar Documentos
Profissional Documentos
Cultura Documentos
5 FuncoesRecursivas
5 FuncoesRecursivas
Teoria da Computao
(ENG10395)
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
TEORIA DA COMPUTAO
TEORIA DA COMPUTAO
TEORIA DA COMPUTAO
Associe
f(0) = m
f(1) = g(m)
TEORIA DA COMPUTAO
TEORIA DA COMPUTAO
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:
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
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:
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)
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;
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.