Você está na página 1de 30

Máquina de Turing Universal

S. C. Coutinho

Máquina de Turing Universal – p. 1/22


Objetivo
Descrever uma máquina de Turing U , capaz de
simular qualquer outra máquina de Turing M . Para
isto a máquina deve conter na fita:
• o conjunto de instruções sobre o comportamento
da máquina a ser simulada;
• o conteúdo da fita da máquina a ser simulada.

Máquina de Turing Universal – p. 2/22


O alfabeto de U
Σ = {., 0, 1, σ, q, X, Y, Z, #, t, a, b}.

Este alfabeto é usado para descrever tanto os estados,


quanto os símbolos da máquina M . Para isso:

• enumeramos, separadamente, os símbolos e os


estados de M ;
• para distinguir símbolos de estados, adicionamos
aos símbolos o prefixo σ e aos estados o prefixo
q;
• representamos as setas → e ← como se fossem
símbolos de M .
Máquina de Turing Universal – p. 3/22
A máquina M
Digamos que, usando a máquina U , desejamos
simular uma máquina M que tem

• n estados e
• um alfabeto com m símbolos.

Os estados e os símbolos de M serão enumerados em


unário na fita de U . Isto é, o número n será
representado por
000 · · · 0 = 0n
uma seqüência de n zeros.
Máquina de Turing Universal – p. 4/22
Codificando símbolos
• Há um total de m símbolos a serem
representados;
• mais dois “extras”, correspondentes a → e ←.
• A primeira casa na representação de cada
símbolo será sempre ocupada por σ.
• ., → e ← serão sempre os três primeiros
símbolos a serem enumerados.
• A representação de um símbolo ocupa no
máximo m + 3 casas. Se menos de m + 3 casas
estiverem sendo ocupadas, as restantes serão
preenchidas por 1’s.
Máquina de Turing Universal – p. 5/22
Exemplos
Por exemplo, o k-ésimo símbolo aparece como
k n−k
σ 000 · · · 0 1
| {z } | {z } · · · 1 = σ0 1
k n−k

Lembrando que

. = σ01m+1
→ = σ02 1m
← = σ03 1m−1

Máquina de Turing Universal – p. 6/22


Codificando estados
• Para cada estado serão alocadas n + 1 casas.
• A primeira casa será preenchida por q.
• As casas seguintes serão preenchidas por k zeros,
se se trata do k-ésimo estado.
• As casas restantes serão completadas por 1’s.

Por exemplo, o k-ésimo estado aparece como


k n−k
q 000 · · · 0 1
| {z } | {z } · · · 1 = q0 1
k n−k

Máquina de Turing Universal – p. 7/22


Codificando transições
A transição
δ(qi , σj ) = (qr , σs )
de M é codificada na fita de U na forma
X q0i 1n−i σ0j 1m+2−j q0r 1n−r σ0s 1m+2−s X

Note que o q0i 1n−i representa na verdade um


segmento de n + 1 casas da fita, e assim por diante.

Máquina de Turing Universal – p. 8/22


A fita padrão de U
Na descrição completa de M com entrada w na fita de
U abaixo, Si denota um segmento de transição, e
sempre aparece entre dois Xs.

. X S1 X ··· St Y Q Z σ u1 # u2 ···

Nesta fita temos que:


De Até Conteúdo do segmento
. Y comportamento de M
Y Z Q é o estado atual de M
Z final w
A # indica a posição atual do cabeçote na fita de M .
Máquina de Turing Universal – p. 9/22
Exemplo
A máquina M tem
Alfabeto: {0, t, .}
Estados: {q0 , q1 , h}
Os símbolos e estados de M são codificados como
abaixo:
estado código símbolo código
q0 q012 . σ014
q1 q02 1 → σ02 13
h q03 ← σ03 12
* * t σ04 1
* * 0 σ05
Máquina de Turing Universal – p. 10/22
Exemplo
Tabela de transição:
estado entrada transições
q0 0 (q1 , t)
t (h, t)
. (q0 , →)
q1 0 (q0 , 0)
t (q0 , →)
. (q1 , →)

A primeira transição é codificada como:


X q012 σ05 q02 1 σ04 1 X
Máquina de Turing Universal – p. 11/22
A linguagem
• M = máquina de Turing M no alfabeto Σ;
• c(M ) ∈ Σ∗ a representação de M na fita de U
(trecho entre o primeiro X e o Z).
Defina:

L = {c(M ) : M é uma máquina


de Turing no alfabeto Σ}.

e também
L0 = {c(M ) : a máquina M aceita c(M )} ⊂ L.

Máquina de Turing Universal – p. 12/22


L0 é recursivamente enumerável
Seja A a máquina de Turing que, tendo como entrada
/wt
produz a saída
/wZw t .
Então:
a máquina A · U aceita L0 .

Se w ∈ Σ∗ não é uma descrição legítima de alguma


máquina de Turing, então wZw é automaticamente
rejeitada por U no momento da checagem inicial da
entrada.

Máquina de Turing Universal – p. 13/22


Pergunta
L0 é uma linguagem recursiva?

Lembrete: Se L0 for recursiva, seu complemento L0


também será.

Máquina de Turing Universal – p. 14/22


Teorema
L0 não é sequer recursivamente enumerável!

Máquina de Turing Universal – p. 15/22


Demonstração
Por contradição, suponha que L0 é aceita por uma
máquina de Turing M no alfabeto Σ.
Logo, o código de M é um elemento de L.
Pergunta:
c(M ) pertence a L0 ?

Máquina de Turing Universal – p. 16/22


Se a resposta fosse SIM
c(M ) ∈ L0 = L(M ).

Máquina de Turing Universal – p. 17/22


Se a resposta fosse SIM
c(M ) ∈ L0 = L(M ).
m
c(M ) ∈ L(M )

Máquina de Turing Universal – p. 17/22


Se a resposta fosse SIM
c(M ) ∈ L0 = L(M ).
m
c(M ) ∈ L(M )

m
c(M ) é aceita por M

Máquina de Turing Universal – p. 17/22


Se a resposta fosse SIM
c(M ) ∈ L0 = L(M ).
m
c(M ) ∈ L(M )

m
c(M ) é aceita por M
m
c(M ) ∈ L0 pela definição de L0

Máquina de Turing Universal – p. 17/22


Se a resposta fosse SIM
c(M ) ∈ L0 = L(M ).
m
c(M ) ∈ L(M )

m
c(M ) é aceita por M
m
c(M ) ∈ L0 pela definição de L0

CONTRADIÇÃO Máquina de Turing Universal – p. 17/22
Se a resposta fosse NÃO
c(M ) ∈
/ L0 = L(M ).

Máquina de Turing Universal – p. 18/22


Se a resposta fosse NÃO
c(M ) ∈
/ L0 = L(M ).
m
c(M ) ∈
/ L(M )

Máquina de Turing Universal – p. 18/22


Se a resposta fosse NÃO
c(M ) ∈
/ L0 = L(M ).
m
c(M ) ∈
/ L(M )
m
c(M ) não é aceita por M

Máquina de Turing Universal – p. 18/22


Se a resposta fosse NÃO
c(M ) ∈
/ L0 = L(M ).
m
c(M ) ∈
/ L(M )
m
c(M ) não é aceita por M
m
c(M ) ∈
/ L0 pela definição de L0

Máquina de Turing Universal – p. 18/22


Se a resposta fosse NÃO
c(M ) ∈
/ L0 = L(M ).
m
c(M ) ∈
/ L(M )
m
c(M ) não é aceita por M
m
c(M ) ∈
/ L0 pela definição de L0

CONTRADIÇÃO
Máquina de Turing Universal – p. 18/22
Conseqüência
O complemento de uma linguagem recursivamente
enumerável não é necessariamente recursivamente
enumerável.

Máquina de Turing Universal – p. 19/22


O problema da parada
Dada uma máquina de Turing M no alfabeto Σ e uma
palavra w ∈ Σ∗ existe uma máquina de Turing P que,
tendo c(M ) · Z · w como entrada decide se M pára
com entrada w?

Máquina de Turing Universal – p. 20/22


NÃO!
• M é uma máquina que aceita L0 ;
• C a máquina que converte
/w t em / c(M )Zw t .

Portanto,
• Se w ∈ L0 então a máquina M pára na entrada w,
de modo que CP pára no estado sim.
• Se w ∈/ L0 , então M não pára com entrada w;
mas neste caso CP também pára, só que no
estado não.
Só que L0 não é recursiva!
Máquina de Turing Universal – p. 21/22
Outros problemas sem solução

• Dadas duas linguagens livres de contexto,


determinar se sua intersecção é livre de contexto.
• Dada uma linguagem livre de contexto,
determinar se é regular.
• Dada uma linguagem livre de contexto,
determinar se é inerentemente ambígüa.

Máquina de Turing Universal – p. 22/22

Você também pode gostar