• Nenhum resultado encontrado

Teoria da Computação

N/A
N/A
Protected

Academic year: 2021

Share "Teoria da Computação"

Copied!
21
0
0

Texto

(1)

Teoria da Computação

(ENG10395)

Profa. Juliana Pinheiro Campos

E-mail: jupcampos@gmail.com

(2)

TEORIA DA COMPUTAÇÃO

Funções recursivas

Os formalismos usados para especificar algoritmos

podem ser classificados nos seguintes tipos:

• Operacional: define-se uma máquina abstrata

baseada em estados, em instruções primitivas e

na especificação de como cada instrução modifica

cada estado. Ex: MT.

• Axiomático: Associam-se regras às componentes

da linguagem. As regras permitem afirmar o que

será verdadeiro após a ocorrência de cada

cláusula, considerando-se o que era verdadeiro

antes da ocorrência. Ex: gramática.

(3)

TEORIA DA COMPUTAÇÃO

Funções recursivas

• Denotacional ou funcional: Trata-se de uma

função construída a partir de funções elementares

de forma composicional, no sentido em que o

algoritmo denotado pela função pode ser

determinado em termos de suas funções

componentes. Ex: funções recursivas parciais (de

Stephen C. Kleene) e cálculo lambda (de Alonzo

Church)

(4)

TEORIA DA COMPUTAÇÃO

Funções recursivas de Kleene (ou funções

recursivas parciais)

 São funções construídas sobre 3 funções naturais básicas

(funções recursivas primitivas):

• natural zero visto como uma função • sucessor (de um número natural)

• projeção (na realidade, uma família de funções, pois depende do n° de componentes, bem como de qual componente deseja-se projetar)

juntamente com as seguintes operações:

• substituição composicional (generaliza o conceito usual de composição de funções)

(5)

TEORIA DA COMPUTAÇÃO

Funções recursivas de Kleene (ou funções

recursivas parciais)

• recursão (definição de uma função em termos

dela mesma)

• minimização (busca, em um tempo finito, o menor

valor para o qual uma certa condição ocorre)

constituindo uma forma compacta e natural para definir

muitas funções e suficientemente poderosa para

(6)

TEORIA DA COMPUTAÇÃO

Definição por indução de funções recursivas

Quando você aprendeu a operação de exponenciação

pela primeira vez provavelmente foi da forma:

x

n

= x . x . … . x (n vezes)

Essa forma é bem simples de entender. Mais tarde você

aprendeu uma definição própria por indução:

x

0

= 1

x

n+1

= x

n

. x

(7)

TEORIA DA COMPUTAÇÃO

Definição por indução de funções recursivas

 Na sua forma mais simples, a definição de uma função f

por indução a partir de uma outra função g é da forma f(0) = m

f(n + 1) = g(f(n))

A partir de agora, consideramos funções que podem ser

obtidas usando a indução e a composição, começando por algumas que são obviamente computáveis.

Para Associe

0 f(0) = m

1 f(1) = g(m)

(8)

TEORIA DA COMPUTAÇÃO

Definição das funções recursivas primitivas

As funções primitivas são incontestavelmente

computáveis. São elas:

• Função constante zero

fzero: N → N tal que, ∀ x Є N, fzero(x) = 0 • Sucessor

sucessor: N → N tal que, ∀ x Є N, sucessor(x) = x + 1 • Projeção

proj ki: Nk → N tal que ∀ (x

1, …, 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 (projeção da 3ª componente de uma tripla)

(9)

TEORIA DA COMPUTAÇÃO

Definição das funções recursivas primitivas

Elas são usadas para definir todas as outras funções

recursivas parciais.

Todas as funções tratadas serão sempre entre

números naturais.

Algumas vezes as projeções são chamadas funções

de seleção.

Proj1

1

é chamada de função identidade e escrita como

id(x) = x.

(10)

TEORIA DA COMPUTAÇÃO

Operações básicas

Composição (substituição composicional):

Sejam as funções parciais: g: Nk → N e f

1, f2, ..., fk: Nn →N. A

função parcial: h: Nn → N é a substituição composicional de

funções, ou simplesmente substituição de funções, 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)) é

(11)

TEORIA DA COMPUTAÇÃO

Operações básicas

Composição (substituição composicional):

Exemplos:

fum: sucessor(fzero) função constante um

fdois: sucessor(fum) função constante dois

ftres: adição(fum, fdois) função constante três

OBS: Para qualquer número natural n a função constante

pode ser definida como a aplicação de n vezes a função sucessor.

(12)

TEORIA DA COMPUTAÇÃO

Operações básicas

Recursão primitiva

Sejam as funções parciais: f: Nn →N e g: Nn+2 → N.

A função parcial: h: Nn+1 → N é definida por recursão 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 função 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 Є

(13)

TEORIA DA COMPUTAÇÃO

Operações básicas

Recursão primitiva

Exemplo: A adição é definida usando recursão primitiva: adição(x, 0) = id(x)

adição(x, y+1) = proj33(x, y, sucessor(adição(x, y)))

adição(3,2) = proj33(3, 1, sucessor(adição(3, 1))) = sucessor(adição(3, 1)) = sucessor(proj33(3, 0, sucessor(adição(3, 0)))) = sucessor(sucessor(adição(3, 0))) = sucessor(sucessor(3)) = sucessor(4) = 5

(14)

TEORIA DA COMPUTAÇÃO

Operações básicas

Minimização

Seja f:Nn+1→N uma função parcial. A função parcial: h: Nn→N é fita definida por minimização de f e é tal que, ∀(x

1, x2, ..., xn, y) Є Nn+1:

h(x1, x2, ..., xn) = min{y | f(x1, x2, ..., xn, y) = 0 e, ∀z tal que z < y, f(x1, x2, ..., xn, z) é definida}

A função h, para o valor (x1, x2, ..., xn) é definida como o menor natural y tal que f(x1, x2, ..., xn, y) = 0. Adicionalmente, a condição “∀z tal que z < y, f(x1, x2, ..., xn, z) é definida” garante que é

possível determinar, em um tempo finito, se, para qualquer valor z menor do que y, f(x1, x2, ..., xn, z) é diferente de zero

(15)

TEORIA DA COMPUTAÇÃO

Operações básicas

Minimização

Exemplo: função número zero. Suponha a função constante fzero. Seja constZero o nº 0 nos naturais (não confundir com a função constante zero):

constZero: 1 → N (função número zero constZero(*)= 0)

Podemos representar também como constZero: → N

Podemos definí-la por minimização da seguinte forma: constZero = min{y | fzero(y) = 0}.

(16)

TEORIA DA COMPUTAÇÃO

Funções recursivas

Função recursiva total

Como o próprio nome indica, função recursiva total nada

mais é que uma função recursiva parcial que é total, ou seja, definida para todos os elementos do domínio.

Como podemos ver, as seguintes classes de funções são equivalentes:

 funções recursivas parciais e funções turing-computáveis;

 funções recursivas totais e funções turing-computáveis totais.

(17)

TEORIA DA COMPUTAÇÃO

Funções recursivas

Operações limitadas

Uma vez que estamos limitados aos números naturais, não podemos ter algumas operações convencionais como as operações de subtração e divisão.

A subtração realizada em sala de aula é a subtração limitada m – n = máx{m – n, 0}

A função divisão div(m, n):divisão inteira de m por n pode ser realizada convencionando que o resultado é nulo

(18)

TEORIA DA COMPUTAÇÃO

Funções recursivas

Predicado recursivo primitivo: é uma função

recursiva parcial que assume somente os valores 0 e

1.

Exemplo: função e

zero

: retorna 1 para o argumento 0 e

0, caso contrário.

e_zero(0) = f

um

(19)

TEORIA DA COMPUTAÇÃO

Funções recursivas

Predicado recursivo primitivo:

Ex: função maior_ou_igual: maior_ou_igual(m,n) = 1 quando m >= n; e 0 caso contrário.

maior_ou_igual (m, n) = e_zero(sub(n, m)

Ex: E a função menor_que(m,n) como seria?

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

OBS: A negação de qualquer predicado recursivo também é um predicado recursivo.

(20)

TEORIA DA COMPUTAÇÃO

Funções recursivas

Predicado recursivo primitivo:

Resumindo, se f e g são funções recursivas e p é um

predicado recursivo, todos os três com o mesmo

número de argumentos k, então a função definida por

casos

f(n1, …, nk) = g(n1, …, nk), se p(n1, …, nk); f(n1, …, nk) = h(n1, …, nk), caso contrário;

também é 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) ;

(21)

TEORIA DA COMPUTAÇÃO

Referências

Diverio, T. A.; Menezes, P. B.. Teoria da Computação:

Máquinas Universais e Computabilidade. Porto

Alegre: Sagra Luzzato, 2000.

Carnielli, W. A.; Epstein, R. L.; Computabilidade,

funções computáveis, lógica e os fundamentos da

matemática. 2.ed. São Paulo: Editora UNESP, 2009.

Referências

Documentos relacionados

Para contornar os dois problemas, Chomsky (1977) propõe uma solução que procura contemplar os dois problemas: há movimento do objeto do verbo infinitivo, mas o que é objeto

Contudo, a pequena absorção ocorrida na região UVC foi suficiente para produzir um FPS de valor interessante na concentração do extrato em estudo, porém faz-se necessária

Diante do exposto, acredita-se que o conceito de educação do campo pode ser elevado e de que é possível construir um projeto de escola rural para o povo transformando-os em

Em relação à ordem da abordagem metodológica presente nos artigos científicos analisados, pôde-se identificar que de um total de 29 artigos, 14 realizaram pesquisas de

O capítulo III tem como título: “ Estudo do perfil transcricional de genes indutores e inibidores da apoptose e validação de genes de referência em embriões de

Circuibras através de engenharia reversa para garantir compatibilidade com o software de CAM. 5.1.4 Enviar um arquivo de Desenho mecânico, contendo os dimensionais e as tolerâncias

Local Endereço &#34;Telefone do posto&#34; Dias Funcionamento Horário

Com o aumento da potência ativa na carga há aumento no valor da corrente e, consequen- temente, da potência fornecida pelo filtro a fim de se obter melhores valores para os