Você está na página 1de 17

Levantamento de Implementações de Máquinas de Turing em Artigos e

Livros
Danilo Matias1, Maristela Teixeira Souza Lopes1 ,Reginaldo de Matias1 Vinícius Torres
1
Departamento de Sistemas e Computação
Universidade do Estado de Santa Catarina (UDESC) – Joinville/SC – Brasil
danilomatias19@gmail.com, maristela.lopes@yahoo.com.br, reginaldo.matias@gmail.com,
vinicius_torres@terra.com.br

Resumo. O estudo sobre as Máquinas de Turing ainda não se findou. Várias outras máquinas foram
planejadas baseadas nela, a fim de reduzir sua complexidade, e resolver cada vez mais problemas
matemáticos, e de possuir mais eficácia.

Introdução

Alan Turing foi uma figura importante na Ciência da Computação, pois sua máquina é um
“embrião” do computador, pelo poder de ajudar o homem a resolver complicados problemas
matemáticos. Baseados em Turing, foram criadas diferentes maneiras de implementação dessa máquina,
a fim de possuir mais capacidade e rapidez na resolução de problemas. Abaixo, seguem alguns modelos
os quais foram criados por Turing, e depois dele.

1. Máquinas de Turing Determinísticas

Como se pode caracterizar o conjunto de funções computadas por programas de computador?


quais funções são realizáveis por algoritmos e quais não são? – Essas respostas tem suas raízes mais
diretas no trabalho de Alan Turing. [TURING,(1950)]. Usando, o que agora se chama de modelo de
máquina de Turing, Turing mostrou que certos problemas naturais em computação não podem ser
computados por nenhum algoritmo, real ou imaginado.
De fato, Turing apenas mostrou que estes problemas não são calculáveis especificamente por máquinas
de Turing; mais tarde as investigações de outros pesquisadores concluíram que a computabilidade de
Turing é sinônimo da computabilidade em qualquer outro sistema algorítmico suficientemente poderoso.
Uma máquina de Turing T pode ser descrita como um controle de estado finito equipado com um
dispositivo de armazenamento externo na forma de uma fita finita que pode ser estendida
indefinidamente.[ROSA,1996]
Num sentido preciso, uma MdT é um modelo abstracto de um computador, que se atém apenas aos
aspectos lógicos do seu funcionamento e não à sua implementação física. Numa MdT pode modelizar-se
qualquer computador digital. Entretanto, é mais fácil explicar o que é uma MdT apresentando-a como
uma máquina realizada fisicamente. A componente física da maquina é muito simples:
-uma fita, dividida em células ou casas, estando inscrito em cada célula um símbolo;
-uma cabeça de leitura e escrita, que se move ao longo da fita (esquerda ou direita) parando em cada casa
e procedendo do seguinte modo: lê o conteúdo da célula, apaga o símbolo que lá está e escreve um novo
(pode reescrever o mesmo), executa um dos movimentos possíveis.[SILVA,2003]
Para definir uma MdT é preciso definir:
o alfabeto: o conjunto finito de símbolos com que a máquina trabalha;
o conjunto dos movimentos possíveis da cabeça: mover-se para a esquerda, mover-se para a direita,
permanecer na mesma posição ;
o conjunto de estados em que a máquina pode ser colocada (o conteúdo da memória). [SILVA,2003]
A MdT funciona seguindo instruções, que especificam qual a acção que a máquina deve executar em
determinada situação. Há muitas maneiras possíveis de conceber o modo concreto de funcionamento de
uma MdT, e portanto de estruturar as suas instruções.
As ações de uma máquina de Turing podems ser descritas por um conjunto de quintuplas do tipo (s,i',s', d)
onde s, i, i', s' e d significam, respectivamente: estado atual, simbolo lido, símbolo impresso, novo estado
e direção (R ou L - Right (direita) e Left (esquerda)).

... b 1 1 0 0 1 0 b b b ...

Unidade
de estado-
finito

Considere por exemplo a máquina na configuração mostrada na figura 2. Se operar de acordo com as
instruções contidas na quíntupla (2,1,0,1,R), deve mover-se para a configuração ilustrada na figura 3,
como segue:

... b b 1 1 0 1 0 1 b b ...

Note que por definição: (s,i,i',s',d). De modo que 2 e 1 representam o estado atual e o simbolo lido. 0 é o
símbolo a ser impresso no lugar do 1. A máquina passa para o próximo estado, 1 e move-se para a direita.
Assim:

... b b 1 0 0 1 0 1 b b ...

A restrição de que não pode haver mais de uma máquina de uma quíntupla começando pelos mesmos
símbolos s e i garante que a ação da Máquina de Turing é determinística e completamente estabelecida
pelos estados e símbolo lido atuais. Se uma máquina de Turing é levada a uma configuração para a qual
seu estado atual e o símbolo lido não são os primeiros dois símbolos de qualquer símbolo a máquina pára.

Convenção: especifica-se um estado inicial fixo, denotado por 0, no qual a máquina inicia qualquer
processamento. Também assume-se que uma configuração inicial para a cabeça de leitura/gravação, a
configuração na qual ela está posicionada sobre a célula mais a esquerda da fita que contenha valor, Se a
fita estiver completamente vazia a cabeça de leitura/gravação pode se posicionar em quaquer lugar.
Exemplo: Considere a máquina de Turing definita pelo conjunto de quíntuplas que se segue: [FONSECA,
1992]

(0,0,1,0,R), (0,1,0,0,R), (0,b,0,0,L), (1,0,0,1,R), (1,1,0,1,R) (0,0,1,0,R


)
A ação desta máquina ao processar qualquer fita em particular é mostrada pela sequência de
configurações a seguir: [FONSECA, 1992]

... b 0 1 1 0 b ... (0,0,1,0,R


)
0

... b 1 1 1 0 b ... (0,1,0,0,R


)
0

(0,1,0,0,R
... b 1 0 1 0 b ... )

... b 1 0 0 1 b ... (0,0,1,0,R


)
0

... b 1 0 0 1 b ... (0,b,1,1,L


)
0

... b 1 0 0 0 1 b ... (1,0,0,1,R


)
1

... b 1 0 0 0 1 b ... (1,1,0,1,R


)

... b 1 0 0 0 0 b ...

1
2.Máquina de Turing Não-Determinística
A máquina de Turing não-determinística(MTND) é uma generalização da máquina de Turing
determinística. Essa máquina tem um papel fundamental na teoria de complexidade pois está na base da
definição da classe NP.
A maior parte das definições e idéias envolvidas na descrição das MTDs também se aplica às
MTNDs. A diferença entre a MTND e a MTD está na função de transição e na maneira como as
transições são feitas a cada passo.[CARDONHA, SILVA,(2004)]
máquina de Turing comum (determinística) possui uma função de transição que, dado um estado e um
símbolo na posição de execução da fita, especifica três coisas: um novo símbolo a ser escrito na posição
de execução da fita, a direção para o qual a fita deve mover-se e um novo estado para o controle finito.
Por exemplo, um X na fita no estado 3 pode fazer a máquina determinística escrever um Y na fita, mover
a cabeça uma posição para a direita e mudar para o estado 5.
Uma máquina de Turing Não-Determinística difere-se pois um estado e um símbolo de fita não
mais definem estas três coisas de forma única - mais de uma ação pode ser aplicável dado um estado e um
símbolo.
Como uma máquina Não-Determinística "sabe" qual dessas ações ela deve tomar? Há duas maneiras de
olhar esta questão. Uma é supor que a máquina sempre escolherá uma transição que eventualmente leve a
um estado de aceitação. A outra maneira é imaginar que a máquina se ramifica em muitas cópias, cada
qual leva a diferentes possíveis transições. Onde uma Máquina de Turing Determinística possui um único
"caminho de computação" a ser seguido, uma Máquina de Turing Não-Determinística possui uma "árvore
de computação". Se qualquer ramo da árvore pára em uma condição de aceitação, dizemos que a Máquina
de Turing Não-Determinística aceita a entrada. [WIKIPEDIA]

Mais formalmente, uma Máquina de Turing Não-Determinística é uma 6-tupla , onde

• Q é um conjunto finito de estados


• Σ é um conjunto finito de símbolos (o alfabeto da fita)
• é o estado inicial
• é o símbolo "branco" ()
• é o conjunto de estados de aceitação
• é uma função multivalorada sobre estados e símbolos chamada função de transição, onde L é o
deslocamento à esquerda e R é o deslocamento à direita. Em Máquinas de Turing convencionais a
função de transição não é multivalorada. (FURTADO, 1992)

Há um número considerável de variações nessa definição. O estado inicial pode ser substituído por
um conjunto de estados iniciais, por exemplo. (Isto é equivalente, pois é trivial simular estados iniciais
múltiplos adicionando um único estado inicial que escolhe não deterministicamente quais dos múltiplos
estados iniciais ateriormente definidos a máquina usará para continuar.)
A variação pode também incluir um conjunto de estados de rejeição, e neste caso diz-se que a Máquina de
Turing Não-Determinística rejeita a entrada se a computação leva a um dos estados de
rejeição.[CARDONHA, SILVA,(2003/2004)]
2.1 Comparação entre Máquinas de Turing Determinísticas e não-
Determinísticas

Se a tabela de ação tem no máximo uma entrada para cada combinação de símbolo e estado, então a
máquina é determinística (MTD). Se a tabela de ação contém múltiplas entradas para uma combinação de
símbolo e estado então a máquina é uma máquina de Turing não-determinística (MTND) .“Máquina de
Turing não-determinística em ciência da computação é uma máquina de Turing cujo mecanismo de
controle atua como um autômato finito não_deterministico.”[WIKIPEDIA]

3. Maquina de Cantor

A terceira questão do programa de Hilbert foi respondida negativamente, de forma independente,


por dois matemáticos: Alonso Church de Princeton, Estados Unidos, em abril de 1936, e Alan Mathison
Turing (1912-1954), então no King's College, Inglaterra, em agosto de 1936. Um terceiro matemático, o
polonês, naturalizado americano, Emil Post, professor do City College de Nova York, Estados Unidos,
submeteu em outubro de 1936 um artigo ao Journal of Symbolic Logic, do qual Church era editor, no
qual ele expõe uma idéia muito semelhante à de Turing, embora menos ambiciosa [Hod (83), apud
CARDONHA,SILVA(2003,2004)].

Máquina de Turing

O método de Turing é surpreendentemente simples e direto: ele, explicitamente baseado em uma


metáfora de um “computer'” - que em 1936 significava unicamente uma pessoa realizando cálculos -
ocupado com operações previamente determinadas, idealizou uma máquina abstrata, hoje chamada
máquina de Turing, e demonstrou como esta máquina pode ser instruída para realizar qualquer tipo de
cálculo imaginável. Esta máquina abstrata permite a definição de uma ``ordem'' para todos os cálculos
imagináveis. A partir dessa ordem, utilizando um argumento de diagonalização, Turing foi capaz de
definir um problema que, ao contrário do que pensava Hilbert, não pode ser resolvido matematicamente.
Ele os chamou números não computáveis.
A máquina consiste em uma fita infinita com uma cabeça de leitura/escrita, abstrações da folha de
papel e do lápis do ``computador'' humano, e um mecanismo de controle, metáfora dos estados mentais do

calculador. O controle é representado por uma tabela finita onde está especificado, para cada possível
caractere a ser lido da fita e para cada possível estado da máquina (representados por símbolos diferente
dos símbolos da fita), uma ação e o novo estado da máquina. As possíveis ações são: escrever um símbolo
na fita e mover a cabeça para a esquerda ou para a direita. Como as tabela de controle são finitas, é
possível codificá-las sob forma de números inteiros, mesmo que muito grandes, e, a partir desta
codificação, definir uma tabela de controle universal capaz de decodificar uma tabela armazenada na fita
e executá-la.

: Diagonalização de Cantor
i Números Reais
1 0 0 2 5 8 7
2 1 3 0 9 5 5
3 0 8 6 4 1 0
4 9 2 8 9 3 5
5 9 0 2 3 7 3
6 3 1 7 0 7 3

Para entender o que são números não computáveis é necessário conhecer o argumento de
diagonalização de Cantor, utilizado para demonstrar que existem mais números reais que racionais apesar
de ambos os conjuntos serem infinitos, isto é, existem também os números irracionais. O argumento de
Cantor é o seguinte: se existe o mesmo número de reais e naturais, então é possível associar a cada
número real um número natural, isto é, ordenar os números reais. Imagine uma tal ordenação na forma de
um quadro infinito onde, em cada linha, um número real é representado por uma seqüência infinita de
inteiros. Cantor foi capaz de demonstrar que existe um número real que difere de todos os números do
quadro e conseqüentemente que um quadro completo não pode ser construído. Este número real é
construído da seguinte maneira: na primeira posição ele contém o número inteiro que aparece na primeira
posição do primeiro número real do quadro, mais um (módulo dez), o que o torna diferente do primeiro
número do quadro, e assim sucessivamente ao longo da diagonal. Este número - que no exemplo do
quadro corresponderia a - será diferente de qualquer outro do quadro, pois ele difere do i-
ésimo número real do quadro em sua i-ésima posição. De onde se conclui que não é possível construir tal
quadro.
Utilizando o fato de que as tabelas de controle, que definem as máquinas de Turing, podem ser

representadas através de números inteiros, e que por conseguinte podem ser ordenadas, vamos definir
como sendo a n-ésima máquina de Turing [Pen(89), apud CARDONHA,SILVA(2003,2004)]. Vamos

supor a existência de um quadro no qual cada elemento é um algarismo definido como o resultado
(módulo dez) gerado pela n-ésima máquina de Turing, ao ser executada sobre o número m, devidamente

codificado na fita: . Para um programador experiente a dificuldade em construir tal


quadro é evidente: nada garante que a n-ésima máquina, ao ser executada sobre o número m, realmente
produzirá o algarismo esperado. Uma máquina pode não fazer nada, ou percorrer um ciclo infinito sem
jamais escrever algo na fita. A única saída seria dispor de uma outra máquina que, ao receber a
codificação de uma máquina qualquer n, seja capaz de decidir se esta pára ou não ao ser executada sobre
uma entrada dada m. Vamos supor que esta máquina exista e vamos defini-la como:
Desta forma, podemos calcular os elementos do quadro utilizando o procedimento

, onde a máquina só será executada se for diferente de


zero. Baseado no argumento de Cantor, Turing propôs uma máquina de Cantor cuja função é calcular um
número não computável. A máquina de Cantor é programada (através de uma tabela adequada) para

calcular o número de Cantor, gerando seus algarismos um a um, através do seguinte procedimento:

Caso fosse computável, então deveria corresponder a uma determinada máquina

de Turing, , e a seqüência passaria a ser, por definição, a k-ésima linha do quadro acima.

Mas isso é impossível, pois a seqüência não pode estar no quadro, visto que, dada uma linha l

do quadro, ela difere desta linha na posição l, pois . Por conseguinte, o número de Cantor
não é computável, provando que existem problemas matemáticos não computáveis.
A resposta de Church utiliza um formalismo chamado lambda cálculo que, embora não tenha tido o
mesmo impacto da máquina de Turing na ciência da computação em geral, foi de extrema importância
para a IA, tendo servido de base para o Lisp, a primeira linguagem de programação voltada para a
manipulação simbólica. Apesar das enormes diferenças de notação e enfoque, Turing provou, em um
apêndice de seu artigo, a equivalência entre sua abordagem e a de Church. O mesmo acontece com o
formalismo de Post que também é equivalente aos outros dois.
A equivalência dos formalismos de Turing e Church deu origem à chamada tese de Church-Turing, que
afirma que os ``cálculos'' definidos por esses dois mecanismos são os únicos possíveis, e que qualquer
outro tipo de ``cálculo'' que possa ser inventado ou será menos expressivo ou equivalente a eles.
Evidentemente, essa tese não pode ser ``provada'' no sentido matemático; pode apenas ser refutada caso
um mecanismo mais poderoso seja encontrado. No entanto, até agora, todos os novos mecanismos de
cálculo propostos desde a década de 30 - por exemplo, redes neuronais e algoritmos genéticos - foram
provados equivalentes a todos os demais.
4. Máquina de Turing Quântica Universal

As operações realizadas por uma MTQ podem ser descritas como transformações unitárias sobre
vetores de um espaço de Hilbert. Logo, o estudo dessas transformações facilita a compreensão das
limitações e das ferramentas disponíveis quando estudamos a computação quântica.
Nesta seção, apresentamos alguns resultados de Bernstein e Vazirani [BERNSTEIN apud CARDONHA,
SILVA,(2004)]. Mostramos como uma dada transformação unitária pode ser decomposta em
transformações unitárias simples (ou quase-triviais), diretamente implementáveis em MTQs. Essas
transformações simples sãodivididas em dois tipos: mudança de fase e rotação.
O resultado apresentado é construtivo, mas envolve cálculos com números irracionais. A princípio,
nãoconsideramos as precisões das operações envolvidas, mas vamos mostrar como os ângulos utilizados
nas operações de rotação e de mudan¸ca de fase podem ser obtidos com precisão_ consumindo tempo
polinomial em 1/_ a partir de um ângulo fixo.
Complexidade quântica ao longo do tempo vários modelos de computação tem sido utilizados para
representar processos computacionais e nos permitir analisar os recursos necessários à resolução de um
problema. O tempo de processamento, o espaço (normalmente referenciado como quantidade de memória
necessária), a aleatoriedade entre outras características são alguns destes recursos agrupados em classes
de acordo com a quantidade necessária de cada um para execução de certos algoritmos.
O poder computacional de máquinas de Turing quântica é objeto de estudo de vários pesquisadores,
Bernstein e Vazirani (1993) por exemplo, fazem algumas comparações com os modelos de classes de
complexidade clássicos com aqueles criados com base nas evoluções obtidas na computação quântica. As
classes BQP, EQP e ZQP acabaram por fundamentar as bases da teoria da complexidade quântica.
Como indicado por Tetsushi (2004):
Uma linguagem L está na classe BQP (Bounded Error Quantum Polynomial Time) se e apenas se existe
uma máquina de Turing quântica tal que para qualquer entrada x uma observação de uma certa célula da
fita após um processamento de tempo polinomial, ela retorna 1 com probabilidade maior que 2/3 se x
pertencer a
L ou 0 com probabilidade maior que 2/3 caso contrário.
Uma linguagem L está na classe EQP (Exact Quantum Polynomial Time) se e apenas se existe uma
máquina de Turing quântica e um polinomial p tal que para qualquer entrada x uma observação de uma
certa célula da fita após um processamento de p(|x|) passos retorna 1 com probabilidade 1 se x pertencer a
L
ou 0 com probabilidade 1 caso contrário.Uma linguagem L está na classe ZQP (Zero Error Quantum
Polynomial Time) se e apenas se existe uma máquina de Turing quântica tal que para qualquer entrada
x uma observação de uma certa célula da fita (célula indicadora de parada da máquina) após um
processamento de tempo polinomial de seu tamanho ela retorna 1 com probabilidade maior que 1/2 e
então se uma observação de outra célula (célula de decisão) retorna 1 com probabilidade 1 se x pertencer
a L, 0 com
probabilidade 1 caso contrário.
Na teoria da complexidade clássica, a classe BPP (Bounded Error ProbabilisticPolynomial Time) é tida
como a classe que comporta todas as linguagens que são eficientemente computáveis em uma máquina de
Turing probabilística.

O trabalho de Bernstein e Vazirani (1993) apresenta mais alguns resultados interessantes no aspecto de
relacionamento entre as classes de complexidade entre a máquina de Turing clássica e a quântica. A
começar pela definição de que como máquinas de Turing reversíveis são um caso especial das máquinas
de Turing
quânticas temos que P ºEQP e BPP ºBQP , além disso é demonstrado que PESPAÇO , o que implica
na cadeia de inclusões .
Com base no trabalho de Simon (1994) , Shor (1994) propôs um algoritmo para fatoração numérica que é
executado em tempo polinomial e como classicamente este problema é tido como pertencente à classe NP
é levantada a questão se não seria o caso de NP ºBQP .
O novo paradigma da computação quântica tem criado uma expectativa muito grande
com respeito ao seu poder de processamento. Ainda não se possui uma prova
conclusiva que uma máquina de Turing quântica seria mais poderosa que a sua versão
clássica, mas evidências tem aparecido que podem levar a esse resultado. Uma
confirmação de que certos algoritmos seriam executados com uma eficiência maior em
um computador quântico do que em uma máquina de Turing probabilística definida
classicamente poderia invalidar a tese forte de Church-Turing levando a teoria da
complexidade computacional a um novo patamar. [SERAFIM]

Figura 4: Dr.Isaac Chuang, da IBM, e um computadodor quântico com 7 qubits, construído com a tecnologia NMR.(Nuclear
Magnetic Resonance) .

5. Máquina de Turing Probabilística

Uma máquina de Turing probabilística (MTP) é uma MTND que funciona de maneira diferente. A
cada passo, em vez de uma transição ser escolhida arbitrariamente dentre todas as transições aplicáveis,
escolhe-se uma com probabilidade uniforme. Assim, pode-se falar na probabilidade da MTP produzir,
numa computação para uma certa entrada, uma saída específica. Todas as definições dadas para as
MTNDs aplicam-se de maneira natural a uma MTP.
Observe que uma MTD é uma MTP em que, a cada passo, há apenas uma Transição aplicável.
Uma MTP corresponde à formalização do conceito de um computador acoplado a um gerador de
símbolos aleatórios.Possível descrever o funcionamento de uma MTP postergando as escolhas aleatórias
para o final. Ou seja, pode-se calcular a probabilidade de se estar em uma configuração específica a cada
passo e só ao final fazer um único sorteio para determinar a configuração em que a máquina
termina..[CARDONHA, SILVA,(2003/2004)]
Um algoritmo probabilístico é um algoritmo que utiliza a probabilidade como parte de sua lógica.
Na prática, isso significa que a máquina que implementa o algoritmo deve acessar um gerador de números
pseudo-aleatórios. O algoritmo utiliza bits aleatórios como um guia para o seu comportamento. Diferente
dos algoritmos convencionais, um algoritmo probabilístico, dada uma mesma sequência de entrada, não
necessariamente leva a um mesmo estado final .
Para demonstrar os exemplos a seguir deve-se assumir um modelo. Um computador inicia seu trabalho
sempre num estado inicial Q0 e, dado uma seqüência de símbolos de entrada, esta máquina passará a
outros estados. Numa máquina clássica não-probabilística, as transições dependem apenas da seqüência
de símbolos, ou seja, dado um estado Qn, a transição deste para um outro estado é sempre a mesma dado o
recebimento do mesmo símbolo. Em um algoritmo probabilístico, uma mesma seqüência de entrada não
leva sempre a um mesmo estado final de computação. Isso acontece porque as transições entre estados
dependem além do estado atual e do símbolo recebido, também de uma escolha aleatória. Imagine, num
caso simplificado que, além de ler um símbolo para decidir o próximo passo de computação, a máquina
ainda "lance uma moeda" para decidir se passa ou não ao próximo estado.[WIKIPEDIA]
Portanto, uma Máquina de Turing Probabilística M é um tipo de Máquina de Turing não-determinística
que possui passos de transição chamados de lançamento-de-moeda, dando a máquina duas possibilidades
a cada transição.
Se na computação de uma entrada w é gerado o caminho de execução (ramificação) b, e neste, foram
dados k lançamentos de moeda, então a probabilidade do caminho é dada por: P[b] = 2 − k. Já a
probabilidade de aceitação da entrada w é dada por: , ou seja, a soma de todos os caminhos de execução
que aceitam a palavra w. Adicionalmente, temos que: P[Mrejeitaw] = 1 − P[Maceitaw].
A máquina M continua reconhecendo linguagens apenas quando aceita todas as palavras da mesma e
rejeita no caso contrário. Mas a uma Máquina de Turing Probabilística é permitido uma pequena
probabilidade de erro: . Desta forma, diz-se que M reconhece uma linguagem A com probabilidade de
erro ε se:
Ganhos (complexidade)
BPP :Classe das linguagens que são reconhecidas por uma máquina de Turing probabilística (em tempo
polinomial) com um erro no interval [0, 0.5). Este erro pode ser diminuído exponencialmente utilizando o
lema da aplicaficação. Este lema diz que para toda máquina de Turing probabilística (em tempo
polinomial = polin(n)) M1 que opera com erro ε, existe uma máquina equivalente M2 que opera com uma
probabilidade de erro de 2 − polin(n). Isto pode ser provado dado que M2 pode simular a máquina M1,
executá-la um número polinomial de vezes e fazer uma escolha majoritária entre as respostas computadas.
Existe um algoritmo probabilístico para teste de primalidade pertencente a BPP.
RP : Classe das linguagens que são reconhecidas por uma máquina de Turing probabilística (em tempo
polinomial) no qual as entradas pertencentes a linguagem são aceitas com probabilidade de no mínimo
0.5 e entradas não pertencentes a linguagem são rejeitadas com probabilidade 1. Este tipo de erro,
denominado erro de um único lado, é muito comum nos algoritmos probabilísticos. Nesta classe também
é possível a redução exponencial do erro cometido.
ZPP :Engloba os problemas que possuem algoritmos que resolvem em tempo polinomial (no caso médio)
e dão sempre uma resposta correta, mesmo que possam não parar em alguns casos.[WIKIPEDIA]

6. Enumeradores
Um enumerador é uma máquina de Turing com uma impressora em anexo. A maquina de Turing
pode usar essa impressora como um dispositivo de saída para imprimir cadeias. Toda vez que a máquina
de Turing quer adicionar uma cadeia à lista, ela envia a cadeia para a impressora.Ele começa com uma
fita de entrada em branco.Caso não parar, ele pode imprimir uma lista infinita de cadeias. A linguagem
enumerada por E é a coleção de todas as cadeias que ela eventualmente imprime. Alem do mais, E pode
gerar as cadeias da linguagem em qualquer ordem, possivelmente com repetições.[SIPSER,2005]
7.Multi-Fitas

Uma máquina de Turing multi-fitas é como uma maquina de Turing comum com varias fitas.
Cada fita tem sua propria cabeça para ler e escrever. Inicialmente a entrada aparece sobre a fita 1, e as
outras começam com branco. A função de transição é modificada para permitir ler, escrever, e mover as
cabeças em todas as fitas simultaneamente. [ SIPSER,2005]
Uma máquina de Turing pode ser definida como uma 7-tupla M = <Q, Γ, Σ ,q0, b, F, δ>, onde:

• Q é o estados.
• Γ é o alfabeto de entrada.
• Σ ⊆ Γ - {b} é o alfabeto da fita.
• q0 ⊆ Q, é o estado inicial.
• b ⊆ Γ, é o espaço em branco.
• F ⊆ Q, é o conjunto de estados finais.
• δ → Q×Γ→Q×Γ×{L,R} é a função de transição onde L é um movimento para a esquerda e R é
um movimento para a direita.

O comportamento da máquina de Turing é determinado pela sua função de transição δ. A cada


passo a cabeça lê um símbolo e dependendo de seu estado ela grava outro símbolo, muda de estado e vai
para esquerda ou direita. Chamaremos aqui essa máquina de MT¹ ou somente MT.

8. Máquina de Turing com Múltiplas Fitas e Cabeças

Nessa extensão da Máquina de Turing, a máquina pode ter múltiplas fitas cada uma com sua
cabeça com permissão para leitura e escrita. Vamos nos focar no caso onde há duas fitas, que
chamaremos de MT².

A cada passo a máquina lê um os símbolos lidos por suas cabeças e dependendo desses resultados
e do estado da unidade central, cada cabeça move ou escreve e o estado central muda.
A função de transição δ² da MT² é da forma:
δ² → Q×Γ×Γ → Q×Γ×Γ×{L,R}x{L,R}
Note que os movimentos das cabeças são independentes. É possível que em um passo uma cabeça ande
para a esquerda e a outra para a direita.
Equivalência
A MT² é equivalente a uma MT¹. Embora ela traga alguma facilidade e eficiência ela não traz nenhum
poder computacional adicional. De forma que podemos simular uma MT² usando uma
MT¹.[SILVEIRA,ROCHA,2007]
A máquina de Turing a seguir tem um alfabeto {'0', '1'}, onde 0 representa o símbolo branco. Ela espera
uma série de 1's na fita, com o cabeçote inicialmente no 1 mais à esquerda, e duplica os 1's com um 0 no
meio. Por exemplo, "111" torna-se "1110111". O conjunto dos estados é {s1, s2, s3, s4, s5} e o estado
inicial é s1. A tabela de ação é dada a seguir.
Old Read Wr. New Old Read Wr. New
St. Sym. Sym. Mv. St. St. Sym. Sym. Mv. St.
------------ ------------
s1 1 -> 0 D s2 s4 1 -> 1 E s4
s2 1 -> 1 D s2 s4 0 -> 0 E s5
s2 0 -> 0 D s3 s5 1 -> 1 E s5
s3 0 -> 1 E s4 s5 0 -> 1 D s1
s3 1 -> 1 D s3
A primeira linha desta tabela pode ser lida como: "Se a máquina estiver no estado s1 e o símbolo lido pelo
cabeçote for 1, então escreva o símbolo 0, mova uma posição para a direita e mude o estado para s2".
Uma computação nesta máquina de Turing pode ser, por exemplo: (a posição do cabeçote é indicada
mostrando-se a célula em negrito)
Passo Estado Fita Passo Estado Fita
-------- ---------
1 s1 11 9 s2 1001
2 s2 01 10 s3 1001
3 s2 010 11 s3 10010
4 s3 0100 12 s4 10011
5 s4 0101 13 s4 10011
6 s5 0101 14 s5 10011
7 s5 0101 15 s1 11011
8 s1 1101 -- pára --
O comportamento desta máquina pode ser descrito como um laço (loop): ele inicia em s1, substitui o
primeiro 1 com um 0, então usa o s2 para mover para a direita, passando pelos 1's e pelo primeiro 0
encontrado. S3 então passa pela próxima seqüência de 1's (inicialmente não há nenhuma) e substitui o
primeiro 0 que encontra por um 1. S4 move de volta para a esquerda, passando pelos 1's até encontrar um
0 e vai para o estado s5. S5 então move para a esquerda, passando pelos 1's até achar o 0 que foi
originalmente escrito por S1. Ele substitui o 0 por 1, move uma posição para a direita e entra no estado s1
novamente para outra execução do laço. Isso continua até s1 achar um 0 (este é o 0 que fica entre as duas
cadeias de 1's), situação na qual a máquina pára.
[WIKIPEDIA,2008]

9.Máquina de Turing Paralela


Uma Máquina de Turing Paralela é uma 9-upla:
M = (S, Q, V, [, C, q0, F, ß, ¤), onde:
S: alfabeto de símbolos de entrada;
Q: conjunto de estados possíveis da máquina, o qual é finito;
V: alfabeto auxiliar;
[: Função pré-processada que, a partir da entrada, define um programa ou a tabela de transições estendida
P e um alfabeto auxiliar V. A função programa estendida é obtida a partir da entrada e da função pré-
processada, que definirá a quantidade de símbolos auxiliares e as transições, que terão o seguinte formato:

Estado corrente
Símbolo lido da fita
Novo estado;
Símbolo a ser gravado;
Movimento da cabeça:
E Þ esquerda
D Þ direita
Símbolo de sinalização:
“Æ Þ não fazer nada”
“ * Þ criar cabeça”

C: Conjunto de cabeças. Inicia sempre com apenas uma cabeça e pode ser alterado por [.
q0: estado inicial da máquina, tal que q0 é elemento de Q;
F: conjunto de estados finais tal que F está contido em Q;
ß : símbolo especial branco;
¤: símbolo especial marcador de início ou símbolo de início de fita; O símbolo de início de fita ocorre
exatamente uma vez e sempre na célula mais à esquerda da fita.
Símbolo auxiliar final: simboliza o final do processamento de cada símbolo da entrada.

A Máquina de Turing Paralela é constituída de 4 elementos:

-Fita: usada simultaneamente como dispositivo de entrada, de saída, de memória de trabalho e de


comunicação entre cabeças. É um elemento finito a esquerda e tão grande quanto necessário a direita.
Sendo dividida em células, onde cada célula armazena um símbolo. Os símbolos podem pertencer ao
alfabeto de entrada, ao alfabeto auxiliar, ou ainda ser branco (ß) ou marcador de inicio de fita.
-Unidade de Controle: Ela é o responsável pela ativação das cabeças e do número de cabeças disponíveis
para o processo. Define o programa ou função de transição inicial a partir da entrada existente na fita. Ela
cria, gerencia a execução das cabeças e exclui as cabeças.
-Cabeças: Cada cabeça se constitui de uma unidade de leitura e gravação. Elas são responsáveis pelo
processamento propriamente dito. Elas acessam uma célula da fita de cada vez, lêem e gravam símbolos e
movimentam-se para a esquerda ou para a direita.
-Programa ou Função de Transição: função que define os estados da máquina e comanda as leituras, as
gravações, o sentido de movimento das cabeças e a mensagem que sinaliza a unidade de controle para
criação e exclusão de cabeças. Na situação em que duas ou mais cabeças se encontram na mesma célula
da fita, pode acontecer que no máximo uma cabeça gravando propriamente e qualquer número de cabeças
somente lendo: nesse caso, as cabeças que estiverem lendo terão acesso simultâneo e a seguir, a cabeça
que estiver gravando propriamente troca o símbolo na célula da fita. Todas as outras se movimentam
normalmente. Mais de uma cabeça gravando propriamente e qualquer número de cabeças somente lendo:
nesse caso, exige-se a interferência da unidade de controle para decidir sobre a precedência de gravação.
Uma cabeça dentre as que irão gravar propriamente será autorizada a efetivar sua gravação, enquanto as
outras entram no estado de inércia. Após esse ciclo, as cabeças sairão do estado de inércia e reiniciarão
seu processamento. O estado de inércia não se aplica às cabeças que apenas realizam leitura e nem às
cabeças não envolvidas no conflito. No caso da situação de conflito quando duas (ou mais) cabeças
tentam gravar (mudar o símbolo) ao mesmo tempo, em uma mesma posição da fita, foi adotado, nesse
trabalho, que a cabeça mais antiga (com menor número de índice) têm preferência sobre cabeças mais
novas. A ordem de criação das cabeças não influi de qualquer outra forma no processamento, esse foi
simplesmente um critério de prioridade escolhido no projeto. Nessa situação, a cabeça de menor índice
executa a gravação e se move normalmente. As demais, nessa iteração, permanecem paradas, em estado
de inércia. Na próxima iteração, as cabeças reavaliarão a situação atual, relendo o símbolo corrente na fita
e executarão os comandos especificados na função de transição. [NAVAUX,1988]

9. Máquina de Mealy
A Máquina de Mealy é um Autômato Finito modificado de forma a gerar uma palavra de saída para
cada transição entre os estados. Neste tipo de máquina de estados estas palavras de saída dependem do
estado atual e do valor das entradas.[VEIRA, apud BRITO,MARTENDAL,EDUARDO (2003)]
O nome "máquina de Mealy" tem origem no nome do promotor do conceito: G. H. Mealy, um pioneiro
das máquinas de estado, que escreveu A Method for Synthesizing Sequential Circuits, Bell System Tech.
J. vol 34, pp. 1045–1079, September 1955.
Essas máquinas oferecem um modelo matemático rudimentar para definir máquinas de cifras.
Considerando como alfabeto de entrada e de saída o alfabeto latino, por exemplo, então a máquina de
Mealy pode ser desenhada de forma a que dada uma série de letras (uma sequência de entrada de dados),
ela pode processá-la numa série cifrada (uma sequência de saída de dados). No entanto, apesar de ser
possível descrever a Enigma através duma máquina de Mealy, o diagrama de estados seria demasiado
complexo para se considerar um método cómodo para desenhar máquinas de cifra.
Definições formais:

Uma Máquina de Mealy M é autômato finito determinístico com saídas associadas às transições e
pode
ser representada formalmente pela sêxtupla M = (Ó, Q, ä, q0, F, .), onde:

Ó é um alfabeto de símbolos de entrada.


Q é um conjunto de estados possíveis do autômato, o qual é finito.
ä é a função programa ou de transição ä: QxÓ Qx.*
q0 é o estado inicial do autômato, tal que q0 é elemento de Q
F é um conjunto de estados finais tal que F está contido em Q. é um alfabeto de símbolos de saída.
O processamento de uma Máquina de Mealy para uma dada entrada w consiste na aplicação sucessiva da
função programa para cada símbolo de w (da esquerda para a direita), até ocorrer uma condição de
parada. Caso a saída da função programa seja uma palavra vazia, nenhuma gravação é realizada, ou seja,
a cabeça da fita não se move. Porém se todas as transições de uma determinada máquina de Mealy
gerarem saídas vazias, então esta se comporta como um Autômato Finito.

Exemplo de Máquina de Mealy :


Uma aplicação comum e freqüentemente recomendada para os autômatos com saída é o projeto de
diálogo entre um programa (de computador) e o seu usuário. Neste caso, o diálogo poderia se dar de duas
maneiras: ser comandado pelo programa ou pelo usuário. [FURTADO, apud
BRITO,MARTENDAL,EDUARDO (2003)]

10. Máquina de Moore


Na teoria da computação, uma máquina de Moore é um autômato de estado finito onde as saídas
são determinadas pelo estado corrente apenas (e não pela entrada). O diagrama de estado para uma
máquina de Moore inclui uma sinal de saída para cada estado.[WIKIPEDIA]
A Máquina de Moore possui uma função que gera uma palavra de saída (que pode ser vazia) para cada
estado da máquina. Esta saída só depende do estado atual da máquina [VEIRA, apud
RITO,MARTENDAL,EDUARDO (2003)]
A saida de uma máquina de Moore depende apenas do estado actual da máquina, sendo que as
transições não possuem qualquer sinal em anexo. Mesmo assim, por cada máquina de Mealy existe uma
máquina de Moore equivalente cujos estados consistem na união dos estados da máquina de Mealy e o
produto cartesiano dos estados da máquina de Mealy com o alfabeto de entrada de sinais.[WIKIPÉDIA]
Uma Máquina de Moore M, como dito anteriormente, é um Autômato Finito Determinístico com
suas saídas associadas aos estados. É representada formalmente por uma septupla M = (Ó, Q, ä, q0, F, .,
äS),
onde:
Ó é um alfabeto de símbolos de
entrada.
Q é um conjunto de estados possíveis do autômato, o qual é finito.
ä é a função programa ou de transição ä: QxÓ Q
q0 é o estado inicial do autômato, tal que q0 é elemento de Q
F é um conjunto de estados finais tal que F está contido em Q.
. é um alfabeto de símbolos de saída.
äS é a função de saída äS: Q .* a qual é uma função total.
O processamento de uma Máquina de Moore ocorre da mesma forma que na máquina de Mealy, assim
como o tratamento de saídas vazias. Assim como a Máquina de Mealy, se todos os seus estados gerarem
saída vazia, ela também se comporta como um Autômato Finito.[FURTADO apud
BRITO,MARTENDAL,EDUARDO (2003)]

Exemplo de Máquina de Moore:


Um exemplo comum de aplicação do conceito de Máquina de Moore é o desenvolvimento de
Analisadores Léxicos de compiladores ou tradutores de linguagens em geral. Basicamente,
um analisador léxico é um Autômato Finito (em geral, determinístico) que identifica os componentes
básicos da linguagem como, por exemplo, números, identificadores, separadores, etc. Uma
Máquina de Moore como um Analisador Léxico é como segue:
• um estado final é associado a cada unidade léxica;
• cada estado final possui uma saída (definida pela Função de Saída) que descreve ou codifica a unidade
léxica identificada;
• para os demais estados (nãofinais) a saída gerada é a palavra vazia.(PALAZZO, apud
BRITO,MARTENDAL,EDUARDO (2003)]

10.1 Equivalência Entre Máquinas de Mealy e Moore


A equivalência dos dois modelos de Autômato Finito com Saída não é válida para a entrada vazia.
Neste caso, enquanto a Máquina de Moore gera a palavra correspondente ao estado inicial,a Máquina de
Mealy não gera qualquer saída, pois não executa transição alguma. Entretanto, para os demais
casos, a equivalência pode serfacilmente mostrada. Assim, toda Máquina de Moore pode ser simulada
por uma Máquina de Mealy, para entradas não vazias, e Toda Máquina de Mealy pode ser simulada por
uma Máquina de Moore. No caso de saídas vazias, o que ocorre é que enquanto a Máquina de Moore gera
a palavra correspondente ao estado inicial, a Máquina de Mealy não gera qualquer saída, pois não executa
transição alguma, tornando assim as duas incompatíveis. [FURTADO , apud
BRITO,MARTENDAL,EDUARDO (2003)]

Conclusão

À medida que os estudos sobre as Máquinas de Turing evoluem, mais soluções de complexos
problemas serão descobertas, como por exemplos os NP, ou NP-Completos, da mesma forma que a
Ciência da Computação também evoluirá, com máquinas mais potentes, e mais capazes de fazer pesados
cálculos matemáticos.
Referências

BOOLOS , G. and Jeffrey, R., Computability and Logic, 2ª ed., Cambridge: Cambridge University Press,
1980.

BRITO, Roberta , MARTENDAL, Diogo , EDUARDO, Henrique M. de Oliveira


Universidade Federal de Santa Catarina (UFSC), 2003

FONSECA, Ijair M., World Space Congress - Washington D.C. – 1992. Disponível em
<http://www2.dem.inpe.br/ijar/> Acessado em 27 de junho as 14:30)

FURTADO, Olinto J. Varela, Apostila de Linguagens Formais e Compiladores. Florianópolis: UFSC,1992.


19p.

HERKEN, Rolf. The Universal Turing Machine - A Half-Century Survey, Springer Verlag, ISBN 3-211-
82637-8

NAVAUX, P. O. A. Introdução ao Processamento Paralelo. In: Simpósio Brasileiro de Arquiteturas de


Computadores e Processamento de Alto Desempenho, 2, Águas de Lindóia, 26-28, set., 1988.
Proceedings. São Paulo: SBC, 1988.
v.1, pp. I.1-I.14.

PALAZZO, Luiz A M.,Propriedades das Linguagens Regulares e Autômatos com Saída.Pelotas: Universidade
Católica de Pelotas - Escola de informática. Abril de 2002. 6p.

ROGOZHIN, YURII, "A Universal Turing Machine with 22 States and 2 Symbols", Romanian Journal
Of Information Science and Technology, 1(3), 259-265, 1998. (surveys known results about small
universal Turing machines)

SILVA, Porfírio (2003) disponível em < http://turing-


machine.weblog.com.pt/arquivo/2003_11.html>
Acessado em 21 de junho 2008 , 11:55)

SERAFIM , Marcos P., Máquina de Turing Quântica e Complexidade Computacional, Universidade de


Franca (UNIFRAN) acessado em 27 junho as 1633.disponível em
<ppginf.ucpel.tche.br/weciq/CD/Posters/MarcosSerafim/marcos-serafim.pdf>

SILVEIRA, José Maria Departamento de Computação da Universidade Federal do Ceará,


2007.1.acessado em 27 de junho as 16:49 , disponível em <http://eupodiatamatando.com/page/4/?s=teo>

STRATHERN, Paul: Turing and the Computer - The big idea, Anchor Books/Doubleday, ISBN 0-385-
49243-X
TURING, M. A. (1950). Computing Machinery and intelligence. In Mind; reprinted in 1964 in A. R.
Andersen, ed. Minds and Machines. Englewood Cliffs, NJ: Prentice-Hall.

VIEIRA, Newton J.,Fundamentos Teóricos da Computação. Belo Horizonte: UFMG,2002.

WIKIPEDIA ,A enciclopédia livredisponível em <ttp://pt.wikipedia.org/wiki/>Acessado em 23 de junho


2008, as 20:23)