AULA Nº 5.1

(Download da Aula)

<< anterior próxima >>
menu de aulas dúvidas
 

Expressões Regulares e Gramáticas

 Expressões Regulares (introdução)

 

Linguagem aceita pelos autômatos finitos.

 Concatenação

 

Se x é uma cadeia, então x* = {l , x, xx, xxx, ...} é um fechamento transitivo de concatenação.

 

Exemplos:

 

1-

(01)* = {l , 01, 0101, 010101, ...}

 

2-

abc*d = {abd, abcd, abccd, abcccd, ...}

 

3-

0*1* = {l , 0, 1, 01, 001, 011, 0011, ...}

 

4-

(0*1*)*1 = 0*1*0*1*...0*1*1

 

5-

(b*ab*a)*b* = cadeias de a's e b's com número par de a's.

 Expressões Regulares (definição)

 

Um símbolo qualquer é uma expressão regular.

 

Se x e y são expressões regulares, a sua concatenação xy também é uma expressão regular.

 

Se x é uma expressão regular, x* também é uma expressão regular.

 

A união de duas expressões regulares é uma expressão regular.

 

A expressão obtida por uma quantidade finita de aplicações da expressão regular a à expressão regular b é uma expressão regular.

Gramáticas

 

As gramáticas são produzidas pelo comportamento de autômatos finitos, como mostrado a seguir:

 

 

Produção:

 

 

S0 ® 1 S1 g(S0,1) = S1

 

 

S0 ® 0 S0 g(S0,0) = S0

 

 

S1 ® 0 S0 g(S1,1) = S0

 

 

S1 ® 1 S1 g(S1,1) = S1

Estados

 

Representação de estados INICIAL (S0), FINAL (S1 ® l )

 

Exemplo : Pelo autômato finito da figura anterior...

 

 

S0 ® 0 S0 | 1 S1 P(1)

 

 

S0 ® 1 S1 | 0 S0 | l

 

Dado o autômato finito abaixo:

 

Gramatica_AF

 

 

S0 ® b S0 | a S1 | l P(2)

 

 

S1 ® b S1 | a S0

 

Pode-se dizer que um autômato finito representa um reconhecedor e gramáticas representam geradores de cadeias.

Produções

 

Regras de produção de símbolos através de substituições de símbolos sucessivamente. Com P1 podemos gerar:

S0 Ü 0S0 Ü 00S0 Ü 001S1 Ü 0010S0 Ü 00101S1 Ü 001011S1 Ü 001011

Autômatos Finito como Gerador de Cadeias e Conjunto de Produções como Reconhecedor de Cadeias

 

ê

Zero ou mais passos de gerações

 

S0 ê

0S0

 

S0 ê

00S0

 

S0 ê

001011

 

S0 ê

00101S1

Gramática (introdução)

 

Conjunto de regras de substituição de cadeias (produções)

 

Símbolo inicial

 

Símbolos auxiliares ou NT

 

Símbolos das cadeias finais geradas (T)

Gramática (definição)

 

Seja G uma gramática definida como G = (VN, VT, S, P); então

 

VN : Alfabeto (conjunto finito) de símbolos NT

 

VT : Alfabeto de símbolos T

 

S Î VN

 

P : Conjunto finito de produções da forma a ® b

 

 

a Î (VN U VT)* - {l }

 

 

b Î (VN È VT)*

 

Exemplo 1:

 

 

X = {a, b}

 

 

X* = {l , a, b, aa, ab, ba, ...}

 

 

G1 = ({S0, S1},{1, 0 , l }, S1, { S0 ® 0S0 , S0 ® 1S1 , S1 ® l , S1 ® 0S0 , S1 ® 1S1})

 

Exemplo 2:

 

 

G2 = (VN, VT, S0, P2)

 

 

VN = { S0 , S1} ; VT = { a , b, l }

 

 

P2 = { S0 ® bS0 , S0 ® aS1 , S0 ® l , S1 ® aS0 , S1 ® bS1 }

Geração de Cadeias a partir de Gramáticas

 

Definição: Dada a gramática G = (VN, VT, S, P), dizemos que uma cadeia a g b gera diretamente a d b , com a , b Î (VN È VT)* se g ® d é uma produção de P. Notação: gera diretamente : a g b Ü a d b

Obs.: A seta preenchida (Ü ) está sendo usada para representar uma seta com uma bola preenchida em cima.

 

Exemplo: 001S1 Ü 0010S0

 

a = 001 ; b = l ; g = S1 ; d = 0S0

 

Definição: Dada uma gramática G = (VN, VT, S, P), dizemos que uma cadeia a gera uma cadeia b se existir uma seqüência de gerações diretas para G, da forma: a = a 1 Ü a 2 Ü ... Ü a n = b , n ³ 1. Notação: a ê b

Obs.: A seta não preenchida (ê ) está sendo usada para representa uma seta com um asterisco em cima.

 

Exemplo: Considerando P1 temos 001S1 ê 001011S1

 

Definição: Dizemos que uma cadeia a Î (VN È VT)* é uma forma sentencial de uma gramática G = (VN, VT, S, P) se S ê a .

 

Exemplo: Para P1 temos as formas sentenciais: S0 , 0S0 , 00S0 , ... , 001011aS1

 

Definição: A linguagem gerada por uma gramática G = (VN, VT, S, P), denotada L(G), é o conjunto de todas as cadeias que possuem apenas símbolos terminais, e que são geradas a partir de S, ou seja,

L(G) = {v Î VT* | S ê v }

 

Exemplo: Linguagem gerada por G1 :

L(G) = {1, 01, 11, 001, 011, 101, 111, 0001, ...}

 

Definição (Equivalência de gramáticas): Duas gramáticas são equivalentes se, e somente se, L(G') = L(G'').

Correspondência entre Autômatos Finitos e Gramáticas

Definição: Seja um autômato finito M = (E, e0, F, A, g). Uma gramática G = (VN, VT, S, P) é correspondente ao autômato finito M se:

 

VN = E

VT = A È {l }

S = e0

P é constituído da seguinte forma: Uma produção N ® tQ para cada transição g(N, t) = Q e N ® l para cada N Î F.

 

 

Gramáticas (não regulares) mais gerais

Definição: São gramáticas mais poderosas do que as gramáticas equivalentes a autômatos finitos.

Exemplo: Gramáticas com produções da forma: N ® QRt, tNR ® Q, etc. com N, Q, R Î VN e t Î VT

Gramáticas Regulares

Definição: São gramáticas mais restritas e mais próximas das formas de produção correspondentes às transições de autômatos finitos.

Definição: Uma gramática G = (VN, VT, S, P) diz-se regular (GR), ou do tipo 3, se as suas produções são da forma: N ® tM ou N ® t', onde N, M Î VN e t, t' Î VT e t ¹ l .

Exemplo: G3 = (VN, VT, S, P), onde VN = {S, M},VT = {a, b, c} e

S® bS | aM | c

M® bS

ý

 

P3

G3 é regular, L(G3) = {c, bc, abc, ababc, ... , ddc, ...}

Qual é o autômato finito correspondente a G3 ?

Vamos mudar P3 para P3' de uma gramática G3', tal que L(G3) = L(G3') e G3' corresponde a um autômato finito.

S® bS | aM | cN ,

M® bS , N ® l

ý

 

P3'

O autômato finito correspondente a G3' é :

 

Teorema: Dada uma gramática regular G, existe um autômato finito M equivalente a ela, isto é, tal que L(G) é igual à linguagem aceita por M, e vice-versa.

Exemplo:

S® aM | aN ,

M® b , N ® c

ý

 

G4'

Autômato Finito não Determinístico

 

Introdução: g(S, a) = M , g(S, a) = N ; g é aplicação de transição.

Definição: Um autômato finito M = (E, e0, F, A, g) é não determinístico se existirem e1, e2, e3 Î E e a Î A tal que g(e1, a) = e2 e g(e1, a) = e3 , com e2 ¹ e3 ; caso contrário ele é determinístico.

Equivalência entre Autômatos Finitos Determinísticos e não Determinísticos

Equivalência entre Gramáticas Regulares e Expressões Regulares

Dada uma expressão regular E, existe uma gramática regular G equivalente, isto é, L(G) = E, e vice - versa.