Você está na página 1de 73

AFNs, Operaes

Regulares e
Expresses
Regulares
AFNs. Operaes
Regulares.
Esquematicamente.
O circulo vermelho representa o
estado inicial q0, a poro verde
representa o conjunto de estados
de aceitao F, os demais estados
so a regio cinza
2
NFAs. Unio.
A unio AB formada colocando os
automata em paralelo. Criamos um
novo estado inicial e o conectamos
aos estados iniciais originais por -
transies:
3
Unio: Exemplo
L = {x tem comprimento par} {x
termina com 11}

a
1
0 1
b e
f
d
1

0
c
4
AFNs.
Concatenao.
A concatenao A B formada
colocando-se os automatos en srie.
O estado inicial o de A enquanto os
estados de aceitao so os de B. Os
estados de aceitao de A deixam de
s-lo e so conectados, por meio -
transio, ao estado inicial de B:
5

Concat
enao
:
Exempl b
e
1

o d 0,1

1
f

L = {x tem comprimento par 0

0 0,1

c
6
AFNs. Kleene-+.
+
A operao Kleene-+ A formada
criando-se um loop de
retroalimentao. Os estados de
aceitao so conectados ao estado
inicial por meio de -transio:

7
Kleene-+ Exemplo
x uma sequncia de 1 ou m
L= { de uma sequncia de 2 ou m

{ x comea com 1, termina com 0, e conciste


de} = repeties de sequncias de 1 ou mais 1s
seguidos de 2 ou mais 0s

8
AFNs. Kleene-*.
A construo deriva da de Kleene-+ usando-se o
+
fato de que A* a unio de A com a
linguagem que contm apenas o string
vazio. Construa Kleene-+ e adicione um
novo inicial conectado ao antigo estado
inicial por meio de -transio:

9
Kleene-* Exemplo
L = { x uma sequncia de 1 ou mais 1s seguida
de uma sequncia de 2 ou mais 0s

x comea com 1, termina com 0, e conciste de


= { repeties de sequncias de 1 ou mais 1s
seguidos de 2 ou mais 0s OU x


1
c


10
Fecho de AFNs sob
Operaes Regulares
As construes apresentadas mostram
que AFNs so fechados sob operaes
regulares.
THM 1: Se L1 e L2 so aceitas por AFNs, ento
+
L1 L2 , L1 L2, L1 e L1* tambm so.
De fato, os AFNs que aceitam essas
linguagens podem ser construdos
algoritmicamente, em tempo linear.
Como j mostramos que todo AFN- pode ser
convertido em um AFN e todo AFN pode
ser convertido em um AFD equivalente,
mostramos que AFDs e portanto
linguagens regulares so fechadas sob
operaes regulares.

11
Expresses
Regulares
J conhecemos as operaes regulares.
Expresses regulares provm uma
forma de concisa de expressar
linguagens construdas por meio de
operaes regulares. Por exemplo, a
linguagem finita {banana,nab}* pode
ser expressa, a partir das linguagens
atmicas {a},{b} e {n} do seguinte
modo:
( ({b}{a}{n}{a}{n}{a})({n}{a
}{b}) )*
Ou mais concisamente como a
expresso regular (banananab)*
12

Expresses Regulares
DEF: O conjunto das expresses regulares
sobre um alfabeto e as linguagens em *
que elas geram so definidas recursamente:
Casos Base: Cada smbolo a assim como os
smbolos e so expresses regulares:
a representa a linguagem atmica L(a ) = { a }
representa a linguagem L( ) = { }
representa a linguagem L() = { } =
Casos Inductivos: se r1 e r2 so expresses regulares,
+
tamb o so r1r2, (r1)(r2), (r1)* e (r1) :
L(r1r2) =
L((r1)(r2)) = L(r1)L(r2)
L((r1)*) =
+
L((r ) ) =
1
13

Expresses Regulares -
Tabela

Operao

Unio
Concatenao
Kleene-*

Kleene-+
Exponenciao

14
Expresses Regulares.
Simplificao.
Assim como no caso de frmulas algbricas,
expresses regulares tambm podem ser
simplificadas de modo a usar menos
parenteses, se a ordem das operaes clara.
Conforme a definio de expresses regulares,
para expressar a linguagem {banana,nab}*
teramos que escrever algo complicado como:
((((b)(a))(n))(((a)(n))(a))(((n)(a))(b)))*
Usando a precedncia de operadores *, , e
a associatividade de , temos a expresso
mais simples:
(banananab)*
15
Expresses Regulares.
Exemplo.

Q:Obtenha uma expresso regular que


represente a linguagem que consiste de
todos os bit-strings que contm uma
sequncia de sete 0s ou duas
sequncias disjuntas de trs 1s.
Nota: Uma sequncia de nove 0s seria
vlida j que contm um substring de
sete 0s.
EX:
Legal: 010000000011010, 01110111001,
111111
Ilegal: 11011010101, 10011111001010

16
Expresses Regulares.
Exemplo.
7 3 3
R: (01)*(0 1 (01)*1 )(01)*
Ou de maneira ainda mais
concisa:
7 3 3
*(0 1 *1 )
*
A resposta oficial , usando apenas as
operaes regulares padro seria:
(01)*(0000000111(01)*111)
(01)*
Uma expresso regular UNIX seria:
(0|1)*(0{7}|1{3}(0|1)*1{3})(0|1)*

17
Expresses Regulares.
Expresses regulares so strings.
Consequentemente, um conjunto de
expresses regulares uma linguagem.
Q: Suponha sejam consideradas apenas as
operaes de unio, concatenao e
Kleene-* Qual o alfabeto da linguagem
das expresses regulares sobre o alfabeto
?

18
Expresses Regulares.
R: { (, ), , *}

19
Exerccio
Retire o mximo de parnteses
(((0) (( (0) (1) ) (0) ) ) ((1)(1)))
Descreva em portugus as linguagens
denotadas pelas REXs
0(0 1)*1
0*(0+1)1*
Fornea REX que denotem:
{w {a,b}* | |w| 3 }
{w {a,b}* | w comea com a e tem tamanho par}
Fornea REX mais simples para:
* *
0* 1* 0*1* (0 1)*
(00* 10*) 0* (1* 0 )*
REX AFN-

Como AFNs- so fechados sob as


operaes regulares obtemos
imediatamente:
THM 2: Dada uma expresso regular
r existe um AFN- N que aceita a
linguagem denotada por r. I.e. tal
que L(N ) = L(r ). Alm disso, esse
AFN- pode ser construdo em
tempo linear.
21
REX AFN-
Prova. A prova por induo,
usando a definio recursiva de
expresses regulares. Primeiro
precismos mostrar AFNs- que
aceitam as linguagens denotadas
pelas expresses a, e . Essas
so aceitas pelos AFNs-:

a
q0 q1 q0 q0
22
REX AFN-

Agora precisamos mostrar como


construir AFNs- que aceitam
linguagens denotadas por
expresses regulares formadas
pelas operaes regulares. Esses
so obtidos pelas construes
vistas anteriormente:
23
REX AFN-. Exemplo.
Q: Obtenha um AFN- que aceita a
linguagem denotada pela
expresso regular
(01)*(0000000111(01)*111)
(01)*
24
REX AFN-.
Exemplo.
(01)*(0000000111(01)*111)
(01)*
R:
25
REX AFN- AFN AFD
Em resumo: Comeando com um
AFN-, usamos o procedimento de
eliminao de transies para
obter um AFN equivalente sem
transies. Em seguida, usamos
a construo de subconjuntos de
estados para obter um AFD
(determinstico) que aceita a
mesma linguagem.
Isso implica os seguintes resultados:
26
REX NFA DFA
THM 3: Se L uma linguagem aceita por
um AFN, ento possvel construir um
AFD que aceita L.
COR: A classe das linguagens regulares
fechada sob as operaes regulares.
Prova : Como AFNs so fechados sob
operaes regulares (THM 1) e AFDs so
tambm NFAs, podemos aplicar operaes
regulares a qualquer AF; ento (se
necessrio) podemos obter um AFD
equivalente (THM 3), tendo assim um AFD
que aceita a linguagem definida por meio
de operaes regulares.
27
REX AFN AFD REX

Estamos a um passo de mostrar
que AFDs AFNs REXs; i.e., as
trs representaes so
equivalentes.
Para concluir precisamos completar
o crculo de transformaes:
AFN

AFD REX
28
REX AFN AFD REX

De fato, podemos adicionar mais
informao nessa figura, j que
um AFD automaticamente um
AFN:

AFN

AFD REX
29
REX AFN AFD REX

Vamos mostrar como converter um
AFN em uma expresso regular, o
que, em particular, mostra como
converter um AFD em uma
expresso regular e, portanto,
completa o crculo de
equivalncias:
NFA
DFA REX

30
REX AFN AFD REX

Para converter um AFN para REX
vamos introduzir uma noo mais
geral de autmato, chamado AFN
Generalizado ou GNFA ou
Diagrama de Expresso Regular.
Para converter para REX, vamos
usar um GNFA:
AFN GNFA

AFD REX
31
GNFAs
DEF: A autmato finito no
determinstico generalizado (GNFA)
um grafo cujos arcos so rotulados por
expresses regulares, tendo um nico
estado inicial, com grau de entrada 0 e
um nico estado final, com grau de sada
0.
Um string u rtulo de um caminho no
GNFA, se ele um elemento da
linguagem gerada pela expresso regular
obtida concatenando-se todos os rtulos
dos arcos nesse caminho.
A linguagem aceita por um GNFA
consiste de todos os strings aceitos por
esse GNFA.
32
GNFAs.
Exemplo.
000
b
(011010
0 01)*

a
c

um GNFA porque os
arcos so rotulados
por REXs, o estado
inicial no tem
arcos entrando e o
nico estado de
aceitao no tem
arcos de sada.
Q: O string
00000010010110011
0 aceito?

33
GNFAs.
Exemplo.
000
b
(011010
0 01)*

a
c

R:
00000010010110011
0 aceito. O
caminho:
ABBB
C
000
000
10010110011
0

prova isso. (o
ltimo rtulo
resulta de
10010110011
0
(01101001)* )
34
AFN REX
A converso AFN para REX feita do
seguinte modo:
1. Construa um GNFA a partir do AFN.
A. Unifique arcos com mltiplos rtulos
usando
B. Crie um estado inicial com grau de
entrada 0
C. Crie o estado de aceitao com grau de
sada 0
2. Elimine, passo a passo, estados
interiores, modificando os rtulos
dos arcos, at obter:
r
start

accept

3. A REX correspondente o rtulo r.


35
AFN REX. Exemplo
Comece com:

Primeiro converta em
um GNFA. No ainda
um GNFA porque o
estado de aceitao,
embora nico, no tem
grau de sada 0. O estado inicial tem grau
de entrada 0 e, portanto, est OK.
36
AFN REX.
Exemplo
Adicionamos o
novo estado de
aceitao
conectando a ele
o a antigo, via
transio.

Como os rtulos so
simples letras, eles
so expressions
regulares, is a e,
portanto, esse um
GNFA. Estamos ento prontos para
comear a eliminar estados
37
interiores.
AFN REX.
A eliminao de estado feita do
seguinte modo. Se quisermos eliminar o
estado do meio v :
r2
r1 r3
u v w
r4
devemos restabelecer todas as possibilidades de
ir de u para w. I.e., adicionamos ao rtulo r4,
do arco (u,w), a expresso regular obtida pela
concatenao do rtulo r1, de (u,v ), com o
rtulo r2, do loop (v,v ), repetido
arbitrariamente, seguido do rtulo r3, do arco
(v,w ). O novo rtulo (u,w ) portanto:
r4
u
38
AFN REX.
Exemplo
Voltando ao
nosso
exemplo,
vamos
eliminar d.
Q1: Qual deve ser
o rtulo de
(b,c )? Q2:
Qual deve ser
o rtulo de (c,c )?

39
AFN REX.
Exemplo
CD*A
R1: (b,c ): R2:
(c,c ): CD*A

Em
segu
ida,
elimi
nar
c.
Q: Qual deve ser o
rtulo de (b,a )?

40
AFN REX.
Exemplo
R:
B(CD*A)(CD*A)*B
O que simplifica para
B(CD*A)+B

Agora, vamos eliminar b.


41
AFN REX.
Exemplo

Finalmente, vamos eliminar a :


42
AFN REX.
Exemplo
A REX resultante
o rtulo nico
(AD(B(CD*A)+B))+
43
RESUMO
Isso completa a demonstrao de
que so equivalentes entre si os
trs mtodos de descrever
linguagens regulares:
1. AFs Determinsticos
2. AFNs
3. Expresses Regulares

44