Académique Documents
Professionnel Documents
Culture Documents
Artigos, Livros e 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
2. 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.)
Parte Física
Os Símbolos
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.
O Leitor
O Empilhador
Figura 4: Empilhador
A implementação fundamentase em três subrotinas, sendo que uma é
selecionar qual símbolo será posto no topo da memória, outra para girar a peça
que fornece os símbolos um quarto de volta, e a última é para desempilhar o
símbolo para a memória. A linguagem utilizada para tal é ProBot.
A sub-rotina Empilhador gira a peça que fornece os símbolos um quarto de volta. Usa
um sensor para ligá-lo e desiligá-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” .
Quanto a interface é relevante destacar alguns itens e não fazer uma descrição
detalhada do software. Existem duas regiões para a construção das máquinas, uma onde
o usuário constrói efetivamene a máquina, desenhando o grafo dela, e outra Onde
existem as ferramentas (grafos) para a construção efetiva da máquina. Nas ferramenas
que mencionei existem os símbolos (Symbols), é importante salientar que é possível
acrescentar símbolos clicando com o botão direito do mouse em Symbols e escolhendo
a opção apropriada. As instruções são unicamente as que aparecem na imagem acima,
que é mover a cabeça para a direita ( [ R ] Right ), para a esquerda ( [ L ] Left ) e fazer
nada ( [ ? ] Do Nothing ). Ainda é possível visualizar que existem outras máquinas
criadas, e pode-se utilizar essas máquinas anteriormente criadas como subrotinas da
máquina que está sendo editada. No exemplo acima existem 10 máquinas que podem
ser utilizadas como subrotinas.
A grande vantagem dessa máquina é o fato de poder utilizar outras máquinas
criadas anteriormente como subrotinas.
A próxima figura mostra uma sub máquina, seus respectivos estados, os símbolos
reconhecidos em execução (Observe que no local onde a cabeça da máquina está,
destacada a fita) :
A próxima figura mostra como o programa aparece após ser executado:
Esse software é um sotware livre, que possui licença licença GNU versão 2 de 1991.
É póssivel Visualizar o código fonte do projeto de forma online no browser acessando o
link:
http://sourceforge.krugle.com/kse/codespaces/Eh68i5
http://downloads.sourceforge.net/visualturing/Turing-2.0-
src.zip?modtime=1180543569&big_mirror=0
Para baixar o arquivo compactado apenas com o .jar, “executável” java acesse o link:
http://downloads.sourceforge.net/visualturing/Turing-
2.0.zip?modtime=1180543350&big_mirror=0
Para obter mais informações a respeito do projeto, acesse a página dele no SourceForge
em:
http://sourceforge.net/projects/visualturing/
É importante salientar ainda que esse projeto não possui documentação oficial,
algo que dificulta muito a sua utilização, isso se deve a o autor acreditar que o software
é intuitivo por si só, entretanto podem ocorrer dificuldades devido a falta de
documentação oficial.
Um detalhe que não pode passar desapercebido é o fato de, como rodar em java,
através de um arquivo. Jar, esse software não necessita de instalação. Os único pré-
requisitos são:
− Ter a Máquina Virtual Java 1.4 (JRE – Java Runtime Envoirement ) ou posterior
instalada no computador.
http://downloads.sourceforge.net/visualturing/Turing-
2.0.zip?modtime=1180543350&big_mirror=0
De o comando para a Máquina Virtual Java (JVM) executar esse programa (.jar) No
windows basta dar um duplo clique, no linux clique com o botão direito do mouse e
selecione com um clique simples a opção Abrir com o "Sun Java runtime", ou ainda
simplesmente digite o comando " java -jar Turing.jar " na shell
http://www.cs.usfca.edu/~jbovet/vas/download/generic.zip
danilomatias@danilomatias-laptop:#~/Documentos/UDESC/TEC/linux/generic# ls
generic __MACOSX
danilomatias@danilomatias-laptop:#~/Documentos/UDESC/TEC/linux/generic# cd
generic
danilomatias@danilomatias-laptop:~/Documentos/UDESC/TEC/linux/generic/generic#
ls
danilomatias@danilomatias-
laptop:#~/Documentos/UDESC/TEC/linux/generic/generic# ls -a
danilomatias@danilomatias-laptop:~/Documentos/UDESC/TEC/linux/generic/generic#
cd Visual\ Automata\ Simulator
danilomatias@danilomatias-
laptop:~/Documentos/UDESC/TEC/linux/generic/generic/Visual Automata Simulator#
ls
*
A figura acima é da construção do enumerador para a linguagem: (a+b) onde,
como já mencionado o botão [ R ] é na verdade uma máquina de Turing definida em
outro lugar.
O botão da mão segurando o lápis é para gerar uma saída em outro lugar que não
seja a fita, que é o caso do enumerador. A saída na figura está em outra região e indicada
pela palavra OUTPUT.
Na figura seguinte é exemplificada uma MT – Máquina de Turing com sur
rotinas que possuem outras máquinas de Turing.
Na página do projeto há pelo menos dois vídeos que não explicam muito bem
como operar o software, entretanto já é alguma documentação.
Os links dos vídeos são:
http://www.cs.usfca.edu/~jbovet/vas/videos/video_b.wmv
e http://www.cs.usfca.edu/~jbovet/vas/videos/video_c.wmv
Ele possui alguns aspectos interessantes tais como:
− É capaz de Criar AFDs – Autômatos Finitos Determinísticos e AFNs– Autômatos
Finitos Não Determinísticos
− É capaz de corverter AFDs e AFNs
− Fácil utilização devido a interface gráfica
− Pode-se salvar as máquinas em documentos específicos da aplicação
− Pode-se depurar facilmente o modo como a máquina irá operar, já que cada passo
possui cores diferentes
Pode-se observar que no espaço onde o usuário entra com a função programa da
máquina de Turing, ele entra com a entrada no seguinte formato; estado de origem,
símbolo lido da fita, estado destino, símbolo a ser escrito na fita se a cabeça se
movimentar para a direita se não > ou se não for escrever nada na fita <, onde > indica
que a cabeça se movimenta para a direita e < se movimenta para a esquerda.
Para carregar a máquina cuja função programa o usuário digitou basta ele clicar
no botão [ Load ]
Caso o usuário não faça a mínima idéia de que MT deva colocar para simular e
visualizar seu comportamento. Esse simulador de MT possui as máquinas pré
carregadas, para carregar uma delas basta carregar uma delas no botão ali do lado
esquerdo do botão [ Load ]
Para visualizar o comportamento da máquina basta clicar no botão [ Auto ] e
visualizar o comportamento. Entretanto se o usuário deseja fazer passo a passo as
transições, basta ele clicar no botão [ Step ] e visualizar o comportamento da cabeça da
fita em cada estado, lembrando que para cada transição ele tem que clicar em [ Step ]
O botão [ FastAuto ] faz o que o botão [ Auto ] faz, mas de maneira bem veloz.
O botão [ Stop ] pára a Máquina
O botão [ Clear ] limpa tudo o que foi feito.
O botão [ Talk ] serve para o Turing dizer algo.
O botão [ Change State] serve para mudar o estado que a cabeça da MT se
encontra, para mudar o usuário necessita inserir o estado que deseja posicionar a cabeça
da MT no lado direito do botão.
O botão [ Update] serve para mudar o estado que a cabeça da MT se encontra,
para mudar o usuário necessita inserir o estado que deseja posicionar a cabeça da MT
no lado direito do botão. A diferença é que o Update realiza a transição do estado que se
deseja, dando a impressão que vai para o estado exatamente posterior ao desejado.
Para escrever na fita, sem ser com a MT, basta clicar na fita e digitar os
caracteres que deseja que a fita contenha.
O botão [ Stop ] pára a simulação que pode ser reiniciada do estado que parou
clicando no botão [ Start ]
Algo que prende a atenção do usuário nesse simulador é o fato das cores da
interface gráfica terem sido muito bem pensadas, além de principalmente possui
inteface simples, não tornando muito necessário estudar o funcionamento do simulador.
==============================================================
=
==============================================================
=
ERROR:
/home/danilomatias/Documentos/UDESC/TEC/Prolog/Bigode/tm_MUST.pl:267:
Warning:
/home/danilomatias/Documentos/UDESC/TEC/Prolog/Bigode/tm_MUST.pl:267:
true.
As simulações seguintes foram feitas tendo todos os arquivos que estavam na
página mencionada acima no diretório corrente.
Abaixo estão mais algumas simulações da máquina de Turing do Professor
Cláudio, ele fez baseado em outra, mas mudar 90 % do código é praticamente construir
uma nova.
?- iniciar.
==============================================================
=
==============================================================
=
Confirmando em ASCII o digitado: [99, 111, 110, 115, 117, 108, 116, 40, 39, 116,
101, 115, 116, 101, 95, 101, 120, 101, 109, 112, 108, 111, 39, 41, 46]
Fita: @consult('teste_exemplo').#
^ Agora o estado corrente é: 0
Fita: @consult('teste_exemplo').#
@consult('teste_exemplo').#
Deslocamento do Cabecote(R): 3
true .
?- iniciar.
==============================================================
=
==============================================================
=
@@@@@@@111111100000000@@@@@@@@##########
Confirmando em ASCII o digitado: [64, 64, 64, 64, 64, 64, 64, 49, 49, 49, 49, 49, 49,
49, 48, 48, 48, 48, 48, 48, 48, 48, 64, 64, 64, 64, 64, 64, 64, 64, 35, 35, 35, 35, 35, 35,
35, 35, 35, 35]
Fita: @@@@@@@@111111100000000@@@@@@@@###########
Leia-se: estado REJEIÇÃO por default... de seu pgm para esta entrada... Então estado
de r de rejeição por default ... !
true
Action? ;
fail.
?- iniciar.
==============================================================
=
Este é um simulador da Máquina de Turing
==============================================================
=
Confirmando em ASCII o digitado: [64, 64, 64, 64, 64, 64, 64, 64, 64, 49, 49, 49, 49,
49, 49, 49, 49, 49, 49, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 49, 49, 49, 49, 49,
49, 48, 48, 48, 48, 48, 48, 48, 48, 49, 49, 49, 49, 49, 48, 48, 48, 48, 48, 48, 49, 48, 48,
48, 48, 49, 48, 49, 48, 49, 48, 49, 48, 49, 48, 49, 48, 49, 48, 49, 48, 49, 48, 49, 35, 35,
35, 35, 35, 35, 35, 35, 35]
Fita:
@@@@@@@@@@11111111110000000000011111110000000011111000000100001
010101010101010101##########
Leia-se: estado REJEIÇÃO por default... de seu pgm para esta entrada... Então estado
de r de rejeição por default ... !
true
Action? .
?- iniciar.
==============================================================
=
==============================================================
=
Confirmando em ASCII o digitado: [64, 64, 64, 49, 49, 49, 48, 48, 48, 49, 48, 49, 48,
49, 48, 49, 48, 49, 48, 49, 49, 49, 49, 48, 48, 48, 48, 49, 49, 48, 48, 48, 48, 49, 48, 48,
48, 48, 48, 48, 48, 35, 35, 35]
Fita: @@@@11100010101010101111000011000010000000####
Leia-se: estado REJEIÇÃO por default... de seu pgm para esta entrada... Então estado
de r de rejeição por default ... !
true
Conclusões
Analisando os aspectos expostos até aqui observa-se que existem ferramentas
boas para o auxílio do aprendizado de máquinas de Turing.
Existem simuladores para cada necessidade, o do professor Cláudio ( MUST:
Mais Um Simulador da Máquina de Turing
) para aprendender ou treinar formalismos, o Warthman para quem deseja visualizar de
maneira gráfica e no navegador (Browser) da internet, os passos das operações da
máquina de Turing, o Simulador da Universidade de Boa Vista para quem deseja
entender um pouco mais da parte teórica da Máquina de Turing e quer “rodar” a
aplicação do browser, sem perder em nada em termos de interface gráfica, e com
exemplos de MT pré-carregadas no simualdor, o Visual Automata Simulador, para quem
deseja construir a MT de maneira visual e entendendo apenas do grafo da máquina de
Turing, com a vantagem de poder usar outras máquinas de Turing como subrotinas e
sem instalar a aplicação no computador, além de ser multiplataforma, o Simulador de
Cousineau com peças de LEGO para quem deseja montar a máquina fisicamente e ver os
resultador de forma física. Pôde-se observar que há simuladores de MT s para todos os
perfis de usuários, basta o usuário observar que perfil é o mais adequado para ele e ir a
busca para utilizar o simulador. Como buscou-se não escrever muito sobre cada simulador
esse documento pode servir de consulta rápida para a escolha do simulador mais
adequado a determinado perfil de usuário.
Um aspecto que levou-se em conta na escolha dos simuladores foi o fato de
possuir o código disponível para baixar, o que possibilita a implementação de novas
ferramentas baseadas nas já existentes, outro fator que a escolha por máquinas de código
livre possibilita é a explicação através do código fonte por parte do professor do que
acontece em uma máquina de Turing, trabalho esse que agregaria muito valor se aliado ao
ensino de linguagens de programaçao, pois se aplica muito os conceitos de orientação a
objetos, ponteiros a assim sucessivamente.
Referências