Sei sulla pagina 1di 6

Teoria da Computa c ao

aula 01: M aquinas de Turing

Introdu c ao

O que e computa c ao? Essa e uma pergunta realmente dif cil! Ela parece pedir que n os identiquemos exatamente o que h a em comum em todas as coisas ou processos que realizam algo que poder mas chamar de computa c ao. Uma tarefa nada f acil. Por outro lado, essa tamb em n ao e uma boa estrat egia para come carmos uma investiga c ao sobre o que e a computa c ao. Um caminho melhor seria encontrar o exemplo mais simples que existe de computa c ao, e ver o que podemos dizer sobre ele. Essa foi precisamente a estrat egia adotada por Alan Turing, e o exemplo mais simples que ele conseguiu encontrar foi justamente um computador. Por volta de 1930, computador era o nome de uma pross ao, como contador, encanador, etc. A fun c ao de um computador era basicamente fazer contas, preencher tabelas e, de fato, executar algoritmos, uma vez que as regras sobre como as contas deviam ser feitas j a estavam todas denidas. A ideia de Turing foi olhar para um computador como se ele fosse um mecanismo e perguntar: Como ser a que esse neg ocio funciona?. Veja o que ele tem a nos dizer sobre isso: (. . . )

Computing is normally done by writing certain symbols on paper. We may suppose this paper is divided into squares like a childs arithmetic book. (...) the two-dimensional character of the paper is no essential on computation. I assume then that the computation is carried out on one-dimensional paper, i.e., a tape divided into squares. I shall also suppose that the number of symbols which may be printed is nite. The behavior of the computer at any moment is determined by the symbols which he is observing, and his state of mind at that moment. We may suppose that there is a bound B to the number of symbols or squares which the computer can observe at one moment. If he wishes to observe more, he must use sucessive observations. We will also suppose that the number of states of mind which need to be taken into account is nite. Let us imagine the operations performed by the computer to be split up into simple operations which are so elementary that it is not easy to imagine them further divided. Every such operation consists of some change of the physical system consisting of the computer and his tape. We know the state of the system if we know the sequence of symbols on the tape, and the state of mind of the computer. ( . . . ) (A. Turing, 1936) (. . . )

A M aquina de Turing

A m aquina de Turing e basicamente um aut omato que pode se deslocar livremente por uma ta innita, lendo e escrevendo s mbolos sem nenhuma restri c ao. A Figura acima ilustra os componentes b asicos da m aquina de Turing: uma fun ca o de transi ca o (ilustrada pelo diagrama de estados na gura), que representa a l ogica que controla a execu c ao da m aquina; uma ta , que representa a mem oria da m aquina, onde e fornecida a entrada para a computa c ao; uma cabe ca de leitura/escrita, que indica a posi c ao da ta que est a sendo acessada no momento, e que eau nica posi c ao da ta que pode ser lida ou escrita no passo atual da computa c ao. A computa c ao na m aquina de Turing se desenrola como uma sequ encia de passos discretos. No in cio de cada passo, a m aquina se encontra em um determinado estado interno q , e sua cabe ca de leitura est a posicionada em algum lugar da ta lendo um certo s mbolo s. Um passo de computa c ao na m aquina consiste em executar uma das seguintes opera c oes: sobrescrever o s mbolo s por um outro s mbolo s ; ou mover a cabe ca de leitura uma posi c ao para a esquerda ou para a direita. A opera c ao espec ca que e realizada em cada passo e determinada pela fun c ao de transi c ao da m aquina. Em geral, a fun c ao de transi c ao e apresentada na forma de um conjunto de regras, como se pode ver no exemplo abaixo. A escolha da regra que deve ser aplicada no passo atual e denida pelo par (q, s). Al em das opera c oes indicadas acima, a execu c ao de uma regra tamb em modica o estado interno da m aquina para um novo estado p. Assim, no in cio do pr oximo passo de computa c ao, a m aquina se encontra no estado p lendo o s mbolo s , e seleciona a regra indicada pelo par (p, s ) para continuar a computa c ao. Vejamos um exemplo simples para ver como isso funciona. Exemplo: Nesse exemplo, veremos uma m aquina de Turing M que recebe uma palavra de entrada w no alfabeto = {a, b} e simplesmente troca os as por bs e vice-versa. A deni c ao da m aquina M consiste na especica c ao da sua fun c ao de transi c ao, que ser a apresentada como uma lista de regras ou qu adruplas da forma <q, s, p, op>. Os dois primeiros elementos de cada qu adrupla indicam o estado e o s mbolo atuais da m aquina, e s ao utilizados para selecionar a regra que ser a executada em seguida. O elemento seguinte, p, indica o estado da m aquina ap os a execu c ao da regra. Finalmente, o u ltimo elemento, op, indica a opera c ao que deve ser executada: se op for um s mbolo do alfabeto, isso indica que a m aquina deve sobrescrever o s mbolo atual com esse s mbolo; se op for ou , isso indica uma movimenta c ao da cabe ca de leitura. A l ogica para a troca de as e bs pode ser implementada pelo seguinte conjunto de regras: q0 # q1 > q1 a q2 b q1 b q2 a q2 a q1 > q2 b q1 >

Antes de descrever o funcionamento da m aquina, ainda e preciso denir algumas pequenas conven c oes. Vamos assumir, nesse exemplo, que no in cio da computa c ao a m aquina se encontra no 2

estado q0 . Em geral, o estado inicial deve ser especicado juntamente com a fun c ao de transi c ao da m aquina. O s mbolo # que aparece na primeira regra corresponde a uma posi c ao em branco na ta. Estaremos sempre assumindo que a palavra de entrada n ao cont em s mbolos brancos, e que todos as outras innitas posi c oes da ta se encontram em branco no in cio da computa c ao. Tamb em vamos assumir, daqui por diante, que a cabe ca de leitura sempre se encontra posicionada sobre o primeiro s mbolo branco da ta ` a esquerda da palavra de entrada, no in cio da computa c ao. Todas essas conven c oes est ao ilustradas na Figura abaixo.
. . . # a b b a # # . . .

q0

No in cio da execu c ao, a m aquina se encontra no estado q0 lendo o s mbolo #. Isso signica que no primeiro passo da computa c ao a m aquina deve executar a primeira regra da lista. Essa regra corresponde ` a instru c ao de que a m aquina mova sua cabe ca de leitura para a direita, e passe para o estado q1 . Agora, a m aquina se encontra no estado q1 lendo o s mbolo a, e portanto deve executar a segunda regra da lista. De acordo com essa regra, a m aquina deve sobrescrever o s mbolo atual por b, e passar para o estado q2 . (Mantenha um esquema no papel para acompanhar a descri c ao da execu c ao.) A pr oxima regra a ser executada eau ltima que aparece na lista, e isso mostra que a ordem em que as qu adruplas s ao listadas n ao e importante. Essa regra indica que a m aquina deve mover sua cabe ca de leitura para a direita e voltar para o estado q1 . Nesse momento, j a deve estar clara a ideia do funcionamento da m aquina: o estado q1 e respons avel por trocar os s mbolos da palavra de entrada, enquanto que o estado q2 e respons avel por avan car a cabe ca de leitura para a direita. Quando chegarmos ao nal da palavra de entrada, a m aquina se encontrar a no estado q1 lendo o s mbolo #. Note que n ao existe nenhuma regra que corresponde a essa congura c ao. Isso indica o m da execu c ao. Abaixo, temos a sa da do simulador smt para o exemplo indicado na gura acima:
configuracao inicial: (q0: (q1: (q2: (q1: (q2: (q1: (q2: (q1: (q2: (q1: @ @ @ @ @ @ @ @ @ #_a b b a #) #_b b b a #) # b_b b a #) # b_a b a #) # b a_b a #) # b a_a a #) # b a a_a #) # b a a_b #) # b a a b_# #) @_# a b b a #)

computacao terminada apos 9 passos

Formaliza c ao Os aspectos matematicamente relevantes de uma m aquina de Turing s ao capturados pela seguinte deni c ao: Deni c ao: Uma m aquina de Turing e uma qu ntupla M = K, , , s, H , onde K e o conjunto (nito) de estados da m aquina; e o alfabeto de s mbolos da ta; sK e o estado inicial da m aquina; H e o conjunto de estados terminais da m aquina; 3

: K (K H ) ( {<, >}) e a fun c ao de transi c ao da m aquina. Em outras palavras, os elementos da qu ntupla M = K, , , s, H , s ao tudo o que precisamos saber para termos uma descri c ao completa de uma m aquina de Turing. Note que, al em da fun c ao de transi c ao e do estado inicial s, tamb em precisamos especicar de maneira expl cita todos os estados poss veis da m aquina e todos os s mbolos que podem aparecer na ta. Para o exemplo anterior, ter amos: K = {q0 , q1 , q2 } e = {#, a, b}. Al em disso, a deni c ao formal tamb em exige a especica c ao do conjunto de estados em que a computa c ao pode terminar. Essa informa c ao e particularmente u til quando temos H = {qY , qN }, isto e, dois estados terminais que indicam o resultado da computa c ao: um que aceita a palavra de entrada (qY ) e outro que a rejeita (qN ). Como dissemos acima, a deni c ao formal serve apenas para estabelecer de maneira absolutamente clara todos os elementos que s ao necess arios para a especica c ao completa de uma m aquina de Turing. No entanto, em geral, quando estivermos apresentando os nossos exemplos ou resolvendo exerc cios, vamos deixar a maior parte dessas informa c oes impl cita, e isso n ao vai causar maiores problemas. Uma conven c ao adicional Uma u ltima observa c ao importante e que vamos assumir uma outra convenc ao adicional, adotada no livro do Papadimitriou [?], que consiste em utilizar uma ta que e innita apenas para o lado direito, com o s mbolo especial @ demarcando o seu extremo esquerdo (ver Figura abaixo). Essa conven c ao j a foi usada na listagem da sa da do simulador smt que apresentamos no exemplo anterior.
@ # b b a # a # . . .

A ideia, ent ao, e que a cabe ca de leitura pode eventualmente ser posicionada sobre o s mbolo @, o que as vezes pode ser u ` til para sabermos aonde n os estamos. Mas, o s mbolo @ jamais pode ser sobrescrito, e a cabe ca de leitura jamais pode ser movida para a esquerda do s mbolo @. Isso signica que toda qu adrupla envolvendo o s mbolo @ deve ter a forma: q, @, p, >.

Outros exemplos
a. Uma m aquina de Turing que apaga a palavra de entrada w {a, b} , e retorna a cabe ca de leitura para o in cio da ta. Como vimos no primeiro exemplo, uma estrat egia conveniente para construir uma m aquina de Turing consiste em denir estados respons aveis por realizar pequenas fun c oes espec cas. Para esse exemplo, vamos denir q0 : estado inicial; sua fun c ao e apenas mover a cabe ca de leitura para o primeiro s mbolo da palavra de entrada, o que e feito pela regra: q0 # q1 > q1 : estado apagador; sua fun c ao consiste em apagar o s mbolo que se encontra sob a cabe ca de leitura; como n ao sabemos a priori que s mbolo e esse, precisamos de duas regras para fazer isso: q1 a q2 # e q1 b q2 #

q2 : estado mover cabe ca de leitura; sua fun c ao e mover a cabe ca de leitura uma posi c ao para a direita ap os a m aquina ter apagado um s mbolo da palavra de entrada; isso e feito com a regra: q2 # q1 > Veja que essa regra coloca a m aquina novamente no estado q1 . Isso signica que os estados q1 e q2 denem um la co de computa c ao que percorre a palavra de entrada apagando todos os seus s mbolos. Para evitar uma computa c ao innita, precisamos da seguinte condi c ao de parada, que corresponde ao momento em que alcan camos o primeiro s mbolo branco ap os a palavra de entrada: q1 # q3 < q3 : estado retornador; sua fun c ao consiste em retornar a cabe ca de leitura para o in cio da ta; como nesse ponto a ta cont em apenas o s mbolo #, isso pode ser feito com a regra: q3 # q3 < Observe que temos aqui novamente um la co de computa c ao, dessa vez denido apenas pelo estado q3 . A condi c ao de parada, agora, corresponde ao momento em que a cabe ca de leitura alcan ca o s mbolo @. Nesse ponto, basta voltar a cabe ca de leitura um s mbolo para a direita e encerrar a computa c ao: q3 @ qt > qt : estado terminal. b. Uma m aquina de Turing que desloca a palavra de entrada uma posi c ao para a direita na ta. Nesse exemplo, ser ao utilizados os seguintes estados: K = {q0 , q1 , q2 , qa , wa , qb , wb }. O estado q0 e o estado inicial. O estado q1 e respons avel por atravessar a palavra de entrada, posicionando a cabe ca de leitura sobre o u ltimo s mbolo, e colocando a m aquina no estado q2 . O estado q2 controla o deslocamento dos s mbolos, desviando a execu c ao para o estado qa , no caso de um s mbolo a, ou para o estado qb , no caso de um s mbolo b. Nesse momento, o estado q2 tamb em apaga o s mbolo atual. A opera c ao de deslocamento e semelhante nos dois casos, e vamos descrever apenas o caso do s mbolo a. Quando a m aquina se encontra no estado qa lendo um s mbolo #, ela sabe que e preciso escrever um a na posi c ao imediatamente ` a direita na ta. Para isso, ela executa a seguir a qu adrupla (qa # wa >), que move a cabe ca de leitura uma posi c ao para a direita e passa para o estado wa . O estado wa e respons avel por escrever o s mbolo a na nova posi c ao, e isso e feito com a qu adrupla (wa # wa a). Em seguida, a m aquina estar a no estado wa lendo o s mbolo a. Como a m aquina v e que o s mbolo a j a foi escrito, ela simplesmente volta uma posi c ao para a esquerda, executando a qu adrupla (wa a q1 <). Finalmente, veja que a m aquina voltou para o estado q1 , que coloca novamente a cabe ca de leitura sobre o u ltimo s mbolo do trecho da palavra que ainda precisa ser deslocado, o que e feito com a qu adrupla (q1 # q2 <). A computa c ao termina quando o estado q2 encontra um s mbolo branco. A especica c ao das qu adruplas da m aquina e deixada como exerc cio. c. Uma m aquina de Turing que duplica a palavra de entrada: @ #w @ #w#w. Para esse exemplo, vamos apresentar apenas uma breve descri c ao de um algoritmo que pode ser implementado pela m aquina de Turing. 5

A ideia da computa c ao consiste em examinar cada s mbolo da palavra de entrada, armazenar essa informa c ao em um estado da m aquina (e.g., qa ou qb ), e apagar o s mbolo. A seguir, a m aquina se desloca para o segundo s mbolo branco ` a sua direita (o que requer atravessar o restante da palavra de entrada e o trecho da c opia que j a come cou a ser construido). Nesse ponto, a m aquina escreve uma c opia do s mbolo correspondente, e depois retorna para o segundo s` mbolo branco ` a sua esquerda, alcan cando novamente o seu ponto de partida. Aqui, a m` aquina restaura o s mbolo original, e em seguida move a cabe ca de leitura uma posi c ao para a direita, para recome car o processo no pr oximo s mbolo. A computa c ao termina quando a m aquina alcan ca o m da palavra de entrada. A especica c ao das qu adruplas da m aquina e deixada como exerc cio. d. Uma m aquina de Turing que soma 1 a um n umero bin ario recebido como entrada. Nesse exemplo, apresentaremos as qu adruplas que realizam a fun c ao descrita acima, e vamos deixar como exerc cio uma explica c ao detalhada do algoritmo que elas implementam. q0 # q1 > q1 0 q1 > q1 1 q1 > q1 # ss < ss 0 s0 1 ss 1 v1 0 s0 0 s0 > s0 1 s0 > v1 0 s1 < s1 0 s0 1 s1 1 v1 0 s1 # ff 1

Exerc cios
1. Apresente m aquinas de Turing para realizar cada uma das tarefas abaixo: a. Deslocar a palavra de entrada uma posi c ao para a direita. b. Duplicar a palavra de entrada. c. Interpolar espa cos em branco entre os s mbolos da palavra de entrada. Exemplo: @ #abbab @ #a#b#b#a#b. 2. Explique o funcionamento da m aquina de Turing do exemplo (d) acima, descrevendo a fun c ao realizada por cada um dos seus estados. 3. Apresente uma m aquina de Turing que subtrai 1 de um n umero bin ario fornecido como entrada. Exemplo: @ #10100 @ #10011. 4. Suponha que modicamos a deni c ao das m aquinas de Turing para permitir que ela possa modicar o s mbolo da ta e movimentar a cabe ca de leitura em apenas um passo da computa c ao. Essa modica c ao aumenta o poder de computa c ao da m aquina de Turing (no sentido de que agora ela pode resolver problemas que antes n ao podia)? Justique sua resposta.

Potrebbero piacerti anche