Você está na página 1de 25

Teoria da Computação

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

Expressão Regular (er)


e
Autômato Finito Não-Determinístico (afnd)
Expressões Regulares
Conversão de
er α para afnd (K, Σ, δ, i, F):

● 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

A expressão regular equivalente é a*b(a∨b)*


Expressões Regulares
Exercício: Converter M
L(M) = { x ∈ { a, b }* | cada par de a's consecutivos precede imediatamente um
par de b's consecutivos }

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.

2. Seja o alfabeto Σ = { a, b }. Prove ou refute: As expressões regulares


a(ba)*b e (ab)+ no alfabeto Σ são equivalentes, ou seja, denotam a mesma
linguagem.

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: ∅∨α = α∨∅ = α; ∅ ० α =
α ० ∅ = ∅; ∅* = ε, ∅+ = ∅ )

4. Converter os seguintes AFNDs para ERs usando o algoritmo visto no


material.
a) a b a

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

5. Converta as seguintes ERs em AFNDs usando o algoritmo visto no material.


a) 0∗(0 ∨ 1)1∗
b) (0 ∨ 1)∗1(0 ∨ 1)(0 ∨ 1)
c) (0 ∨ ε)(10 ∨ 1)∗
d) Σ∗aΣ∗bΣ∗aΣ∗ , com Σ = {a, b}
e) a∗b∗
f) (0∗1∗)∗000(0 ∨ 1)*
g) a(abb)∗ ∪ b
h) (a ∨ b+)a+b+
i) (a ∨ ab)∗ab∗

Você também pode gostar