Licenciatura em
Ciencias da Computacao
COMPUTABILIDADE
1. Maquinas de Turing
Ano letivo 2011/2012
Jose Carlos Costa
Departamento de Matematica e Aplicacoes
Universidade do Minho
Definicao de maquina de Turing
Definicao 1.1 Uma maquina de Turing e um septeto T = (Q, A, T, δ, i, f, ∆):
1) Q e um conjunto finito nao vazio, dito o conjunto de estados de T;
2) A e um alfabeto, chamado o alfabeto (de entrada) de T;
3) T ⊇ A e um alfabeto, dito o alfabeto da fita de T, tal que Q ∩ T = ∅. O
conjunto T \ A e chamado o alfabeto auxiliar de T;
4) δ : Q × T → Q × T × {E, C, D} e uma funcao parcial, dita a funcao
transicao de T, indefinida em (f, t) para cada t ∈ T .
Movimentos: E-esquerda; D-direita; C-“centro” (ausencia de movimento);
5) i ∈ Q, dito o estado inicial de T;
6) f ∈ Q, chamado o estado final de T;
7) ∆ ∈ T \ A e um sımbolo auxiliar, designado o sımbolo branco.
1
Exemplo 1.2 O septeto T = ({1, 2, 3}, {a, b}, {a, b, ∆}, δ, 1, 3, ∆) onde δ e a
funcao parcial de {1, 2, 3} × {a, b} em {1, 2, 3} × {a, b} × {E, C, D} tal que
δ(1, ∆) = (2, ∆, D) δ(2, a) = (2, a,D)
δ(2, b) = (2, b, D) δ(2, ∆) = (3, ∆, C)
e uma maquina de Turing com: tres estados (1, 2 e 3); alfabeto de entrada
{a, b}; ∆ como unico sımbolo auxiliar; 1 e 3 como estados inicial e final. A
funcao transicao δ pode ser representada pela tabela
δ a b ∆
1 (2, ∆, D)
2 (2, a,D) (2, b, D) (3, ∆, C)
Na tabela omite-se a linha referente ao estado final pois, por definicao,
numa maquina de Turing nao existem transicoes a sair do estado final.
2
Fita e cursor de maquina de Turing
Uma maquina de Turing T = (Q, A, T, δ, i, f, ∆) e dotada de uma:
1) fita dividida em celulas, infinita a direita e com uma celula inicial a esquerda.
Cada celula tem uma letra de T e em cada instante o numero de celulas nao
brancas (ou seja celulas onde nao esta escrito o sımbolo branco ∆) e finito;
2) cabeca ou cursor (de leitura e escrita) posicionada em cada momento numa
determinada celula da fita, que permite ler a letra da celula e eventualmente
substituir essa letra por outra.
Por exemplo, a figura a ∆ b b a ∆ ∆ ∆ · · ·↑q
representa a fita de uma maquina de Turing em que nas 1a¯ e 5a
¯ celulas esta
escrita a letra a, nas 3a¯ e 4a
¯ celulas esta escrito b e todas as outras estao em
3
branco. A seta indica que a cabeca esta posicionada na 3a¯ celula e a letra q
por baixo da seta indica o estado atual da maquina de Turing.
A cabeca pode efetuar movimentos determinados pela funcao transicao. Assim,
a igualdade
δ(q, t) = (q′, t′, m)
significa que, quando a maquina esta no estado q com a cabeca posicionada
numa celula onde esta escrita a letra t:
• a maquina transita para o estado q′,
• substitui a letra t pela letra t′ na fita e
• a cabeca efetua o movimento m (ou seja, move-se para a esquerda, para a
direita ou nao se move, conforme m seja E, D ou C).
4
Exemplo 1.3 Seja T = ({1, 2, 3}, {a, b}, {a, b, ∆}, δ, 1, 3, ∆) a maquina de
Turing cuja funcao transicao δ e dada pela tabela
δ a b ∆
1 (2, ∆, D)
2 (2, a,D) (2, a,D) (3, ∆, C)
Num dado momento, uma situacao possıvel de fita e de cursor e, por exemplo,
∆ a a a b ∆ ∆ · · ·↑2
que indica que a maquina esta posicionada no estado 2 e o cursor esta posi-
cionado na 4a¯ celula onde esta escrita a letra a. Dado que δ(2, a) = (2, a,D),
no momento seguinte, a situacao de fita e de cursor passara a ser
∆ a a a b ∆ ∆ · · ·↑2
ou seja, apenas mudou a posicao do cursor que se situa agora na 5a¯ celula.
5
Dado que δ(2, b) = (2, a,D), a situacao posterior seria entao
∆ a a a a ∆ ∆ · · ·
↑2
Note-se que neste passo houve uma alteracao da letra na 5a¯ celula da fita
mantendo-se ainda a maquina no estado 2. No proximo passo, usando a
igualdade δ(2, ∆) = (3, ∆, C) obtem-se
∆ a a a a ∆ ∆ · · ·
↑3
Como a maquina atingiu o estado 3, que e o estado final da maquina, nao e
possıvel efetuar mais passos.
6
Representacao grafica de maquinas de Turing
A representacao de maquinas de Turing e feita de forma analoga aos automatos
finitos. A unica diferenca e na representacao das transicoes:
δ(q, t) = (q′, t′, m) e representada por q����
q′����
-t/t′, m
que tem o seguinte significado: estando a maquina no estado q e lendo a letra t
na fita, a maquina transita para o estado q′, substitui a letra t por t′ e a cabeca
efetua o movimento m.
Por exemplo, o diagrama
1����
- 2����
3��������
-∆/∆, D �
a/a,D
b/b, D
-∆/∆, C
representa a maquina de Turing do Exemplo 1.2. Esta maquina nao e ainda
fundamentalmente diferente de um automato finito pois nao substitui letras na
fita por outras diferentes e, com excepcao da transicao para o estado final, o unico
7
movimento que faz e para a direita. Veremos mais tarde que, de facto, esta maquina
reconhece uma linguagem regular, ou seja, reconhece uma linguagem reconhecida
por automato finito. Um outro exemplo ja mais “sofisticado” de maquina de
Turing e apresentado a seguir.
Exemplo 1.4 O diagrama
1����
- 2����
3����
4����
5����
6��������
-∆/∆, D !!!!!!!!1a/∆, D aaaaaaaaq
∆/∆, E�
a/a,D
b/b, D
!!!!!!!!) b/∆, E
∆/∆, D
aaaaaaaai
�
a/a,E
b/b, E
?
∆/∆, C
descreve uma MT cujo alfabeto de entrada contem as letras a e b. Como
veremos, esta MT reconhece a linguagem nao regular {anbn | n ∈ N0}.
8
Configuracoes de uma maquina de Turing
Seja T = (Q, A, T, δ, i, f, ∆) uma maquina de Turing. Uma configuracao de T e
um par ordenado (q, utv) onde q ∈ Q, u, v ∈ T ∗, t ∈ T e:
1) q e o estado atual da maquina;
2) a palavra utv esta escrita na fita o mais a esquerda possıvel (i.e., a 1a¯ letra de
utv ocupa a 1a¯ celula) e todas as celulas apos v estao preenchidas com ∆;
3) a cabeca esta posicionada na celula ocupada pela letra t.
Note-se que uma configuracao representa a situacao da fita e do cursor da MT
num dado momento. Por esse facto, a configuracao (q, utv) e tambem notada, por
vezes, para cada n ∈ N, por (q, utv∆n).
9
Por exemplo, a configuracao (2, a∆bba) representa a situacao
a ∆ b b a ∆ ∆ ∆ · · ·
↑2
Esta configuracao pode ser tambem representada, por exemplo, por (2, a∆bba∆∆).
Para uma palavra v ∈ T ∗, utilizaremos a notacao (q, uv), onde q ∈ Q e u ∈ T ∗,
para representar a configuracao:
• (q, utv′) se t ∈ T e v′ ∈ T ∗ sao tais que v = tv′;
• (q, u∆) se v = ε.
Assim, no exemplo acima a configuracao (2, a∆bba) pode ser representada tambem
por (2, a∆bba), ou por (2, a∆bba∆), etc.
10
Computacoes numa maquina de Turing
Sejam c1 = (q1, u1t1v1) e c2 = (q2, u2t2v2) duas configuracoes de T. Diz-se que:
• c2 e uma computacao direta a partir de c1, e escreve-se c1 −→T
c2, se T passa
da configuracao c1 para a configuracao c2 num unico passo.
Assim, no Exemplo 1.3, a configuracao (2, ∆aaab) e uma computacao direta a
partir de (2, ∆aaab) e poderıamos escrever (2, ∆aaab) −→T
(2, ∆aaab).
• c2 e uma computacao a partir de c1, e escreve-se c1∗−→T
c2, se T passa da
configuracao c1 para a configuracao c2 em zero ou mais passos;
ou seja, se c1 = c2 ou c1 = c′1 −→T
c′2 −→T
c′3 · · · c′n−1−→T
c′n = c2 para con-
figuracoes c′1, c′2, . . . , c
′n.
Quando nao houver ambiguidade em relacao a maquina de Turing T que se esta
a considerar, simplificaremos as notacoes de −→T
e de ∗−→T
omitindo a letra T.
11
Exemplo 1.5 Seja T a maquina de Turing
1����
- 2����
3��������
-∆/∆, D �
a/b, D
b/a, D
-∆/∆, C
do Exemplo 1.2. A partir da configuracao (1, ∆aab) podem ser efetuadas em
T, sucessivamente, as seguintes computacoes diretas
(1, ∆aab) −→ (2, ∆aab) −→ (2, ∆bab) −→
(2, ∆bbb) −→ (2, ∆bba∆) −→ (3, ∆bba∆).
Portanto (1, ∆aab) ∗−→ (3, ∆bba∆) e uma computacao em T.
12
Linguagem aceite por uma maquina de Turing
Seja T = (Q, A, T, δ, i, f, ∆) uma maquina de Turing. Uma configuracao
c = (q, utv)
de T diz-se uma configuracao de:
• paragem se δ nao esta definida em (q, t) ou, u = ε e δ(q, t) = (q′, t′, E) para
alguns q′ ∈ Q e t′ ∈ T ;
• aceitacao se q = f ;
• rejeicao se c e uma configuracao de paragem e q 6= f ;
• ciclo se a partir de c nao e possıvel computar uma configuracao de paragem.
Diz-se ainda que:
• (i, ∆w) e a configuracao inicial associada a uma palavra w ∈ A∗;
13
• uma palavra w ∈ A∗ e aceite por T se existe uma computacao de uma con-
figuracao de aceitacao a partir da configuracao inicial associada a w;
ou seja, se existe uma computacao
(i, ∆w) ∗−→T
(f, utv)
para uma certa configuracao de aceitacao (f, utv).
• a linguagem aceite ou reconhecida por T, representada por L(T), e o conjunto
das palavras aceites por T.
Note-se que uma palavra w podera nao ser aceite por uma de duas razoes: partindo
da configuracao inicial associada a w,
� a maquina de Turing para numa configuracao de rejeicao;
� a maquina de Turing nao para (ou seja, a configuracao inicial associada a w e
uma configuracao de ciclo);
14
Exemplo 1.6 Mostraremos neste exemplo como se pode construir uma maquina
de Turing que reconhece a linguagem regular
L = A∗abaA∗
sobre o alfabeto A = {a, b}. Um automato finito determinista que reconhece
L e
1����
- 2����
3����
4���������
b
-a �
a
Y
b
-b -a �
a, b
Entao, como se pode verificar sem grandes dificuldades, a seguinte maquina
de Turing T reconhece L:
0����
- 1����
2����
3����
4����
5��������
-∆/∆, D �
b/b, D
-a/a,D �
a/a,D
Y
b/b, D
-b/b, D
-a/a,D �
a/a,D
b/b, D
-∆/∆, C
15
Verifiquemos, por exemplo, que T aceita a palavra aaba. Em T podem ser
efetuadas as seguintes computacoes diretas
(0, ∆aaba) −→ (1, ∆aaba) −→ (2, ∆aaba) −→ (2, ∆aaba) −→(3, ∆aaba) −→ (4, ∆aaba∆) −→ (5, ∆aaba∆).
Dado que 5 e o estado final de T, a configuracao (5, ∆aaba∆) e uma con-
figuracao de aceitacao. Logo a palavra aaba e aceite por T.
Pelo contrario, T nao aceita a palavra abba. De facto,
(0, ∆abba) −→ (1, ∆abba) −→ (2, ∆abba) −→(3, ∆abba) −→ (1, ∆abba) −→ (2, ∆abba∆).
Ou seja, atingiu-se uma configuracao de rejeicao pois a maquina parou num
estado que nao e o final e, portanto, a palavra abba nao e aceite por T.
16
A construcao do exemplo anterior pode ser generalizada para todas as linguagens
regulares, o que mostra que a classe de linguagens reconhecidas por maquinas de
Turing contem a classe das linguagens reconhecidas por automatos finitos.
Teorema 1.7 Toda a linguagem regular e reconhecida por uma maquina de
Turing.
No entanto, nem todas as linguagens reconhecidas por maquinas de Turing sao
regulares. Tal e o caso, por exemplo, da linguagem reconhecida pela maquina de
Turing do Exemplo 1.4. Apresentaremos de seguida outra destas linguagens.
Exemplo 1.8 Seja L = {u ∈ A∗ | uI = u} a linguagem nao regular das
palavras capicua sobre o alfabeto A = {a, b}. A seguinte maquina de Turing
T reconhece a linguagem L
17
0����
- 1����
2����
3����
4����
5����
6����
7��������
-∆/∆, D
a/∆, D
��
��
��
-∆/∆, E�
a/a,D
b/b, D
a/∆, E@
@@
@@R
�∆/∆, D
b/∆, D@
@@
@@R
-
∆/∆, E�
a/a,D
b/b, D
b/∆, E
��
��
��Y
a/a,E
b/b, E
~
∆/∆, D
>
∆/∆, D
�
∆/∆, C
A maquina T aceita a palavra abba, como o mostra a seguinte computacao
(0, ∆abba) −→ (1, ∆abba) −→ (2, ∆∆bba) ∗−→ (2, ∆∆bba∆) −→ (3, ∆∆bba) −→(4, ∆∆bb∆) ∗−→ (4, ∆∆bb∆) −→ (1, ∆∆bb∆) −→ (5, ∆∆∆b∆) −→ (5, ∆∆∆b∆)
−→ (6, ∆∆∆b∆) −→ (4, ∆∆∆∆∆) −→ (1, ∆∆∆∆∆) −→ (7, ∆∆∆∆∆).
Analogamente, pode-se verificar que T aceita aba e nao aceita aaba.
18
Note-se que a estrategia desta maquina T para verificar se u ∈ L, para
uma dada palavra u ∈ A∗, e a de iterar o seguinte procedimento: procurar as
letras nas extremidades da palavra em analise e verificar se sao iguais. Se o
forem, estas letras sao substituıdas pelo sımbolo branco e este procedimento
repete-se. A maquina parara por uma de tres razoes:
1) em algum passo do processo as letras inicial e final da palavra em analise
sao diferentes. Neste caso a palavra u (que nao e uma capicua) nao e
aceite.
2) em algum passo do processo a palavra em analise e a palavra vazia. Neste
caso a maquina atinge o estado final (a partir do estado 1) e, portanto, a
palavra u (que e uma capicua de comprimento par) e aceite.
3) em algum passo do processo a palavra em analise e uma letra. Neste caso
a maquina atinge o estado final (a partir dos estados 3 ou 6) e, portanto,
a palavra u (que e uma capicua de comprimento ımpar) e aceite.
19
Composicao sequencial de maquinas de Turing
Sejam T1 = (Q1, A, T, δ1, i1, f1, ∆) e T2 = (Q2, A, T, δ2, i2, f2, ∆) duas maquinas
de Turing com Q1 ∩Q2 = ∅. A composicao sequencial de T1 com T2 e a MT
T1T2 = (Q1 ∪Q2, A, T, δ, i1, f2, ∆)
cuja funcao transicao δ e definida por
i) ∀q ∈ Q1 ∀t ∈ T, se δ1(q, t) esta definido, entao δ(q, t) = δ1(q, t);
ii) ∀t ∈ T, δ(f1, t) = (i2, t, C);
iii) ∀q ∈ Q2 ∀t ∈ T, se δ2(q, t) esta definido, entao δ(q, t) = δ2(q, t).
Informalmente, a maquina de Turing T1T2:
i) atua como a maquina T1 quando esta posicionada num estado de Q1 \ {f1};
ii) passa para i2 sem alterar a situacao da fita quando esta posicionada em f1;
iii) atua como a maquina T2 quando esta posicionada num estado de Q2.
20
Na representacao de maquinas de Turing serao usadas as seguinte notacoes:
1) T1 −→ T2 para representar a composicao sequencial de T1 com T2.
2) T1a/a,C−−−→ T2 (onde a ∈ T ) para representar a composicao sequencial condi-
cional de T1 com T2: isto e, a composicao sequencial em que a condicao ii) e
substituıda pela condicao ii’) δ(f1, a) = (i2, a, C).
3) q����−→ T2 e q����a/a,C−−−→ T2 (onde q ∈ Q1 e a ∈ T ) para representar a maquina
de Turing que se comporta como T1 ate atingir o estado q e depois comporta-se
como T2 (no segundo caso o cursor tem que ler um a).
4) T1 −→ q����e T1
a/a,C−−−→ q����(onde q ∈ Q2 e a ∈ T ) com um significado
simetrico em relacao ao do ponto anterior.
As maquinas de Turing que apresentamos de seguida sao frequentemente utilizadas
para construir novas MTs, usando composicao sequencial. As computacoes que
realizam sao uteis para fazerem parte de computacoes mais complexas.
21
Exemplo 1.9 (Copia de palavras) Construamos uma maquina de Turing
Tcopiar = (Q, A, T, δ, i, f, ∆)
capaz de, ao partir da configuracao inicial associada a uma palavra u, efetuar
uma copia de u na fita, colocando um sımbolo branco entre o original e a
copia, ficando a cabeca posicionada na 1a¯ celula. Ou seja, Tcopiar devera ser
capaz de efetuar a seguinte computacao
(i, ∆u) ∗−→ (f, ∆u∆u)
onde u ∈ A∗ e uma palavra qualquer sobre o alfabeto de entrada.
Admitamos que o alfabeto de entrada e A = {a, b} (para alfabetos mais
genericos constroem-se maquinas de Turing analogas) e que α e β sao letras
do alfabeto auxiliar (que vao estar associadas a a e b respetivamente). A
estrategia da maquina, indicada abaixo, e a de copiar uma letra de u de cada
vez, substituindo as letras ja copiadas pelo correspondente sımbolo auxiliar.
22
0����
- 1����
2����
3����
4����
6����
7����
5����
8����
9��������
-∆/∆, D �
������7
a/α,D
-∆/∆, D�
a/a,Db/b, D
�
a/a,Db/b, D
SSSSSSSw
∆/a,E
�
α/α, Dβ/β, D
ee
ee
eew
b/β, D
-∆/∆, D
�
a/a,Db/b, D
�
a/a,Db/b, D
%%
%%
%%7
∆/b, E
Y
a/a,Eb/b, E
�
a/a,Eb/b, E
��
��
���
∆/∆, E
�∆/∆, C
�
α/a,Eβ/b, E
�∆/∆, E
Por exemplo, em Tcopiar pode efetuar-se a seguinte computacao
(0, ∆ba) −→ (1, ∆ba) −→ (6, ∆βa) −→ (6, ∆βa∆) −→ (7, ∆βa∆∆) −→ (4, ∆βa∆b)
−→ (5, ∆βa∆b) −→ (5, ∆βa∆b) −→ (1, ∆βa∆b) −→ (2, ∆βα∆b) −→ (3, ∆βα∆b)
−→ (3, ∆βα∆b∆) −→ (4, ∆βα∆ba) −→ (4, ∆βα∆ba) −→ (5, ∆βα∆ba) −→ (1, ∆βα∆ba)
−→ (8, ∆βα∆ba) −→ (8, ∆βa∆ba) −→ (8, ∆ba∆ba) −→ (9, ∆ba∆ba).
23
Exemplo 1.10 (Apagar letras) Construamos uma maquina de Turing
Tapagar = (Q, A, T, δ, i, f, ∆)
que apague a letra que o cursor esta a ler, ou seja, que faca a computacao
(i, utv) ∗−→ (f, uv)
em que u ∈ (A ∪ {∆})∗, t ∈ A ∪ {∆} e v ∈ A∗.
Admitamos que A = {a, b} e que o unico sımbolo auxiliar e ∆. A maquina
comeca por substituir a letra t a apagar pelo sımbolo branco, desloca o cursor
para a ultima letra de v e move sucessivamente cada letra de v uma celula
para a esquerda.
24
0����
- 1����
2����
3����
5��������
4����
-
a/∆, Db/∆, D∆/∆, D
-∆/∆, E�
a/a,Db/b, D
!!!!!!!!!!1a/∆, E
�
a/a,E
aaaaaaaaaaq
∆/a, C
aaaaaaaaaaqb/∆, E !!!!!!!!!!1
∆/b, C
�
b/b, E
b/a, E
�
a/b, E�
∆/∆, C
Como exercıcio calcule, por exemplo, a sequencia de computacoes em Tapagar
a partir de (0, ∆babbaab).
25
Calculo de funcoes com maquinas de Turing
Seja T = (Q, A, T, δ, i, f, ∆) uma maquina de Turing e seja
g : A∗ → T ∗
uma funcao parcial. Diz-se que T calcula g quando, para cada u ∈ A∗:
• se g esta definida para u, entao pode ser efetuada a computacao
(i, ∆u) ∗−→T
(f, ∆g(u)).
• se g nao esta definida para u, entao nao e possıvel computar uma configuracao
de aceitacao a partir da configuracao inicial associada a u.
26
Mais geralmente, para um natural k e uma funcao parcial em k variaveis
g : (A∗)k → T ∗,
diz-se que T calcula g quando, para cada u1, . . . , uk ∈ A∗:
• se g(u1, . . . , uk) esta definida, entao pode ser efetuada a computacao
(i, ∆u1∆ · · ·∆uk)∗−→T
(f, ∆g(u1, . . . , uk)).
• se g(u1, . . . , uk) nao esta definida, entao nao e possıvel computar uma con-
figuracao de aceitacao a partir da configuracao (i, ∆u1∆ · · ·∆uk).
Sejam k ∈ N, A e T alfabetos com A ⊆ T e g : (A∗)k → T ∗ uma funcao
parcial em k variaveis. Diz-se que g e uma funcao Turing-computavel se existe
uma maquina de Turing, de alfabeto de entrada A e alfabeto de fita contendo T ,
que calcula g.
27
Exemplo 1.11 (Concatenacao de palavras) Seja A = {a, b} e seja
conc : A∗ × A∗ → A∗
a funcao de concatenacao de duas palavras de A∗. Uma MT, Tconc, que calcula
esta funcao e obtida utilizando a maquina Tapagar, que apaga a letra da celula
apontada pelo cursor. Pretende-se que Tconc realize a computacao
(i, ∆u∆v) ∗−→ (f, ∆uv)
para cada u, v ∈ A∗. A ideia e que a maquina Tconc, apresentada abaixo,
0����
- 1����
Tapagar 2����
3��������
-∆/∆, D �
a/a,Db/b, D
-∆/∆, C
-
a/a,Eb/b, E
∆/∆, E �
a/a,Eb/b, E
-∆/∆, C
apague o sımbolo branco que separa as palavras u e v. Logo a funcao de
concatenacao sobre o alfabeto {a, b} e Turing-computavel. Em geral, prova-se
que a funcao de concatenacao sobre qualquer alfabeto e Turing-computavel.
28
Funcoes numericas podem tambem ser descritas por maquinas de Turing desde
que se consiga representar os numeros atraves de palavras. Para funcoes en-
volvendo o conjunto N0 dos inteiros nao negativos, utilizaremos a representacao
“unaria” no alfabeto {1}, em que
n ∈ N0 e representado pela palavra 1n = 1 · · · 1︸ ︷︷ ︸n vezes
.
Seja T = (Q, {1}, T, δ, i, f, ∆) uma maquina de Turing e seja g : N k0 → N0
uma funcao parcial. Diz-se que T calcula g quando, para n1, . . . , nk ∈ N0:
• se g(n1, . . . , nk) esta definida, entao pode ser efetuada a computacao
(i, ∆1n1∆ · · ·∆1nk) ∗−→T
(f, ∆1g(n1,...,nk)).
• se g(n1, . . . , nk) nao esta definida, entao nao e possıvel computar uma con-
figuracao de aceitacao a partir da configuracao (i, ∆1n1∆ · · ·∆1nk).
29
Exemplo 1.12 (Adicao em N0) Consideremos a funcao
+ : N0 × N0 → N0
de adicao em N0. A seguinte maquina de Turing calcula +
0����
- 1����
Tapagar 2����
3��������
-∆/∆, D �
1/1, D
-∆/∆, C
-
1/1, E∆/∆, E �
1/1, E
-∆/∆, C
onde Tapagar e a maquina de Turing que apaga a letra lida pelo cursor.
30
Seja L uma linguagem sobre um alfabeto A. A funcao caracterıstica de L e a
funcao χL : A∗ → {0, 1} definida, para cada u ∈ A∗, por
χL(u) =
1 se u ∈ L
0 se u 6∈ L.
Exemplo 1.13 Sejam A = {a, b} e L = a∗b. A seguinte maquina de Turing
calcula χL.
0����
- 1����
- 2����
3����
4����
7��������
5����
6����
-∆/∆, D �
a/a,Db/b, D
-∆/∆, E �
��
��
��>b/∆, E
-∆/∆, D�
a/∆, E
ZZ
ZZ
ZZ
Z~
∆/1, E
ZZ
ZZ
ZZ
Z~
a/∆, E
-
∆/∆, D�
a/∆, Eb/∆, E
��
��
��
�>
∆/0, E
7∆/∆, D
�
b/∆, E
31
A afirmacao seguinte, enunciada pela primeira vez por Alonzo Church na decada
de 1930 e conhecida como tese de Church ou tese de Church-Turing, embora
nao seja um enunciado matematico preciso e, por isso, nao possa ser provado e
geralmente aceite como valido pois nao ha qualquer evidencia de que esteja errado.
Tese de Church Qualquer funcao que pode ser calculada por um processo
algorıtmico, por pessoas ou computadores, e Turing-computavel. 2
Variantes de maquinas de Turing
O modelo de maquina de Turing que temos vindo a estudar admite varias alter-
nativas possıveis. Consideraremos de seguida duas dessas alternativas.
32
1) Maquinas de Turing com mais do que uma fita
Uma maquina de Turing com ` fitas e um septeto T = (Q, A, T, δ, i, f, ∆)
similar a uma MT usual, mas com ` fitas independentes, cada uma com o seu
cursor, em que a funcao transicao δ e uma funcao parcial
δ : Q× T ` → Q× T ` × {E, C, D}`.
Uma configuracao de T e um (` + 1)-tuplo ordenado
(q, u1v1, . . . , u`v`)
onde q ∈ Q e ui, vi ∈ T ∗, em que:
• q e o estado atual de T;
• para cada i ∈ {1, . . . , `} a (i + 1)-esima componente representa a situacao da
i-esima fita e do cursor correspondente.
33
A configuracao inicial associada a uma palavra u ∈ A∗ e
(i, ∆u, ∆, . . . , ∆).
As nocoes de computacao direta, computacao, configuracao de pa-
ragem (resp. de aceitacao, de rejeicao, de ciclo) sao similares as nocoes
correspondentes para maquinas de Turing usuais.
Uma palavra u ∈ A∗ e aceite por T se
(i, ∆u, ∆, . . . , ∆) ∗−→T
(f, v1w1, . . . , v`w`)
para alguns v1, . . . , v`, w1, . . . , w` ∈ T ∗, ou seja, se existe uma computacao de
uma configuracao de aceitacao a partir da configuracao inicial de u.
A linguagem aceite ou reconhecida por T, e o conjunto das palavras L ⊆ A∗
formado pelas palavras aceites por T.
34
Exemplo 1.14 Seja A = {a, b} e seja T a seguinte MT sobre A com 2 fitas,
0����
- 1����
2����
3����
4����
5��������
-(∆, ∆)/(∆, ∆), (D, D)
-(∆, ∆)/(∆, ∆), (E, E)�
(a, ∆)/(a, a), (D, D)
(b, ∆)/(b, b), (D, D)
�
(b, a)/(b, a), (C, E)
(b, b)/(b, b), (C, E)
?
(b, ∆)/(b, ∆), (C, D)
�
(b, a)/(b, a), (E, D)
�
(a, b)/(a, b), (E, D)�
(a, b)/(a, b), (E, D)
�
(∆, ∆)/(∆, ∆), (C, C)
A linguagem aceite por T e {anbn | n ∈ N}. Por exemplo, em T pode
efetuar-se a seguinte computacao
(0, ∆aabb, ∆) −→ (1, ∆aabb, ∆∆) ∗−→ (1, ∆aabb∆, ∆aabb∆) −→ (2, ∆aabb, ∆aabb)
∗−→ (2, ∆aabb, ∆aabb) −→ (3, ∆aabb, ∆aabb) −→ (3, ∆aabb, ∆aabb) −→ (3, ∆aabb, ∆aabb)
−→ (4, ∆aabb, ∆aabb) −→ (4, ∆aabb, ∆aabb∆) −→ (5, ∆aabb, ∆aabb∆).
35
Sendo k ∈ N e g : (A∗)k → T ∗ uma funcao parcial em k variaveis, diz-se que T
calcula g quando, para cada u1, . . . , uk ∈ A∗:
• se g(u1, . . . , uk) esta definida, entao pode ser efetuada a computacao
(i, ∆u1∆u2∆ · · ·∆uk, ∆, . . . , ∆) ∗−→T
(f, ∆g(u1, . . . , uk), v2w2, . . . , v`w`)
para alguns v2, . . . , v`, w2, . . . , w` ∈ T ∗.
• se g(u1, . . . , uk) nao esta definida, entao nao e possıvel computar uma con-
figuracao de aceitacao a partir da configuracao (i, ∆u1∆ · · ·∆uk, ∆, . . . , ∆).
Teorema 1.15 As maquinas de Turing usuais e as maquinas de Turing com
` fitas reconhecem as mesmas linguagens e calculam as mesmas funcoes. 2
36
2) Maquinas de Turing nao-deterministas
Uma maquina de Turing nao-determinista e um septeto
T = (Q, A, T, δ, i, f, ∆)
definido de forma similar a uma maquina de Turing usual com excepcao da funcao
transicao δ que e da forma
δ : Q× T → P(Q× T × {E, C, D}).
As nocoes de computacao, de aceitacao de palavras e linguagens, e de
calculo de funcoes sao similares as correspondentes nocoes para as maquinas
de Turing usuais.
37
A diferenca entre as maquinas de Turing nao-deterministas e as maquinas de
Turing usuais e que a partir de uma dada configuracao:
• nas maquinas de Turing usuais so pode ser efetuada, no maximo, uma com-
putacao direta;
• nas maquinas de Turing nao-deterministas podem ser efetuadas, eventual-
mente, varias computacoes diretas.
Teorema 1.16 As maquinas de Turing usuais e as maquinas de Turing
nao-deterministas reconhecem as mesmas linguagens e calculam as mesmas
funcoes. 2
38
Linguagens recursivas e linguagens recursivamente enu-
meraveis
Seja L ⊆ A∗ uma linguagem e seja T uma maquina de Turing com alfabeto de
entrada A. Diz-se que:
• T aceita ou reconhece L se L = L(T);
• T decide L se a funcao caracterıstica χL : A∗ → {0, 1} e calculada por T.
Uma linguagem L diz-se:
• recursivamente enumeravel se existe uma maquina de Turing que re-
conhece L;
• recursiva se existe uma maquina de Turing que decide L.
39
Proposicao 1.17 Uma linguagem L ⊆ A∗ e recursiva se e so se existe uma
maquina de Turing T (dita um algoritmo) que reconhece L e tal que a con-
figuracao inicial de qualquer palavra u ∈ L e uma configuracao de rejeicao.
Demonstracao: (⇒) Se L e recursiva, entao existe uma MT que decide L. A
partir desta MT e facil construir uma outra que reconheca L.
(⇐) A partir da configuracao inicial associada a uma palavra u ∈ A∗ atinge-se
sempre uma configuracao de paragem. Esta configuracao e de aceitacao se u ∈ L
e e de rejeicao se u 6∈ L. Modifica-se entao a maquina de Turing T de forma que:
• a partir de uma configuracao de aceitacao em T se escreva 1 na 2a¯ celula da
fita, deixando todas as outras celulas em branco e o cursor na 1a¯ celula;
• a partir de uma configuracao de rejeicao em T se escreva 0 na 2a¯ celula da fita,
deixando todas as outras celulas em branco e o cursor na 1a¯ celula;
Esta nova MT calcula χL, a funcao caracterıstica de L, donde L e recursiva. 240
Corolario 1.18 Todas as linguagens recursivas sao recursivamente
enumeraveis. 2
Sao validas ainda as seguintes propriedades.
Proposicao 1.19 Sejam L e K linguagens sobre um alfabeto A.
i) Se L e K sao recursivas (resp. recursivamente enumeraveis), entao L ∪K
e L ∩K sao recursivas (resp. recursivamente enumeraveis).
ii) Se L e recursiva, entao L e recursiva.
Demonstracao: A ideia em i) e considerar maquinas de Turing TL e TK que
decidam (resp. aceitem) L e K, respetivamente, e construir uma maquina de
Turing com conjunto de estados QL × QK (onde QL e QK sao os conjuntos de
estados de TL e TK respetivamente) e com duas fitas, que executa em simultaneo
segundo TL e TK.
A alınea ii) e imediata. 2
41
Teorema [Post, 1943] Uma linguagem L ⊆ A∗ e recursiva se e so se L e L
sao recursivamente enumeraveis. 2
Seja A um alfabeto e sejam RE(A) o conjunto das linguagens recursivamente
enumeraveis sobre A e T (A) o conjunto das maquinas de Turing de alfabeto de
entrada A. O conjunto T (A) e numeravel. Logo RE(A) tambem e numeravel pois
cada linguagem de RE(A) e reconhecida por uma maquina de Turing de T (A).
O teorema seguinte mostra que as linguagens recursivamente enumeraveis for-
mam uma ınfima parte do conjunto de todas as linguagens.
Teorema 1.20 Existem linguagens nao recursivamente enumeraveis sobre
qualquer alfabeto A. Mais precisamente, o conjunto das linguagens nao re-
cursivamente enumeraveis sobre A tem o cardinal do contınuo.
Demonstracao: Basta notar que o conjunto RE(A) e numeravel, enquanto que
P(A∗), o conjunto de todas as linguagens sobre A, tem o cardinal do contınuo. 2
42
Maquinas de Turing Universais
Convencao Assume-se que existem dois conjuntos numeraveis
Q = {q0, q1, q2, . . .} e S = {s0, s1, s2, . . .}
tais que, para cada maquina de Turing,
T = (Q, A, T, δ, i, f, ∆)
se tem:
• Q ⊆ Q, com f = q0;
• T ⊆ S, com ∆ = s0.
Diz-se que T e normalizada se todos os estados e todos os sımbolos nao
brancos de T pertencem a alguma transicao. Note-se que cada maquina de
Turing e equivalente a alguma maquina de Turing normalizada.
43
Definicao 1.21 (funcao codificadora) Define-se uma funcao injetiva
c : TN −→ {x, y}∗
T 7−→ c(T)
que associa a cada maquina de Turing T (normalizada) uma palavra c(T)
sobre o alfabeto {x, y}, chamada “o codigo de T”, da seguinte forma:
1) a cada qi ∈ Q, si ∈ S e movimentos C, E, D e associada uma palavra sobre
{x} da seguinte forma:
c′(si) = xi+1
c′(qi) = xi+1
c′(C) = x
c′(E) = x2
c′(D) = x3.
Note-se que, em particular,
c′(∆) = c′(s0) = x e c′(f ) = c′(q0) = x.
44
2) cada transicao e de uma maquina de Turing, descrita por
δ(q, t) = (q′, t′, m)
e codificada pela palavra
c′(e) = c′(q)yc′(t)yc′(q′)yc′(t′)yc′(m)y.
3) cada maquina de Turing T e codificada pela palavra
c(T) = c′(qi)yc′(e1)yc′(e2) · · · yc′(ek)y,
onde qi e o estado inicial de T e e1, e2, . . . , ek sao as transicoes de T numa
ordem fixa previamente.
Para alem disso, cada palavra w = r1r2 · · · rn, onde cada ri ∈ S, e codificada
por
c(w) = yyc′(r1)yc′(r2) · · · yc′(rn)y.
Note-se que, devido ao prefixo yy de c(w), quando se tem uma sequencia
c(T)c(w), fica claro quando c(T) acaba.
45
Exemplo 1.22 Seja T a maquina de Turing
i����
- p����
f��������
-∆/∆, D �
a/b, D
b/a, D
-∆/∆, C
que percorre uma dada palavra sobre o alfabeto {a, b} trocando cada a por b
e vice-versa. Suponhamos, para simplificar, que
i = q1, p = q2 (e f = q0), a = s1, b = s2 (e ∆ = s0),
e que as 4 transicoes sao tomadas na ordem em que aparecem no grafo (da
esquerda para a direita e de cima para baixo).
A 1a¯ transicao e1, descrita por δ(i, ∆) = (p, ∆, D), i.e., δ(q1, s0) = (q2, s0, D)
e codificada por x2yxyx3yxyx3y, enquanto que T e codificada por
x2︸︷︷︸c′(q1)
y x2yxyx3yxyx3y︸ ︷︷ ︸c′(e1)
y x3yx2yx3yx3yx3y︸ ︷︷ ︸c′(e2)
y x3yx3yx3yx2yx3y︸ ︷︷ ︸c′(e3)
y x3yxyxyxyxy︸ ︷︷ ︸c′(e4)
y.
46
Teorema 1.23 (Turing, 1936) Existe uma maquina de Turing TU sobre o
alfabeto {x, y} tal que, para qualquer maquina de Turing T=(Q, A, T, δ, i, f, ∆)
e qualquer palavra w ∈ A∗, “ TU simula o processamento de w por T”, isto e,
1) T aceita w se e so se TU aceita c(T)c(w). Neste caso, se a saıda para w
em T e u, entao a saıda para c(T)c(w) em TU e c(u).
2) T entra em ciclo com w se e so se TU entra em ciclo com c(T)c(w). 2
Uma maquina de Turing TU nas condicoes do Teorema anterior e chamada uma
maquina de Turing universal.
O comportamento de uma destas maquinas e exemplificado de seguida. Seja T
a maquina do Exercıcio 1.26,
q1����
- q2����
q3����
q0��������
-∆/∆, D �
b/b, D
-
a/b, E
∆/∆, E �
b/b, E
-∆/∆, C
47
Simularemos o processamento da palavra w = baa pela maquina T. Considera-
remos uma maquina TU com 3 fitas:
• a 1a¯ fita e a fita de entrada: e iniciada com a palavra c(T)c(w). Esta fita e
tambem a de saıda: se T aceita w, entao TU aceita c(T)c(w) e o conteudo final
da 1a¯ fita de TU e o codigo do conteudo final da fita de T.
• a 2a¯ fita e a que simula o funcionamento de T: contem o codigo do conteudo
da fita de T num dado instante.
• a 3a¯ fita contem o codigo do estado atual da maquina T.
Note-se que c(baa) = y2x3yx2yx2y. As 3 fitas de TU sao portanto iniciadas
como segue:
c(T) c(baa)
︷ ︸︸ ︷ ︷ ︸︸ ︷∆ x x y x x y x y x x x y x y x x x y y · · · y y y y x x x y x x y x x y ∆ · · ·∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ · · · ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ · · ·∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ · · · ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ · · ·
48
A maquina TU :
• comeca por copiar c(baa) para a 2a¯ fita (excepto o prefixo yy), escrevendo
ainda xy como prefixo para representar o sımbolo ∆ que esta na 1a¯ celula da
fita de T;
• depois copia o xx, que codifica o estado inicial de T, para a 3a¯ fita e apaga-o
da 1a¯ fita;
• coloca os cursores das 3 fitas na posicao 2.
∆ x x y x y x x x y x y x x x y y · · · y y y y x x x y x x y x x y ∆ · · ·∆ x y x x x y x x y x x y ∆ ∆ ∆ ∆ · · · ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ · · ·∆ x x ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ · · · ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ · · ·
A 3a¯ fita indica que T esta atualmente no estado q1 e o cursor da 2a
¯ fita indica
que o cursor da fita de T esta a ler o sımbolo ∆. Assim, TU vai procurar na 1a¯ fita
o quıntuplo (de potencias de x, separadas pelo sımbolo y) que codifica a transicao
cujas duas primeiras componentes correspondem a estes dados.
49
Neste exemplo, por acaso, o cursor da 1a¯ fita ja esta colocado na posicao corre-
spondente aos dados das outras fitas. Agora, o quıntuplo da 1a¯ fita diz que:
• na maquina T o novo estado passa a ser o q2,
• o sımbolo ∆ deve ser mantido;
• o cursor deve mover-se para a direita.
Logo, a maquina TU transforma as 3 fitas e o resultado e o seguinte:
∆ x x y x y x x x y x y x x x y y · · · y y y y x x x y x x y x x y ∆ · · ·∆ x y x x x y x x y x x y ∆ ∆ ∆ ∆ · · · ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ · · ·∆ x x x ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ · · · ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ · · ·
Como resultado da proxima iteracao, obter-se-ia
∆ x x y x y x x x y x y x x x y y · · · y y y y x x x y x x y x x y ∆ · · ·∆ x y x x x y x x y x x y ∆ ∆ ∆ ∆ · · · ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ · · ·∆ x x x ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ · · · ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ · · ·
50
e a seguir
∆ x x y x y x x x y x y x x x y y · · · y y y y x x x y x x y x x y ∆ · · ·∆ x y x x x y x x x y x x y ∆ ∆ ∆ · · · ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ · · ·∆ x x x x ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ · · · ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ · · ·
• O processo e iterado ate que a maquina TU detete, na 3a¯ fita, que a maquina
T chegou ao estado final q0.
• Entao TU copia o conteudo da 2a¯ fita para a 1a
¯ (depois de apagar esta) e vai
para o seu estado final.
A situacao final das 3 fitas seria a seguinte:
∆ x y x x x y x x x y x x y ∆ · · ·∆ x y x x x y x x x y x x y ∆ · · ·∆ x ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ ∆ · · ·
Portanto a situacao final da fita da maquina T e ∆bba.
51
De seguida apresenta-se exemplos concretos de uma linguagem nao recursiva-
mente enumeravel e de uma linguagem recursivamente enumeravel que nao e re-
cursiva.
Seja NaoAutoAceite, tambem denotado por NAA, o seguinte subconjunto de
{x, y}∗:NaoAutoAceite = NAA1 ∪NAA2
onde
NAA1 = {w ∈ {x, y}∗ | w = c(T) e T nao reconhece w}NAA2 = {w ∈ {x, y}∗ | w 6= c(T) para toda a maquina de Turing T }.
Seja ainda AutoAceite o complemento AA = {x, y}∗ \ NAA de NaoAutoAceite
em {x, y}∗, ou seja,
AutoAceite = {w ∈ {x, y}∗ | w = c(T) e T reconhece w}.
52
Teorema 1.24 NaoAutoAceite e uma linguagem nao recursivamente enu-
meravel.
Demonstracao: Suponhamos que existe uma maquina de Turing T0 que aceita
NAA, ou seja,
T0 aceita uma palavra w ∈ {x, y}∗ se e so se w ∈ NAA. (1)
Seja w0 = c(T0) e consideremos a questao: T0 aceita w0?
• Se T0 aceita w0, entao w0 ∈ NAA por (1). Como w0 = c(T0) e w0 ∈ NAA,
entao w0 ∈ NAA1. Logo T0 nao aceita w0, o que e uma contradicao.
• Se T0 nao aceita w0, entao w0 ∈ NAA1 e portanto w0 ∈ NAA. Logo T0
aceita w0 por (1), o que e uma contradicao.
Em ambos os casos atinge-se uma contradicao. Por isso, a maquina T0 nao existe
e NAA nao e recursivamente enumeravel. 2
53
A seguir mostra-se que a linguagem AA e reconhecida por maquinas de Turing,
mas cada maquina dessas entra em ciclo pelo menos para uma entrada w 6∈ AA.
Teorema 1.25 A linguagem AutoAceite e recursivamente enumeravel mas
nao e recursiva.
Demonstracao: Seja w ∈ {x, y}∗. Tem-se
w ∈ AA ⇔ w = c(T) e T aceita w, para alguma maquina T
⇔ w = c(T) e TU aceita c(T)c(w), onde TU e uma MT universal
⇔ w = c(T) e TU aceita wc(w).
Constroi-se uma maquina de Turing T1 (provar que existe) que rejeite w se
w nao e codigo de alguma MT e que deixe na fita wc(w) se w = c(T) para
alguma maquina T. Entao AA e reconhecida pela maquina T1TU . Portanto AA
e recursivamente enumeravel.
Que AA nao e recursiva e consequencia do teorema anterior. De facto, se AA
fosse recursiva, entao AA = NAA seria tambem recursiva. 2
54
Top Related