Computando Funções
com
Máquinas de Turing
1
Uma função
f (w)
Contra-domínio:
Domínio: D
f (w)
w D
tem:
S
f ( w)  S
2
Uma função pode ter vários parâmetros:
Exemplo:
Função de adição
f ( x, y )  x  y
3
Domínio Inteiro
diferentes possíveis representações
Decimal:
5
Binário:
101
Unário:
11111
Vamos preferir a representação unária:
mais fácil de ser manipulada por MTs
4
Definição:
Uma função f é computável se
existe uma Máquina de Turing M tal que:
configuração inicial

w

q0
estado inicial
Para todo
configuração final

f (w) 
qf
estado de aceitação
w D Domínio
5
Em outras palavras other words:
Uma função f é computável se
existe uma máquina de Turing M tal que:

q0 w  q f f ( w)
configuração
inicial
Para todo
configuração
final
w D Domínio
6
Exemplo
A função
f ( x, y )  x  y é computável
x, y
são inteiros
Máquina de Turing:
string de entrada:
x0 y
unário
string de saída:
xy 0
unário
7
x
Início
 1 1

y
1 0 1  1 
q0
estado inicial
O 0 é o delimitador que
separa os dois números
8
y
x
Início
 1 1

1 0 1  1 
q0 estado inicial
x y
Fim
 1 1

1 1 0 
q f estado final
9
símbolo 0 aqui ajuda, quando usamos
o resultado para outras operações
x y
Fim
 1 1

1 1 0 
q f estado final
10
Máquina de Turing para
1 1, R
f ( x, y )  x  y
1 1, R
1 1, L



,
L
0

1
,
R
1
0
,
L
q
q0
q3
q1
2
  , R
q4
11
Exemplo de execução:
x  11 (=2)
y  11 (=2)
Instante 0
y
x
 1 1 0 1 1 
q0
Resultado Final
x y
 1 1 1 1 0 
q4
12
Instante 0
 1 1 0 1 1 
q0
1 1, R
1 1, R
1 1, L



,
L
0

1
,
R
1
0
,
L
q
q0
q3
q1
2
  , R
q4
13
Instante 1
 1 1 0 1 1 
q0
1 1, R
1 1, R
1 1, L



,
L
0

1
,
R
1
0
,
L
q
q0
q3
q1
2
  , R
q4
14
Instante 2
 1 1 0 1 1 
q0
1 1, R
1 1, R
1 1, L



,
L
0

1
,
R
1
0
,
L
q
q0
q3
q1
2
  , R
q4
15
Instante 3
 1 1 1 1 1 
q1
1 1, R
1 1, R
1 1, L



,
L
0

1
,
R
1
0
,
L
q
q0
q3
q1
2
  , R
q4
16
Instante 4
 1 1 1 1 1 
q1
1 1, R
1 1, R
1 1, L



,
L
0

1
,
R
1
0
,
L
q
q0
q3
q1
2
  , R
q4
17
Instante 5
 1 1 1 1 1 
q1
1 1, R
1 1, R
1 1, L



,
L
0

1
,
R
1
0
,
L
q
q0
q3
q1
2
  , R
q4
18
Instante 6
 1 1 1 1 1 
q2
1 1, R
1 1, R
1 1, L



,
L
0

1
,
R
1
0
,
L
q
q0
q3
q1
2
  , R
q4
19
Instante 7
 1 1 1 1 0 
q3
1 1, R
1 1, R
1 1, L



,
L
0

1
,
R
1
0
,
L
q
q0
q3
q1
2
  , R
q4
20
Instante 8
 1 1 1 1 0 
q3
1 1, R
1 1, R
1 1, L



,
L
0

1
,
R
1
0
,
L
q
q0
q3
q1
2
  , R
q4
21
Instante 9
 1 1 1 1 0 
q3
1 1, R
1 1, R
1 1, L



,
L
0

1
,
R
1
0
,
L
q
q0
q3
q1
2
  , R
q4
22
Instante 10  1 1 1 1 0 
q3
1 1, R
1 1, R
1 1, L



,
L
0

1
,
R
1
0
,
L
q
q0
q3
q1
2
  , R
q4
23
Instante 11  1 1 1 1 0 
q3
1 1, R
1 1, R
1 1, L



,
L
0

1
,
R
1
0
,
L
q
q0
q3
q1
2
  , R
q4
24
Instante 12  1 1 1 1 0 
q4
1 1, R
1 1, R
1 1, L



,
L
0

1
,
R
1
0
,
L
q
q0
q3
q1
2
pára & aceita
  , R
q4
25
Outro Exemplo
A função
f ( x)  2 x
x
é computável
inteiro
Máquina de Turing :
string de entrada:
string de saída:
xx
x
unário
unário
26
x
Início
 1 1

1 
q0 estado inicial
2x
Fim
 1 1

1 1 1 
q f estado de aceitação
27
Pseudocódigo da Máquina de Turing para
f ( x)  2 x
• Substitua cada 1 por $
• Repita:
• Encontre o $ mais à dir. e substitua por 1
• Vá para a extremidade direita e escreva 1
Até que não reste nenhum $
28
f ( x)  2 x
Máquina de Turing para
1  $, R
1 1, L
1 1, R
q0   , L q1 $  1, R
  , R
q3
q2
  1, L
29
Início
Exemplo
 1 1 
Fim
 1 1 1 1 
q0
q3
1  $, R
1 1, L
1 1, R
q0   , L q1 $  1, R
  , R
q3
q2
  1, L
30
Outro Exemplo
f ( x, y ) 
A função
é computável
Entrada:
Saída:
1
se
x y
0
se
x y
x0 y
1
ou
0
31
Pseudocódigo da Máquina de Turing :
• Repita
Case um 1 de
Até que todo o
x com um 1 de y
x ou todo o y seja marcado
• Se um 1 de x não está marcado
limpe a fita e escreva 1 ( x 
senão
limpe a fita e escreva 0 ( x 
y)
y)
32
Combinando
Máquinas deTuring
33
Diagrama de bloco
entrada
Máquina
de Turing
saída
34
Exemplo:
x  y se x  y
f ( x, y) 
0
x, y
x, y
Comparador
se x  y
Somador
x y
x y
x  y Limpador
0
35
Download

ftc16