Este documento discute:
1) A construção de autômatos finitos determinísticos mínimos para reconhecer linguagens regulares;
2) As máquinas de Mealy e Moore, apresentando seus componentes e como geram saídas.
1. Linguagens Formais e Autômatos
Michel Alves dos Santos ∗
Outubro de 2010
∗Bacharelando em Ciência da Computação, Universidade Federal do Estado de Alagoas(UFAL). E-mails: mi-
chel.mas@gmail.com, michelalavessantos@hotmail.com. Disciplina: Linguagens Formais e Autômatos. Docente
Responsável: Eliana Almeida.
1
2. Sumário
Lista de Figuras 2
Lista de Tabelas 2
1 Construa o AFD MÍNIMO que reconheça a linguagem denotada por (utilize o
algoritmo para obter o AFD MÍNIMO, se for o caso!): 2
2 Descreva sobre a Máquina de MEALY e a Máquina de MOORE, apresente um
exemplo explicando o seu funcionamento. 5
Referências Bibliográficas 8
Lista de Figuras
1 Autômato Finito Determinístico que aceita a linguagem La denotada por (aa +
bb)*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2 Autômato Finito Determinístico Mínimo que aceita a linguagem La denotada por
(aa + bb)*. Levando em consideração que a palavra vazia λ leva sempre ao estado
inicial que consequentemente é o final. . . . . . . . . . . . . . . . . . . . . . . . . 4
3 Autômato Finito Não-Determinístico que aceita a linguagem Lb denotada por (a +
bb)*(aa + b)*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
4 Autômato Finito Determinístico Mc que aceita a linguagem Lb denotada por (a +
bb)*(aa + b)*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
5 Autômato Finito Determinístico Mc que aceita a linguagem Lb denotada por (a +
bb)*(aa + b)*. Note que os antigos estados agregados foram mapeados para novos
rótulos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Lista de Tabelas
1 Tabela de transição do autômato Ma. . . . . . . . . . . . . . . . . . . . . . . . . . 3
2 Tabela de transição do autômato Mb. . . . . . . . . . . . . . . . . . . . . . . . . . 3
3 Tabela de transição do autômato Mc. . . . . . . . . . . . . . . . . . . . . . . . . . 5
4 Tabela de mapeamento de estados do autômato Mc. . . . . . . . . . . . . . . . . . 5
1 Construa o AFD MÍNIMO que reconheça a linguagem de-
notada por (utilize o algoritmo para obter o AFD MÍ-
NIMO, se for o caso!):
• a. (aa + bb)*
A linguagem denotada pela expressão regular dada acima aceita as seguintes palavras: La =
{λ, aa, bb, aaaa, bbbb, aaaaaa, bbbbbb, ...}. Um Autômato Finito Determinístico que reconhece
a linguagem La pode ser dado pela figura 1. A descrição do autômato Ma que reconhece a
linguagem La é dada por:
Ma = ({a, b}, {q0, q1, q2}, δ, q0, {q0})
2
3. Figura 1: Autômato Finito Determinístico que aceita a linguagem La denotada por (aa + bb)*.
δ λ a b
q0 q0 q1 q2
q1 - q0 -
q2 - - q1
Tabela 1: Tabela de transição do autômato Ma.
A lista de transição de estados do autômato Ma é exibida através da tabela 1. Porém
podemos observar que o autômato descrito anteriormente ainda é passível de minimização.
Isso pode ser observado através da figura 2.
• b. (a + bb)*(aa + b)*
A linguagem denotada pela expressão regular dada acima aceita as seguintes palavras:
Lb = {λ, a, b, bb, aa, ab, aaa, abb, bbaa, bbb, aaaa, aaaaaa, bbbbbb, abbbb, ...}. Um Autômato Fi-
nito Não-Determinístico que reconhece a linguagem Lb pode ser dado em primeira instância
pela figura 3. A descrição do autômato Mb que reconhece a linguagem Lb é dada por:
Mb = ({a, b}, {q0, q1, q2}, δ, q0, {q0})
As transições de estado do autômato Mb são exibidas através da tabela 1. Porém até
δ λ a b
q0 q0 q0,q2 q0,q1
q1 - - q0
q2 - q0 -
Tabela 2: Tabela de transição do autômato Mb.
o presente momento só dispomos de um autômato finito não-determinístico, dessa maneira
devemos transformar o autômato Mb em um autômato Mc finito e determinístico. Usando os
devidos mecanismos de transformação de autômatos não-determinísticos em determinísticos
teremos o autômato representado pela figura 4. As transições mapeadas do autômato Mb
para o autômato Mc são dadas pela tabela 3. Nesse momento faz-se necessário um novo
3
4. Figura 2: Autômato Finito Determinístico Mínimo que aceita a linguagem La denotada por (aa
+ bb)*. Levando em consideração que a palavra vazia λ leva sempre ao estado inicial que conse-
quentemente é o final.
Figura 3: Autômato Finito Não-Determinístico que aceita a linguagem Lb denotada por (a +
bb)*(aa + b)*.
4
5. Figura 4: Autômato Finito Determinístico Mc que aceita a linguagem Lb denotada por (a +
bb)*(aa + b)*.
δ a b
q0 q0q2 q0q1
q0q1 q0q2 q0q1
q0q2 q0q2 q0q1
Tabela 3: Tabela de transição do autômato Mc.
mapeamento de rótulos dos estados do autômato Mc gerado a partir da transformação do
autômato Mb em um autômato finito determinístico. O mapeamento utilizado poderá ser
visualizado através da tabela 4 e da figura 5.
Antigo Estado Novo Estado
q0 p0
q0q1 p1
q0q2 p2
Tabela 4: Tabela de mapeamento de estados do autômato Mc.
2 Descreva sobre a Máquina de MEALY e a Máquina de
MOORE, apresente um exemplo explicando o seu funcio-
namento.
A Máquina de MEALY é um autômato finito determinístico modificado de forma a gerar uma
palavra de saída (a qual pode ser vazia) para cada transição da máquina. Uma Máquina de
MEALY M é representada por uma 6-upla:
M = (Σ, Q, δ, q0, F, ∆)
Na qual:
a) Σ é um alfabeto de símbolos de entrada;
5
6. Figura 5: Autômato Finito Determinístico Mc que aceita a linguagem Lb denotada por (a +
bb)*(aa + b)*. Note que os antigos estados agregados foram mapeados para novos rótulos.
b) Q é um conjunto de estados possíveis do autômato;
c) δ é uma função de transição;
d) q0 é um elemento distinto de Q, chamado de estado inicial;
e) F é um subconjunto de Q, chamado de conjunto de estados finais;
f) ∆ é um alfabeto de símbolos de saída;
Uma aplicação comum e frequentemente recomendada para os autômatos com saída é o projeto de
diálogo entre um programa de computador e seu usuário, gerando, eventualmente, ações internas
ao sistema. Basicamente um diálogo pode ser de dois tipos:
• Comandado pelo programa;
• Comandado pelo usuário.
Em qualquer caso, uma das principais dificuldades do projetista é a visualização do conjunto de
eventos e ações que definam um diálogo adequado para as diversas situações possíveis. Um outro
exemplo de uso da Máquina de MEALY seria na definição de máquinas de cifras. As máquinas de
Mealy oferecem um modelo matemático rudimentar para construir tais máquinas. 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 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(nome pela qual é conhecida a máquina electro-mecânica de
criptografia com rotores, utilizada tanto para criptografar como para descriptografar mensagens
secretas, usada em várias formas na Europa a partir dos anos 1920) através de uma máquina de
Mealy, o diagrama de estados seria por demais complexo para se considerar um método cômodo
para desenhar máquinas de cifra.
A Máquina de MOORE possui uma segunda função, que gera uma palavra de saída (a qual
pode ser vazia) para cada estado da máquina. Uma Máquina de MOORE M é um autômato finito
determinístico com saídas associadas aos estados. É representada por uma 7-upla:
6
7. M = (Σ, Q, δ, q0, F, ∆, δS)
Na qual:
a) Σ é um alfabeto de símbolos de entrada;
b) Q é um conjunto de estados possíveis do autômato;
c) δ é uma função de transição δ : QxΣ → Q a qual é uma função parcial;
d) q0 é um elemento distinto de Q, chamado de estado inicial;
e) F é um subconjunto de Q, chamado de conjunto de estados finais;
f) ∆ é um alfabeto de símbolos de saída;
g) δS é uma função de saída δS : Q → ∆∗
que é uma função total;
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 ana-
lisador 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ão finais) em geral, a saída gerada é a palavra vazia. Eventual-
mente pode ser não vazia, se alguma informação adicional à codificação da unidade léxica é
necessária.
7
8. Referências
Hopcroft, J. E. (2003), Introdução à Teoria de Autômatos, Linguagens e Computação, 2 ed.,
Elsevier.
Menezes, P. B. (2008), Linguagens Formais e Autômatos., 5 ed., Bookman Editora, Porto Alegre.
8