Sunteți pe pagina 1din 12

GAM - Um Simulador para Auxiliar o Ensino de Linguagens

Formais e de Autmatos
Anibal S. Jukemura1, Hugo A. D. do Nascimento1, Joaquim Q. Ucha2
1

Instituto de Informtica Universidade Federal de Gois (UFG)


CEP 74001-970, Caixa Postal 131, Goinia, GO

Departamento de Cincias da Computao, Universidade Federal de Lavras (UFLA),


CEP: 37200-000, Lavras, MG
{anibal,hadn}@inf.ufg.br, joukim@comp.ufla.br

Abstract. A Finite Automaton is a mathematical model of a finite-state


machine that reads symbols from a tape and accepts or rejects its input. The
Theory of Finite Automata is important for modeling real machines with a
finite set of states, for compacting dictionaries, and for several others
applications. This paper describes a tool for helping students and teachers to
study the Theory of Finite Automata. The tool provides conditions for
simulating different types of abstract machines in order to perform several
operations and conversions that are common in this area of study.
Keywords: finite automata, simulator, learning tool.
Resumo. Um Autmato Finito um modelo matemtico de uma mquina de
estados finitos que l smbolos de uma fita e aceita ou rejeita sua entrada. A
Teoria de Autmatos Finitos importante para a modelagem de mquinas
reais com um conjunto finito de estados, para compactao de dicionrios, e
para vrias outras aplicaes. Este artigo descreve uma ferramenta para
auxiliar estudantes e professores a estudarem a Teoria dos Autmatos Finitos.
A ferramenta fornece condies de simular diferentes tipos de mquinas
abstratas a fim de executar diversas operaes e converses que so comuns
nessa rea de estudo.
Palavras-chave: autmatos finitos, simulador, ferramenta de aprendizagem.

1. Introduo
O estudo de Linguagens Formais e Autmatos imprescindvel para a formao de
profissionais em Cincias da Computao e em reas de conhecimento afins. As
definies e os problemas vistos nesse estudo so a base para compreender conceitos
mais complexos em Teoria da Computao, tais como decidibilidade e complexidade de
problemas. Alm disso, a Teoria de Autmatos tem aplicaes diretas na modelagem de
vrios sistemas fsicos de estados finitos e na construo de compiladores e
interpretadores para linguagens de programao. At mesmo processadores de texto
fazem uso de autmatos finitos para realizarem a busca de substrings (sub-cadeias de
1

XIII WEI

2432

caracteres) ou a verificao ortogrfica de palavras de uma forma eficiente [Kowaltowki


et. al 1998, Unitex 2005].
Embora a Teoria de Linguagens Formais e de Autmatos seja amplamente
pesquisada, percebe-se que h uma escassez de ferramentas de apoio ao aprendizado
desse tema.
As ferramentas computacionais especficas podem ser utilizadas efetivamente
para auxiliar no aprendizado de contedos da Computao. Em geral, o emprego de tais
ferramentas motivam o aluno para o estudo da disciplina, permitem testar rapidamente
novas idias ou conceitos j ensinados, alm de oferecerem um meio para correlacionar
aspectos tericos e prticos do contedo.
O objetivo do presente trabalho , portanto, apresentar uma ferramenta chamada
GAM (Ginux Abstract Machine), que auxilie no estudo de Linguagens Formais e
Autmatos nos Cursos de Cincias da Computao, suprindo assim a necessidade por
um ambiente de ensino para essa disciplina. Note que existem ferramentas similares
para tal fim. Contudo, nenhumas dessas ferramentas possuem a flexibilidade de
extenso vista na GAM, como ser discutido posteriormente neste artigo.
O restante deste documento est organizado como segue: a Seo 2 descreve
conceitos tericos bsicos sobre autmatos. A Seo 3 apresenta a ferramenta GAM. Na
Seo 4 feita uma comparao das caractersticas da GAM com outros sistemas
similares. Finalmente, na Seo 5, so feitas algumas consideraes sobre a
aplicabilidade e extensibilidade funcional da GAM.

2.

Definies bsicas sobre a Teoria de Autmatos

As definies encontradas nesta seo so baseadas nos trabalhos de Aho [Aho 1973],
Hopcroft [Hopcroft 1979], Menezes [Menezes 2000] e Sudkamp [Sudkamp 1997].*
Um autmato finito um modelo matemtico de uma mquina computacional
de estados finitos que l uma seqncia de smbolos (uma string) de uma fita e aceita ou
rejeita essa entrada. Tal modelo composto de trs partes:
a) Uma Fita consiste de um dispositivo de entrada que contm a informao
(smbolos) a ser processada;
b) Uma Unidade de Controle composta por uma leitora (cabea de leitura)
que acessa uma clula da fita de cada vez e movimenta-se para uma nova
posio na fita;
c) Um Programa ou Funo de Transio delta uma funo que, dado
um estado atual da mquina e um smbolo lido da fita, determina uma
mudana de estado.
Um autmato finito comea em um ou mais estados iniciais e l uma seqncia
de smbolos da fita. Durante o processo de leitura, o autmato muda de estado de acordo
*

Definies adicionais em Teoria de Autmatos podem ser encontradas nas referncias citadas.
2

XIII WEI

2433

com a sua funo programa. Uma vez lida a seqncia de smbolos, o autmato pra sua
execuo, e emite uma mensagem dizendo se aceita ou rejeita essa seqncia. O sinal de
aceitao emitido, se e somente se o autmato tiver parado em um estado previamente
definido como final.
O conjunto de todas as strings aceitas por um autmato formam a linguagem
aceita por essa mquina.
Os autmatos normalmente esto classificados nos seguintes grupos:
Autmatos Finitos Determinsticos (AFD): so mquinas que apresentam
uma funo programa delta que, para cada estado e cada smbolo, possui
uma nica transio bem definida. Alm disso, o autmato comea em um
nico estado inicial e a leitora da mquina avana imediatamente para a
prxima posio da fita aps a leitura de um smbolo.
Autmatos Finitos No-Determinsticos (AFND): so mquinas semelhantes
s da classe determinstica, diferenciando-se na funo programa delta que,
ao processar uma entrada composta pelo estado corrente e um smbolo lido,
tem como resultado um conjunto de novos estados. A mquina pode ter
tambm mais de um estado inicial. O funcionamento de um autmato nodeterminstico pode ser simulado atravs de uma multiplicao da unidade de
controle de um autmato determinstico.
Autmatos Finitos No-Determinsticos com Movimentos Vazios (AFND- ):
so mquinas semelhantes s da classe no-determinstica, com o adicional
de poderem realizar uma transio de estados sem a leitura de um smbolo da
fita.
Autmatos de Pilhas ou Autmatos push-down (APD): so mquinas
anlogas aos Autmatos Finitos anteriores, mas com a incluso de uma pilha
que funciona como memria auxiliar.
Mquinas de Turing (MT): o formalismo mais poderoso dentre as quais
foram citadas. Na realidade os autmatos desta classe so capazes de
executar quaisquer tarefas que sejam efetivamente computveis.
Existem algumas operaes bsicas que so realizadas sobre autmatos, entre
elas destacam-se:
1. Anlise e validao de cadeias de entrada: ao se analisar uma string de
entrada, a mquina de estados capaz de determinar se essa cadeia de
caracteres um elemento ou no da linguagem representada.
2. Converso de um AFND para um AFD e vice-versa: essa operao comprova
que essas duas classes so equivalentes.
3. Minimizao de um AFD: o objetivo da minimizao gerar um autmato
finito equivalente ao autmato original, mas com o menor nmero de estados
possvel.

XIII WEI

2434

Mas qual a relao entre Linguagens Formais e Autmatos? Uma linguagem,


de uma forma geral, uma reunio de um conjunto finito de smbolos e um conjunto de
regras de expresses que, devidamente formuladas, representam uma forma clara de
comunicao. Em Cincias da Computao, a Teoria de Linguagens Formais representa
o estudo dos modelos matemticos que possibilitam a especificao, o reconhecimento,
a classificao, as propriedades e o inter-relacionamento entre as linguagens. Tais
modelos matemticos so formalmente representados pelos autmatos.

3. A Ferramenta GAM
A Ginux Abstract Machine (GAM) uma ferramenta opensource (cdigo aberto) que
pode ser utilizada em sala de aula ou em laboratrio, como parte de um material de
apoio para o aprendizado de conceitos em Teoria de Linguagens Formais, Teoria da
Computao e Compiladores. Ela oferece os seguintes recursos:
1. mdulos para a entrada e teste de mquinas formuladas por alunos e pelo
professor;
2. suporte a diversos tipos de autmatos;
3. interface grfica para visualizao da mquina de entrada;
4. possibilidade de acompanhar passo-a-passo a execuo da funo de
transio delta; e
5. operaes de converso e minimizao de autmatos.
A GAM se originou de um trabalho de Especializao do Departamento de
Computao da Universidade Federal de Lavras, Minas Gerais [Jukemura 2004a]. A
ferramenta pode ser usada em ambientes GNU/Linux, Windows e em sistemas
operacionais que suportem GTK e GTKmm, estando disponvel para download em
http://www.ufgvirtual.ufg.br/~anibal/ginux.
3.1. Estrutura Interna
A estrutura interna da ferramenta GAM consiste de seis elementos distintos (ver Figura
1):

Usurio: quem fornece os dados necessrios para compor um autmato, e


por realizar operaes de simulao, converso e minimizao do mesmo.

Mdulo principal de visualizao (interface grfica): este mdulo


apresenta os autmatos graficamente como um grafo direcionado. O mdulo
de visualizao atua tambm como uma interface grfica, permitindo ao
usurio modificar o autmato e interagir com os demais recursos do sistema.

Mdulo dos autmatos: este mdulo composto pela classe que armazena
funcionalmente os autmatos que sero manipulados pela GAM.

Mdulo de minimizao de AFDs: chamado pelo usurio para minimizar


um autmato AFD. O resultado, o autmato mnimo, apresentado na tela
atravs do mdulo principal de visualizao.
4

XIII WEI

2435

Mdulo de converso de um AFND para um AFD: este o mdulo


responsvel por aplicar o algoritmo de converso de um AFND para um
AFD, com a opo de expor quais estados foram convertidos.

Mdulo de Entrada/Sada: este mdulo apresenta funes para salvar e


recuperar os autmatos atravs do disco rgido.

A verso atual da GAM possui, contudo, algumas limitaes. So elas:

os smbolos para os alfabetos de entrada, sada e auxiliar foram limitados


a uma quantidade mxima de trs e as mquinas a uma quantidade de at dez
estados;

o quadro de desenhos esttico, portanto, ele no fornece liberdade ao


usurio para manipular diretamente os componentes das mquinas;

os smbolos das transies, em algumas situaes, ficam superpostos,


ocasionando dificuldades na leitura. Essa situao, porm, contornada com
o uso da interface para expor a funo programa que mapeia todas as
transies.

as classes APD e MT so apenas expostas graficamente. A GAM ainda


no consegue ler e interpretar strings de entrada para essas duas classes.

importante ressaltar que as limitaes da ferramenta so conseqncias do


tempo limitado durante o seu desenvolvimento como trabalho de Especializao do
Departamento de Computao da Universidade Federal de Lavras. Portanto, sua
complementao funcional ser realizada futuramente.

Entrada de Dados
(Cadeia de
Caracteres)

Interface
Grfica

Visualizao do
Autmato (grafo
direcionado)

Salvar
Projeto

Validao da
Entrada:
aceita/rejeita

Minimizao de AFD
Autmato

Disco
Carregar
Projeto

Converso
AFND AFD

Figura 1. Estrutura funcional da GAM

3.2. Interface Grfica


Ao abrir a ferramenta, o usurio ir encontrar a janela principal do projeto que est
dividida em quatro blocos: o menu principal, a janela de desenhos, a caixa de anlise de
entradas e a barra de ferramentas (como ilustrado na Figura 2).
5

XIII WEI

2436

Atravs do menu principal, o usurio seleciona o tipo de mquina a ser simulada.


As operaes de minimizao de AFDs e converso de AFNDs para AFDs esto
tambm acessveis atravs deste bloco (como pode ser visto na Figura 3).
O usurio fornece os dados necessrios para a confeco do autmato, como o
estado inicial, o estado final, o alfabeto de entrada e a funo programa delta atravs
da barra de ferramentas (ver Figura 2).
O bloco de janelas de desenhos ilustra os autmatos como grafos direcionados.
A caixa de anlise de entradas rene os elementos necessrios para o usurio
executar passo-a-passo a validao de uma cadeia de caracteres pelo autmato por ele
montado.
Menu Principal

Janela de
Desenhos
Barra de
Ferramentas

Caixa de Anlise de
Entradas

Figura 2. A interface grfica da GAM

Figura 3. Escolha do tipo de mquina e operaes

XIII WEI

2437

3.3. Exemplo de Funcionamento da GAM


As Figuras de 4, 5 e 6 apresentam imagens que ilustram o funcionamento da GAM.
Inicialmente, seleciona-se o tipo de mquina a ser estudada (ver Figura 3). O usurio
deve agora usar o grupo de botes do painel de ferramentas para montar graficamente o
autmato (ver Figura 2, apresentada anteriormente). Assim, o usurio define o alfabeto
de entrada, fornece o estado inicial, define quais so os estados finais, e monta a funo
programa delta, conectando os estados.
Caso a mquina seja um AFND, o usurio pode optar por acessar o menu de
Operaes e clicar em Converso de AFND para AFD, a fim de obter um AFD
como resultado (ver Figura 4).

Figura 4. Converso de um AFND para um AFD

No caso da mquina ser um AFD e, mesmo depois de uma converso de um


AFND para um AFD, o usurio pode executar a operao de minimizao, acessando
no menu principal a opo Minimizao de AFD (ver Figura 3).
Ao minimizar um AFD, o resultado automaticamente ilustrado na janela de
desenhos e, adicionalmente, mostrada uma outra janela contendo as informaes sobre
os estados minimizados do AFD original (como ilustra a Figura 5).
A qualquer momento, o usurio pode digitar uma cadeia de entrada e selecionar
o boto de anlise na caixa de anlise de entradas, para receber a resposta de aceitao
ou de rejeio da cadeia (ver Figura 6).

XIII WEI

2438

Figura 5. Minimizao de um AFD

Ressalta-se que as simulaes de cadeias de caracteres de entrada para os


autmatos so atividades que demandam muito tempo. Professores que optam pelo uso
de procedimentos normais em sala de aula para demonstrar tais simulaes acabam por
desperdiar um tempo valioso.
A ferramenta GAM pode ser usada para simular uma grande quantidade
cadeias de entrada em um curto espao de tempo, alm de facilitar o estudo
mquinas com um nmero de estados razoveis e strings com at 20 caracteres
comprimento. A contribuio melhoria do aprendizado , portanto, fator
considervel importncia.

de
de
de
de

Figura 6. Anlise de uma entrada por um AFD


8

XIII WEI

2439

4. Avaliao da Ferramenta
Para testar a funcionalidade, usabilidade e o papel didtico da ferramenta GAM, foi
elaborado um experimento prtico com usurios reais, conforme descrito a seguir.
4.1. Planejamento do Experimento
Vinte e cinco alunos do terceiro e quarto anos do curso de Cincias da Computao do
Instituto de Informtica (INF) da Universidade Federal de Gois que esto cursando a
disciplina de Linguagens Formais e Autmatos tomaram parte da avaliao da
ferramenta.
O experimento foi dividido em duas baterias de testes com dez alunos na
primeira bateria e quinze alunos na segunda, utilizando-se o laboratrio GNU/Linux de
ps-graduao do INF. Os testes foram distribudos em trs estgios:
Estgio 1: nessa parte do experimento, os alunos responderam a uma lista de
cinco exerccios contendo questes relacionadas com a construo de AFNDs,
converso entre AFNDs e AFDs, anlise de palavras de entrada e minimizao de
AFDs. Para essa parte, foi previsto um tempo de 10min.
Estgio 2: uma vez respondida a lista de exerccios, cada aluno teve acesso
ferramenta GAM, a fim de validar suas respostas.
Estgio 3: esse estgio compreendeu o preenchimento de um questionrio sobre
a utilidade e a usabilidade da ferramenta GAM pelo aluno. Foi planejado um perodo de
15 minutos para a realizao dessa atividade.
4.2. Resultados Encontrados
Para o Estgio 1 do experimento, os alunos gastaram em mdia, 12min para resolver
todos os exerccios propostos. interessante observar que todos demonstraram domnio
do contedo da disciplina, at porque j haviam estudado o assunto da lista de exerccio
no bimestre anterior.
O Estgio 2 durou de 15 a 20 minutos e, para preencherem a ficha no Estgio 3,
os alunos gastaram de 10 a 13 minutos.
Pelas respostas obtidas atravs do experimento, percebeu-se uma unanimidade
com relao facilidade de uso do software, visto que todos no tiveram dificuldades de
aprenderem por si prprios a manipularem suas funes (lembrando que no houve um
treinamento prvio). Isso tudo fez com que o Estgio 2 do experimento no se
prolongasse tanto.
Com relao instalao da ferramenta em ambiente GNU/Linux,

56% acharam ser de fcil instalao;

28% acharam o procedimento difcil;

4% acharam muito difcil;

12% no opinaram.
9

XIII WEI

2440

Os alunos relataram que a ferramenta funcionou sem nenhum problema.


Somente um aluno encontrou um bug (falha) no software com relao aceitao de
palavras contendo caracteres no pertencentes ao alfabeto.
Todos foram unnimes em afirmar que a ferramenta apresenta um manual bem
descrito e que mensagens de erro apresentadas durante o seu uso direcionam bem o
usurio no momento de aprender a utilizar a aplicao. A maioria dos usurios afirmou
que a interface agradvel e intuitiva.
Os alunos tambm utilizaram efetivamente a ferramenta para verificar conceitos
de Teoria da Computao e de Linguagens Formais e Autmatos. Foi observado por
exemplo, que praticamente todos empregaram bem a ferramenta para confirmar as
respostas da lista de exerccios.
Os alunos afirmaram que o projeto deveria ser continuado, a fim de que novas
funcionalidades possam ser agregadas.
Com base nos resultados obtidos, percebe-se que a ferramenta pode ser utilizada
para que:
os alunos corrijam seus prprios exerccios;
os alunos verifiquem se conseguem realmente minimizar AFDs, converter
AFNDs para AFDs e aplicar a funo delta para a aceitao ou rejeio de
palavras de entrada pelo autmato construdo;
possa, de uma forma geral, sanar as dificuldades encontradas durante o
primeiro contato com a teoria de autmatos;

motive os alunos no estudo de Linguagens Formais e Autmatos.


5. Ferramentas Similares
importante observar que existem outras ferramentas disponveis na literatura para o
estudo de linguagens formas e autmatos. Dentre elas, encontram-se: DFApplet, VAS
(Visual Automata Simulator) e Visual Turing. A seguir, apresentada uma descrio
sucinta de cada uma dessas ferramentas:
1. DFApplet [Chiristin 2005] foi escrita em Linguagem JAVA pela
Universidade de Berkeley; possui somente a funo de simulao de um
AFD, e distribuda atravs de uma licena GPL.
2. VAS [Bovet 2005] uma ferramenta de cdigo livre feita em Linguagem
JAVA pela Universidade de So Francisco (USFCA). Com relao GAM,
apresenta adicionalmente, recursos para simular Mquinas de Turing, porm
no executa minimizao de AFDs.
3. Visual Turing [Cheran 2005] uma ferramenta feita em Linguagem JAVA
que apresenta somente simulao de Mquinas de Turing. O Visual Turing
apresenta uma verso comercial completa e uma verso limitada atravs de
uma licena GPL.
10

XIII WEI

2441

Essas ferramentas no possuem tantas funcionalidades como a GAM. A


Tabela 2 traz uma comparao entre as mesmas.
Tabela 2. Quadro Comparativo

Caractersticas
Sistema
Windows
Operacional GNU/Linux
MAC/OS
Licena
GPL
Comercial
Simular AFD
Simular AFND
Simular AFND-
AFD AFND
Funes

DFApplet 1.0

Ferramentas
VAS
Visual Turing

*
*

*
*

AFD ER
ER AFND-e
Minimizar AFD
Simular APD
Simular MT

GAM

(*) - Essas funes sero implementadas futuramente


(+) - Expresses Regulares

6. Concluso
A GAM foi implementada com as funes de simulao de AFDs e AFNDs, com
opes de anlise passo a passo e anlise total para strings de entrada com at vinte
caracteres. Com o auxlio da interface grfica que expe a funo programa, fica
evidente a facilidade de estudar essas classes de uma forma muito clara e prtica.
A principal vantagem da ferramenta encontra-se nas funes de simulao de
AFD e AFND, juntamente com as operaes de converso de AFNDs para AFDs e
minimizao de AFDs, as quais fornecem uma excelente opo prtica exposio
terica do estudo desses itens, alm de economizar muito tempo em simulaes de
cadeias de caracteres de entrada para os autmatos durante demonstraes em sala de
aula.
Adicionalmente, o projeto foi desenvolvido sob licena GPL. Com a sua
continuidade, em conjunto com a divulgao comunidade livre, espera-se o
surgimento de muitas contribuies para o desenvolvimento das prximas verses.
Prope-se de imediato a implantao das seguintes operaes em uma nova verso:
anlise de cadeia de entrada para os modelos de APDs e MTs;
simulao passo a passo da pilha auxiliar para os APDs; e
simulao completa de AFND-, APDs, MTs.
11

XIII WEI

2442

Outra interessante funo que pode ser includa nessa ferramenta a alterao do
mdulo de desenho grfico das mquinas abstratas para que ele suporte mais estados e
tambm possa fornecer liberdade de manipulao de componentes pelo usurio.

Referncias
Aho, A. V., Currents in the Theory of Computing, Prentice Hall, 1973
Bovet Jean, Visual Automata Simulator. [on-line]. Disponvel na internet via
http://www.cs.usfca.edu/~jbovet/vas.html. Arquivo capturado em janeiro de 2005.
Cheran Cristian, Visual Turing. [on-line]. Disponvel
http://sourceforge.net. Arquivo capturado em janeiro de 2005.

na

internet

via

Christin Nicolas, DFApplet-1.0. [on-line]. Disponvel na internet via


http://www.sims.berkeley.edu/~christin/dfa/. Arquivo capturado em janeiro de 2005.
Hopcroft, John E., Introduction to automata theory, languages and computation. USA:
Addison-Wesley Publishing Company, Inc. 1979. P.1-170.
Jukemura, Anibal S., GAM Ginux Abstract Machine.
Especializao.Lavras, MG. Ed. UFLA-FAEPE. 2004.

Monografia

de

Keller, Rodrigo dos Santos; Schereiber, Jacques N. C.; (Artigo Completo) GEO-3D: A
Realidade Virtual como Suporte ao Ensino da Geometria Espacial. Anais do
WISE99 - Workshop Internacional Sobre Educao Virtual. 9-11 de Dezembro de
1999. Fortaleza CE.
Kowaltowki, Tomasz; Lucchesi Cludio L.; Stolfi, Jorge. Finite Automata and Efficient
Lexicon Implementation. Relatrio Tcnico IC-98-2, Instituto de Computao Unicamp, Janeiro de 1998. 13 pginas.
Menezes, Paulo F. Blauth. Linguagens Formais e Autmatos. Porto Alegre: Ed. Sagra
Luzzatto, 2000. 160p.
Sudkamp, Thomas A., Languages and Machines. USA: Addison-Wesley Publishing
Company, Inc. Segunda Edio, 1997. P.155-295
Unitex-PB,
Compress.
[on-line].
Disponvel
na
internet
via
http://www.nilc.icmc.usp.br:8180/unitex-pb/compactador.html. Arquivo capturado em
fevereiro de 2005.

12

XIII WEI

2443

S-ar putea să vă placă și