O documento discute computação numérica utilizando máquinas de Turing. Primeiramente, apresenta como máquinas de Turing podem ser usadas para calcular funções numéricas, representando números na fita através de sequências de 1s. Em seguida, mostra exemplos de funções numéricas como sucessor, zero e adição, e como elas podem ser computadas por máquinas de Turing. Por fim, discute como operações sequenciais de funções podem ser representadas por uma única máquina de Turing através da composição de suas partes
5. Máquina de Turing
Reconhecimento de Linguagens
MT = (Q, Σ, Γ, δ, q0)
q0 qs
qn
q1
q2
B a c c b B B B B B B… …
x Não aceita
✓ Aceita
Entrada:
6. Máquina de Turing
Cálculo de Funções
MT = (Q, Σ, Γ, δ, q0, qf)
q0 qf
Fim da
computação
B a c c b B B B
Entrada:
M
7. Máquina de Turing
Cálculo de Funções
MT = (Q, Σ, Γ, δ, q0, qf)
q0 qf
Fim da
computação
B a c c b B B B
Entrada:
B a a B B B B B
Resultado:
M
8. Máquina de Turing
Cálculo de Funções (Turing computáveis)
MT = (Q, Σ, Γ, δ, q0, qf)
q0 qf
Fim da
computação
B a c c b B B B
Entrada:
B B B B B B B B
Resultado:
q1 q2
(B, B, ➞)
(B, B, ➞)
(b, b, ➞)
(b, b, ➞)
(a, a, ➞)
(a, a, ➞) (B, B, ➞)
(b, B, ➞)
(a, B, ➞)
10. Máquina de Turing
Cálculo de Funções
MT = (Q, Σ, Γ, δ, q0, qf) computa f: ∑* ⟶ ∑*
q0 qfq1 q2
(B, B, ➞)
(B, B, ➞)
(b, b, ➞)
(b, b, ➞)
(a, a, ➞)
(a, a, ➞) (B, B, ➞)
(b, B, ➞)
(a, B, ➞)
• Apenas uma transição partindo do estado q0: δ(q0,B) = [qi, B, ➞];
11. Máquina de Turing
Cálculo de Funções
MT = (Q, Σ, Γ, δ, q0, qf) computa f: ∑* ⟶ ∑*
q0 qfq1 q2
(B, B, ➞)
(B, B, ➞)
(b, b, ➞)
(b, b, ➞)
(a, a, ➞)
(a, a, ➞) (B, B, ➞)
(b, B, ➞)
(a, B, ➞)
• Apenas uma transição partindo do estado q0: δ(q0,B) = [qi, B, ➞];
• Não há transições que retornam para q0;
12. Máquina de Turing
Cálculo de Funções
MT = (Q, Σ, Γ, δ, q0, qf) computa f: ∑* ⟶ ∑*
q0 qfq1 q2
(B, B, ➞)
(B, B, ➞)
(b, b, ➞)
(b, b, ➞)
(a, a, ➞)
(a, a, ➞) (B, B, ➞)
(b, B, ➞)
(a, B, ➞)
• Apenas uma transição partindo do estado q0: δ(q0,B) = [qi, B, ➞];
• Não há transições que retornam para q0;
• Não há transições na forma δ(qf,B);
13. Máquina de Turing
Cálculo de Funções
MT = (Q, Σ, Γ, δ, q0, qf) computa f: ∑* ⟶ ∑*
q0 qfq1 q2
(B, B, ➞)
(B, B, ➞)
(b, b, ➞)
(b, b, ➞)
(a, a, ➞)
(a, a, ➞) (B, B, ➞)
(b, B, ➞)
(a, B, ➞)
• Apenas uma transição partindo do estado q0: δ(q0,B) = [qi, B, ➞];
• Não há transições que retornam para q0;
• Não há transições na forma δ(qf,B);
• A MT com entrada u para com configuração q0
BvB se f(u) = v;
14. Máquina de Turing
Cálculo de Funções
MT = (Q, Σ, Γ, δ, q0, qf) computa f: ∑* ⟶ ∑*
q0 qfq1 q2
(B, B, ➞)
(B, B, ➞)
(b, b, ➞)
(b, b, ➞)
(a, a, ➞)
(a, a, ➞) (B, B, ➞)
(b, B, ➞)
(a, B, ➞)
• Apenas uma transição partindo do estado q0: δ(q0,B) = [qi, B, ➞];
• Não há transições que retornam para q0;
• Não há transições na forma δ(qf,B);
• A MT com entrada u para com configuração q0
BvB se f(u) = v;
• A MT não pára se f(u) for indefinido.
16. Máquina de Turing
Lendo argumentos e escrevendo resultado
B a b B B B B B B B B B b a B B
• f(ab) = ba
Entrada Resultado
17. Máquina de Turing
Lendo argumentos e escrevendo resultado
B a b B B B B B B B B B b a B B
• f(ab) = ba
Entrada Resultado
B a b B c c B b a c B B a b B B
• f(ab, cc, bac) = ab
Entrada Resultado
18. Máquina de Turing
Lendo argumentos e escrevendo resultado
B a b B B B B B B B B B b a B B
• f(ab) = ba
Entrada Resultado
B a b B c c B b a c B B a b B B
• f(ab, cc, bac) = ab
Entrada Resultado
B a b B B b a c B B B B B B B B
• f(ab, λ, bac) = λ
Entrada Resultado
19. Cálculo de Funções
Exemplo: concatenando palavras
q0 q1
(B, B, ➞)
q2
q5
q3
q4
q6
qf
(b, b, ➞)
(a, a, ➞)
(B, B, ➞)
(a, B, ←) (B, a, ➞)
(b, B, ←) (B, b, ➞)
(B, B, ➞)
(B, B, ←)
(B, B, ←)
(b, b, ←)
(a, a, ←)
B a b B b a B
Entrada Resultado
B a b b a B B
34. Representação
Como representar números na fita
B 1 1 1 B B B B B B B B 1 1 B B
• f(2) = 1
Entrada Resultado
B 1 1 1 1 B 1 B B B B B 1 1 1 B
• f(3, 0) = 2
Entrada Resultado
36. Cálculo Funções Numéricas
Zero
q0 q1
(B, B, ➞)
qf
(1, 1, ➞)
(B, B, ←)
B 1 1 1 B B B
Entrada Resultado
B 1 B B B B B
Z:
• z(n) = 0
q2
(1, B, ←)
(B, B, ➞) (B, 1, ←)
q3
37. Cálculo Funções Numéricas
Adição
q0 q1
(B, B, ➞)
qf
(1, 1, ➞)
(B, 1, ➞)
Entrada Resultado
B 1 1 1 1 B B
A:
• a(n, m) = n + m
q2
(1, 1, ➞)
(B, B, ←) (1, B, ←)
q3
(1, B, ←)
q4
(1, 1, ←)
B 1 1 B 1 1 1 B
38. Cálculo Funções Numéricas
Decremento
q0 q1
(B, B, ➞)
qf
(1, 1, ➞)
Entrada Resultado
B 1 1 B B B B
D:
• a(n) = n - 1
q2
(1, 1, ➞)
(1, 1, ➞)
(B, B, ←)
q3
(B, B, ←)
q4
(1, 1, ←)
B 1 1 1 B B B B
(1, B, ←)
47. Operações Sequenciais
Macros
*
f(n) = s( z(n) )
Z * S *
• Nem todas as computações irão iniciar com a cabeça de leitura na
posição 0 da fita;
• Toda computação deve iniciar lendo o símbolo branco (B) da fita.
F:
52. Macros
Exemplo
q0 q1
(B, B, ➞)
qf
(1, 1, ➞)
(B, B, ➞)
MR2:
(1, 1, ➞)
MRk B n1 B n2 B … B nk B
Move Right
B n1 B n2 B … B nk B
53. Macros
Exemplo
q0 q1
(B, B, ➞)
qf
(1, 1, ➞)
(B, B, ➞)
MR2:
(1, 1, ➞)
MRk B n1 B n2 B … B nk B
Move Right
B n1 B n2 B … B nk B
q0 q1
(B, B, ➞)
qf
(1, 1, ➞)
(B, B, ➞)
MRk:
(1, 1, ➞)
(B, B, ➞)
qk-1
(1, 1, ➞)
…
(B, B, ➞)
54. Macros
MRk B n1 B n2 B … B nk B
Move Right
B n1 B n2 B … B nk B
55. Macros
MRk B n1 B n2 B … B nk B
Move Right
B n1 B n2 B … B nk B
MLk B n1 B n2 B … B nk B
Move Left
B n1 B n2 B … B nk B
56. Macros
MRk B n1 B n2 B … B nk B
Move Right
B n1 B n2 B … B nk B
MLk B n1 B n2 B … B nk B
Move Left
B n1 B n2 B … B nk B
FR B B B n1 B n2 B B
Find Right
B B B n1 B n2 B B
57. Macros
MRk B n1 B n2 B … B nk B
Move Right
B n1 B n2 B … B nk B
MLk B n1 B n2 B … B nk B
Move Left
B n1 B n2 B … B nk B
FR B B B n1 B n2 B B
Find Right
B B B n1 B n2 B B
FL
Find Left
B BB n1 B n2 B B B BB n1 B n2 B B
58. Macros
MRk B n1 B n2 B … B nk B
Move Right
B n1 B n2 B … B nk B
MLk B n1 B n2 B … B nk B
Move Left
B n1 B n2 B … B nk B
FR B B B n1 B n2 B B
Find Right
B B B n1 B n2 B B
FL
Find Left
B BB n1 B n2 B B B BB n1 B n2 B B
Ek
Erase
B B B B B … B B BB n1 B n2 B … B nk B
59. Macros
CPYk
Copy
B n1 B n2 B … B nk B B B B B … B B B
B n1 B n2 B … B nk B n1 B n2 B … B nk B
60. Macros
CPYk
Copy
B n1 B n2 B … B nk B B B B B … B B B
B n1 B n2 B … B nk B n1 B n2 B … B nk B
CPYk, i
Copy
B n1 B … B nk B B nk+i… B B B … B B B
B n1 B … B nk B B nk+i… B n1 B … B nk B
61. Macros
CPYk
Copy
B n1 B n2 B … B nk B B B B B … B B B
B n1 B n2 B … B nk B n1 B n2 B … B nk B
CPYk, i
Copy
B n1 B … B nk B B nk+i… B B B … B B B
B n1 B … B nk B B nk+i… B n1 B … B nk B
T B B B n1 B B B B
Translate
B BBn1 B B B B
67. Arquitetura
B v1 B v2 B … B vk B vk+1 B vn B … B B B… B …
Variáveis de
entrada
Variáveis
locais
Registradores e
espaço de trabalho
home
68. B v1 B v2 B … B vk B vk+1 B vn B … B B B… B …
Variáveis de entrada Variáveis locais Registradores e espaço de trabalho
Início
69. INIT v Inicializa variável local
B v1 B v2 B … B vk B vk+1 B vn B … B B B… B …
Variáveis de entrada Variáveis locais Registradores e espaço de trabalho
Início
70. INIT v Inicializa variável local
HOME t Move a cabeça de leitura para home quando há t variáveis alocadas.
B v1 B v2 B … B vk B vk+1 B vn B … B B B… B …
Variáveis de entrada Variáveis locais Registradores e espaço de trabalho
Início
71. INIT v Inicializa variável local
HOME t Move a cabeça de leitura para home quando há t variáveis alocadas.
LOAD v Carrega a variável
B v1 B v2 B … B vk B vk+1 B vn B … B B B… B …
Variáveis de entrada Variáveis locais Registradores e espaço de trabalho
Início
72. INIT v Inicializa variável local
HOME t Move a cabeça de leitura para home quando há t variáveis alocadas.
LOAD v Carrega a variável
STOR v Armazena o valor do registrador
B v1 B v2 B … B vk B vk+1 B vn B … B B B… B …
Variáveis de entrada Variáveis locais Registradores e espaço de trabalho
Início
73. INIT v Inicializa variável local
HOME t Move a cabeça de leitura para home quando há t variáveis alocadas.
LOAD v Carrega a variável
STOR v Armazena o valor do registrador
RETURN v Limpa todas as variáveis deixando o valor de
B v1 B v2 B … B vk B vk+1 B vn B … B B B… B …
Variáveis de entrada Variáveis locais Registradores e espaço de trabalho
Início
74. INIT v Inicializa variável local
HOME t Move a cabeça de leitura para home quando há t variáveis alocadas.
LOAD v Carrega a variável
STOR v Armazena o valor do registrador
RETURN v Limpa todas as variáveis deixando o valor de
CLEAR t Limpa o valor do registrador t
B v1 B v2 B … B vk B vk+1 B vn B … B B B… B …
Variáveis de entrada Variáveis locais Registradores e espaço de trabalho
Início
75. INIT v Inicializa variável local
HOME t Move a cabeça de leitura para home quando há t variáveis alocadas.
LOAD v Carrega a variável
STOR v Armazena o valor do registrador
RETURN v Limpa todas as variáveis deixando o valor de
CLEAR t Limpa o valor do registrador t
BRN L, t Vai para a instrução L se o valor do registrador t é 0.
B v1 B v2 B … B vk B vk+1 B vn B … B B B… B …
Variáveis de entrada Variáveis locais Registradores e espaço de trabalho
Início
76. INIT v Inicializa variável local
HOME t Move a cabeça de leitura para home quando há t variáveis alocadas.
LOAD v Carrega a variável
STOR v Armazena o valor do registrador
RETURN v Limpa todas as variáveis deixando o valor de
CLEAR t Limpa o valor do registrador t
BRN L, t Vai para a instrução L se o valor do registrador t é 0.
GOTO L Executa a instrução L.
B v1 B v2 B … B vk B vk+1 B vn B … B B B… B …
Variáveis de entrada Variáveis locais Registradores e espaço de trabalho
Início
77. INIT v Inicializa variável local
HOME t Move a cabeça de leitura para home quando há t variáveis alocadas.
LOAD v Carrega a variável
STOR v Armazena o valor do registrador
RETURN v Limpa todas as variáveis deixando o valor de
CLEAR t Limpa o valor do registrador t
BRN L, t Vai para a instrução L se o valor do registrador t é 0.
GOTO L Executa a instrução L.
NOP “No operation” (utilizada em conjunto com a instruçõ GOTO)
B v1 B v2 B … B vk B vk+1 B vn B … B B B… B …
Variáveis de entrada Variáveis locais Registradores e espaço de trabalho
Início
78. INIT v Inicializa variável local
HOME t Move a cabeça de leitura para home quando há t variáveis alocadas.
LOAD v Carrega a variável
STOR v Armazena o valor do registrador
RETURN v Limpa todas as variáveis deixando o valor de
CLEAR t Limpa o valor do registrador t
BRN L, t Vai para a instrução L se o valor do registrador t é 0.
GOTO L Executa a instrução L.
NOP “No operation” (utilizada em conjunto com a instruçõ GOTO)
INC t Incrementa o valor do registrador t.
B v1 B v2 B … B vk B vk+1 B vn B … B B B… B …
Variáveis de entrada Variáveis locais Registradores e espaço de trabalho
Início
79. INIT v Inicializa variável local
HOME t Move a cabeça de leitura para home quando há t variáveis alocadas.
LOAD v Carrega a variável
STOR v Armazena o valor do registrador
RETURN v Limpa todas as variáveis deixando o valor de
CLEAR t Limpa o valor do registrador t
BRN L, t Vai para a instrução L se o valor do registrador t é 0.
GOTO L Executa a instrução L.
NOP “No operation” (utilizada em conjunto com a instruçõ GOTO)
INC t Incrementa o valor do registrador t.
DEC t Decrementa o valor do registrador t.
B v1 B v2 B … B vk B vk+1 B vn B … B B B… B …
Variáveis de entrada Variáveis locais Registradores e espaço de trabalho
Início
80. INIT v Inicializa variável local
HOME t Move a cabeça de leitura para home quando há t variáveis alocadas.
LOAD v Carrega a variável
STOR v Armazena o valor do registrador
RETURN v Limpa todas as variáveis deixando o valor de
CLEAR t Limpa o valor do registrador t
BRN L, t Vai para a instrução L se o valor do registrador t é 0.
GOTO L Executa a instrução L.
NOP “No operation” (utilizada em conjunto com a instruçõ GOTO)
INC t Incrementa o valor do registrador t.
DEC t Decrementa o valor do registrador t.
ZERO t Substitui o valor do registrador t por 0.
B v1 B v2 B … B vk B vk+1 B vn B … B B B… B …
Variáveis de entrada Variáveis locais Registradores e espaço de trabalho
Início
81. Instruções
B v1 B v2 B … B vk B vk+1 B vn B … B B B… B …
Variáveis de entrada Variáveis locais Registradores e espaço de trabalho
home
82. Instruções
B v1 B v2 B … B vk B vk+1 B vn B … B B B… B …
Variáveis de entrada Variáveis locais Registradores e espaço de trabalho
home
HOME t
MR t
83. Instruções
B v1 B v2 B … B vk B vk+1 B vn B … B B B… B …
Variáveis de entrada Variáveis locais Registradores e espaço de trabalho
home
INIT vi
MR i - 1
ZR
ML i - 1
HOME t
MR t
84. Instruções
B v1 B v2 B … B vk B vk+1 B vn B … B B B… B …
Variáveis de entrada Variáveis locais Registradores e espaço de trabalho
home
INIT vi
MR i - 1
ZR
ML i - 1
HOME t
MR t
STOR vi, t
MR t - 2
INT
ML1
INT
MR1
INT
MR 1
ER 1
ML t - 1
( )
( )
t + n - i - 1
t + n - i - 1
85. Instruções
B v1 B v2 B … B vk B vk+1 B vn B … B B B… B …
Variáveis de entrada Variáveis locais Registradores e espaço de trabalho
home
INIT vi
MR i - 1
ZR
ML i - 1
HOME t
MR t
STOR vi, t
MR t - 2
INT
ML1
INT
MR1
INT
MR 1
ER 1
ML t - 1
( )
( )
t + n - i - 1
t + n - i - 1
LOAD vi, t
ML n - i + 1
CPY 1, n - i + 1 + t
MR n - i + 1
86. Exemplo
INIT v2
INIT v3
HOME 3
LOAD v1,1
STOR v2,1
L1 LOAD v2,1
BRN L2,1
LOAD v1,1
INC
STOR v1,1
LOAD v2,1
DEC
STOR v2,1
GOTO L1
L2 LOAD v1,1
INC
STOR v1,1
RETURN v1
Início
• f(n) = 2n + 1
88. Referências
• SUDKAMP, T. A. Languages and Machines: An
Introduction to the Theory of Computer Science
(3rd Edition). Boston, MA, USA: Addison-
Wesley Longman Publishing Co., Inc., 2005.
ISBN 0321322215.