Você está na página 1de 6

Universidade Estadual Vale do Acaraú - UVA

Curso: Ciências da Computação


Disciplina: Linguagens Formais e Autômatos
Professor: Cláudio Carvalho

Autômato Finito Não Determinístico - AFN

1 Introdução

O não determinismo é um conceito que tem grande impacto na teoria da


computação. Até o momento, em nossa discussão, cada passo do processamento seguia
em um único caminho do passo anterior. Quando a máquina está em um dado estado e lê o
próximo símbolo, nós sabemos qual será o próximo estado. Chamamos isto de computação
determinística . Em uma máquina não determinística, como ilustrado na Figura 1, a partir
de um dado estado e para um mesmo símbolo do alfabeto, pode haver mais de uma escolha
para o próximo estado.

q
a a

p1 ... pn

Figura 1  Exemplo de não determinismo

O não determinismo é uma importante generalização dos modelos de máqui-


nas, sendo de fundamental importância no estudo da teoria da computação e da teoria
das linguagens formais. Não há, no entanto, aumento no poder de reconhecimento de
linguagens de uma classe de autômatos.

A facilidade do não determinismo para autômatos nitos é interpretada como


segue: a função programa, após o processamento de uma entrada composta pelo estado
corrente e o símbolo lido, tem como resultado um conjunto de novos estados. Visto que
uma máquina é composta por ta, unidade de controle e programa; pode-se armar que
um AFN assume um conjunto de estados alternativos, como se houvesse uma multiplicação
da unidade de controle, uma para cada alternativa, processando independentemente, sem
compartilhar recursos com as demais.

1
2 Denição

Um Autômato Finito Não Determinístico (AFN) é representado por uma quín-


tupla M = (Σ, Q, δ, q0 , F ), onde:

Σ: alfabeto.
Q: conjunto nito de estados.
δ : função de transição (δ : Q × Σ → 2Q ).
q0 : estado inicial (q0 ∈ Q).
F : conjunto de estados nais (F ⊆ Q).

Na Figura 2 a seguir temos um exemplo de AFN e sua função de transição δ .


L(M ) = {w ∈ {0, 1}∗ | 1 é prexo e 00 não é subpalavra de w }.

1
δ 0 1
0 q0 ∅ {q1 , q2 }
1 q1 {q2 } ∅
q0 q1 q2 1
q2 ∅ {q1 , q2 }
1
função de transição
M

Figura 2  Exemplo de Autômato Finito Não Determinístico

3 Processamento de Palavras

A denição formal de computação (processamento de palavras) para um AFN


é similar à do AFD. Sejam M = (Σ, Q, δ, q0 , F ) um AFN e w = a1 a2 . . . an uma palavra,
onde cada ai é um elemento de Σ. Então, M aceita w se existe uma sequência r0 , r1 , . . . , rn
de estados em Q satisfazendo as condições:

1. r0 = q0
2. ri+1 ∈ δ(ri , ai+1 ), para i variando de 0 a n − 1, e
3. rn ∈ F

3.1 Função de transição estendida para palavras

A função de transição dos AFNs, assim como nos AFDs, também pode ser
estendida para palavras. Neste caso, δ ∗ : Q × Σ∗ → 2Q é denida da seguinte forma:

2

 {q}, se w = ε
δ ∗ (q, w) :=
 {p | ∃ r ∈ δ(q, a) e p ∈ δ ∗ (r, w0 )}, se w = aw0 , a ∈ Σ
Para provar formalmente se uma palavra w é aceita por um AFN qualquer
M = (Σ, Q, δ, q0 , F ), deve ser vericado se δ ∗ (q0 , w) ∩ F 6= ∅. Ou seja, o conjunto de
estados onde é possível parar no autômato, após o processamento (leitura) da palavra w,
deve ter algum estado em comum com o conjunto de estados nais deste.

Caso se deseje provar que uma palavra é aceita por um AFN, basta provar por
um dos caminhos que ela é lida e que o estado corrente é nal. Para se provar que uma
palavra não é aceita por um AFN, deve-se provar por todos os caminhos possíveis para
leitura da palavra que nenhum deles leva a um estado nal.

3.2 Função de transição estendida para conjuntos de estados

Dado um conjunto de estados P = {p1 , ..., pn } e um símbolo a de um alfabeto,


a função de transição ou programa estendida ao conjunto de estados P , denotada por
δ 0 (P, a), é a união dos resultados da aplicação da função programa a cada um dos elementos
de P . Ou seja: δ 0 (P, a) = δ(pi , a) = δ(p1 , a) ∪ . . . ∪ δ(pn , a)
S
pi ∈P

4 Equivalência entre AFN e AFD

Todo AFD é um AFN, mas nem todo AFN é um AFD. No entanto, como visto
no início, não há aumento no poder de reconhecimento de linguagens dos AFNs em relação
aos AFDs. De fato, para todo e qualquer AFN M = (Σ, Q, δ, q0 , F ), é possível encontrar
um AFD equivalente M 0 = (Σ, Q0 , δ 0 , {q0 }, F 0 ), onde: Q0 = 2Q e F 0 = {p ∈ Q0 | p∩F 6= ∅}.

Ao nal do processo de conversão, é possível eliminar os estados sem utilidade.


Isto é, todos os que não são atingidos a partir do inicial.

Como exemplo, considere o AFN M1 da Figura 3 a seguir cuja linguagem é


L(M1 ) = {w ∈ {a, b}∗ | a é suxo de w }. Será mostrado o processo de encontrar um
AFD M2 equivalente a ele.

a,b

q0 a q1

M1

Figura 3  Exemplo de AFN

3
Construção do AFD M2 :

b a

a
Q0 = {∅, {q0 }, {q1 }, {q0 , q1 }}
F 0 = {{q1 }, {q0 , q1 }} {q0 } {q0 , q1 }

b
0
δ a b
∅ ∅ ∅
{q0 } {q0 , q1 } {q0 } a,b
{q1 } ∅ ∅ {q1 } ∅
{q0 , q1 } {q0 , q1 } {q0 }
função de transição

a,b
M2

Figura 4  AFD M2 equivalente ao AFN M1

Para simplicar o AFD M2 da Figura 4, podemos renomear os estados e eli-


minar aqueles que não são atingíveis a partir do estado inicial. O resultado está ilustrado
na Figura 5 a seguir:

b a
a

A B

Figura 5  Simplicação do AFD M2

4
5 Exercícios

1. Considere os AFNs M1 , M2 e M3 a seguir:

b b
a,b
b a,b a
q0 q1
q0 q1
a a
a
q0 q1
b a,b
a a,b a
q2 b
M1
q2 b
M2
M3

Para cada um deles,

a) Caracterize a linguagem aceita.


b) Prove formalmente se as palavras abba e aaba são aceitas.
c) Proponha um AFD equivalente.

2. Proponha um AFN para cada uma das linguagens:

a) L01 = {w ∈ {a, b}∗ | a é prexo e b é suxo de w }


b) L02 = {w ∈ {a, b}∗ | a é prexo ou b é suxo de w }
c) L03 = {w ∈ {a, b}∗ | ou a é prexo ou b é suxo de w }
d) L04 = {w ∈ {a, b}∗ | aba é subpalavra de w }
e) L05 = {w ∈ {a, b}∗ | aa ou bb é(são) subpalavra(s) de w }
f) L06 = {w ∈ {a, b}∗ | b é o penúltimo símbolo de w }
g) L07 = {w ∈ {a, b}∗ | ab é prexo e ba é suxo de w }
h) L08 = {w ∈ {a, b}∗ | aa não é prexo e nem suxo de w }
i) L09 = {w ∈ {a, b}∗ | se aa for suxo, então bb é preo de w }
j) L10 = {w ∈ {a, b}∗ | w possui duas ocorrências de um mesmo símbolo}

5
Referências

ANDERSON, J. A. Automata Theory with Modern Applications. New York, USA:


Cambridge University Press, 2006.

HOPCROFT, J. E.; ULLMAN, J. D.; MOTWANI, R. Introduction to Automata Theory,


Languages and Computation. 3. ed. Boston, MA, USA: Addison-Wesley Longman

Publishing Co., Inc., 2006.

LEWIS, H. R.; PAPADIMITRIOU, C. H. Elements of the Theory of Computation. 2. ed.


New Jersey: Prentice-Hall, 1998.

MENEZES, P. F. B. Linguagens Formais e Autômatos. 6. ed. Porto Alegre: Bookman,


2012. v. 3. (Série livros didáticos informática UFRGS, v. 3).

SIPSER, M. Introduction to the Theory of Computation. 3. ed. Boston: Cengage


Learning, 2012.

Você também pode gostar