Escolar Documentos
Profissional Documentos
Cultura Documentos
Expressões Regulares
versão 3.0
Fabiano Oliveira
fabiano.oliveira@ime.uerj.br
Expressões Regulares
● Uma expressão regular (er) em um alfabeto ∑
é uma cadeia definida recursivamente da
seguinte forma:
○ ER1. ∅ é uma er
○ ER2. ε é uma er
○ ER3. para cada a ∈ Σ, a é uma er
○ ER4. Se α e β são er's, então α ∨ β é uma er
○ ER5. Se α e β são er's, então α ० β (ou αβ) é uma er
○ ER6. Se α é uma er, então α* e α+ são er's
Expressões Regulares
● Ex.: ∑ = {a, b}. São er's distintas:
○ ∅
○ ε
○ a
○ b
○ a∨b
○ aa precedência adotada:
○ a(a ∨ b)
○ aa ∨ b * e + antes de °
○ a(a ∨ b)*
○ aa ∨ b* ° antes de ∨
○ (aa ∨ b)*
○ ab*
○ (ab)*
Expressões Regulares
● A linguagem L(α) denotada por uma er α é:
○ ER1. L(∅) = ∅
○ ER2. L(ε) = {ε}
○ ER3. para cada a ∈ Σ, L(a) = {a}
○ ER4. L(α∨β) = L(α) ∪ L(β)
○ ER5. L(αβ) = L(α) ° L(β)
○ ER6. L(α*) = (L(α))*
L(α+) = (L(α))+
Expressões Regulares
● Ex.:
○ L(∅) = ∅
○ L(ε) = { ε }
○ L(a) = { a }
○ L(b) = { b }
○ L(a ∨ b) = {a, b}
○ L(aa) = { aa }
○ L(a(a ∨ b)) = {aa, ab}
○ L(aa ∨ b) = {aa, b}
○ L(a(a ∨ b)*) = { a } ° {a, b}*
○ L(aa ∨ b*) = {aa} ∪ {bi : i ∈ ℕ}
○ L((aa ∨ b)*) = { aa, b }*
○ L(ab*) = {abi : i ∈ ℕ}
○ L((ab)*) = {(ab)i : i ∈ ℕ}
Expressões Regulares
● Ex.:
Expressões Regulares
Expressões Regulares
● Duas er's α e β são equivalentes se L(α) = L(β)
Ex.:
a(ba)*b e ab(ab)* são equivalentes
a(ba)*b e (ab)* não são equivalentes
Equivalência entre
● Se α = ∅,
● Se α = ε,
● Se α = a, a
Expressões Regulares
Conversão de
er α para afnd (K, Σ, δ, i, F):
● Se α = β ∨ γ, i1
i1 i2 ε
i2
β γ α
Expressões Regulares
Conversão de
er α para afnd (K, Σ, δ, i, F):
f1
ε
● Se α = βγ, i1
f2
ε
f1 f3
i1 i2 f3
f2 f4
i2
f4
β γ α
Expressões Regulares
Conversão de
er α para afnd (K, Σ, δ, i, F):
● Se α = β*
ε
ε
i i
β α
Expressões Regulares
Conversão de
er α para afnd (K, Σ, δ, i, F):
● Se α = β+
ε
i i
β α
Expressões Regulares
0
Exemplo: 0(0∨1)*1 ε
0 ε 1
0 0∨1
ε
0
1 ε
ε
1 ε 1
(0∨1)*
Expressões Regulares
Exemplo: 0(0∨1)*1
ε ε
0 ε
ε
0 ε ε 1
ε 1 ε
0(0∨1)*1
Expressões Regulares
Conversão de afnd M = (K, Σ, δ, i, F) para er α:
● Usa-se uma definição de autômato finito diferenciado
○ M = (K, Σ, δ, i, F)
○ δ : (K x K) ↦ E, R ∈ E é uma expressão regular
○ O rótulo de cada aresta é uma er
(a ∨ bc*d)*bc*
Expressões Regulares
Conversão de afnd M = (K, Σ, δ, i, F) para er α:
● Cria-se um estado inicial qS e um estado final qF
● Define-se a transição de qS para i com ε, e qS como
estado inicial
● Define-se a transição de cada estado final para qF com
ε, e qF como único estado final
ε
i ε i qF
qS
ε
Expressões Regulares
Conversão de afnd M = (K, Σ, δ, i, F) para er α:
● Elimina-se todos os estados não-inicial e não-final
● O autômato resultante terá qS e qF como únicos estados e a
expressão de transição de qS para qF será a expressão
regular equivalente ao autômato inicial
● Para a eliminação do estado A, atualiza-se todas as
transições entre todos os estados da seguinte forma
Após a
R1 remoção B
B A de A R4 ∨
R1(R2)*R3
R4 R3 R2
C
C
δ(B,C) = R4 ∨ R1(R2)*R3
Expressões Regulares
Conversão de afnd M = (K, Σ, δ, i, F) para er α:
● Note que os três estados não precisam ser necessariamente distintos!
R1 Após a
remoção C
C B de B
R3
R4 R2 R4 ∨
R1(R2)*R3
δ(C,C) = R4 ∨ R1(R2)*R3
Expressões Regulares
Conversão de afnd M = (K, Σ, δ, i, F) para er α:
● Exemplo
b a*b(a∨b)*
1 2 qS qF
a a,b
b
b
a a b b
M
Exercícios
Exercícios
1. Crie expressões regulares que reconheçam as linguagens do PDF
Autômatos Finitos, Exercício 1.
3. Mostre que dada uma expressão regular α, sempre existe uma expressão
regular β equivalente a α tal que β = ∅ ou β não contém o símbolo ∅.
(Sugestão: considere as equivalências entre er's: ∅∨α = α∨∅ = α; ∅ ० α =
α ० ∅ = ∅; ∅* = ε, ∅+ = ∅ )
A B
b
Exercícios
b) a c) 1
a,b 0
A B A B
0
b
a 1 0
b 1
0
C D C
1