Você está na página 1de 30

Teoria da Computao

Cap. 9 Mquinas de Turing

CAPTULO 9

MQUINAS DE TURING

9.1. Introduo

301

9.2. A Mquina de Turing padro

302

9.3. Diagrama de estados ou de transio da MT

309

9.4. MT como aceitador de linguagens

311

9.5. MT como transdutores

319

9.6. Combinaes de mquinas de Turing para tarefas complicadas

324

9.7. A tese de Turing

325

Bibliografia

328

LEI/DEIFCTUC/2009/@ADC

Documento de trabalho

299

Teoria da Computao

LEI/DEIFCTUC/2009/@ADC

Cap. 9 Mquinas de Turing

Documento de trabalho

300

Teoria da Computao

Cap. 9 Mquinas de Turing

9.1. Introduo
Uma pesquisa no Google em 6 de Dezembro de 2007 com turing machine deu 1.820.000
resultados. Este nmero mostra a importncia do tema.
As Mquinas de Turing (MT) estiveram no centro do desenvolvimento dos computadores e
da computao durante os ltimos 70 anos. Alain Turing (1912-1954) foi um brilhante
matemtico, em Cambridge, Inglaterra, numa poca efervescente de desenvolvimento da
lgica e da matemtica que haveria de resultar no computador digital, os anos 30 e 40 do
sculo passado. geralmente considerado como o fundador das cincias da computao.
Outros matemticos famosos, como Gdel, Bertrand Russel na Europa, Church nos EUA,
foram contemporneos de Alain Turing. Existe em Portugal um blog como seu nome,
http://turing-machine.weblog.com.pt, que merece uma visita.
Em 1940 Alan Turing procura formalizar a noo de algoritmo, identificando as operaes
fundamentais e primitivas que possam servir de base ao clculo matemtico. Depois, definiu
uma mquina abstracta capaz de executar essas operaes segundo regras bem definidas. A
MT foi assim concebida para ser um modelo de computao, formalizando um conjunto de
operaes bsicas s quais se pode reduzir qualquer computao.
Os autmatos finitos so para as linguagens regulares, os autmatos de pilha para as
linguagens livres de contexto. E as MT? Com que linguagens se relacionam?
J encontrmos linguagens que no so livres de contexto, como por exemplo anbncn. Por
isso no possvel construir um autmato de pilha que as aceite.
Ser que uma MT suficientemente poderosa para aceitar linguagens dependentes do
contexto? Todas elas? Qual o autmato mais poderoso? Quais os limites da computao?
So questes s quais as MT respondem.
Mquina de Turing
Figura 9.1.1. Importncia da Mquina
de Turing. At hoje no foi ainda
Um modelo abstracto de computao

inventado um computador capaz de


resolver um problema que a MT no
possa resolver. Este facto mantm ainda
vlida a tese de Church-Turing

LEI/DEIFCTUC/2009/@ADC

Documento de trabalho

Problemas resolveis e
irresolveis

301

Teoria da Computao

Cap. 9 Mquinas de Turing

9.2. A mquina de Turing padro


A mquina de Turing um autmato, com uma unidade de controlo e com um dispositivo
especial que funciona simultaneamente como entrada (onde l), armazenamento, e sada (onde
escreve). Esse dispositivo uma fita unidimensional que contm um nmero ilimitado de
clulas cada uma das quais pode conter um nico smbolo. Essa a sua caracterstica
distintiva em relao aos autmatos finitos (que no tm dispositivo de armazenamento) e
aos autmatos de pilha (que armazenam numa pilha ).
A fita da MT prolonga-se indefinidamente em ambos os sentidos e por isso pode conter
uma quantidade infinita de informao. Esta informao pode ser lida e alterada em qualquer
ordem e da o potencial da MT.
Associada fita est uma cabea de leitura-escrita que se pode mover sobre a fita para a
esquerda ou para a direita, podendo escrever ou ler um nico smbolo em cada movida.

UNIDADE
DE
CONTROLO

R/W

f
FITA
Figura 9.2.1 Componentes da Mquina de Turing

Definio 9.2.1.
Uma mquina de Turing M definida pelo septeto
M = (Q, 6, *, G, q0, , F)
em que
Q o conjunto de estados internos da unidade de controlo

6 o alfabeto de entrada

LEI/DEIFCTUC/2009/@ADC

Documento de trabalho

302

Teoria da Computao

Cap. 9 Mquinas de Turing

* o conjunto finito alfabeto da fita


G a funo de transio
q0 o estado inicial
* o carcter branco, smbolo especial de *
F Q o conjunto de estados finais (aceitadores)
O alfabeto de entrada igual ao alfabeto da fita, com excepo do smbolo (branco, um
carcter novo, no confundir com O) que no existe no alfabeto de entrada. Portanto

6 = * - {}
A funo de transio em geral uma funo parcial em Qu*

G : Qu* o Qu*u {L, R}


em que R significa movida para a direita e L movida para a esquerda. Os dois argumentos de
entrada da funo de transio e os trs de sada so os seguintes:
q, prximo estado da unidade de controlo

estado actual unidade de


controlo

escrever na fita um novo smbolo em


substituio do presente

carcter de fita a ser lido no


momento
R/

fazer uma movida para a direita ou para a


esquerda

Figura 9.2.2 Funo de transio de uma Mquina de Turing


A movida da cabea faz-se depois da escrita do novo smbolo na fita.
Exemplo 9.2.2.1
Sejam

6 = { a, b }
*= { a, b, }
G: ( Q u * ) o ( Q u *u { L, R } )
e a transio

G ( q0, a ) = ( q1, b, R )
Esta transio ilustrada na figura seguinte.

LEI/DEIFCTUC/2009/@ADC

Documento de trabalho

303

Teoria da Computao

Cap. 9 Mquinas de Turing

abc

bbc

q1

q0

Figura 9.2.3. Movida da MT do exemplo 9.2.1.


Lendo a,
-apaga-o e escreve b no seu lugar
-move a cabea de leitura uma clula para a direita, ficando a apontar para b.
Uma mquina se Turing pode ser encarada como um computador muito simples. De facto:
- tem uma unidade de processamento com memria finita (nmero finito de estados);
- tem uma segunda unidade de armazenamento de capacidade infinita;
- a funo de transio o programa do computador. uma funo parcial.
O autmato inicializado (no estado inicial q0 ) com alguma coisa j escrita na fita.
Executa depois uma sequncia de operaes, uma computao, definidas pela funo G.
Como G uma funo parcial, pode chegar a uma configurao para a qual no est
definita nenhuma transio. O autmato fica ento no estado parado (halt).
Nunca se definem transies a partir dos estados finais e por isso uma mquina de Turing
pra sempre que atinge um estado final.
Exemplo 9.2.2.
Seja a mquina de Turing definida por

Q = {q0, q1 }

6 = {a, b}
* = {a, b, }
F = {q1}

LEI/DEIFCTUC/2009/@ADC

Documento de trabalho

304

Teoria da Computao

Cap. 9 Mquinas de Turing

G (q0, a) = (q0, b, R)
G (q0, b) = (q0, a, R)
G (q0, ) = (q0, , R)

q3

q0

q0

G (q0, a) = (q0, b, R)
b

q0

q0

G (q0, b) = (q0, a, R)
b

q0

q0

G (q0, b) = (q0, a, R)
b

q0

q0

G (q0, ) = (q0, , R)
Figura 9.2.4. Movidas do exemplo 9.2.2
No fim obtm-se o seguinte contedo da fita
b

Se para a mesma mquina a funo de transio for

G (q0, a) = (q0, a, R)

LEI/DEIFCTUC/2009/@ADC

Documento de trabalho

305

Teoria da Computao

Cap. 9 Mquinas de Turing

G (q0, b) = (q1, b, R)
G (q0, ) = (q0, , R)
G (q1, a) = (q0, b, L)
G (q1, b) = (q0, b, L)
G (q1, ) = (q0, , L)
obtm-se um funcionamento em ciclo infinito, como se pode ver para a cadeia aabbba:

G (q0, a) = (q0, a, R)
a

q0

q0

q0

G (q0, b) = (q1, b, R)

G (q1, b) = (q0, b, L)
a

q0

q1

q0

q1

G (q0, b) = (q1, b, R)
a

q0

q1

Figura 9.2.5 Movidas para o exemplo 9.2.2, segundo caso.


A mquina de Turing padro tem as seguintes caractersticas:
1- Uma fita ilimitada em ambas as direces, permitindo um nmero arbitrrio de
movidas esquerda e direita.
2- determinstica na medida em que G define no mximo uma movida para cada
configurao, no havendo escolhas possveis.
3- No existe qualquer ficheiro de entrada especial. Pressupe-se que no instante inicial a
fita tem algum contedo especificado a introduzido pelo programador. Parte deste

LEI/DEIFCTUC/2009/@ADC

Documento de trabalho

306

Teoria da Computao

Cap. 9 Mquinas de Turing

pode ser considerado a entrada. Sempre que a mquina pare (halt), algum do contedo
da fita pode ser considerado como sada.
Como veremos posteriormente, existem outras verses de mquinas de Turing mas que se
baseiam neste modelo base, estendendo algumas caractersticas (mas no aumentando o seu
potencial limite de computao).
A configurao da mquina de Turing definida pela sua descrio instantnea composta
por trs partes:
-

estado actual da unidade de controlo

o contedo da fita

a posio da cabea de leitura/escrita.

Utiliza-se a notao seguinte para a descrever uma configurao


x1qx2
ou

a1a2...ak-1qakak+1...an
correspondente figura seguinte. A cabea aponta para a clula que contm o smbolo que
segue q, i.e., ak.
x1

a1

a2

x2

ak

an

Figura 9.2.6 Configurao de uma MT


A descrio instantnea s mostra uma parte da fita. Assume-se que a restante parte
contm apenas smbolos brancos, que so considerados irrelevantes e

por isso no

necessrio mostr-los. No entanto se a posio dos brancos for relevante, deve ser
especificada na descrio instantnea.
Para representar as movidas de uma MT utiliza-se a notao de configurao em configurao

LEI/DEIFCTUC/2009/@ADC

Documento de trabalho

307

Teoria da Computao

Cap. 9 Mquinas de Turing

configurao (k) | configurao (k+1)


Por exemplo para a transio

G (q1, c) = (q2, e, R)
em termos de configuraes escreve-se, admitindo que na fita temos por exemplo abcd e que
a cabea aponta para c,
abq1cd | abeq2d
configurao (k) | configurao (k+1)

q1

q2

G (q1, c) = (q2, e, R)

abq1cd | abeq2d

Figura 9.2.7. Uma movida entre duas configuraes instantneas


O smbolo _ indica um nmero arbitrrio de movidas. Se houver necessidade de


distinguir entre diversas MTs, usa-se _ M.


Definio 9.2.2 Movida
Seja M = ( Q, 6, *, G, q0, , F) uma MT.
Ento qualquer cadeia a1a2.....ak-1q1akak+1...an com ai * e q1 Q, uma descrio
instantnea de M.
possvel uma movida
a1a2.....ak-1q1akak+1...an | a1a2.....ak-1bq2 ak+1...an
se e s se existir a transio

LEI/DEIFCTUC/2009/@ADC

Documento de trabalho

308

Teoria da Computao

Cap. 9 Mquinas de Turing

G (q1, ak) = (q2, b, R)


possvel uma movida
a1a2.....ak-1q1akak+1...an | a1a2.....q2ak-1bak+1...an
se e s se existir a transio

G (q1, ak) = (q2, b, L)


Diz-se que M parou partindo de alguma configurao inicial x1qix2 se

x1qix2 _ y1qjay2
para algum qj e algum a, para os quais G (qj, a) seja indefinido.
Chama-se computao sequncia das configuraes que levam a MT do estado inicial ao
estado de paragem (halt).
A situao em que a MT entra num ciclo infinito, nunca parando, nem de l podendo sair,
denota-se por

x1qx2 _ f
Esta situao, de ciclo infinito, em que a mquina nunca mais pra, muito importante na
aplicao da teoria das MT.

9.3. Diagrama de estados ou de transio da MT


A notao da funo de transio da MT diferente no JFLAP e no DEM:
JFLAP e Linz

G: ( Q u * ) o ( Q u *u { L, R } )

i.e.

G (q0, b) = (q1, b, R)

DEM e Taylor

G : ( Q u * ) o (* {L, R }) u Q

i.e. G (q0, ) = (R, q)

So necessrias, no DEM, mais instrues para a mesma funcionalidade : primeiro escreve,


e depois desloca-se. Usaremos preferencialmente a do JFAP.
Os diagramas de estados so uma forma alternativa escrita da funo de transio, tal
como nos outros autmatos estudados.
Exemplo 9.3.1.
Consideremos a MT, com uma fita completamente em branco, que faz o seguinte:
- inicializada lendo uma casa em branco,
- escreve os caracteres ab e

LEI/DEIFCTUC/2009/@ADC

Documento de trabalho

309

Teoria da Computao

Cap. 9 Mquinas de Turing

- pra lendo o carcter a.


; a, R

q0

q1

q0

q1

q0

; b, L

qf

q1

; a, R

; b, L

q1

qf

qf

Figura 9.3.1a Movidas e grafo no JFLAP da MT do Exemplo 9.3.1


No DEM teremos um grafo diferente:

DEM
q0
: a

q0
q1

a:R

q1
q2
a

:b

q2
q3
a


b:L

q3
qf

qf

LEI/DEIFCTUC/2009/@ADC

Documento de trabalho

Figura 9.3.1b.
Movidas e
grafo no DEM
do exemplo
9.3.1

310

Teoria da Computao

Cap. 9 Mquinas de Turing

Exemplo 9.3.2.
Para uma MT com a fita inicial vazia

que faz a MT da Figura seguinte ?


q0

JFLAP

; a, R

q1

; b, R

Figura 9.3 2a. MT do exemplo 9.3.2, no JFLAP.

q0

:a

q1

a:R

q2

:b

q3

b:R

Figura 9.3.2b. MT do exemplo 9.3.2 no DEM


Estando no estado inicial q0 lendo branco, escreve a, passa ao estado q1 e vai para a direita,
ficando assim a apontar para branco. Estando em q2 apontando para branco, escreve b , passa
a q0 desloca-se para a esquerda. Agora est em q0 lendo a na fita; no estando nada previsto
para este caso, faz halt e a fica para sempre.

9.4. MT como aceitador de linguagens.


Tal como nos autmatos anteriores, tambm as MT podem funcionar como aceitadores de
linguagens.
O processo de aceitao de uma linguagem pela MT o seguinte:

LEI/DEIFCTUC/2009/@ADC

Documento de trabalho

311

Teoria da Computao

Cap. 9 Mquinas de Turing

dada uma cadeia w de caracteres do alfabeto de entrada (note-se que este no inclui
O, o carcter vazio), escrita na fita. A cadeia w no contm brancos,

antes de w esto brancos e depois de w brancos esto,

a MT inicializa-se no estado q0 com a cabea de leitura-escrita posicionada no


carcter mais esquerda de w,

d-se uma sequncia de movidas,

se a MT entrar num estado final e parar (halt), w aceite,

se a MT parar (halt) num estado no final, w no aceite,

se a MT no parar (entrando num crculo infinito), w no aceite.

Note-se que h estados que tm caractersticas especiais, so os estados finais aceitadores.


Definio 9.4.1. Linguagem aceite pela MT.
Seja M = ( Q, 6, *, G, q0, , F) uma MT. Ento a linguagem aceite por M

L(M) = { w 6 + : q0 w _ x1 qf x2 para algum qf F e x1, x2 ** }


Se a cadeia tivesse brancos, a MT no saberia quando ela terminaria e teria que continuar a
percorrer a fita at ao infinito.
Segundo Taylor (def. 1.3. p. 76), MT aceita uma linguagem se aceita todas as palavras de L
e s essas (all and only the words in L).
Nota: a definio de Linz e de Hopcroft equvoca quanto necessidade de a MT ler toda
a cadeia de entrada antes de fazer halt. A definio de Taylor (tem que parar apontando para
um 1, com o resto da fita em branco, e 1 no pertence ao alfabeto de entrada) implica que toda
a cadeia tenha que ser lida para ser, eventualmente, aceite.
Exemplo 9.4.1
Seja o alfabeto 6 = {0, 1} e nele a linguagem L= L(00*), composta por todas as cadeias
com um ou mais zeros (sem 1s).

LEI/DEIFCTUC/2009/@ADC

Documento de trabalho

312

Teoria da Computao

Cap. 9 Mquinas de Turing

Construir uma MT que aceite esta linguagem.


Trata-se de uma linguagem regular (porqu, caro leitor ?) e por isso no seria necessria
uma MT para a aceitar. No entanto o exemplo tem objectivos didcticos.
Soluo:
A primeira operao a fazer no projecto da MT (de qualquer MT) definir um algoritmo,
ou seja, uma estratgia de operaes elementares que levem ao fim pretendido.
Admitamos que uma cadeia de zeros est escrita na fita, com brancos e s brancos
esquerda e direita. Admitamos tambm que A MT se inicializa com a cabea de leitura
apontando para o primeiro carcter da cadeia. Estas hipteses so as normalmente aceites.
Ns queremos que a mquina varra a cadeia, da esquerda para a direita, e a aceite se s
tiver zeros e a rejeite de tiver algures algum 1. Ento pode ser assim:
1 L o primeiro zero, deixa estar e desloca-se para a direita

G (q0, 0) = (q0, 0, R)
Havendo vrios zeros, ela ficou a apontar para o segundo zero. Ento esta transio d-se
novamente, porque ela se mantm no estado q0 , indo por a alm, at acabarem os zeros. Se
existisse um 1 algures no meio dos zeros a MT pararia (no est definida uma transio para
essa eventualidade).
2 Depois de ler todos os zeros h-de chegar ao primeiro branco direita da cadeia. A
pode seguir para a direita, deixando o branco tal como est. Como correu tudo bem at aqui,
j leu a cadeia toda, deve passar a um estado aceitador, qf :

G (q0, ) = (qf, , R).


Para desenharmos um diagrama de estados para esta funo de transio, no JFLAP ou no
DEM, temos que ter em ateno a notao a usar . A notao de Taylor para a funo de
transio no igual de Linz:
Linz:

G: ( Q u * ) o ( Q u *u { L, R } )

i.e.

Taylor:

G : ( Q u * ) o (* {L, R }) u Q

i.e. G (q0, ) = (R, q)

LEI/DEIFCTUC/2009/@ADC

Documento de trabalho

G (q0, b) = (q1, b, R)

313

Teoria da Computao

Cap. 9 Mquinas de Turing

O que obriga criao de um estado adicional no DEM.


Por isso o diagrama de estados seguindo Linz e o JFLAP ser
0:0:R

::R

q0

qf

Figura 9.4.1. Grafo JFLAP da MT do exemplo 9.4.1.

Seguindo Taylor e o DEM teremos que criar mais estados:


0:R

G (q0, 0) = (q1, 0)
G (q1, 0) = (q1, R)
q0

G (q1, ) = (qf, )

0:0
q1

:

qf

Figura 9.4.2. Grafo DEM da MT do exemplo 9.4.1

Note-se que G uma funo parcial. No definida por exemplo G (q0, 1). Se aparece um
1, no estado q0, a MT pra (halt) para sempre, indicando que w no aceite, a menos que q0
fosse um estado final. Mas a definio de estado final deve ser feita previamente resoluo
do problema: um estado final se antes dele s apareceram 0s e se j se chegou ao fim da
cadeia, i.e., se a cabea apontar para um branco. No pode ser q0 e por isso cria-se um outro
estado qf para estado final. Chega-se a ele apenas quando se leu a cadeia toda sem encontrar
qualquer 1.
As MT podem reconhecer algumas linguagens que no so livres de contexto. So
mquinas mais poderosas do que os autmatos estudados anteriormente. Voltaremos a este
assunto mais tarde.
Exemplo 9.4.2. MT aceitadora de Linguagem na=nb
Seja o alfabeto 6={a,b} e a linguagem composta pelas cadeias com um nmero de as igual
ao nmero de bs, em qualquer ordem., por exemplo
ab, ba, abaaabbabbbb, bbaabababbaaa, etc.

LEI/DEIFCTUC/2009/@ADC

Documento de trabalho

314

Teoria da Computao

Cap. 9 Mquinas de Turing

Desenhar o grafo de uma MT capaz de reconhecer esta linguagem


No projecto de uma MT a questo primeira e decisiva a da concepo do algoritmo a
programar: como que uma MT pode contar as e bs ?
Uma soluo possvel: a mquina apaga um a e um b de cada vez; se no fim no sobrar
nenhum carcter, porque o nmero de as era igual ao nmero de bs. Se sobrar um ou mais
as (ou bs) a cadeia no pertence linguagem.
Podemos imaginar varrimentos sucessivos da cadeia , da direita para a esquerda) de tal
modo que em cada varrimento substitui um a e um b por um* (uma forma de apagar).
Chegando ao fim da cadeia (encontra um branco) volta ao princpio, deslocando-se para a
esquerda at encontrar um branco.
Por exemplo para ababab teremos sucessivamente na fita
aaababbb

*aa*abbb

bbabaa

*b*baa

aabbbabb

*a*bbabb

**a*a*bb

****a**b

***b*a
****babb

********

******

****b**b

Programa da MT
- Carrega-se a cadeia na fita
- Desloca-se a cabea at ao primeiro carcter, que ser a ou b. Suponhamos que a.
- Apaga-se o a e substitui-se por *. Segue para a direita. A encontra a, b (ou *).
O grafo est na pgina seguinte.
Exemplo 9.4.3.
Seja a MT com 6 = {a, b}, * = {a, b, }, F = {qf}, Q = {q0, q1, qf}

G (q0, ) = (q0, , R),


G (q0, b) = (q1, b, R),
G (q1, a) = (q1, a, R),
G (q1,b) = (q1, b, R),
G (q1, ) = (qf, , R).
Que linguagem aceita ?
Analisando as transies, verifica-se que em q0 com b passa a q1 (e em q0 com a pra). Em q1
l as e bs por qualquer ordem e em qualquer nmero, avanando at ao fim da cadeia. Por

LEI/DEIFCTUC/2009/@ADC

Documento de trabalho

315

Teoria da Computao

Cap. 9 Mquinas de Turing

isso a linguagem aceita pela MT L= L[b(a+b)*], todas as cadeias que se iniciam por b em
{a,b}.
a : a, R
* : *, R

JFLAP
a : *,R

q1

* : *, R

b : *, L

a :a, L

: , R

q0
:

,L

q3
a : *, L

q2

b :b, L

q4
:,L

q5

* : *, L

b : b, R
: ,L

* :*, R
*:R

* : , L

a:R
qf
q1
*:R

a:*

b:* *:L

*:R

a:L
:R

q0

q5

b:*
:L

b:L
q2

*:R

q4

q6

Figura 9.4.3. MT

:L

*:R

do exemplo 9.4.2.
na=nb no JFLAP e

:R
b:R

*:
q7

DEM

no DEM.

Exemplo 9.4.4
Construir no JFLAP uma MT que aceite a linguagem L = { an bm : n t 1, m z n }

Um algoritmo possvel: depois de escrita a cadeia na fita


- em cada viagem da esquerda para a direita apaga um a e um b, marcando-os com *. Vai at
ao fim e volta ao princpio.
LEI/DEIFCTUC/2009/@ADC

Documento de trabalho

316

Teoria da Computao

Cap. 9 Mquinas de Turing

- recomea o ciclo at que ou acabem os as ou os bs. Se sobrarem as ou bs (ou exclusivo)


a cadeia aceite, terminando a computao no estado SIM. Caso contrrio termina no
estado NO.

A Figura 9.4.5 apresenta um grafo possvel.

Figura 9.4.4. Esta MT decide se uma cadeia pertence linguagem (termina em SIM) ou se
no pertence linguagem (termina em NO).
Exemplo 9.4.5. Desenhar uma MT que aceite a linguagem L = { an bn an bn : n t 0 }

- procura o prximo a , marca-o, muda de estado e vai para a direita


- encontra o primeiro b, marca-o e muda de estado
- continua at ao prximo a, marca-o e muda de estado
- procura o prximo b, marca-o, muda de estado e regressa ao incio
- continua at que acabem os as e os bs
- aceita quando marcar todos e no sobrar nenhum
- no aceita de ou os as ou ao bs acabarem num dos segmentos da cadeia, sobrando nos
outros.

LEI/DEIFCTUC/2009/@ADC

Documento de trabalho

317

Teoria da Computao

Cap. 9 Mquinas de Turing

Figura 9.4.5. Implementao FLAPP do exemplo 9.4.5 pelo aluno Antnio Damasceno em
2004-5.

Exemplo 9.4.6 O mesmo para o caso L = { an b2n : n t 1}


- por cada a apaga dois bs, usando para isso dois estados (a forma de contar dois bs)
- repete at que acabem todos os as e bs
-se sobrar algum a ou algum b no aceita

Figura 9.4.6a. JFLAP do exemplo 9.4.6 pelo aluno Antnio Damasceno em 2004-5.
Uma outra implementao possvel

Figura 9.4.6b.
Implementao JFLAP
pelo aluno Cristvo Pires
em 2004-5 (exemplo
9.4.6).

LEI/DEIFCTUC/2009/@ADC

Documento de trabalho

318

Teoria da Computao

Cap. 9 Mquinas de Turing

Exemplo 9.4.7 Para L = { an bm an+m : n t 0, mt1 } temos o algoritmo


- 1 apaga n as esquerda e n cs direita; se os cs no chegarem no aceita;
- 2 apaga m bs esquerda e m cs direita; se os cs no chegarem ou se sobrarem, no
aceita.
Para apagar os n as tem que percorrer n vezes um ciclo de apagar um; por isso cria-se um
ciclo apaga um a e vai apagar um c regressa. Se os cs acabarem antes dos as no aceita.
Analogamente para apagar os bs.
Para distinguir as diversas situaes criam-se estados afectos a cada situao.

Figura 9.4.7. JFLAP do ex. 9.4.7 pelo aluno Antnio Damasceno no ano lectivo 2004-5.

9.5 TM como transdutores


As MT so um modelo abstracto de computadores digitais em geral. Ora um computador
sobretudo um transdutor: transforma uma entrada numa sada, por exemplo fazendo um
clculo. As MT podem funcionar tambm como transdutores.
A entrada para uma computao composta por todos os smbolos no brancos escritos na
fita no instante inicial.
A sada da computao o que resultar escrito na fita, depois de todas as movidas da MT.
Com estes conceitos pode-se encarar a MT M, enquanto transdutor, como implementando
uma funo f definida por

LEI/DEIFCTUC/2009/@ADC

Documento de trabalho

319

Teoria da Computao

Cap. 9 Mquinas de Turing

l = f (w),
w
l , desde que se verifique que partindo de w no estado inicial aps a
e portanto com sada w
computao de f chega a um estado final qf

q0w _ M qf
As especificaes do estado final so feitas pelo programador.
Ser que qualquer funo computvel por uma MT ?
Definio 9.5.1. Funo computvel.
Uma funo f com o domnio D diz-se Turing computvel ou simplesmente computvel
se existir alguma mquina de Turing M = ( Q, 6, *, G, q0, , F) tal que

qf F

q0w _ M qf f (w),
para toda a w D.

Esta definio pressupe que a MT pra, depois de calcular f(w), apontando para o
primeiro carcter do resultado do clculo.
Todas as funes matemticas usuais, por mais complicadas que sejam, so Turingcomputveis. Esta afirmao no se pode provar, mas acredita-se que assim seja porque at
hoje ningum foi capaz de propor uma funo matemtica que no fosse computvel.
Vejamos alguns exemplos.
Exemplo 9.5.1. Adio de inteiros (representao unria) (Linz, 233
Para adicionar nmeros inteiros com uma MT, primeiro faz-se a sua representao unria, s
com 1s. Depois temos que especificar como se escrevem as duas parcelas na fita da MT.
Admitamos que as separamos por um 0, ficando brancos esquerda e direita:
Figura 9.5.1.
Preparao
da fita para a
adio

LEI/DEIFCTUC/2009/@ADC

x=5

x=4

Figura 9.5.1. Preparao da adio

Documento de trabalho

320

Teoria da Computao

Cap. 9 Mquinas de Turing

e que no fim da computao o resultado deve ser apresentado em unrio (como uma sequncia
de 1s)
x+ y =9

Figura 9.5.2. Resultado final da adio


Definido o incio e o fim, temos agora que escrever o programa da MT.
Outros exemplos:
Exemplo 9.5.2. A mquina copiadora (Linz, 234).
Vamos projectar uma MT que copie um nmero escrito em binrio na fita, escrevento a cpia
direita, deixando um branco entre os dois.
A MT inicia-se no primeiro 1 de uma cadeia de n 1s e pra no primeiro 1 de uma cadeia
ininterrupta de n 1s ,seguida por um branco, seguido por uma cadeia ininterrupta de n 1s,
com o indicado na fig. 9.5.4.

1
q0

Figura 9.5.3

qf

Este tambm o Ex. 1.3.2 de Taylor, Copying Machine.tm implementada em DEM, fita 8.tt
Exemplo 9.5.3.
Comparao de dois nmeros positivos, x e y, em representao unria, Linz 235.
Escrevem-se os nmeros na fita separados por um 0, por exemplo, comparar 4 e 6,
11110111111
Um algoritmo possvel
- apagar um 1 da primeira parte e outro 1 da segunda, at os 1s acabarem numa das partes

LEI/DEIFCTUC/2009/@ADC

Documento de trabalho

321

Teoria da Computao

Cap. 9 Mquinas de Turing

Caso 4&6
11110111111 *1110*11111**110**1111***10***111****0****11
Agora quando procura mais 1 do lado esquerdo no encontra, passa pelo zero e continua at
ao ltimo 1, o que provoca a transio para o estado x<y.
Caso 6&4
11111101111*111110*111**11110**11***11101*******110****
Agora ao apagar mais um 1 do lado esquerdo e procurar o outro 1 do lado direito, no o
encontra, chega ao branco e passa ao estado x>y.
No caso de igualdade, quando acabam os 1s em ambos os lados, passa ao estado x=y.
Fica o leitor desafiado a desenhar o respectivo grafo, usando o JFLAP.
Exemplo 9.5.4

q0

:a

q1

Figura 9.5.4

a:R
Que faz ?
1 Inicializando-se numa fita vazia, l um branco, substitui-o por um a, desloca-se para a
direita e repete estas operaes indefinidamente.
2 Percorre a fita at ao infinito sem escrever nada.
Exemplo 9.5.5. E esta ?

q0

:a

q1

a:R

q2

:b

q3
Figura 9.5.5

b:R
Escreve sucessivamente abababababab.......

LEI/DEIFCTUC/2009/@ADC

Documento de trabalho

322

Teoria da Computao

Cap. 9 Mquinas de Turing

Exemplo 9.5.6.
Construa uma MT que decida a linguagem em 6={a,b} composta por todas as cadeias que
contenham a subcadeia baa (isto , que diga se sim ou no uma cadeia pertence linguagem).

Figura 9.5.6

Note-se que esta linguagem regular, e por isso tambm se pode desenhar um DFA que faz o
mesmo.
Exemplo 9.5.7
Desenhe uma MT que calcula a funo f(x)=2x, estando x em unrio.

Primeiro devemos conceber um algoritmo que resolva o problema. No existe uma nica
soluo. Uma delas poder ser

1- substituir cada 1 por um x e de seguida adicionar um y no fim da cadeia. Por exemplo para
f(111)= 111111 a fita ter sucessivamente
111 x11yxx1yyxxxyyy

2 - substituir cada x por 1 e cada y por 1

xxxyyyxxxyy1xxxy11 xxx111

xx1111 x11111111111
O grafo da MT ser o da Figura.

Figura 9.5.7

LEI/DEIFCTUC/2009/@ADC

Documento de trabalho

323

Teoria da Computao

Cap. 9 Mquinas de Turing

Exemplo 9.5.8 Desenhar uma MT que conte o nmero de aa em cadeias no alfabeto {m, a, r,
g, a, r, i, d, a}.

Figura 9.5.8. MT
que conta os as
em cadeias de
{m,a,r,g,a,r,i,d,a}

9.6. Combinaes de mquinas de Turing para tarefas complicadas


Muitas funes complicadas podem-se decompor em sequncias de funes simples
computveis (toda a anlise numrica visa esse fim). Tal conceito tambm se pode aplicar ao
nvel da Turing-computabilidade.
Pode-se projectar uma mquina de Turing composta por combinaes de mquinas de
Turing elementares a fim de realizar operaes mais complexas.
Exemplo 9.6.1 (Linz)
x + y , se x t y
Seja a funo f definida por

f (x, y) =
0, se x< y

Podemos decomp-la em trs operaes: uma comparao, uma soma, a um apagamento, que
se podem implementar pelos trs blocos da Figura 9.6.1.

Somadora
xt

x, y
Comparadora

Figura 9.6.1.
Implementao
da funo do
exemplo 9.6.1.
LEI/DEIFCTUC/2009/@ADC

f (x, y)
x<y

Documento de trabalho

Apagadora

324

Teoria da Computao

Cap. 9 Mquinas de Turing

Agora cada bloco pode ser executado por uma MT. A funo total resulta da combinao
das trs MTs.

9.7. A tese de Turing


Nos anos 30 do sc. XX Turing conjecturou que qualquer computao que possa ser
implementada por processos mecnicos (i.e., por uma mquina) pode tambm ser
implementada por uma mquina de Turing. Pode ser interpretado ao contrrio: uma
computao mecnica se e s se puder ser executada por uma mquina de Turing.
Alguns argumentos a favor da tese de Turing:
1- Qualquer computao que possa ser feita por qualquer computador digital existente
tambm pode ser feita por uma mquina de Turing.
2- Ningum conseguiu ainda encontrar um problema, resolvel por um qualquer
algoritmo, para o qual no possa ser escrito um programa para uma mquina de
Turing.
3- Foram propostos modelos alternativos para a computao mecnica, mas nenhum
deles mais poderoso do que a mquina de Turing.
A tese de Turing (ainda ) uma lei bsica das cincias da computao. Nesses tempos o
desenvolvimento de um algoritmo consistia fundamentalmente na escrita de um programa de
uma MT que o resolvesse. Mesmo actualmente um algoritmo pode-se definir como uma MT,
Se considerarmos uma funo qualquer, f, com um domnio D e o contradomnio R, para
um elemento d do domnio escrito na fita de uma MT, escreve-se um programa tal que
iniciando-se a MT apontando para o primeiro smbolo de d, termina uma computao depois
de escrever na fita o valor de f(d). Teremos assim a seguinte definio de algoritmo.
Definio 9.7.1. Algoritmo.
Um algoritmo para uma funo f : Do R uma mquina de Turing M que,
-

dada como entrada um qualquer d D na sua fita

pra (halt) com uma resposta correcta para f (d) R na sua fita. Requer-se que

LEI/DEIFCTUC/2009/@ADC

Documento de trabalho

325

Teoria da Computao

Cap. 9 Mquinas de Turing

q0d _ M qf f (d),

qf F

para todo o d D.
No DEM existe uma livraria de MTs que executam diversos algoritmos. A tabela seguinte
enumera-os. Alguns deles recorrem a uma MT especial, com vrias fitas (tapes). No Captulo
10 abordaremos essas arquitecturas especiais da MT, que no entanto no alteram as suas
capacidades computacionais, apenas tornam mais fcil a programao de algoritmos.
Tabela 9.7.1 Lista de exemplos do DEM. Os exemplos esto em Taylor.
balpatent

balanced parenthesis

beaver

busy beaver function w/ 5 arguments

c-interp

C- language Compiler/Interpreter Prototype

Cnfsat

CNF- Sat (Example 8.5.1) (5 tapes)

Convert

Convert to unary

Copying

Copia cadeia de caracteres

Cvp

Circuit Value Problem (example 8.8.1)

div2mult

f(n)=n div 2 (multitape machine)

div2single

f(n)=n div 2 (single tape)

Ex12-3-1

Language Emulator (Example 12.3.1)

Ex2-2-3

Example 2.2.3 w=wR, odd palindromes

Ex2-6-2

nondeterm accepter a**(2n)+a**(3n), nt0

Ex2-6-3

nondeterm accepter a**(n**2) nt0

Ex2-6-5

nondeterm f(n) = cubicroot(n), se cubo perfeito, indefinida caso contrrio

Ex4.5.1

Markov algorithm simulator 4 tapes

Factoria

f(n)= n!

Fspacon

f(n) = n**2 is fully space-constructible

God

Exodus 3.13-14 I am who I am

Multiply

f(n,m)=nm the multiplication machine

LEI/DEIFCTUC/2009/@ADC

Documento de trabalho

326

Teoria da Computao

Cap. 9 Mquinas de Turing

N^n

nn, the n to n power

Nntravsa

Nearest-Neighboor Traveling Salesman Machnine/Exxample 8.10.2

Palindro

Palindromes

Recdesct

Recursive-descent Parser

Recognzr

Reconhecimento da cadeias (pares, impares, carter do meio, palindromes)

Reverse

reverse word

Reverse2

reverse word multitape

Samenumb

same numbare of as as bs single tape

Samenumb4t

same number of as and bs 4 tapes

Selctstr

select a string

Sqrt

square root (perfect square)

Exemplo 9.7.1 Desenvolver um algoritmo para calcular n3


Uma soluo possvel:
1 - Escreve-se na fita n0n0n.
2 - Copia n direita um nmero n de vezes, obtendo-se assim nxn=m.
3 - Copia depois m um nmero n de vezes, obtendo-se mxn=nxnxn.
Exemplo 9.7.2. Desenvolver as linhas gerais de um algoritmo para calcular n!
Com sabemos n!=nx(n-1)x..x2x1. Para isso na MT
- escreve-se n na fita, em unrio
- copia-se n direita
- decrementa-se n, (subrao de 1)
- multiplica-se (n-1)n = p
- decrementa-se n-1, vindo n-2
- multiplica-se (n-2)p obtendo-se um novo valor de p.
-
- at se atingir n-i=1, e nesta altura o valor de p o factorial.
Um programa para isso ter uma extenso considervel
LEI/DEIFCTUC/2009/@ADC

Documento de trabalho

327

Teoria da Computao

Cap. 9 Mquinas de Turing

Bibliografia
An Introduction to Formal Languages and Automata, Peter Linz, 3rd Ed., Jones and Bartelett
Computer Science, 2001.
Models of Computation and Formal Languages, R. Gregory Taylor, Oxford University Press,
1998.
Introduction to Automata Theory, Languages and Computation, 2nd Ed., John

Hopcroft,

Rajeev Motwani, Jeffrey Ullman, Addison Wesley, 2001.


Elements for the Theory of Computation, Harry Lewis and Christos Papadimitriou, 2nd Ed.,
Prentice Hall, 1998.
Introduction th the Theory of Computation, Michael Sipser, PWS Publishing Co, 1997.
http://www.turing.org.uk/turing/Turing.html (Alan Turing Home Page).
http://www-groups.dcs.st-and.ac.uk/~history/Mathematicians/Turing.htm.

LEI/DEIFCTUC/2009/@ADC

Documento de trabalho

328

Você também pode gostar