Você está na página 1de 39

D

R
A
F
T
4
Autmatos nitos
Neste captulo vamos introduzir outras estruturas que permitem caracterizar as linguagens
regulares. A principal vantagem, destas novas estruturas, sobre a representao com
expresses regulares a de terem, naturalmente, associado um algoritmo que testa (em
tempo linear) a pertena de uma palavra linguagem que representam. Para alm desta
caracterstica, a expressividade aparente dos autmatos, isto , a facilidade com que somos
capazes de os escrever, muito maior do que a das expresses regulares.
4.1 Autmatos nitos determinsticos
Denio 4.1 (DFA) Um autmato nito determinstico (DFA) um quintplo or-
denado S, , , s
0
, F em que:
S um conjunto nito, no vazio, a que chamamos o conjunto dos estados;
um conjunto nito, no vazio, que constitui o alfabeto do autmato;
uma funo total : S S, chamada funo de transio;
s
0
, com s
0
S, o estado inicial;
F, com F S, o conjunto dos estados nais.
Um DFA muitas vezes representado informalmente por um diagrama, por um
digrafo com estados e arcos etiquetados. Os arcos dos autmatos costumam designar-se
por transies.
33
D
R
A
F
T
Exemplo 4.2 O autmato A = {s
0
, s
1
}, {0, 1}, , s
0
, {s
1
} com
(s
0
, 0) = s
1
(s
0
, 1) = s
0
(s
1
, 0) = s
1
(s
1
, 1) = s
0
,
representado pelo seguinte diagrama:
s
0
s
1
0
1
1
0
Informalmente, para vericarmos se uma dada palavra pertence linguagem denida
por um dado autmato, se uma palavra reconhecida ou aceite pelo autmato, proce-
demos da seguinte forma:
1. Comeamos por nos situarmos no estado inicial do autmato. Aquele que tem, por
conveno, uma pequena seta a apontar para ele.
2. Para cada uma das letras da palavra, e por ordem, passamos para o estado do
autmato para o qual aponta a transio com o nome da letra em causa, a partir
do estado em que estamos.
3. Quando esgotamos as letras da palavra, usando o procedimento do passo anterior,
o estado em que nos encontramos determina o sucesso, ou no, da aceitao da
palavra: se o estado for nal (um daqueles que est representado com linha dupla) a
palavra aceite, e no o , caso contrrio.
Para denir rigorosamente este processo e assim obtermos uma denio formal da lin-
guagem associada a um DFA, comecemos por denir indutivamente, para cada autmato,
uma nova funo

como extenso de :

: S

S
em que
(s) (s S

(s, ) = s)
(s ) ((s S

)

(s, ) =

((s, ), )).
(4.1)
Denio 4.3 (Linguagem representada por um DFA) Seja A = S, , , s
0
, F um
DFA. A linguagem L(A) representada por A dene-se como
L(A) = {

|

(s
0
, ) F}, (4.2)
em que

denida como atrs.
34
D
R
A
F
T
Exemplo 4.4 A palavra 100 pertence linguagem denida pelo autmato A (Exem-
plo 4.2) porque

(s
0
, 100) =

((s
0
, 1), 00) =

(s
0
, 00)
=

((s
0
, 0), 0) =

(s
1
, 0)
=

((s
1
, 0), ) =

(s
1
, )
= s
1
F.
A palavra 01 no pertence mesma linguagem porque

(s
0
, 01) =

((s
0
, 0), 1) =

(s
1
, 1)
=

((s
1
, 1), ) =

(s
0
, )
= s
0
/ F.
Problema 27 Seja B a linguagem das palavras de alfabeto {0, 1} que representam em
binrio nmeros mltiplos de 5.
1. Descreve um autmato nito determinstico que reconhea esta linguagem.
2. Para o autmato encontrado, prova que o mesmo reconhece a linguagem B.
Problema 28 Considera o autmato nito representado na gura.
s
0
s
1
s
2
1
1
0
0 0, 1
1. Constri uma descrio formal para este autmato como um tuplo A = (Q, , , s
0
, F);
2. Indica quais das seguintes palavras so aceites por este autmato: 101001, 111111,
11001010111 e 0000011000;
3. Diz (em portugus) qual a propriedade que uma palavra de {0, 1}

tm de ter para
ser aceite por este autmato.
Problema 29 Considera os seguintes autmatos nitos do alfabeto = {0, 1},
A = ({s
0
, s
1
}, ,
A
, s
0
, {s
1
})
B = ({s
0
, s
1
, s
2
}, ,
B
, s
0
, {s
1
, s
2
})
35
D
R
A
F
T
com as funes de transio dadas por:

A
(s
0
, 0) = s
0

A
(s
0
, 1) = s
1

A
(s
1
, 0) = s
0

A
(s
1
, 1) = s
1

B
(s
0
, 0) = s
1

B
(s
0
, 1) = s
2

B
(s
1
, 1) = s
2

B
(s
2
, 0) = s
1
1. Representa cada um dos autmatos por um digrafo.
2. Diz quais das seguintes palavras so aceites por algum dos autmatos:
101 111
11001 01010 00011
3. Diz quais as linguagens reconhecidas pelos autmatos.
Denio 4.5 (Equivalncia de autmatos) Dois autmatos dizem-se equivalentes
se representarem a mesma linguagem.
Por vezes, por comodidade, relaxa-se um pouco a denio de DFA no exigindo que
a funo : S S seja total. Ou seja, permitindo que para algum estado no esteja
denida a transio para algum smbolo. Um autmato nito determinstico deste tipo
A = S, , , s
0
, F em que a funo de transio no total, normalmente designado como
no completo, considera-se como abreviatura do DFA completo A

= S{s

}, ,

, s
0
, F
em que s

/ S e denindo

: (S {s

}) S {s

}
(s, )

(s, ) quando (s, ) est denido


s

nos outros casos.


(4.3)
Exemplo 4.6 O seguinte autmato no completo
s
0
s
1
s
2
0
1
0
0
a abreviatura deste outro autmato ( completo)
s
0
s
1
s
2
s

0
1
0
0
1
1
0, 1
36
D
R
A
F
T
Problema 30 Descreve um autmato nito que reconhea a linguagem das palavras de
{0, 1}

que. . .
1. no tm nenhum 1;
2. so diferentes de 1;
3. contm pelo menos algum 0 e algum 1;
4. tm comprimento no inferior a 2;
5. no contm 101 como subpalavra-palavra;
6. terminam em 1;
7. terminam em 1 mas no em 111;
8. tm pelo menos dois 0 consecutivos;
9. terminam em 1 e tm pelo menos dois 0 consecutivos;
10. tm um nmero mpar de 0 ou um nmero par de 1;
11. tm no mximo um par de 0 e um par de 1 consecutivos;
12. so representao binria de inteiros positivos mltiplos de 4;
13. so representao binria de inteiros positivos mltiplos de 2 mas no de 3;
14. contm (algures) pelo menos trs 0 seguidos, mas no contm dois ou mais 1
seguidos
15. se tm algum par de 0 adjacentes, este aparece antes de qualquer par de 1
adjacentes;
16. no terminam em 1101 nem em 1011;
17. tm igual nmero de 0 e 1 e nenhum seu prexo tem um nmero de 0 que
excede em dois o nmero de 1, nem um nmero de 1 que excede em dois o
nmero de 0
Problema 31 Seja A = (, S, , s
0
, F) um autmato nito determinstico e s um estado
de A, tal que (s, a) = s, a . Mostra por induo no comprimento de , que

(s, ) = s.
Problema 32 Dada uma linguagem L, seja L
R
= {
R
| L}. Mostra que se L for aceite
por um autmato nito , ento L
R
tambm o .
Problema 33 Descreve um autmato nito determinstico que reconhea a linguagem A
das palavras de alfabeto {0, 1} em que no ocorrem sequncias pares de 0s imediatamente
esquerda de sequncias mpares de 1s.
37
D
R
A
F
T
Problema 34 Seja B a linguagem das palavras de alfabeto {0, 1} que representam em
binrio nmeros mltiplos de 5.
1. Descreve um autmato nito determinstico que reconhea esta linguagem.
2. Para o autmato encontrado, prova que o mesmo reconhece a linguagem B.
4.1.1 O autmato complementar
Dada uma linguagem representada por uma expresso regular, relativamente difcil
encontrar a expresso regular que representa a sua linguagem complementar. Esta operao
particularmente simples se se tratar de autmatos determinsticos nitos.
Exemplo 4.7 Consideremos a linguagem, L, das palavras de alfabeto = {0, 1} que
correspondem a representaes binrias de inteiros mltiplos de 3. Um DFA que
represente L pode ser o representado pelo seguinte diagrama:
s
0
s
1
s
3
s
2
s
5
s
4
0
1
0, 1
0, 1
1
0
1
0
1
0
A linguagem complementar desta, L, a linguagem das palavras que correspondem a
inteiros que no so mltiplos de 3, ser a linguagem gerada pelo autmato anterior,
mas em que os estados nais e estados no nais foram trocados. Ou seja:
s
0
s
1
s
3
s
2
s
5
s
4
0
1
0, 1
0, 1
1
0
1
0
1
0
Claro que este reconhece com pertencendo a L apesar de este no represen-
tar um nmero em binrio. Mas isso consequncia da forma como denimos a
linguagem.
38
D
R
A
F
T
Teorema 4.8 (complementar duma linguagem dada por um DFA) O complemen-
tar de uma linguagem dada por um DFA tambm uma linguagem representvel por
um DFA. Para alm disso se L = L(A) para um DFA completo A = S, , , s
0
, F,
ento a linguagem complementar L = L(A) com
A = S, , , s
0
, S \ F.
Dem. A demonstrao trivial pois, pela Denio 4.3,
L L

(s
0
, ) F


(s
0
, ) S \ F
L(A).

4.1.2 O autmato produto


Sejam A
1
= S
1
, ,
1
, i
1
, F
1
e A
2
= S
2
, ,
2
, i
2
, F
2
dois autmatos nitos determinsticos.
Vamos construir um autmato produto A
3
que vai simular o funcionamento simultneo
de A
1
e A
2
. Esta construo vai permitir encontrar um DFA que represente L(A
1
)L(A
2
),
o mesmo se passando para L(A
1
) L(A
2
). Formalmente, A
3
= S
3
, ,
3
, i
3
, F
3
onde
S
3
= S
1
S
2
= {(s
1
, s
2
) | s
1
S
1
e s
2
S
2
}
i
3
= (i
1
, i
2
)

3
((s
1
, s
2
), a) = (
1
(s
1
, a),
2
(s
2
, a)) s
1
S
1
, s
2
S
2
, a
A denio de F
3
indicar se a linguagem de A
3
ser a interseco ou a reunio das
linguagens de A
1
e de A
2
. Se denirmos
F
3
= F
1
F
2
= {(s
1
, s
2
) | s
1
F
1
s
2
F
2
}
O autmato A
3
vai aceitar uma palavra se e s se A
1
e A
2
tambm a aceitarem, i.e.,
L(A
1
) L(A
2
) = L(A
3
).
Problema 35 Mostra por induo em ||, que

3
((s
1
, s
2
), ) = (

1
(s
1
, ),

2
(s
2
, ))
Proposio 4.9 L(A
3
) = L(A
1
) L(A
2
).
39
D
R
A
F
T
Dem.
L(A
3
)

3
(i
3
, ) F
3

3
((i
1
, i
2
), ) F
1
F
2
(

1
(i
1
, ),

2
(i
2
, )) F
1
F
2

1
(i
1
, ) F
1

2
(i
2
, ) F
2
L(A
1
) L(A
2
)
L(A
1
) L(A
2
)

Como no caso da construo por subconjuntos para a obteno de um autmato nito


determinstico equivalente a um no determinstico, a construo da funo de transio
pode s envolver os estados do autmato produto que so atingveis do estado inicial.
Exemplo 4.10 Considera os seguintes autmatos nitos determinsticos:
A
1
A
2
s
0
s
1
a
b a, b
q
0
q
1
b
a, c
a, c b
Como os autmatos no tm o mesmo alfabeto, antes de calcular o autmato
produto necessrio transformar o primeiro autmato sem mudar a linguagem
representada por ele.
A
1
A
2
s
0
s
1
s
2
a
c
c
b
a, b
a, b, c
q
0
q
1
b
a, c
a, c b
Sejam ento A
1
= S
1
, {a, b, c},
1
, s
0
, , F
1
) e A
1
= S
2
, {a, b, c},
2
, q
0
, , F
2
onde S
1
=
{s
0
, s
1
, s
2
}, S
2
= {q
0
, q
1
}, F
1
= {s
1
}, F
2
= {q
1
}, e as funes de transio
1
e
2
so
respectivamente,

1
a b c
s
0
s
1
s
0
s
2
s
1
s
1
s
1
s
2
s
2
s
2
s
2
s
2

2
a b c
q
0
q
0
q
1
q
0
q
1
q
0
q
1
q
0
40
D
R
A
F
T
Para o autmato produto A
3
= S
3
, {a, b, c},
3
, (s
0
, q
0
), F
3
, tem-se
S
3
= {(s
0
, q
0
), (s
1
, q
0
), (s
2
, q
0
), (s
0
, q
1
), (s
1
, q
1
), (s
2
, q
1
)}
e a funo delta
3
dada por

3
a b c
(s
0
, q
0
) (s
1
, q
0
) (s
0
, q
1
) (s
2
, q
0
)
(s
1
, q
0
) (s
1
, q
0
) (s
1
, q
1
) (s
2
, q
0
)
(s
2
, q
0
) (s
2
, q
0
) (s
2
, q
1
) (s
2
, q
0
)
(s
0
, q
1
) (s
1
, q
0
) (s
0
, q
1
) (s
2
, q
0
)
(s
1
, q
1
) (s
1
, q
0
) (s
1
, q
1
) (s
2
, q
0
)
(s
2
, q
1
) (s
2
, q
0
) (s
2
, q
1
) (s
2
, q
0
)
.
Se o autmato produto representar a interseco das linguagens de A
1
e A
2
,
temos que F
3
= F
1
F
2
= {(s
1
, q
1
)}. O diagrama do autmato produto A
3
:
A
3
(s
0
, q
0
)
(s
1
, q
0
)
(s
0
, q
1
)
(s
2
, q
0
) (s
2
, q
1
)
(s
1
, q
1
a
b
c
a
b
c
a
b c
b
a, c
a
c
b
a, c
b
O autmato A
3
aceita a linguagem constituda pelas palavras de alfabeto {a, b, c}
que tm algum a, terminam em b e no tm cs.
Se num autmato produto se modicar o valor de F
3
podemos obter um autmato que
reconhece a reunio das linguagens de A
1
e A
2
. O autmato A
3
aceita uma palavra se pelo
menos um dos autmatos A
1
ou A
2
aceitar:
F
3
= {(s
1
, s
2
) | s
1
F
1
ou s
2
F
2
}.
41
D
R
A
F
T
Proposio 4.11 L(A
3
) = L(A
1
) L(A
2
).
Problema 36 Demonstra a Proposio 4.11.
Exemplo 4.12 Para o exemplo do Exerccio 4.10 para se obter um autmato para a
reunio da linguagens, A
3
, basta considerar o conjunto de estados nais constitudo
pelos pares em que pelo menos um dos estados seja nal,
F
3
= {(s
1
, q
0
), (s
0
, q
1
), (s
1
, q
1
), (s
2
, q
1
)}.
O diagrama do autmato da reunio A
3
ca:
A
3
(s
0
, q
0
)
(s
2
, q
0
)
(s
1
, q
0
)
(s
0
, q
1
) (s
1
, q
1
)
(s
2
, q
1
)
a
b
c
a
b
c
a
b
c
b
a, c
a
c
b
a, c
b
Exemplo 4.13 Considera os seguintes autmatos nitos determinsticos:
A
1
A
2
s
0
s
1
s
2
a
b
a, b
a, b
q
0
q
1
q
2
b
a
a, b
a, b
Como os autmatos no so completos, a funo de transio para o autmato
produto :
42
D
R
A
F
T

3
a b
(s
0
, q
0
) (s
1
, q
2
) (s
2
, q
1
)
(s
1
, q
2
) (s
2
, q
2
) (s
2
, q
2
)
(s
2
, q
1
) (s
2
, q
2
) (s
2
, q
2
)
(s
2
, q
2
) (s
2
, q
2
) (s
2
, q
2
)
O autmato para a interseco A

reconhece a linguagem {a} {b} (ou seja, ) e


o da reunio A

, reconhece a linguagem {a} {b}. Os diagramas para o autmato da


interseco e da reunio, so respectivamente:
A

(s
0
, q
0
) (s
1
, q
2
)
(s
2
, q
1
) (s
2
, q
2
)
a
b a, b
a, b
a, b
(s
0
, q
0
) (s
1
, q
2
)
(s
2
, q
1
) (s
2
, q
2
)
a
b a, b
a, b
a, b
Problema 37 Exemplica todas as construes anteriores considerando as linguagens
A = {aa} e B = {bbb} de alfabeto {a, b} e os respectivos autmatos.
4.2 Autmatos nitos no determinsticos (NFA)
Muitas vezes, para facilidade formal de demonstrao ou por uma expressividade mais
evidente, optamos por outro tipo de autmatos nitos, os autmatos no determinsticos,
para representar linguagens regulares. Estes, como vamos ver, tm uma composicionali-
dade evidente, tornando as operaes elementares das expresses regulares (concatenao,
disjuno e fecho de Kleene) em transformaes simples nesta classe de autmatos.
Em vez de termos um autmato, em que no temos que tomar decises sobre qual
o caminho que vamos tomar ao ler uma palavra, passamos a ter um autmato em que de
um estado, e lendo um dado smbolo, podemos ir para diversos estados. Mesmo o estado
em que comeamos a ler uma palavra pode no ser nico. Um NFA pode ter um conjunto
no singular de estados iniciais e o estado que se usa para comear a ler uma palavra
uma das escolhas que temos que fazer.
Denio 4.14 (NFA) Um autmato nito no determinstico (NFA) um quntu-
plo ordenado S, , , I, F em que:
43
D
R
A
F
T
S um conjunto nito, no vazio, a que chamamos o conjunto dos estados;
um conjunto nito, no vazio, que constitui o alfabeto;
uma funo parcial : S P(S), chamada funo de transio;
I, com I S e I = , o conjunto de estados iniciais;
F, com F S, o conjunto dos estados nais.
Exemplo 4.15 Considera o NFA A = {s
0
, s
1
}, {0, 1}, , {s
0
}, {s
1
} com
(s
0
, 0) = {s
0
, s
1
} (s
0
, 1) = {s
0
}
s
0
s
1
0, 1
0
Como o estado do autmato, resultante da leitura de uma palavra, passa a ser ento
dependente da (ou das) escolha(s) que tenhamos feito ao longo desse processo, dizemos que
uma palavra aceite por um NFA, se existir um conjunto de escolhas que nos conduza
a um estado nal. Para captar esta possibilidade de escolha dos diversos percursos que
podemos percorrer com a leitura de uma mesma palavra, a funo de transio de um NFA,
no faz corresponder a cada par (estado, letra) um s novo estado mas sim um conjunto
de estados. A funo de transio estendida vai fazer corresponder para cada palavra, no
um conjunto de estados para cada estado de partida, mas um conjunto de estados para
cada conjunto de estados que representa as diversas situaes resultantes das diferentes
possveis escolhas at a feitas.
Ento, da mesma forma que foi feito para os autmatos determinsticos (DFA) pode-
mos denir uma funo de transio estendida

: P(S) P(S)
com a seguinte denio recursiva:
(X) (X P(S)

(X, ) = X)
(X ) ((X P(S)

(X, ) =

sX
(s, ), )).
(4.4)
Podemos ento denir a linguagem representada por um NFA.
44
D
R
A
F
T
Denio 4.16 (Linguagem representada por um NFA) Seja A = S, , , I, F um
NFA. A linguagem L(A) representada por A dene-se como
L(A) = {

|

(I, ) F = }, (4.5)
em que

denida como atrs.
Uma outra formulao pode ser dada a esta denio 4.16 que, por vezes, se torna
bastante cmoda para provar certas proposies. Em vez de utilizarmos os possveis
conjuntos de estados correspondentes avaliao sucessiva de

(I, ), podemos referir
directamente o conjunto de estados que conduzem, com sucesso, a avaliao de uma palavra
de um estado inicial a um estado nal.
Lema 4.17 Seja A = S, , , I, F um NFA e =
1

2
. . .
||

, condio necess-
ria e suciente para que L(A), que
(s
0
, s
1
, . . . , s
||
S) (s
0
I s
||
F (i [0, ||[ s
i
(s
i1
,
i
))). (4.6)
Dem. A demonstrao sai directa, da Denio 4.16 e do enunciado do lema.
Problema 38 Demonstra o Lema 4.17.
Lema 4.18 Seja A = S, , , I, F uma NFA e

com =

para algum

e . Ento, para qualquer conjunto de estados X S,

(X, ) =

(X,

), ).
Dem. A demonstrao segue por induo sobre o comprimento de ||. Se || =
0 a proposio no faz sentido, pelo que comecemos por provar para de
comprimento unitrio, ou seja para . Nesse caso temos trivialmente
que, para qualquer conjunto de estados X,

(X, ) =

(X, ), ).
Suponhamos, ento, que para qualquer palavra , com || < n, se se tiver =

ento, para qualquer conjunto de estados X,

(X,

) =

(X,

), ). Seja ento
uma palavra tal que || = n e =

. Ento seja

tal que

. Ento =

com |

| < n. Ento

(X, ) =

(X,

)
=

(X,

),

) (pela denio de

(4.4))
=

(X,

),

), ) (pela hiptese de induo)


=

(X,

), ) (pela denio de

(4.4))
=

(X,

), ).
45
D
R
A
F
T
Portanto o Lema vlido para qualquer palavra de qualquer comprimento.
Denio 4.19 (linguagem reversa) Seja L uma linguagem de alfabeto , e R :

a funo dada pela seguinte denio indutiva (ver 2.9):


() ( {}
R
= )
() ((

) ()
R
=
R
).
A linguagem L
R
a linguagem de alfabeto , denida como:
L
R
= {

|
R
L}.
Denio 4.20 (autmato reverso) Seja A = S, , , I, F um NFA, denimos como
o seu autmato reverso, o NFA A
R
= S, ,
R
, F, I com

R
: S P(S)
(s, ) {x S | (x, ) s}
Proposio 4.21 Seja A um NFA, ento
L(A)
R
= L(A
R
).
Dem. A demonstrao trivial, usando o Lema 4.17.
Exemplo 4.22 Consideremos o NFA (neste caso at um DFA) dado pelo diagrama
seguinte, que representa a linguagem das palavras de alfabeto = {0, 1} que tm 110
como prexo:
s
0
s
1
s
2
s
3
1 1 0
0, 1
A linguagem das palavras, com o mesmo alfabeto, que tm 011 como suxo, tem o
seguinte NFA como representante.
s
0
s
1
s
2
s
3
1 1 0
0, 1
Problema 39 Demonstra a Proposio 4.21.
46
D
R
A
F
T
Teorema 4.23 (Mtodo de construo de subconjuntos) Seja A um autmato -
nito no determinstico, ento existe um autmato nito determinstico A

tal que
L(A) = L(A

).
Dem. Seja A = S, , , I, F o NFA. Consideremos o DFA A

= P(S), ,

, I, F

em
que
F

= {X S | X F = }
e

: P(S) P(S)
(X, )

sX
(s, ).
trivial vericar que este novo DFA est bem denido. Necessitamos provar
somente a equivalncia entre os dois autmatos.
Comecemos por denir

: P(S)

P(S), indutivamente, como

(X, ) = X

(X, ) =

(X, ), ),
e provemos, por induo sobre o comprimento de (

), que

(I, ) =

(I, ).
Se || = 0, e portanto = , tem-se, pela denio, que

(I, ) = I =

(I, ).
Suponhamos ento que
( (|| < n

(I, ) =

(I, ))).
47
D
R
A
F
T
Seja

com || = n. Ento =

para algum

com |

| = n 1.

(I, ) =

(I,

)
=

(I,

), ) (pelo Lema 4.18)


=

(I,

), ) (pela hiptese de induo)


=

(I,

)
(s, ),

(pela denio de

)
=

(I,

)
(s, ) (pela denio de

)
=

(I,

), )
=

(I,

)
=

(I, )
Logo L(A) = L(A

).
Exemplo 4.24 Consideremos o NFA representado pelo seguinte diagrama:
s
0
s
1
s
2
s
3
s
4
0
1
1
0
1
1
1
0
1
0
0
1
Este autmato representa a linguagem das representaes binrias que correspondem
a inteiros que no so mltiplos de 3, concatenada com a linguagem das palavras
que comeam com um 1 e tm um nmero mpar de 0s.
Para obtermos um DFA equivalente a este NFA, prossigamos com a construo
dos subconjuntos que resulta do Teorema anterior. Tem-se
48
D
R
A
F
T
0 1
{s
0
} {s
0
} {s
1
}
{s
1
} {s
2
} {s
0
, s
3
}
{s
2
} {s
1
} {s
2
, s
3
}
{s
0
, s
3
} {s
0
, s
4
} {s
1
, s
3
}
{s
2
, s
3
} {s
1
, s
4
} {s
2
, s
3
}
{s
1
, s
3
} {s
2
, s
4
} {s
0
, s
3
}
{s
0
, s
4
} {s
0
, s
3
} {s
1
, s
4
}
{s
1
, s
4
} {s
2
, s
3
} {s
0
, s
3
, s
4
}
{s
2
, s
4
} {s
1
, s
3
} {s
2
, s
3
, s
4
}
{s
0
, s
3
, s
4
} {s
0
, s
3
, s
4
} {s
1
, s
3
, s
4
}
{s
1
, s
3
, s
4
} {s
2
, s
3
, s
4
} {s
0
, s
3
, s
4
}
{s
2
, s
3
, s
4
} {s
1
, s
3
, s
4
} {s
2
, s
3
, s
4
}
O estado inicial o estado {s
0
}, e so nais todos os estados a cujo nome pertence
s
4
. O diagrama do DFA resultante , ento, o seguinte.
{s
0
} {s
1
}
{s
2
}
{s
0
, s
3
}
{s
1
, s
3
}
{s
2
, s
3
}
{s
2
, s
4
}
{s
0
, s
4
}
{s
1
, s
4
} {s
0
, s
3
, s
4
}
{s
2
, s
3
, s
4
}
{s
1
, s
3
, s
4
}
0
1 1
0
0
1
0
1
1
0
1
0
1
0
1
0
1
1
0
1
0
0
0
1
Problema 40 Considera os autmatos nitos no-determinsticos representados pelos
seguintes diagramas:
A :
a b
b
a
b
b
B :
b
b
b
a
b
a
Diz quais das seguintes palavras so aceites por A ou B:
1.
49
D
R
A
F
T
2. aa
3. aba
4. abba
5. bba
6. abab
Problema 41 Constri um autmato nito no-determinstico que reconhea a lingua-
gem do alfabeto = {0, 1} das palavras com um 1 na terceira posio a contar do m.
Problema 42 Considera o seguinte autmato nito no-determinstico representado pelo
seguinte diagrama:
0 1
a
a, b
b
Converte, pela construo dos subconjuntos, o autmato num autmato nito determi-
nstico.
Problema 43 Seja A o autmato nito de alfabeto {a, b, c} representado pelo diagrama
seguinte.
0 1 2 3
a, b, c
a b b
1. Qual a linguagem reconhecida pelo autmato A? Porqu?
2. Usando o mtodo da construo de subconjuntos, determina um autmato deter-
minstico que seja equivalente a A.
3. Recorda que se um dado autmato determinstico S, , , s
0
, F em que uma
funo total (no encrava), reconhece L, ento o autmato S, , , s
0
, S\F reconhece

\ L (isto , a linguagem complementar de L).


Por que que a linguagem reconhecida pelo autmato seguinte no a complementar
da linguagem reconhecida por A?
0 1 2 3
a, b, c
a b b
50
D
R
A
F
T
4.3 Autmatos no determinsticos com transies por
(NFA)
Por vezes, seja pela sua expressividade intrnseca seja por facilitar construes formais,
usamos NFAs que admitem transies por . classe destes autmatos designamos
normalmente por NFA.
Num NFA, de um estado seu no s podem partir transies por um mesmo smbolo
para diversos estados (como num NFA) como podem existir transies para outros estados,
que em vez de consumirem um caracter de , consomem . Quando do estado s
1
temos
uma transio por para o estado s
2
, isso signica que quando chegamos a s
1
(vindos
de outro estado) podemos optar por ir (ou no) para o estado s
2
, sem que para isso
tenhamos que consumir algum caracter.
Exemplo 4.25 O NFA seguinte representa o Fecho de Kleene da linguagem das
representaes binrias dos inteiros congruentes com 2, mdulo 3.
s
0
s
1
s
2
s
3
0
1
1
0
0
1

Denio 4.26 (NFA) Um autmato nito no-determinstico com transies por


(NFA) um quntuplo ordenado S, , , I, F em que
S um conjunto nito, no vazio, a que chamamos o conjunto dos estados;
um conjunto nito, no vazio, que constitui o alfabeto;
uma funo parcial : S {} P(S), chamada funo de transio;
I, com I S e I = , o conjunto de estados iniciais;
F, com F S, o conjunto dos estados nais.
O conceito de Fecho por , a seguir formalizado, corresponde ao conjunto de estados
que se podem atingir a partir de um dado estado viajando somente por transies por .
Denio 4.27 (Fecho por de um conjunto de estados) Seja A = S, , , I, F um
NFA, e seja X S um conjunto de estados de A. Denimos indutivamente o
51
D
R
A
F
T
seguinte conjunto:
F
0

(X) = X,
F
1

(X) =

sX
(s, ),
F
n

(X) =

sF
n1

(X)
(s, ).
Ento o fecho por de X (F

(X)) ca denido como:


F

(X) =

n0
F
n

(X).
Como se trata de um autmato nito, isto , com um nmero nito de estados, este
conjunto est trivialmente bem denido. Quando X = {s} tambm se denomina F

(X)
por fecho por de s e pode-se designar por F

(s).
Exemplo 4.28 Considerando o NFA do Exemplo 4.25 podemos calcular F

({s
0
}).
Tem-se
F
0

({s
0
}) = {s
0
},
F
1

({s
0
}) = (s
0
, )
= {s
1
, s
3
},
F
2

({s
0
}) = (s
1
, ) (s
3
, )
= {s
0
}
Donde, F

({s
0
}) =

2
n=0
F
n

({s
0
}) = {s
0
, s
1
, s
2
}.
Para denir formalmente a linguagem representada por um NFA, comecemos, como
zemos para os NFA, por estender a funo de transies .
Ento, seja A = S, , , I, F um NFA, denimos

como

: P(S)

P(S)
com a seguinte denio recursiva:
(X)(X P(S)

(X, ) = F

(X)), (4.7)
(X )((X P(S)

)

(X, ) =

sX
F

((s, )),

), (4.8)
com F

(X) como est denido em 4.27.


52
D
R
A
F
T
Denio 4.29 (linguagem representada por um NFA) Seja A = S, , , I, F um
NFA. A linguagem, L(A), representada por A dene-se como
L(A) = {

|

(F

(I), ) F = }, (4.9)
em que

e F

so denidos como atrs.


Podemos, como zemos para a converso de NFAs em DFAs, aplicar a denio de
linguagem representada por um NFA para obter um algoritmo que encontre um DFA
equivalente. Em vez disso, vamos usar a denio de fecho por de um estado para obter
uma transformao de um NFA num NFA equivalente.
Teorema 4.30 Dado um NFA A, existe um NFA, A

, tal que
L(A) = L(A

).
Dem. Seja A = S, , , I, F o NFA. Consideremos o NFA A

= P(S), ,

, F

(I), F

em que
F

XF
F

(X)
e

: P(S) P(S)
(X, ) F

sX
(s, )

.
O NFA A

est trivialmente bem denido, e a equivalncia dos autmatos segue


directamente das denies das linguagens representadas por estes autmatos,
respectivamente 4.29 e 4.16.
Em muitos casos, e em especial para simplicar as demonstraes, conviniente
considerar NFAs com um s estado inicial e um s estado nal. O Lema seguinte mostra
que tal sempre possvel.
Lema 4.31 Seja A = S, , , I, F um NFA, existe um NFA, A

= S

, ,

, I

, F

,
equivalente a A, tal que:
1. tem somente um estado inicial I

= {s

0
};
2. no h transies que cheguem do estado inicial (s S

)(s

(s, )
s

(s, ));
53
D
R
A
F
T
3. tem somente um estado nal F = {s

f
};
4. no h transies que partam do estado nal (

(s

f
, ) = )(

(s

f
, ) =
).
Um autmato que verique estas propriedades denomina-se normalizado.
Dem. Se o autmato A j estiver nas condies requeridas, nada h a demonstrar.
Caso isso no acontea, seja S

= S {s

0
, s

f
}, com s

0
, s

f
S. Faamos I

= {s

0
} e
F

= {s

f
} e tomemos

como extenso de

: S

s S, {} (s, ) (s, )
(s

0
, ) F

(I)
s F

(F) (s, ) {s

f
}.
(4.10)

Denio 4.32 (linguagem direita) Seja A = S, , , s


0
, F uma autmato e s um
seu estado. A linguagem direita de S
{

(s, ) F}.
Denio 4.33 (linguagem esquerda) Seja Seja A = S, , , s
0
, F uma autmato e
s um seu estado. A linguagem esquerda de S
{

(s
0
, ) = s}.
4.4 Equivalncia entre Linguagens Regulares e Lingua-
gens Aceites por Autmatos Finitos
As linguagens aceites por autmatos nitos so precisamente as linguagens regulares, i.e.
as descritas por expresses regulares.
Teorema 4.34 (Kleene[Kle56]) Uma linguagem reconhecvel por um autmato -
nito se e s se for regular. Ou seja, o conjunto das linguagens representadas pelas
expresses regulares o mesmo que o representado por DFA.
Para a demonstrao deste teorema necessrio mostrar que:
Qualquer linguagem descrita por uma expresso regular aceite por um autmato
nito.
54
D
R
A
F
T
Qualquer linguagem aceite por um autmato nito descrita por uma expresso
regular.
Existem vrios modos de converso entre estes dois modelos. Vamos para cada caso
analisar alguns e indicar quais as suas caractersticas e vantagens.
4.4.1 De Expresses Regulares para Autmatos Finitos
Neste caso temos de demonstrar que:
Teorema 4.35 Seja L uma linguagem representada por uma expresso regular r, L =
L(r)), ento existe um DFA A, tal que L = L(A).
Pretendemos obter para cada expresso regular r um DFA equivalente. Alguns dos
mtodos convertem a expresso regular r num autmato nito no determinstico equiva-
lente, NFA. Como, pelo Teorema 4.23 apresentado na Seco 4.2, podemos transformar
este NFA num DFA, temos construdo o autmato pretendido.
As converses distinguem-se ainda pelo facto dos NFAs obtidos terem ou no transies
por .
Temos, entre outros, os seguintes algoritmos (a que habitualmente se associa um
autmato com o mesmo nome):
Algoritmo de Thompson: produz um NFA.
Algoritmo de Brzozowski: produz um DFA, denominado autmato de derivavas.
Algoritmo de Glushkov: produz um NFA, denominado autmato de posies.
Algoritmo de Antimirov: produz um NFA, denominado autmato de derivadas par-
ciais.
Vamos considerar os dois primeiros: algoritmo de Thompson e algoritmo de Brzo-
zowski.
4.4.1.1 Algoritmo de Thompson
O algoritmo de Thompson [?] constri um NFAs indutivamente na denio das expres-
ses regulares. Para cada regra indutiva da Denio 3.1, e supondo que temos um NFA
correspondente a cada uma das expresses regulares (se for esse o caso) constituintes,
mostramos como se pode construir um NFA que corresponde expresso regular nal.
Construamos ento cada um dos NFA A
r
correspondentes a cada uma das expresses
regulares r obtidas pelas regras de 3.1. Em cada caso supomos conhecido o alfabeto, .
55
D
R
A
F
T
De notar, que depois da aplicao de cada passo deste mtodo, o autmato resultante est
normalizado como indicado no Lema 4.31, isto , possui um s estado nal do qual no
partem transies, assim como um estado inicial ao qual no chega qualquer transio.
Pelo que ca assegurada a aplicabilidade recursiva do mtodo.
i) r =
A

:
s
0
ii) r =
A

:
s
0
iii) r = ,
A

:
s
0
s
1

iv) r = r

+ r

A
r

+r
:
s
0
s

0
s

0
s

1
s

1
s
1

A
r

A
r

v) r = r

A
r

r
:
s
0 s

1
s

0
s
1
A

r
vi) r = r

A
r
:
s
0 s

0
s

1
s
1

Proposio 4.36 (Correo do Algoritmo de Thompson) Seja r um expresso re-


gular. O Algoritmo de Thompson produz um NFA A
r
tal que L(r) = L(A
r
).
Dem. A correo de cada uma das construes simples luz da denio de
linguagem associada a uma expresso regular (ver tambm a Denio 3.1).
56
D
R
A
F
T
i) r =
Neste caso L(r) = e A

= {s
0
}, , , {s
0
}, . Como o conjunto de estados
nais vazio temos L(A

) = = L(r)..
ii) r = Neste caso L(r) = {} e A

= {s
0
}, , {s
0
}, , {s
0
}. Como a funo de
transio no est denida para nenhum par (estado,smbolo), mas o
estado incial nal temos, pela denio de

, que L(A

) = {} = L(r).
iii) r = ,
Neste caso L(r) = {} e A

= {s
0
, s
1
}, , {s
0
, s
1
}, , {s
1
}, com (s
0
, = {s
1
}.
Pela funo de transio e sendo s
1
um estado nal, temos que L(A

) =
{} = L(r).
iv) r = r

+ r

Seja A
r
= S

, ,

, {s

0
}, {s

1
} e A
r
= S

, ,

, {s

0
}, {s

1
}. Temos que L(r) =
L(r+r

) = L(r

) L(r

) e, por hiptese de induo, L(r

) = L(A
r
) e L(r

) =
L(A
r
). Seja A
r
= S, , , {s
0
}, {s
1
}, com
S = S

{s
0
, s
1
}
a funo denida por:
(s
0
, ) = {s

0
, s

0
}
(s

1
, ) = {s
1
} e (s

1
, ) = {s
1
}
para s

e {}, (s

, ) =

(s

, ).
para s

e {}, (s

, ) =

(s

, ).
Queremos provar que L(r) = L(A
r
).
Se L(r) ento L(r

) ou L(r

), e por hiptese de induo


L(A
r
) ou L(A
r
), respectivamente. Se L(A
r
) ento

({s

0
}, ) {s

1
}.
E, do mesmo modo, se L(A
r
) ento

({s

0
}, ) {s

1
}. Em ambos os
casos, como F

({s

1
}) = F

({s

1
}) = {s
1
}, temos que L(A
r
). Suponhamos
que L(A
r
). Ento,

(F

({s
0
}), ) =

({s
0
} F

({s

0
}) F

({s

0
}), )

(F

({s

0
}), )
F

({s

1
})
= {s
1
}
Analogamente, se L(A
r
). Logo L(A
r
) L(A
r
) L(A
r
).
Seja L(A
r
). Ento pela denio de linguagem aceite por um NFA,

(F

({s
0
}), ) {s
1
} = implica que

(F

({s
0
}), ) = {s
1
}. Suponhamos, por
57
D
R
A
F
T
absurdo, que L(A
r
) e L(A
r
). Ento,

(F

({s

0
}), ) = {s

1
} e

(F

({s

0
}), ) = {s

1
}. Os estados s

1
e s

1
so os nicos estados nais de
A
r
e A
r
, respectivamente, e dos nicos que se pode chegar a s
1
em A
r
(e
sem consumir smbolos). Isto , no se poderia ter s
1

(F

({s
0
}), ) j que

(F

({s
0
}), ) =

({s

0
, s

0
}, )
= F

(F

({s

0
}), )) F

(F

({s

0
}), ))
e portanto tinhamos / L(A
r
) (absurdo!).
Mas ento L(A
r
) L(A
r
) L(A
r
). Conclumos que L(A
r
) = L(A
r
)
L(A
r
) = L(r

) L(r

) = L(r

+ r

) = L(r).
v) r = r

Seja A
r
= S

, ,

, {s
0
}, {s

1
}} e A
r
= S

, ,

, {s

0
}, {s
1
}}. Temos que L(r) =
L(r

) L(r

) e, por hiptese de induo, L(r

) = L(A
r
) e L(r

) = L(A
r
).
Seja A
r
= S

, , , {s
0
}, {s
1
}, com a funo denida por:
(s

1
, ) = {s

0
}
Para s

e {}, (s

, ) =

(s

, ).
Para s

e {}, (s

, ) =

(s

, ).
Queremos provar que L(r) = L(A
r
).
Seja L(r). Ento existem

tal que

L(r

) e

L(r

).
Tem-se que

L(A
r
) e

L(A
r
). Como no caso anterior, tem-se que

({s
0
},

) = {s

1
} e

({s

0
},

) = {s
1
}. Ento,

(F

{s
0
}, ) =

(F

{s
0
},

)
=

(F

{s
0
},

),

)
=

(F

({s

1
}),

)
=

(F

({s

0
}),

)
= {s
1
}
Logo, L(A
r
) e, assim, L(r) L(A
r
).
Seja agora L(A
r
). Ento sabemos que

(F

{s
0
}, ) = {s
1
}. Ao reconhecer
a palavra temos de passar necessariamente pelo estado s

1
. Seja

o
prexo de tal que

(F

({s
0
}),

) =

(F

({s
0
}),

) = {s

1
}. (4.11)
No consumindo mais smbolos da palavra pode-se passar, por transies
por , para o estado s

0
e continuar a reconhecer o resto da palavra , seja
58
D
R
A
F
T

. Tem-se que

(F

({s

0
}),

) =

(F

({s

0
}),

) = {s
1
}. (4.12)
Podemos concluir que =

tal que

L(A
r
) e

L(A
r
), o que
prova que L(A
r
) L(A
r
)L(A
r
) = L(r

)L(r

) = L(r).
vi) r = r

Seja A
r
= S

, ,

, {s

0
}, {s

1
}} e, por hiptese de induo, L(r

) = L(A
r
).
Seja A
r
= S

{s
0
, s
1
}, , , {s
0
}, {s
1
}, com a funo denida por:
(s
0
, ) = {s

0
}
(s

0
, ) = {s

1
}
(s

1
, ) = {s

0
}
(s

1
, ) = {s
1
}
Para s

e {}, (s

, ) =

(s

, ).
Temos que F

(s
0
) {s
0
, s

0
, s

1
, s
1
}, F

(s

0
) {s

0
, s

1
, s
1
} e F

(s

1
) {s

0
, s

1
, s
1
}.
Queremos provar que L(r) = L(A
r
).
Seja L(r). Se = ento, pela denio de ,

e F

(s
0
), imediato
que L(A
r
).
Seno, existe n > 0 tal que L(r

)
n
, isto , =
1
. . .
n
tal que
i
L(r

),
1 i n. Provamos por induo em n, que L(A
r
). Se n = 1, ento
L(A
r
) e considerando F

(s
0
) e F

(s

1
) tem-se que L(A
r
). Suponhamos
que a propriedade se verica para L(r

)
m
, para m < n. Se L(r

)
n
,
ento =

tal que

L(r) e

L(r

)
(n1)
. Como no caso para n = 1,
tem-se que

L(A
r
), e considerando o fecho por de s

1
e a hiptese de
induo tem-se que L(A
r
). Conclumos que L(r) L(A
r
).
Seja agora L(A
r
). Se = ou L(A
r
), imediato pela construo
de A
r
que L(r). Caso contrrio, =

tal que

L(A
r
) e

tem
de ter um prexo

L(A
r
). Continuando este processo conclu-se que
existe n > 0 tal que =
1
. . .
n
tal que
i
L(A
r
), isto ,
i
L(r

),
i 1 n. Ento L(r

). E, concluindo, L(A
r
) L(r

).

Exemplo 4.37 Considera a expresso regular (a + b)(a

+ ba

+ b

. Podemos con-
siderar os seguintes sub-autmatos:
A
a
:
a
59
D
R
A
F
T
A
b
:
b
A
a
:
a

A
b
:
b

A
a+b
:

a
b

A
ba
:
b a

Denotando por A
a

+ba

+b
o autmato obtido pela unio de A
a
, A
ba
e A
b
, e
considerando mais uma vez as construes para a concatenao e o fecho de Kleene,
obtemos o autmato A
(a+b)(a

+ba

+b

)
, correspondente expresso regular dada:
s
0 s

1
s

0
s

1
s
1
A
a+b

A
a

+ba

+b

Exemplo 4.38 Se aplicarmos o mtodo anterior para obter o autmato no determi-


nstico que reconhece a linguagem correspondente expresso regular (a+b)

a(a+),
obtemos (depois de eliminadas algumas transies por e respectivos estados, para
simplicar):
60
D
R
A
F
T
s
0
s
1
s
2
s
3
s
4
s
5
s
6
s
7
s
8
s
9

4.4.1.2 Derivadas e Algoritmo de Brzozowski


A noo de derivada duma expresso regular em relao a um smbolo, corresponde a
uma representao da linguagem que se obtm quando se retira esse smbolo do incio das
palavras da linguagem que a expresso regular representa.
Dado um smbolo e uma linguagem L

podemos denir a linguagem


quociente de L por :

1
L = { | L} (4.13)
Comeamos por associar a cada expresso regular r uma funo que indica se L(r)
contm ou no a palavra vazia, .
Denio 4.39 (Parte constante duma expresso regular) Seja () : RE RE a
funo constante que dada uma expresso regular r se dene do seguinte modo:
(r) =

se L(r),
caso contrrio.
Lema 4.40 A parte constante (r), duma expresso regular r pode-se determinar
indutivamente pelas seguintes regras:
() =
() =() = ,
(r

+ r

) =

(r

) se (r

) = ,
(r

) se (r

) = ,
caso contrrio.
(r

.r

) =

se (r

) = (r

) = ,
caso contrrio.
(r

) =
61
D
R
A
F
T
Problema 44 Prova, por induo na estrutura duma expresso regular, o lema anterior,
Lema 4.40.
Denio 4.41 (Derivada de uma expresso regular por um smbolo) Seja r uma
expresso regular e um smbolo de . A derivada de r em relao a , denotada
por D

r a expresso regular que se obtm pela seguinte denio indutiva:


D

= (4.14)
D

=D

= D

= (4.15)
D

(r

+ r

) =D

+ D

(4.16)
D

(r

.r

) =(D

).r

+ (r

).D

(4.17)
D

=(D

).r

(4.18)
Exemplo 4.42 As derivadas, em relao a a e b, para a expresso regular r, (a +
b)

(a + ab

) so as seguintes:
D
a
r =D
a
(a + b)

.(a + ab

) + ((a + b)

).D
a
(a + ab

)
=D
a
(a + b).r + D
a
(a) + D
a
(ab

)
=.r +.r + + .b

=r + + b

D
b
r =D
b
(a + b)

.(a + ab

) + ((a + b)

).D
b
(a + ab

)
=D
b
(a + b).r + D
b
(a) + D
b
(ab

)
=.r +.r + +.b

=r
importante notar que para obter as derivadas consideramos o facto de ser elemento
neutro da concatenao e de ser elemento neutro da unio e elemento absorvente da
concatenao (ver Proposio 3.8). Tambm devem ser consideradas as propriedades
associativa, comutativa e de idempotncia da unio, e que iremos denotar por propriedades
ACI.
Exemplo 4.43 As derivadas, em relao a a e a b, para a expresso regular r, (a +
b)(a

+ ba

+ b

so as seguintes:
D
a
r = D
a
(a + b).(a

+ ba

+ b

= (a

+ ba

+ b

= D
b
r
Lema 4.44 Para toda a expresso regular r RE, e para todo o smbolo ,
L(D

r) =
1
L(r).
62
D
R
A
F
T
Problema 45 Prova, por induo na estrutura duma expresso regular, o lema anterior,
Lema 4.44.
A noo de derivada em relao a um smbolo pode-se generalizar para palavras

.
Denio 4.45 (Derivada em relao a uma palavra) Seja r uma expresso regu-
lar e uma palavra de

. A derivada de r em relao a uma expresso regular,


denotada por D

r, e que dene-se indutivamente no tamanho de :


D

r =r (4.19)
D

r =D

(D

(r)) (4.20)
Exemplo 4.46 Considera a expresso regular r dada por (a + b)(a

+ ba

+ b

do
Exemplo 4.43. Vamos calcular a derivada desta expresso regular r em relao
palavra aab. Pela Denio 4.45, tem-se que D
aab
= D
b
(D
a
(D
a
r))).
Pelo Exemplo 4.43, tem-se que D
a
r = (a

+ba

+b

. Derivando novamente por


a tem-se:
D
a
(D
a
r) =(D
a
(a

) + D
a
(ba

) + D
a
b

)(a

+ ba

+ b

)
=(a

+ +)(a

+ ba

+ b

=a

(a

+ ba

+ b

e, nalmente,
D
b
(D
a
(D
a
r)) =D
b
(a

).(a

+ ba

+ b

+ (a

)D
b
((a

+ ba

+ b

)
=D
b
(a

+ ba

+ b

).(a

+ ba

+ b

=(a

+ b

)(a

+ ba

+ b

Como no caso de um smbolo , dada uma palavra

e uma linguagem
L

podemos denir a linguagem quociente de L por :

1
L = {

L} (4.21)
Lema 4.47 Para toda a expresso regular r RE, e para todo o smbolo ,
L(D

r) =
1
L(r).
Problema 46 Prova, por induo na estrutura duma expresso regulare no tamanho da
palavra, o lema anterior, Lema 4.47.
63
D
R
A
F
T
Denio 4.48 (expresses regulares similares) Duas expresses regulares dizem-
se similares se uma pode ser transformada na outra por aplicao das seguintes regras
de equivalncia:
r = r = r
r = r =
r + (r

+ r

) = (r + r

) + r

(A)
r + r

= r

+ r (C)
r + r = r (I)
e duas expresses regulares dizem-se no similares se no forem similares.
Exemplo 4.49 As seguintes expresses regulares so similares: (.a

+ .a

) + a

e
a

.
Um facto importante demonstrado por J. Brzozowski [Brz64] o de que o conjunto de
derivadas duma expresso regular em relao a todas as palavras

(ou, simplesmente
o conjunto de derivadas duma expresso regular) nito, desde que se considerem as
propriedades algbricas atrs referidas.
Proposio 4.50 (Brzozowski) O conjunto D
r
de derivadas no similares duma ex-
presso regular r RE nito.
importante constatar que se no se considerassem expresses regulares similares, o
conjunto de derivadas duma expresso regular podia ser innito.
Exemplo 4.51 Seja a expresso regular a

e considerem-se as derivadas em relao


s palavras da forma a
n
, para n 1.
D
a
(a

) =a

D
aa
(a

) =a

+ a

D
aaa
(a

) =a

+ a

+ a

.
.
.
Exemplo 4.52 Vamos calcular as derivadas da expresso regular, r dada por (a +
b)(a

+ba

+b

. Para tal consideramos as palavras de {a, b}

por ordem lexicogrca.


Comeamos por atribuir uma ordem aos smbolos do alfabeto, neste caso, a < b.
Depois consideramos a palavra de tamanho 0 (), depois as de tamanho 1, a e b,
em seguida as de tamanho 2, (aa, ab, ba e bb), e assim sucessivamente at no
aparecerem novas derivadas (no similares). Pela Proposio 4.50 sabemos que o
processo termina.
64
D
R
A
F
T
Tem-se:
D

r =r = (a + b)(a

+ ba

+ b

D
a
r =(a

+ ba

+ b

= r

D
b
r =r

D
aa
r =D
a
(D
a
r) = D
a
r

= D
a
(a

+ ba

+ b

)r

= a

= r

D
ab
r =D
b
(D
a
r) = D
b
r

= (a

+ b

)r

= r

D
ba
r =D
a
(D
b
r) = D
a
r

= r

D
bb
r =D
b
(D
b
r) = D
b
r

= (a

+ b

)r

= r

D
aaa
r =D
a
(D
a
(D
a
r)) = D
a
(D
a
r

) = D
a
r

= a

+ (a

)D
a
r

= r

D
aab
r =D
ab
(D
a
r) = D
b
(D
a
r

) = D
b
r

= D
b
r

= r

D
aba
r =D
ba
(D
a
r) = D
a
(D
b
r

) = D
a
r

= r

D
abb
r =D
bb
(D
a
r) = D
b
(D
b
r

) = D
b
r

= b

+ r

= r

D
abba
r =D
bba
(D
a
r) = D
a
(r

) = r

D
abbb
r =D
bbb
(D
a
r) = D
b
(r

) = D
b
(b

)r

+ D
b
r

= r

Como nestes duas ltimas derivaes no surgiram novas expresses, o processo


termina e conclumos que D
r
= {r, r

, r

, r

, r

}.
imediato, do exemplo anterior, que em vez de se ir considerando sucessivamente
palavras de

, equivalente ir derivando em relao a cada smbolo do alfabeto as


expresses regulares que vo aparecendo no processo.
Problema 47 Verica o procedimento agora referido para o Exemplo 4.52.
Denio 4.53 (Autmato de Derivadas (ou de Brzozowski)) Seja r uma expres-
so regular e D
r
o conjunto seu conjunto de derivadas no similares. O autmato
de derivadas A
r
= D
r
, ,
r
, {r}, F
r
onde
r
e F
r
so denidos por:

r
(s, ) = D

(s) s D
r
,
F
r
= {s D
r
| (s) = }
Proposio 4.54 (Brzozowski) Para toda a expresso regular r, L(A
r
) = L(r).
Exemplo 4.55 Seja mais uma vez a expresso regular r, dada por (a +b)(a

+ba

+
b

.
65
D
R
A
F
T
No Exemplo 4.52 j calculamos o conjunto das derivdas D
r
. O autmato das
derivadas de r A
r
= D
r
, {a, b},
r
, {r}, F
r
, onde
D
r
= {(a + b)(a

+ ba

+ b

, (a

+ ba

+ b

, a

(a

+ ba

+ b

,
(a

+ b

)(a

+ ba

+ b

, b

(a

+ ba

+ b

+ (a

+ b

)(a

+ ba

+ b

}
= {r, r

, r

, r

, r

}
F
r
= {r

, r

, r

, r

r
(r, a) = D
a
r = r

r
(r, b) = D
b
r = r

r
(r

, a) = D
a
r

= r

r
(r

, b) = D
b
r

= r

r
(r

, a) = D
a
r

= r

r
(r

, b) = D
b
r

= r

r
(r

, a) = D
a
r

= r

r
(r

, b) = D
b
r

= r

r
(r

, a) = D
a
r

= r

r
(r

, b) = D
b
r

= r

e com o seguinte diagrama:


r
r

a, b
a
b
a
b
a
b
b
a
de salientar que este autmato um DFA e, ainda assim menor que o NFA
obtido no Exemplo 4.37.
Problema 48 Compara os autmatos obtidos nos Exemplos 4.37 e 4.55, obtendo um
autmato determinstico equivalente ao NFA do Exemplo 4.37.
4.4.2 De Autmatos Finitos para Expresses Regulares
Existem diversas formas de se obter uma expresso regular que represente a mesma
linguagem que um dado autmato nito reconhece. Aqui exporemos um mtodo conhecido
como Algoritmo de Eliminao de Estados (AEE). Vamos supor que o autmato nito
um NFA e est normalizado, de acordo com o Lema 4.31:
i) Asseguramos que existe um s estado inicial do autmato, s
0
, tal que no existe
nenhuma transio que termine nesse estado. Se no for esse o caso, acrescentamos
um novo estado s

, que passa a ser o estado inicial do autmato, com uma nica


transio- para o estado s
0
.
66
D
R
A
F
T
ii) Asseguramos que existe um s estado nal, e que deste estado no parte nenhuma
transio. Se no for este o caso, acrescentamos um novo estado s

, que passa a ser o


nico nal, e, para cada estado nal do autmato original, criamos uma transio-
para este novo estado.
Generalizamos o conceito de autmato nito a um autmato cuja funo de transio

passa a ser de uma diferente natureza:

: S RE S
por forma a que as transies no sejam etiquetadas com smbolos do alfabeto mas sim
com expresses regulares com o mesmo alfabeto.
Denio 4.56 (Autmato Finito Generalizado (GFA)) Um GFA um quintplo
S, , , s
0
, F em que:
S um conjunto nito, no vazio, a que chamamos o conjunto dos estados;
um conjunto nito, no vazio, que constitui o alfabeto do autmato;
uma funo total : S S RE chamada funo de transio;
s
0
, com s
0
S, o estado inicial;
F, com F S, o conjunto dos estados nais.
Vamos supor que (s, s

) = sempre que transio entre s S e s

S no seja dada
explicitamente. Notar que qualquer DFA, NFA ou NFA um GFA.
Problema 49 Mostra a armao anterior.
4.4.2.1 Algoritmo de Eliminao de Estados (AEE)
Seja A um autmato nito normalizado.
iii) Comeamos por obter um GFA equivalente: fazem-se colapsar transies com as
mesmas origens e destinos, sendo a transio restante etiquetada com a unio das
expresses regulares das transies agora eliminadas.
s
1
s
2
r
r

s
1
s
2
r + r

s
r
r

s
r + r

67
D
R
A
F
T
iv) Todos os estados, diferentes do inicial e do nal, que no tenham, pelo menos, uma
transio que deles parta e uma outra que a eles chegue, so eliminados e com eles
as transies que os referem.
v) Nos restantes, eliminamos os lacetes passando a expresso regular que etiqueta cada
sada a ser a concatenao do fecho de Kleene da expresso que constava no lacete
agora eliminado com a expresso regular que constava nessa transio de sada.
s
1
s
0
s
2
s
3
r

r
r

s
1
s
0
s
2
s
3
r

vi) Eliminamos sucessivamente todos os estados, exceptuando o inicial e o nal, proce-


dendo para cada um deles do seguinte modo.
Para cada estado s que queremos eliminar, para cada transio s

r
s que chega a s
((s

, s) = r) e para cada transio s


r

que parte de s ((s, s

) = r

), construmos
uma nova transio s

rr

. Por m, eliminamos o estado s e todas as transies


que o referem. No nal de cada passo deste necessrio aplicar de novo os passos
iii) e v).
s
1
s
2
s
s

1
s

2
r
r

s
1
s
2
s

1
s

2
rr

rr

No m deste processo, o autmato resultante deve ser do tipo


s

r
e a expresso regular que procurvamos r.
Exemplo 4.57 Considera o seguinte NFA:
68
D
R
A
F
T
0 1
2
3
a, b
b
a
b
b
a
b
b
Normalizando e transformando em GFA tem-se
4 0 1
2
3
5

a + b
b
a
b
b
a
b
b
No h estados que no so atingveis ou de onde no partem transies. Eli-
minando os lacetes (neste caso s no estado 1), tem-se o GFA seguinte
4 0 1
2
3
5

a + b
b

a
b

b
b
b

a
b
b
Comeamos por eliminar o estado 3 obtendo o GFA
69
D
R
A
F
T
4 0 1 2 5

a + b
b

a + b

ab
b

ab
b

b
b
Consideremos, para encurtar um pouco as expresses, = b

ab. Ento eliminando


o lacete existente em S1 temos
4 0 1 2 5

a + b

(b

a + )

b
b
Eliminando, agora, os estados 0 e 2 temos
4 1 5
a + b

(b

a + )(a + b) +

bb
Eliminando primeiro o lacete em 1 e depois o prprio estado 1 obtemos
4 5
(a + b)(

(b

a + )(a + b) +

bb)

b
Donde podemos concluir que a expresso regular (a + b)(

(b

a + )(a + b) +

bb)

b equivalente ao NFA dado.


de salientar que a ordem pela qual se eliminam os estados do GFA inuencia a
forma e o tamanho da expresso regular obtida. Diferentes ordenaes odem conduzir
a expresses regulares muito diferentes, embora todas equivalentes. Em cada passo
tambm se poder tentar simplicar as expresses regulares obtidas.
70
D
R
A
F
T
Problema 50 Obtem uma expresso regular equivalente ao NFA do Exemplo 4.57, utili-
zando uma ordem de eliminao de estados diferente da usada no exemplo referido.
71

Você também pode gostar