Академический Документы
Профессиональный Документы
Культура Документы
na Internet
Danilo Matias1, Marstela 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
Introdução
Sipser (2005) diz que projetar uma Máquina de Turing é uma tarefa
enfadonha, a qual exige paciência, tempo, e atenção. Os simuladores eletrônicos
servem para diminuir a complexidade desta tarefa, de forma a poupar quem a
projeta. Esse trabalho traz uma lista com vários deles, cada um com várias
características diferentes. Uns mais básicos e outros sofisticados.
1. Simulador Jastex
Este é um simulador rudimentar, no qual foi usada a tecnologia C#. Possui uma
interface basicamente dividida em duas porções: A primeira é a implementação da
máquina, usando vários estilos de interação, como botões e caixas de texto. A
segunda parte é a representação visual da máquina como um diagrama de transições
(Diagrama o qual consiste de círculos para representar estados e segmentos de linha
direcionados para representar as transições entre os estados. Uma ou mais ações
(saídas) podem ser associadas com cada transição.)
Quanto à interface, existem duas regiões para a construção das máquinas, sendo
que em uma, o usuário constrói efetivamente a máquina, desenhando seu grafo, e na
outra existem as ferramentas (grafos) para sua construção efetiva. Nas ferramentas
mencionadas existem os símbolos (“Symbols”), sobre o qual é importante salientar que
é possível acrescentá-los de forma a clicar com o botão direito do mouse em Symbols e
escolher a opção apropriada. As máquinas deste simulador podem mover a cabeça para
a direita ( [ R ] Right ), para a esquerda ( [ L ] Left ) ou ficarem paradas ( [ ? ] Do
Nothing ). Ainda é possível perceber a existência de outras máquinas previamente
criadas, e que é possível utilizá-las como subrotinas da máquina a qual está sendo
editada. No exemplo acima, existem dez máquinas as quais podem ser utilizadas dessa
maneira.
Um ponto alto desse simulador é o fato de poder utilizar outras máquinas criadas
anteriormente como subrotinas, pois isso poupa o tempo do programador, ou seja, ele
não precisa refazer as máquinas sempre que necessitar delas. A figura abaixo ilustra o
simulador:
Figura 6: Visual Turing
Como se pôde observar, a máquina é bem documentada, até informativa, pois acima
descreve sucintamente o significado de uma Máquina de Turing, porém é toda em
inglês, algo que nem todos os cientistas da computação dominam, infelizmente. Na
figura abaixo, há um screenshot deste simulador.
Figura 8: Simulador de Schweller
Parte Física
Os Símbolos
Os símbolos são feitos de cilindros. Usando pratos, ele pode codificar em
binário. Por exemplo, o cilindro da figura 1 abaixo é (1,0,1), ou o número 5. Usou-se
uma detector de luz para identificar cada símbolo.
Figura 10.1: Cilindro representando o número 5
A Memória
A pilha é uma espécie de torre vazada, na qual os símbolos caem horizontalmente. Ela
é, portanto, uma memória “compacta”, contendo aproximadamente dez bytes por seis
polegadas. Necessita-se assegurar que os símbolos sempre permanecerão horizontais, o
que implica numa fricção homogênea em todo lugar. Abaixo, na figura 2, é mostrada
apenas uma seção, porém muitas podem ser conectadas juntas.
Figura 10. 2: A memória da máquina
O Leitor
O leitor está no fundo da memória. É um mecanismo que expulsa um símbolo
por vez. O símbolo expulso passa na frente de um detector de luz (não mostrado), então
o código de barras pode ser lido. É composto pela parte inferior da pilha de memória
que desempilha o símbolo, e de uma alavanca ativada por dentro e por fora através de
um eixo vermelho. A figura 3 mostra essa parte da máquina e a alavanca.
O Empilhador
O empilhador está no topo. Sua função é colocar novos símbolos da pilha.
Funciona usando duas pás azuis. Toda vez que a pá rotaciona 90 graus, um símbolo cai
na memória. A figura 4 abaixo o ilustra
Figura 10.4: Empilhador
A sub-rotina Empilhador gira a peça que fornece os símbolos um quarto de volta. Usa
um sensor para ligá-lo e desligá-lo.
A segunda sub-rotina seleciona qual símbolo será posto no topo da pilha. Usa
duas variáveis globais: Uma indica e localização corrente e a outra indica qual o
símbolo desejado. Compara a posição atual com a posição desejada e move o motor
“Seletor” .
Referências
CSABA,G. “Visual Turing Machine 2.0 for Linux” 2007. Disponível em <
http://linux.softpedia.com/get/Science-and-Engineering/Mathematics/Visual-Turing-
Machine-27643.shtml> Acesso em 27 jun. 2008