Escolar Documentos
Profissional Documentos
Cultura Documentos
FORMAIS E
AUTÔMATOS
Linguagens formais
e autômatos:
autômatos finitos
não determinísticos
Victor de Andrade Machado
OBJETIVOS DE APRENDIZAGEM
Introdução
Autômatos finitos correspondem a sistemas que, como o nome sugere, têm
um número finito de estados. Ou seja, existe uma predefinição da limitação e
do número de estados para o sistema. Desse modo, constitui-se um modelo
computacional conhecido como “sequencial”, que é usado em diversos estudos
relacionados à teoria da computação, como definição de linguagens, regras de
aceitação de entradas, compiladores, etc.
Com base nas características do sistema que está sendo representado,
formaliza-se a abordagem de determinação ou de não determinação. Em uma
abordagem não determinística, um mesmo símbolo de entrada, para um mesmo
estado, permite que o sistema assuma vários estados alternativos. Por outro
2 Linguagens formais e autômatos: autômatos finitos não determinísticos
Fica visível que, para cada transição, todas as possibilidades são explicita-
das, sendo apenas uma (1) transição realizada por símbolo, o que caracteriza
um AFD. Porém, nem sempre a realidade é essa. Em alguns casos, não são
explicitadas todas as transições nem há a dependência de uma entrada para
que o autômato mude de estado. Essas são características do não determi-
nismo, que será abordado a seguir.
M = (Ʃ, Q, δ, q0, F)
Linguagens formais e autômatos: autômatos finitos não determinísticos 5
onde:
Ʃ: alfabeto de entrada;
Q: conjunto de estados finitos para o autômato;
δ: função de transição do autômato;
q0: estado inicial;
F: subconjunto de Q, os estados finais.
Definição para
Seja M = (Ʃ, Q, δ, q0, F) um AFN. A função (ou transição) estendida denotada por:
δ*: 2Q × Ʃ* → 2Q
6 Linguagens formais e autômatos: autômatos finitos não determinísticos
δ*(P, ε) = P
δ*(P, aw) = δ*(Uq∈P δ(q, a), w)
ou continua em q0, ou, devido à transição ε, vai para q2. Devemos, portanto,
realizar a união (∪) das três possibilidades (linhas 5 e 6). O processo continua
para cada termo e símbolo, até que os símbolos se esgotam (linha 10) no
último processamento, caracterizado por ε. Assim, chega-se ao conjunto
final demonstrado na linha 12. Como saber se foi aceito? A condição é: se ao
final da execução houver pelo menos um (1) estado válido na interseção do
conjunto final com os estados finais, a cadeia será aceita. Ou seja, tomando-se
F como conjunto dos estados finais, se, ao fim da execução um dos estados
também estiver em F, a cadeia será aceita.
Vejamos nosso exemplo: o estado final de nosso autômato é representado
por q3; logo, F = {q3}.Como q3 também está no conjunto final de sua execução,
a cadeia foi processada com sucesso, aceita pela sua máquina, finalizando
a avaliação. Mostraremos um exemplo de processamento que resulta na
rejeição da cadeia de entrada. Se utilizarmos a entrada 001, para esse mesmo
autômato, teremos o Quadro 2.
Construção de um AFN
Depois de descrevermos características de um AFN e o modo como é feito seu
processamento, mostraremos nesta seção como, a partir de um problema,
é realizada a sua construção. Para tanto, vamos tomar como base um AFN
alvo, apresentado na Figura 4, que aceita cadeias que comecem com a ou b
e terminem, obrigatoriamente, com aa ou ab.
8 Linguagens formais e autômatos: autômatos finitos não determinísticos
Desejamos chegar até esse AFN. Vamos analisar o problema: aceitar cadeias
que iniciem com a ou b e terminem, necessariamente, com aa ou ab.
O primeiro passo é identificar o seu estado inicial, ao qual chamamos
“q0”. O autômato pode receber qualquer simbologia, dentro do alfabeto uti-
lizado, que, nesse caso, é Ʃ = {a, b}. Além disso, não se limitou o tamanho de
sua palavra, e, portanto, o estado inicial poderá ter um loop infinito com os
símbolos recebidos. Na segunda parte, enfatizou-se que a finalização de uma
cadeia aceita deve ser, obrigatoriamente, com aa ou ab. Isso significa que,
necessariamente, o penúltimo símbolo será um a.
Vamos construir nosso AFN. O estado inicial poderá receber a e b em
qualquer quantidade. Portanto, nosso primeiro estado (q0) ficará como ilustra
a Figura 5.
Figura 5. Estado
inicial do AFN.
AFN a b
q1 {q2} {q2}
*q2 ∅ ∅
onde:
〈q1q2 … qn〉
em particular:
AFN a b
q1 {q2} {q2}
*q2 ∅ ∅
AFD a b
q1 — —
*q2 — —
Dessa forma, preenchemos a segunda linha de nossa tabela AFD (Quadro 6).
AFD a b
Observe que ainda temos dois novos conjuntos na tabela a serem regis-
trados: {q0, q1, q2}, a que chamamos “e2”; e {q0, q2} a que chamamos “e3”.
Considerando e2:
Considerando e3:
AFD a b
Construindo o AFD com base nos estados, nas transições e nos símbolos,
chegamos ao diagrama apresentado na Figura 7.
14 Linguagens formais e autômatos: autômatos finitos não determinísticos
Referências
HOPCROFT, J. E.; MOTWANI, R.; ULLMAN, J. D. Introdução à teoria de autômatos, linguagens
e computação. Rio de Janeiro: Elsevier, 2003.
JFLAP. JFLAP. Version 7.1. [Durham: JFLAP], 2018. Disponível em: http://jflap.org/. Acesso
em: 15 fev. 2021.
LEWIS, H. R.; PAPADIMITRIOU, C. H. Elementos da teoria da computação. 2. ed. Porto
Alegre: Bookman, 2004.
MENEZES, P. B. Linguagens formais e autômatos. 6. ed. Porto Alegre: Bookman, 2011.
SIPSER, M. Introdução à teoria da computação. 2. ed. São Paulo: Cengage Learning, 2007.
Linguagens formais e autômatos: autômatos finitos não determinísticos 15
Leituras recomendadas
DIVERIO, T. A.; MENEZES, P. B. Teoria da computação: máquinas universais e computa-
bilidade. 3. ed. Porto Alegre: Bookman, 2011.
NETO, J. J. A teoria da computação e o profissional de informática. Revista de Compu-
tação e Tecnologia da PUC-SP, São Paulo, v. 1, n. 1, p. 4–21, 2010. Disponível em: https://
revistas.pucsp.br/ReCET/article/download/1572/1519. Acesso em: 15 fev. 2021.