Você está na página 1de 41

Funções Numéricas

Prof. Erick Galani Maziero


erick.maziero@dcc.ufla.br
Departamento de Ciências da Computação
Universidade Federal de Lavras
Máquina de Turing (M)
Formalmente, fornece apenas duas saídas:

Aceito Rejeitado
Mas… e o conteúdo da fita?
Pode ser utilizado como saída, assim como no cálculo
de uma função numérica f…

f
X Y

X e Y consistem em strings do alfabeto de M


f
Definição X Y

Seja 𝐌 = (𝐐, 𝜮, 𝜞, 𝜹, 𝒒𝟎 , 𝒒𝒇 ) uma Máquina de Turing


que computa a função unária 𝒇 ∶ 𝜮∗ → 𝜮∗ se
1. Há apenas uma transição de 𝑞1 , da forma 𝛿 𝑞1 , 𝐵 =
𝑞4 , 𝐵, 𝑅
2. Não há transições da forma 𝛿 𝑞4 , 𝑥 = 𝑞1 , 𝑥, 𝑑 para
qualquer 𝑞4 ∈ 𝑄, 𝑥 ∈ 𝛤 𝑒 𝑑 ∈ 𝐿, 𝑅
3. Não há transições da forma 𝛿 𝑞= , 𝐵
4. A computação com entrada 𝑢 pára com configuração
𝑞= 𝐵𝑣𝐵 para qualquer 𝑓 𝑢 = 𝑣
5. A computação continue indefinidamente para
qualquer 𝑓 𝑢 ↑
f
Turing computável X Y

Uma função f é Turing computável se existe uma M


que compute a mesma. Isto é, consome a entrada, a
partir de 𝑞B e atinge o estado 𝑞= .
• 𝑞B é utilizado apenas uma vez
• quando a computação termina, o valor da função
deve estar escrito no início da fita, com a cabeça de
leitura posicionada no início
• o resto da fita deve estar em branco
f
Turing computável X Y

Uma função f é Turing computável se existe uma M


que compute a mesma. Isto é, consome a entrada, a
partir de 𝑞B e atinge o estado 𝑞= .
• 𝑞B é utilizado apenas uma vez
• quando a computação termina, o valor da função
deve estar escrito no início da fita, com a cabeça de
leitura posicionada no início
• o resto da fita deve estar em branco
Exemplo de M para calcular f
𝜆 𝑠𝑒 𝑢 𝑐𝑜𝑛𝑡é𝑚 𝑎
• 𝑓 𝑢 = C
↑ 𝑎𝑜 𝑐𝑜𝑛𝑡𝑟á𝑟𝑖𝑜

L
Exemplo de M para calcular f
𝜆 𝑠𝑒 𝑢 𝑐𝑜𝑛𝑡é𝑚 𝑎
• 𝑓 𝑢 = C 𝑓 é indefinada se 𝑢
↑ 𝑎𝑜 𝑐𝑜𝑛𝑡𝑟á𝑟𝑖𝑜 não contém um 𝑎

L
Exemplo de M para calcular f
𝜆 𝑠𝑒 𝑢 𝑐𝑜𝑛𝑡é𝑚 𝑎
• 𝑓 𝑢 = C E se a entrada fosse
↑ 𝑎𝑜 𝑐𝑜𝑛𝑡𝑟á𝑟𝑖𝑜 𝐵𝑏𝐵𝑏𝐵𝑎𝐵 ?

“Garbage in,
garbage out”
Argumentos
𝑓(𝑎𝑏𝑎, 𝑏𝑏𝑏, 𝑏𝑎𝑏)

𝑓(𝑎𝑎, 𝜆, 𝑏𝑏)
Exemplo 2 Entrada:
𝐵𝑢𝐵𝑣𝐵

E a saída?
Exemplo 2 Entrada:
𝐵𝑢𝐵𝑣𝐵

𝑓 𝑢, 𝑣 = 𝑢𝑣
Computação numérica
• Uma computação numérica tem a forma:
𝑓: 𝑁× 𝑁× 𝑁×U U U×𝑁×→ 𝑁

• Por exemplo, a função 𝑠𝑞: 𝑁 → 𝑁 definida por


𝑠𝑞 𝑛 = 𝑛V
Representação unária
• Um número natural 𝑛 será representado por uma
string de 1’s da seguinte forma

𝑁 = 1XYZ

Representação
n
unária
0 1
1 11
2 111
... ...
n 1n+1
Representação unária
• 𝑓(2,0,3) = 4
Funções numéricas básicas
• São funções simples, mas que comporão funções
mais complexas

Importante lembrar bem o funcionamento dessas


máquinas
Sucessora

𝑠 𝑛 =𝑛+1
Zero
z 𝑛 =0
Vazio (empty)

𝑒 𝑛 = ↑
Projeção (a)
𝑝Z =0

(Z)
𝑝Z =𝑓 𝑛 =𝑛
(a)
𝑝4 =𝑓 𝑛 =𝑛
Exemplo: Soma

a 𝑛, 𝑚 = 1XYZ + 1cYZ = 1XYcYZ


Exemplo: Predecessor

Máquina que faz


o decremento
0 𝑠𝑒 𝑛 = 0
𝑝𝑟𝑒𝑑 𝑛 = C
𝑛 − 1 𝑐𝑎𝑠𝑜 𝑐𝑜𝑛𝑡𝑟á𝑟𝑖𝑜
Operações sequenciais
Uma máquina após a outra...
Exemplo:
Exemplo:
Macros
• Terminologia utilizada em assembly
• Não se assume que o início de uma macro seja no
início da fita, mas sempre deve iniciar lendo um
branco (𝐵)
• Serão indicas pela alteração na configuração da fita
• Sublinhado indica posição da cabeça de leitura/escrita
MR (move right)
MLk (move left)
FR (find right) e FL (find left)
Ek (erase)
CPYk e CPYk,i (copy)
T (translate)
INT (interchange)
BRN (branch)
Exemplo
(a)
• Uso de macros para a função 𝑝4
Exercício
• Use as macros apresentadas para computar a
função 𝑓 𝑛 = 3𝑛
Exercício
• Uso de macros para computar a função 𝑓 𝑛 = 3𝑛
Outra macro para função 𝑧(𝑛)
Exercício
• Construa uma MTN para computar a multiplicação
de dois números naturais
Exercício
• Construa uma MTN para computar a multiplicação
de dois números naturais
Referências
• Sudkamp, T. A. (2006). Languages and machines: an
introduction to the theory of computer science. 3rd
Edition.
• Capítulo 9: Turing Computable Functions
• 9.1, 9.2, 9.4, 9.5