07 Er
07 Er
07 Er
1 Introdução
Toda linguagem regular pode ser descrita por uma expressão regular. Trata-se
de um formalismo denotacional ou funcional. Uma Expressão Regular é denida a partir
de conjuntos básicos (as linguagens) e operações de concatenação e união. São adequadas
para a comunicação homem × homem e, principalmente, homem × máquina.
2 Denição
1
A concatenação pode também ser representada por r ◦ s. A união de duas ex-
pressões r e s pode ser representada por r|s ou r∪s. Sipser (2012) e Lewis e Papadimitriou
(1998) utilizam o operador “ ∪ ”. Hopcroft, Ullman e Motwani (2006) e Menezes (2012)
utilizam o operador “ + ”. Em aplicações práticas como P HP , P ostgreSQL, Javascript
e C ++ , usa-se “|” para a união.
Assim como nas expressões aritméticas, os parênteses podem ser também omi-
tidos em uma expressão regular. Se isso acontecer, a avaliação é feita segundo a ordem
de precedência: concatenação sucessiva > concatenação > uniao. Por exemplo:
a + bc = a + (bc)
ab∗ = a(b∗ )
Uma vez que a sintaxe de uma linguagem de programação tenha sido bem
descrita com linguagens regulares em termos dos seus tokens, sistemas automáticos podem
gerar o analisador léxico - parte de um compilador que é responsável pelo processamento
inicial do programa de entrada.
2
3 Propriedades
Axioma Descrição
r+s=s+r a união é comutativa
r + (s + t) = (r + s) + t a união é associativa
r(st) = (rs)t a concatenação é associativa
r(s + t) = rs + rt a concatenação é distributiva sobre a união
εr = rε = r ε é o elemento neutro da concatenação
r∅ = ∅ identidade
r+∅=r identidade
∅∗ = {ε}
Expressões regulares e autômatos nitos são equivalentes nos seus poderes des-
critivos. Como já foi visto no início da disciplina, são formalismos distintos para estudar
uma mesma classe de linguagens - as linguagens regulares. Para qualquer expressão regu-
lar, existe um autômato nito cuja linguagem é a descrita pela expressão, e vice-versa. Na
Seção 4.1 será mostrado como construir um Autômato Finito a partir de uma Expressão
Regular; e na Seção 4.2 será apresentado o processo inverso. Os processos a seguir estão
em Sipser (2012, p. 66-76).
M1 M2 M3
3
Pela ilustração acima, observa-se que L(M1 ) = {a}, L(M2 ) = {ε} e L(M3 ) = ∅.
Para os casos de união, concatenação e concatenação sucessiva, podem ser utilizadas as
construções descritas para AFN-ε.
b b
ab a ε b
a ε b
ε
ab + a
ε
a
ε
a ε b
(ab + a)∗ ε ε
ε
a
ε
O autômato resultante desse processo pode ter muitos estados, como visto no
exemplo anterior. Para a expressão regular (ab + a)∗ , é suciente o autômato da Figura 3.
a
a
q0 q1
b
Se uma linguagem é aceita por um autômato nito, então ela pode ser descrita
por uma expressão regular (ER). Denimos um novo tipo de autômato nito, chamado
4
Autômato Finito Não Determinístico Generalizado - AFNG . Primeiro mostraremos como
converter AFN-ε s em AFNGs, e em seguida, como converter AFNGs para ERs.
0
Σ: alfabeto.
Q: conjunto nito de estados.
δ : função de transição (δ : (Q − {qf }) × (Q − {qs }) → R, onde R é o conjunto de
todas as expressões regulares sobre Σ.
qs : estado inicial (qs ∈ Q).
qf : estado nal (qf ∈ Q).
a,b a+b
p q p q
AFN-ε AFNG
5
Algoritmo 1: Converte
Entrada: AFNG G = (Σ, Q, δ, qs , qf )
Saída: Expressão Regular
1 início
2 k ← |Q|
3 se k = 2 então
4 retorna δ(qs , qf )
5 m
6 senão
7 qrip ← um estado de Q − {qs , qf }
8 G0 ← G − {qrip }
9 para cada qi ∈ Q − {qf , qrip } faça
10 para cada qj ∈ Q − {qs , qrip } faça
11 R1 ← δ(qi , qrip )
12 R2 ← δ(qrip , qrip )
13 R3 ← δ(qrip , qj )
14 R4 ← δ(qi , qj )
15 δ 0 (qi , qj ) ← (R1 )(R2 )∗ (R3 ) + R4
16 m
17 m
18 retorna Converte(G0 )
19 m
20 m
R4
qi qj
(R1 )(R2 )∗ (R3 ) + R4
qi qj
R1 R3
depois
qrip R2
antes
6
Na gura Figura 6, um AFN-ε M com 2 estados é convertido em uma Expres-
são Regular equivalente. Em (a) temos um AFN-ε ; em (b) temos um AFNG obtido a
partir do AFN-ε ; em (c) temos o AFNG obtido após a remoção de q1 do AFNG anterior;
e em (d) o AFNG obtido após a remoção de q0 do AFNG anterior. Este último AFNG
possui apenas dois estados, com uma transição com a expressão r = a∗ b(a + b)∗ , cuja
linguagem representada é a mesma que é aceita pelo AFN-ε .
a a
a
q0 qs ε q0 qs
qs ε q0
b b a∗ b(a + b)∗
q1 qf q1 b(a + b)∗ qf
ε
qf
(d)
a,b a+b (c)
(a) (b)
7
5 Exercícios
1. Descreva a linguagem representada por cada uma das expressões regulares a seguir:
2. Proponha uma expressão regular para cada uma das linguagens a seguir:
8
Referências