Você está na página 1de 10

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 Determinístico - AFD

1 Introdução

Um autômato nito compartilha com os computadores do mundo real o fato de


terem uma unidade central de processamento de capacidade limitada e xa. Ele recebe
como entrada uma palavra, através de uma ta, e produz como saída a indicação de
reconhecimento (aceitação) ou não da palavra, como ilustrado na Figura 1. Em outras
palavras, é um dispositivo para reconhecimento de linguagens.

O que faz do autômato nito um modelo tão restrito dos computadores reais
é a sua completa ausência de memória fora da sua unidade de processamento.

aceita
palavra
M

rejeita

Figura 1  Representação geral de um autômato nito M

Ainda que se saiba que o modelo correto de computadores e algoritmos é em


termos de uma memória de capacidade sem limite denido, é preciso primeiro se assegurar
de que a teoria dos autômatos nitos esteja bem compreendida. É uma teoria rica, elegante
e, quando compreendida, garante uma melhor posição para que se aprecie o que a adição
de uma memória auxiliar agrega no sentido de poder computacional.

Um autômato nito é composto dos seguintes elementos:

ˆ ta;
ˆ unidade de controle (cabeça de leitura e conjunto de estados);
ˆ programa.

A ta é inicialmente ocupada por toda a palavra. Cada símbolo da palavra


ca gravado em uma célula (posição). Não é possível gravar caracteres adicionais.

A unidade de controle compreende a cabeça de leitura e o conjunto de estados


do autômato. Inicialmente, ca posicionada na primeira célula da ta (o estado corrente

1
é o estado inicial) e se move exclusivamente para a direita. A cada movimento, a unidade
de controle atualiza o estado corrente do autômato.

Os estados de um autômato nito podem ser: inicial, nal e comum. Na


Figura 2, p é um estado inicial (indicado por uma seta), q é um estado nal (círculo com
linha dupla), e r é um estado comum (intermediário). Um estado pode ainda ser inicial
e nal. Nesse caso, ele é representado por um círculo com linha dupla e uma seta.

p q r

Figura 2  Tipos de estados em um autômato nito

A função de transição determina a mudança de estado do autômato M , de-


pendendo do estado atual e do símbolo lido na ta. Como já foi dito, um autômato nito
não possui memória auxiliar. Ele possui conhecimento apenas do estado corrente e do
símbolo a ser lido da ta (caso haja algum) para determinar a mudança de estado.

Uma palavra é aceita por um autômato nito se, após processada, o estado
corrente for nal. Caso contrário, a palavra é rejeitada. Existem três opções que podem
acontecer quando uma palavra é submetida a um autômato nito, a saber:

1. A palavra é completamente processada (lida), e o estado atual da máquina é


nal. Logo, a palavra é aceita;
2. A palavra é completamente processada (lida), e o estado atual da máquina
não é nal. Logo, a palavra é rejeitada;
3. A função de transição ou programa não está denida para o estado atual da
máquina e o próximo símbolo a ser lido da ta. Logo, a palavra é rejeitada.

A linguagem aceita por um autômato nito M , representada por L(M ) ou


Aceita(M ), é o conjunto de palavras que são aceitas por M . Dois autômatos nitos
distintos M1 e M2 são equivalentes se L(M1 ) = L(M2 ). Uma linguagem L é regular se, e
somente se, existe um autômato nito M tal que L(M ) = L.

No estudo das linguagens regulares, um autômato nito pode ser:

ˆ determinístico (AFD)
ˆ não deterministico (AFN)
ˆ não determinístico com movimentos vazios (AFN-ε )

A diferença entre os tipo os tipos de autômatos está na forma como as funções


de transição de cada um é denida.

2
2 Denição

Um AFD é representado por uma quíntupla M = (Σ, Q, δ, q0 , F ), onde:

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

Menezes (2012) considera a função de transição de um AFD como sendo uma


função parcial, ou seja, é uma função que não é necessariamente denida para todos os
pares (Q × Σ). Já para outros, como Sipser (2012) e Lewis e Papadimitriou (1998), a
função de transição de um AFD é uma função completa. Adotaremos então esta última
denição para a função de transição δ . A representação desta função pode ser feita por
uma tabela ou por um diagrama de transições, como ilustra a Figura 3.

1 0,1
δ 0 1
q0 q1 q0
0
q0 q1 q1 q1 q1
função de transição
M1

Figura 3  Exemplo de AFD

Podemos descrever M1 formalmente da seguinte forma:

ˆ Σ = {0, 1},
ˆ Q = {q0 , q1 },
ˆ δ , descrita conforme a tabela da Figura 3,
ˆ q0 é o estado inicial,
ˆ {q1 } é o conjunto de estados nais.

Os AFDs M1 (Figura 3) e M2 (Figura 4) são equivalentes. Observe que


L(M1 ) = L(M2 ) = {w ∈ {0, 1}∗ | 0 é subpalavra de w }.

1 0 1

0
q0 q1 q2

Figura 4  AFD M2 equivalente ao M1

3
3 Processamento de Palavras

Sejam M = (Σ, Q, δ, q0 , F ) um AFD 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

A Condição 1 diz que a máquina começa no estado inicial. A Condição 2 diz


que a máquina muda de estado de acordo com a função de transição. A Condição 3 diz
que a máquina aceita a entrada se o último estado da sequência for um estado nal.

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

A função de transição δ estendida para palavras, denotada por δ ∗ : Q×Σ∗ → Q,


é denida da seguinte forma:
(
q, se w = ε
δ ∗ (q, w) :=
δ ∗ (δ(q, a), w0 ), se w = aw0 ; a ∈ Σ, e w0 ∈ Σ∗

Pela denição acima, se a palavra for vazia, a máquina não muda de estado.
Caso a palavra tenha pelo menos um símbolo do alfabeto, então a máquina deve ler esse
símbolo e, em seguida, ler o restante da palavra.

Dados um AFD M = (Σ, Q, δ, q0 , F ) e uma plavra w ∈ Σ∗ , para vericar de


maneira formal se w ∈ L(M ), deve-se vericar se δ ∗ (q0 , w) ∈ F . Assim, a linguagem
aceita por M pode ser formalmente denida como L(M ) = {w ∈ Σ∗ | δ ∗ (q0 , w) ∈ F }.

Como exemplo, vamos vericar se 010 é aceita pelo AFD M3 da Figura 5.

0 1

q0 q1 δ ∗ (q0 , 010) = δ ∗ (δ(q0 , 0), 10)


δ ∗ (q0 , 10) = δ ∗ (δ(q0 , 1), 0)
0,1
δ ∗ (q1 , 0) = δ ∗ (δ(q1 , 0), ε)
δ ∗ (q2 , ε) = q2 .
0

q2 q2 ∈ F . Logo, palavra aceita!

M3

Figura 5  Prova formal de reconhecimento de palavra

4
4 Fecho das Linguagens Regulares

Diz-se que um conjunto A é fechado para uma dada operação n-ária pn , se ao


aplicar a operação p a quaisquer n elementos de A, o resultado obtido for um elemento
de A. Formalmente, Se para todo x1 , . . . , xn ∈ A, pn (x1 , . . . , xn ) ∈ A, então A é fechado
para p. Ex.: O conjunto dos naturais é fechado para a soma e multiplicação, pois tanto
a soma como o produto de dois números naturais quaisquer é um número natural.

O conjunto das linguagens regulares é fechado para as operações: complemento,


união, intersecção, diferença e concatenação. Será mostrada uma prova por construção
para as quatro primeiras operações. Esta última só poderá ser vericada com o conceito
de não determinismo.

Para ilustrar estas operações, tomemos como exemplos as linguagens L1 =


{w ∈ {a, b}∗ | a quantidade de a em w é par}, L2 = {w ∈ {a, b}∗ | a quantidade de b em
w é par}, que são aceitas, respectivamente, pelos AFDs M1 e M2 da Figura 6.

b a a
b

a b

A B X Y
a b

M1 M2

Figura 6  Autômatos M1 e M2 para as linguagens L1 e L2

4.1 Complemento

Teorema 1. Seja L uma linguagem regular denida sobre um alfabeto Σ. Então, L0 =


Σ∗ − L é também regular.

Esta prova é por construção. Seja M um AFD cuja linguagem aceita é L.


Por ser um AFD, M lê qualquer palavra denida sobre o alfabeto com que trabalha. Se
construirmos um AFD M 0 a partir de M tal que um estado seja nal em M 0 se, e somente
se, ele não é nal em M , uma palavra será aceita por M 0 se, e somente se, ela não for
aceita por M .

Demonstração. Seja o AFD M = (Σ, Q, δ, q0 , F ), tal que L(M ) = L. A linguagem aceita


pelo AFD M 0 = (Σ, Q, δ, q0 , Q − F ), obtido a partir de M , é L(M 0 ) = Σ∗ − L.

Na Figura 7 temos um exemplo de autômato para aceitar o complemento da


linguagem do autômato M1 da Figura 6.

5
b b

A B
a

Figura 7  Complemento de linguagem

4.2 União

Teorema 2. Sejam L1 e L2 linguagens regulares. Então, L1 ∪ L2 é também regular.

Sejam M1 e M2 AFDs cujas linguagens são L1 e L2 , respectivamente. Cons-


truímos M a partir de M1 e M2 , como se M zesse uma simulação de ambas as máquinas,
aceitando uma palavra se, e somente se, esta for aceita por uma das duas.

Como os símbolos da palavra chegam um a um, M simula M1 e M2 simul-


taneamente. Assim, é necessário fazer o processamento da palavra apenas uma vez. É
preciso apenas lembrar o estado em que cada máquina estaria se ela tivesse que ler até
cada ponto da entrada. Logo, é preciso memorizar pares de estados. Se M1 e M2 possuem,
respectivamente, k1 e k2 estados, o número de estados de M é k1 × k2 . As transições de
M vão de estado em estado, atualizando o estado corrente tanto para M1 como para M2 .

Demonstração. Sejam os AFDs M1 = (Σ, Q1 , δ1 , q1 , F1 ) e M2 = (Σ, Q2 , δ2 , q2 , F2 ) tais que


L(M1 ) = L1 e L(M2 ) = L2 . Construímos um AFD M = (Σ, Q1 × Q2 , δ, (q1 , q2 ), F ), cuja
linguagem seja L(M ) = L1 ∪ L2 , onde:

ˆ δ((p, q), a) = (δ1 (p, a), δ2 (q, a))


ˆ F = (F1 × Q2 ) ∪ (Q1 × F2 )

Na Figura 8 temos um exemplo de autômato para a união das linguagens dos


autômatos M1 e M2 da Figura 6.

(A, X) (B, X)

b b b b

(A, Y ) (B, Y )

Figura 8  União de linguagens

6
4.3 Intersecção

Teorema 3. Sejam L1 e L2 linguagens regulares. Então, L1 ∩ L2 é também regular.

Esta prova é semelhante à anterior. A ideia agora é que M simule M1 e M2 ,


aceitando uma palavra sempre que M1 e M2 a aceitam.

Demonstração. Sejam os AFDs M1 = (Σ, Q1 , δ1 , q1 , F1 ) e M2 = (Σ, Q2 , δ2 , q2 , F2 ) tais que


L(M1 ) = L1 e L(M2 ) = L2 . Construímos um AFD M = (Σ, Q1 × Q2 , δ, (q1 , q2 ), F ), cuja
linguagem seja L(M ) = L1 ∩ L2 , onde:

ˆ δ((p, q), a) = (δ1 (p, a), δ2 (q, a))


ˆ F = F1 × F2

Na Figura 9 temos um exemplo de autômato para a intersecção das linguagens


dos autômatos M1 e M2 da Figura 6.

(A, X) (B, X)

b b b b

(A, Y ) (B, Y )

Figura 9  Intersecção de linguagens

Uma outra prova pode ser obtida com base nos Teoremas 1 e 2. Pelas Regras
de De Morgan, temos que L1 ∩ L2 = (L01 ∪ L02 )0 .

4.4 Diferença

Corolário 4. Sejam L1 e L2 linguagens regulares. Então, L1 − L2 é também regular.

Demonstração. Suponha que L1 e L2 são linguagens regulares. Pelo Teorema 1, L02 tam-
bém é regular. Observe que L1 − L2 ≡ L1 ∩ L02 . O resultado segue do Teorema 3.

7
5 Exercícios

1. A respeito de AFD's e das Linguagens Regulares, julgue os itens abaixo como V ou F .

a) ( ) Todo AFD reconhece pelo menos uma palavra.


b) ( ) Seja M = (Σ, Q, δ, q0 , F ) um AFD qualquer, se F 6= ∅ então L(M ) 6= ∅.
c) ( ) Seja M = (Σ, Q, δ, q0 , F ) um AFD qualquer, se F = ∅, então L(M ) = ∅.
d) ( ) Autômatos Finitos reconhecem apenas linguagens nitas.
e) ( ) Se houver alguma ligação (transição) direta ou indireta entre o estado inicial
e um dos nais de um AFD, ele aceitará pelo menos uma palavra.
f) ( ) Para qualquer linguagem nita, é possível construir um AFD que a reconheça.
g) ( ) Dado um AFD M = (Σ, Q, δ, q0 , F ), se M aceita pelo menos uma palavra w
tal que |w| ≥ |Q|, pode-se armar que a linguagem aceita por ele é innita.
h) ( ) Toda linguagem regular é nita.
i) ( ) Dado um AFD M = (Σ, Q, δ, q0 , F ), se δ ∗ (q0 , w) ⊆ F , então w ∈ L(M ).
j) ( ) Só existe um AFD para cada exemplo de Linguagem Regular.
k) ( ) Toda linguagem nita é regular.
l) ( ) A linguagem vazia não é um tipo de linguagem regular.

2. Proponha um AFD para cada uma das seguintes linguagens:

a) L01 = {w ∈ {a, b}∗ | toda ocorrência de b é seguida de a}


b) L02 = {w ∈ {a, b}+ | se a for prexo de w, também será suxo}
c) L03 = {w ∈ {a, b}∗ | aaa não é subpalavra de w}
d) L04 = {w ∈ {a, b}∗ | a quantidade de a em w é par e a de b é ímpar}
e) L05 = {w ∈ {a, b}∗ | toda ocorrência de aa é seguida de b, e toda ocorrência de bb
é seguida de a}
f) L06 = {w ∈ {a, b}∗ | bb não é suxo de w}
g) L07 = {w ∈ {a, b}∗ | b é o antepenúltimo símbolo de w}
h) L08 = L001 = {a, b}∗ − L01
i) L09 = {w = w1 w2 | w1 ∈ {a}+ e |w1 | é par, w2 ∈ {b}∗ e |w2 | é ímpar}
j) L10 = {w ∈ {a, b}∗ | |w| ≤ 4 e w é um palíndromo}
k) L11 = {w = w1 w2 | w1 = am , m ≥ 0; w2 = bn , n ≥ 0; |w| é ímpar}
l) L12 = {w ∈ {a, b}∗ | ab é prexo e ba é suxo de w}
m) L13 = {w ∈ {a, b}∗ | bb é subpalavra, ou a é suxo de w}
n) L14 = {w ∈ {a, b}∗ | toda ocorrência de a é seguida de bb, e toda ocorrência de bb
é seguida de a}
o) L15 = {w ∈ [0, 9]∗ | w é um número decimal múltiplo de 3}
p) L16 = {w ∈ [0, 9]∗ | w é um número decimal que não é múltiplo de 4}
q) L17 = {w ∈ {0, 1}∗ | w é a representação de um número binário múltiplo de 3}
r) L18 = {w ∈ {0, 1}∗ | a quantidade de 01 é igual à quantidade de 10 em w}

8
3. Com base no fecho das linguagens regulares para as operações de união, intersecção,
complemento e diferença, descreva um processo formal para vericar se dois autômatos
M1 e M2 são equivalentes.
4. Dados os AFDs M1 e M2 a seguir, responda cada item:

q0 q2 q1
b
a a a a

b q1 a,b q0 a b q2

b b b
a
a,b q3 q4 a,b q3

M1 M2

a) Caracterize L(M1 ).
b) Caracterize L(M2 ).
c) Verique formalmente se as palavras aaba e abaa são aceitas por M1 .
d) Verique formalmente se as palavras bbab e babb são aceitas por M2 .

9
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.

10

Você também pode gostar