Aula 7 expressão regular

wab030 17,350 views 26 slides Mar 24, 2011
Slide 1
Slide 1 of 26
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26

About This Presentation

No description available for this slideshow.


Slide Content

Curso: Ciência da Computação
Turma: 7ª Série
Linguagens Formais e Autômatos
Aula 7
Aspectos Teóricos da Computação

Aspectos Teóricos da Computação
2/26
Notas de Aula
Avaliação 15 de Abril.

Aspectos Teóricos da Computação
3/26
Linguagens Regulares
●O estudo das linguagens regulares é abordado
usando os seguintes formalismos:
➔Autômato Finito. Trata-se de um formalismo
operacional ou reconhecedor, sendo basicamente,
um sistema de estados finitos;
➔Expressão Regular. Trata-se de um formalismo
denotacional, também considerado gerador, o qual
é definido a partir de conjuntos (linguagens)
básicos e das operações de concatenação e de
união;
➔Gramática Regular. Trata-se de um formalismo
axiomático ou gerador o que, como o nome indica,
é uma gramática, mas com restrições de forma das
regras de produção.

Aspectos Teóricos da Computação
4/26
Expressão Regular
●Toda linguagem regular pode ser descrita por uma
expressão denominada Expressão Regular.
●Uma expressão regular é definida a partir de
conjuntos básicos (linguagens) e operações de
concatenação e de união.
●As expressões regulares são consideradas
adequadas para a comunicação humano x humano e,
principalmente, para a comunicação humano x
máquina.
●A expressão regular é a maneira mais compacta e
mais simples de descrever conjuntos regulares, e é
usada com essa finalidade em construção de
compiladores, editores, sistemas operacionais,
protocolos, etc.

Aspectos Teóricos da Computação
5/26
Expressão Regular, Linguagem Gerada
Uma Expressão Regular (frequentemente abreviada por ER) sobre um alfabeto ∑ é indutivamente
definida como segue:
a) Base de Indução.
a.1) A expressão :
Ø é expressão regular e denota a linguagem vazia.
a.2) A expressão:
e é uma expressão regular e denota a linguagem que contém
exclusivamente a palavra vazia: {e}
a.3) Para qualquer símbolo x Є ∑, a expressão:
X é uma expressão regular e denota a linguagem que contém
exclusivamente a palavra constituída pelo símbolo x: {x}
b) Passo de Indução. Se r e s são expressões regulares e denotam a linguagem R e S,
respectivamente, então:
b.1) União. A expressão (r+s) é expressão regular e denota a linguagem R U S
b.2) Concatenação. A expressão (rs) é expressão regular e denota a linguagem: R S = {uv | u Є
R e v Є S}
b.3) Concatenação sucessiva. A expressão (r
*
) é expressão regular e denota a linguagem R
*

Se r é uma expressão regular, a correspondente linguagem denotada é dita a Linguagem Gerada
por r, sendo representada por:
L(r) ou GERA(R)

Aspectos Teóricos da Computação
6/26
Expressão Regular, Linguagem Gerada
A omissão de parênteses em uma ER é usual, respeitando
as seguintes convenções:
●A concatenação sucessiva tem precedência sobre a
concatenação e a união;
●A concatenação tem precedência sobre a união.

Aspectos Teóricos da Computação
7/26
Expressão Regular
Detalhando a linguagem gerada pela expressão (a+b)*(aa+bb),
vale que:
●a e b denotam {a} e {b}, respectivamente
●a + b denota {a} U {b} = {a,b} (Lembre-se que o elemento
vazio também está aqui.)
●(a+b)* denota {a,b}*
●aa e bb denotam {a}{a} = {aa} e {b}{b} = {bb},
respectivamente
●(aa + bb) denota {aa} U {bb} = {aa,bb}
●(a+b)*(aa+bb) denota {a,b}*{aa,bb}
Portanto, GERA((a+b)*(aa+bb)) correponde à seguinte linguagem:
{aa,bb,aaa,abb,baa,bbb,aaaa,aabb,abaa,abbb,baaa,babb,bbaa,bb
bb,...}

Aspectos Teóricos da Computação
8/26
Exemplo: Expressão Regular
Expressão Regular Linguagem Gerada
aa Somente a palavra aa
ba* Todas as palavras que iniciam por b, seguido por
zero ou mais a's
(a+b)* Todas as palavras sobre {a,b}
(a+b)*aa(a+b)* Todas as palavras contendo aa como subpalavra
a*ba*ba* Todas as palavras contendo exatamente dois b's
(a+b)*(aa+bb) Todas as palavras que terminam com aa ou bb.
(a+e)(b+ba)* Todas as palavras que não possuem dois a
consecutivos.

Aspectos Teóricos da Computação
9/26
Expressão Regular → Linguagem Regular
Por definição, uma linguagem regular é regular
se, e somente se, é possível construir um
autômato finito (determinístico, não determinístico
ou de movimentos vazios) que reconheça essa
linguagem. Assim, dada uma expressão regular r
qualquer é possível construir um autômato finito.

Aspectos Teóricos da Computação
10/26
Expressão Regular Autômato Finito Correspondente
a
b
a*
aa
bb
aa+bb
a
b
a
e a e
e
e
a e a
b e b
a e a
b e b
e
e
e e
e
Є

Aspectos Teóricos da Computação
11/26
ER convertida para Autômato
a*(aa+bb)
a e a
b e b
e
e e
e
e a e
e
e

Aspectos Teóricos da Computação
12/26
Gramática Regular
Gramáticas Lineares
Seja G={V,T,P,S} uma gramática. Sejam A e B elementos de V e w uma palavra de T*.
Então G é uma Gramática Linear se todas as suas produções encontram-se em uma e
em somente uma das seguintes formas:
a) Gramática Linear à Direita (abreviada por GLD). Todas as regras de produção são da
forma:
A → wB ou A → w
b) Gramática Linear à Esquerda (abreviada por GLE). Todas as regras de produção são
da forma:
A → Bw ou A → w
c) Gramática Linear Unitária à Direita (abreviada por GLUD). Todas as regras de
produção são como na gramática linear à direita e, adicionalmente:
|w| <= 1
d) Gramática Linear Unitária à Esquerda (abreviada por GLUE). Todas as regras de
produção são como na gramática linear à esquerda e, adicionalmente:
|w| <=1

Aspectos Teóricos da Computação
13/26
Gramática Regular
Note-se que, nas gramáticas lineares, o lado direito de uma produção é constituído por,
no máximo, uma variável. Adicionalmente, esta variável, se existir, sempre antecede
(linear à esquerda) ou sucede (linear à direita) qualquer sub-palavra (eventualmente
vazia) de terminais.

Aspectos Teóricos da Computação
14/26
Equivalência das Gramáticas Regulares
Seja L uma linguagem. Então:
L é gerada por uma GLD se, e somente se,
L é gerada por uma GLE se, e somente se,
L é gerada por uma GLUD se, e somente se,
L é gerada por uma GLUE
●Ou seja, as diversas formas das gramáticas
lineares são formalismos equivalentes.

Aspectos Teóricos da Computação
15/26
Gramática Regular
Uma gramática G é dita uma Gramática Regular,
eventualmente abreviada GR, se G é uma
gramática linear.

Aspectos Teóricos da Computação
16/26
Linguagem Gerada
Seja G=(V, T, P, S) uma gramática. A Linguagem
Gerada pela gramática G, denotada por:
L(G) ou GERA(G)
É tal que:
L(G) = {w є T* | S →
+
w}

Aspectos Teóricos da Computação
17/26
Exemplo: Gramática Regular: a(ba)*
A linguagem a(ba)* é gerada pelas seguintes gramáticas regulares:
(a) Linear à Direita. G=({S,A}, {a,b}, P, S), e P possui as seguintes
regras de produção
S → aA
A → baA | ε
(b) Linear à Esquerda. G=({S}, {a,b}, P, S), e P possui as seguintes
regras de produção
S → Sba | a
(c)Linear Unitária à Direita. G=({S,A,B}, {a,b}, P, S), e P possui as
seguintes regras de produção
S → aA
A → bB | ε
B → aA
(d)Linear Unitária à Esquerda. G=({S,A}, {a,b}, P, S), e P possui as
seguintes regras de produção
S → Aa | a
A → Sb

Aspectos Teóricos da Computação
18/26
Gramática Regular: (a+b)*(aa+bb)
A linguagem (a+b)*(aa+bb) é gerada pelas
seguintes gramáticas regulares:
(a) Linear à Direita. G=({S,A}, {a,b}, P, S), e P
possui as seguintes regras de produção
S → aS | bS | A
A → aa | bb
(b) Linear à Esquerda. G=({S}, {a,b}, P, S), e P
possui as seguintes regras de produção
S → Aaa | Abb
A → Aa | Ab | ε

Aspectos Teóricos da Computação
19/26
Gramática Linear à Esquerda e Linear à Direita
Suponha |w| >= 1. Se uma gramática tiver
simultaneamente produções do tipo A → wB
(linear à direita) e do tipo A → Bw (linear a
esquerda), então a correspondente linguagem
gerada poderá não ser regular, ou seja, esta não
é uma gramática regular.
Por exemplo, a linguagem a seguir não é regular:
{ a
n
b
n
| n є N }
Entretanto, é possível desenvolver uma
gramática, com produções lineares à direita e à
esquerda, que gera esta linguagem.

Aspectos Teóricos da Computação
20/26
Gramática Regular → Linguagem Regular
Se L é uma linguagem gerada por uma gramática regular, então L é uma linguagem
regular.
Prova: Por indução
Para mostrar que uma linguagem é regular, é suficiente construir um autômato finito que
a reconheça.
Suponha G=(V,T,P,S) uma gramática linear unitária à direita.
Então o AFNε : M=( ∑, Q,δ,q
0
, F)
Tal que: (suponha q
f
não pertence a V):
∑ = T
Q = V U {q
f
}
F = {q
f
}
q
0
= S
δ é construída como ilustrado na tabela (Suponha A e B variáveis e a terminal) simula as
derivações de G, ou seja:
ACEITA(M) = GERA(G)
A demonstração que, de fato, ACEITA(M) = GERA(G) é por indução no número de
derivações. (Vamos omitir essa demonstração mas ela pode ser vista na página 77 do
livro texto.)
Tipo da
Produção
Transição
Gerada
A → ε δ(A,ε) = q
f
A → a δ(A,a) = q
f
A → B δ(A,ε) = B
A → aB δ(A,a) = B

Aspectos Teóricos da Computação
21/26
Exemplo: Construção de um AFNε a partir de uma
gramática regular
Considere a seguinte gramática linear unitária à direita,

G=({S,A,B},{a,b},P,S) onde P é tal que:
S → aA
A → bB | ε
B → aA
O AFNε que reconhece a linguagem gerada pela gramática G é:
5 minutos para fazer.

Aspectos Teóricos da Computação
22/26
Exemplo: Construção de um AFNε a partir de uma
gramática regular
Considere a seguinte gramática linear unitária à direita,

G=({S,A,B},{a,b},P,S) onde P é tal que:
S → aA
A → bB | ε
B → aA
O AFNε que reconhece a linguagem gerada pela gramática G é:
M = ({a,b}, {S,A,B,q
f
},δ,S,{q
f
})
ProduçãoTransição
S → aA δ(S,a) = A
A → bB δ(A,b) = B
A → ε δ(A,ε) = q
f

B → aA δ(B,a) = A
S q
faA
B
ba
εA

Aspectos Teóricos da Computação
23/26
Construção de uma Gramática Regular a partir de um
AFD
Considere o autômato finito determinístico:
M = ({a,b,c}, {q
0
,q
1
,q
2
},δ,q
0
,{q
0
,q
1
,q
2
})
A gramática correspondente regular construída é?
5 minutos.
q
0
q
2b cq
1
a b c

Aspectos Teóricos da Computação
24/26
Considere o autômato finito
determinístico:
M = ({a,b,c}, {q
0
,q
1
,q
2
},δ,q
0
,
{q
0
,q
1
,q
2
})
A gramática correspondente
regular construída é?
G = ({q
0
,q
1
,q
2
,S}, {a,b,c}, P,S)
onde P é dado pela tabela:
Construção de uma Gramática Regular a partir de um
AFD
q
0
q
2b cq
1
a b c
Transição Produção
- S → q
0
- q
0
→ ε
- q
1
→ ε
- q
2
→ ε
δ(q
0
,a)=q
0
q
0
→ aq
0
δ(q
0
,b)=q
1
q
0
→ bq
1
δ(q
1
,b)=q
1
q
1
→ bq
1
δ(q
1
,c)=q
2
q
1
→ cq
2
δ(q
2
,c)=q
2
q
2
→ cq
2

Aspectos Teóricos da Computação
25/26
Ler
●Seçao 3.6 do livro.

Aspectos Teóricos da Computação
26/26
Exercícios
1. (Exercício 3.7 do livro) Desenvolva expressões regulares que gerem as seguintes linguagens sobre
∑ = {a,b}:
(a) {w | w tem no máximo um par de a como subpalavra e no máximo um par de b como subpalavra.
(b){w | qualquer para de a antecede qualquer par de b}
(c){w | w não possui aba como subpalavra}
2. Descreva em palavras as linguagens geradas pelas seguintes expressões regulares:
(a) (aa+b)*(a+bb)
(b) (b+ab)*(e +a)
(c) (aa +bb + (aa+bb) (ab+ba)(aa+bb))*
Tags