Você está na página 1de 7

Universidade Estadual Vale do Acaraú - UVA

Curso: Ciências da Computação


Disciplina: Linguagens Formais e Autômatos
Professor: Cláudio Carvalho

Gramáticas Regulares - GRs

1 Introdução

No estudo das linguagens formais, as gramáticas fazem parte do formalismo

axiomático ou gerador . Nele, são associadas regras (axiomas) às componentes da lingua-


gem. Estas permitem armar o que será verdadeiro após a ocorrência de cada cláusula,
levando-se em conta o que era verdadeiro antes da ocorrência de uma referida cláusula.
Este material foi elaborado basicamente a partir de Menezes (2012), com informações
complementares de Hopcroft, Ullman e Motwani (1969).

2 Denição

Gramáticas Lineares são representadas por quádruplas G = (V, T, P, S), onde:

ˆ V : Conjunto nito e não vazio de símbolos variáveis;


ˆ T : Conjunto nito de símbolos terminais;
ˆ P : Conjunto nito de regras de produção;
ˆ S : Símbolo inicial da gramática (S ∈ V ).

As regras de produção são pares (α, β), α ∈ V e β ∈ (T ∗ V T ∗ ∪T ∗ )). Uma regra


de produção (α, β) é representada por α → β (α produz β ). Se há n regras de produção
(n > 1) com uma mesma variável do lado esquerdo, ou seja, α → β1 , . . . , α → βn , elas
serão representadas de forma abreviada como α → β1 | . . . |βn .

Derivação é um processo que consiste da aplicação de regras de produção.


Representa-se por (X ⇒ Y ) a ideia de que Y é derivado a partir de X (ou ainda, X
deriva Y ). A derivação em uma gramática G = (V, T, P, S) é denida de forma indutiva,
da seguinte forma:

ˆ Se S → β , temos que S ⇒ β ;
ˆ Se α ⇒ βu βv βw e βv → βt , então α ⇒ βu βt βw .

1
Portanto, uma derivação é a substituição de uma subpalavra de acordo com
uma regra de produção. Quando for necessário explicitar a regra de produção p ∈ P que
dene a derivação α ⇒ β , utiliza-se a notação: α ⇒p β .

A derivação sucessiva é a aplicação de sucessivos passos de derivação e é de-


nida da seguinte forma:

⇒∗ aplicação de 0 ou mais passos de derivação.


⇒+ aplicação de 1 ou mais passos de derivação.
⇒i aplicação de exatos i passos de derivação.

Tomemos como exemplo a gramática G1 a seguir. Observe que S ⇒3 ababa


(ababa é gerada a partir de S , após a aplicação de exatamente 3 passos de derivação),
pois S ⇒ abS ⇒ ab abS ⇒ abab a .

Sejam G = (V, T, P, S) uma gramática linear, A e B elementos de V , e w uma


palavra sobre T ∗ . Diz-se que G é uma:

ˆ Gramática Linear Direita (GLD), se toda regra de produção estiver nas


formas: A → wB ou A → w.
Exemplo:
G1 = ({S}, {a, b}, P1 , S)
P1 = {S → abS | a}
ˆ Gramática Linear Esquerda (GLE), se toda regra de produção estiver nas
formas: A → Bw ou A → w.
Exemplo:
G2 = ({S}, {a, b}, P2 , S)
P2 = {S → Sba | a}
ˆ Gramática Linear Unitária Direita (GLUD), se toda regra de produção
estiver nas formas: A → wB ou A → w, com |w| ≤ 1.
Exemplo:
G3 = ({S, A}, {a, b}, P3 , S)
P3 = {S → aA | a,
A → bS}
ˆ Gramática Linear Unitária Esquerda (GLUE), se toda regra de produ-
ção estiver nas formas: A → Bw ou A → w, com |w| ≤ 1.
Exemplo:
G4 = ({S, A}, {a, b}, P4 , S)
P4 = {S → Aa | a,
A → Sb}

2
Uma Gramática Regular é uma gramática linear direita ou esquerda. A lin-

guagem gerada por uma gramática regular (denotada por L(G) ou Gera(G)) é o conjunto
de palavras que são derivadas a partir do símbolo inicial da gramática, ou seja, dada uma
gramática G = (V, T, P, S), L(G) = {w ∈ T ∗ | S ⇒∗ w}.

Assim como foi visto nos autômatos nitos, duas gramáticas G e G0 são
equivalentes , se L(G) = L(G0 ). Nos exemplos apresentados, G1 , G2 , G3 e G4 são
equivalentes, pois L(G1 ) = L(G2 ) = L(G3 ) = L(G4 ) = (ab)∗ a = {w ∈ {a, b}∗ |
a é prexo e suxo de w, e aa e bb não são subpalavras de w }.
Nas gramáticas lineares, o lado esquerdo das regras de produção é uma variável,
e o lado direito pode ter no máximo uma variável (P : V → T ∗ V T ∗ ). Se há tanto regras do
tipo A → wB como A → Bw, ou ainda A → wBw0 em uma gramática G = (V, T, P, S),
com A, B ∈ V e w, w0 ∈ T + , ela não é uma gramática regular. Sua linguagem, portanto,
é uma linguagem linear . Esse conjunto de linguagens contém propriamente o conjunto de
linguagens regulares. Como exemplo, consideremos a gramática G5 a seguir:
G5 = ({S, A}, {a, b}, P5 , S)
P5 = {S → aA | ε,
A → Sb}
Observe que a gramática G5 não linear direita (GLD), por conta da regra
A → Sb; e nem linear esquerda (GLE), por conta da regra S → aA. Ela é apenas uma
gramática linear. Sua linguagem é L(G5 ) = an bn , n ≥ 0. Posteriormente, ao estudarmos
o Lema do Bombeamento, ou Pumping Lemma, mostraremos que esta linguagem não é
regular; logo, não pode ser gerada por uma gramática regular.

No nosso Curso não estudaremos as linguagens lineares especicamente. Elas


serão estudadas dentro de uma classe mais geral de linguagens, que são as Linguagens

Livres de Contexto .

3 Equivalência entre GLD e GLE

Mostraremos o processo de encontrar uma GLE a partir de uma GLD. O


processo inverso é feito por analogia. Para toda GLD G1 = (V, T, P1 , S1 ) é possível
construir uma GLE G2 = (V ∪ {S2 }, T, P2 , S2 ), com S2 ∈
/ V . Sejam A, B ∈ V e w ∈ T ∗ ,
o conjunto de regras de produção P2 é construído a partir de P1 da seguinte forma:

ˆ Para toda regra A → wB em P1 , adicionar B → Aw a P2 ;


ˆ Para toda regra A → w em P1 , adicionar S2 → Aw a P2 ;
ˆ Adicionar a regra S1 → ε a P2 .

3
Exemplo:
G6 = ({A, B}, {a, b}, P6 , A)
P6 = {A → aA | bA | aaB | bbB,
B → aB | bB | ε}

G7 = ({A, B, C}, {a, b}, P7 , C)


P7 = {C → B,
{A → Aa | Ab | ε,
{B → Ba | Bb | Aaa | Abb
Dada a GLD G6 , construímos a GLE G7 equivalente. A linguagem gerada por
elas é L(G6 ) = L(G7 ) = {w ∈ {a, b}∗ | w possui aa ou bb como subpalavra}.

4 Equivalência entre GLUD e Autômatos Finitos

Gramáticas Regulares e Autômatos Finitos são equivalentes nos seus poderes


descritivos. Toda GLUD pode ser convertida em um autômato nito que reconhece a
linguagem gerada por ela, e vice-versa. Veremos esta equivalência em cada sentido.

4.1 Equivalência de GLUD para Autômato Finito

Seja G = (V, T, P, S) uma GLU D. É possível construir um AFN-ε M =


(T, V ∪ {qf }, δ, S, {qf }) tal que L(M ) = L(G). Sejam A, B ∈ V , e a ∈ T , δ é construída
da seguinte forma:

Produção Transição
A→ε δ(A, ε) = {qf }
A→a δ(A, a) = {qf }
A→B δ(A, ε) = {B}
A → aB δ(A, a) = {B}

Na Figura 1, o AFN-ε M é obtido a partir da GLUD G8 .

S a
G8 = ({S, A, B}, {a, b}, P8 , S) a ε
P8 = {S → aS | bA | ε, a b
A → aS | bB | ε,
B → aS} B A qf
b ε
M

Figura 1  Conversão de GLUD para AFN-ε

4
4.2 Equivalência de Autômato Finito para GLUD

Seja um AFN-ε M = (Σ, Q, δ, q0 , F ). É possível construir uma GLUD G =


(Q, Σ, P, q0 ) tal que L(G) = L(M ). Suponha {p, qi , . . . , qj } ⊆ Q, qf ∈ F e a ∈ Σ, P é
construído da seguinte forma:

Transição Produção
− qf → ε
δ(p, a) = {qi , . . . , qj } p → aqi | . . . | aqj

Na Figura 2, a GLUD G9 é obtida a partir do AFN-ε e M .

a,b
G9 = ({S, A, B}, {a, b}, P9 , S)
P9 = {S → aA,
a b
S A B A → aA | bA | bB ,
B → ε}
M

Figura 2  Conversão de AFN-ε para GLUD

5 Poder Expressivo

As gramáticas regulares não têm um poder computacional maior do que os


outros formalismos vistos no estudo das linguagens regulares. Se uma linguagem é gerada
por uma gramática, ela poderá ser representada por uma expressão regular e também será
aceita por um autômato nito. Trata-se de mais um formalismo para estudar a classe das
linguagens regulares. Até aqui, vimos algumas das equivalências entre ferramentas e/ou
formalismos, representadas no grafo da Figura 3 a seguir. Por exemplo, observa-se que,
pela transitividade da relação de equivalência, para toda GLUE G, é possível encontrar
um AFD M tal que Aceita(M ) = Gera(G).

ER AFN-ε

AFNG GLUD AFN

GLUE AFD

Figura 3  Equivalência entre formalismos

5
6 Exercícios

1. Descreva a linguagem gerada por cada uma das gramáticas regulares a seguir:
G01 = ({S, A, B}, {a, b}, P01 , S)
P01 = {S → bS | aA,
A → aB | bB | ε,
B → aA | bS}

G02 = ({S, A}, {a, b}, P02 , S)


P02 = {S → bS | aA | ε,
A → aA | ε}

2. Proponha uma GLD e uma GLE para cada uma das linguagens a seguir:

a) L01 = {w ∈ {a, b}∗ | bba não é subpalavra de w}


b) L02 = {w ∈ {a, b}∗ | w tem tamanho múltiplo de 2}
c) L03 N
= a2m+1 b2n , m, n ∈
d) L04 N
= {w ∈ {a, b}∗ | todo par de b's em w é separado por 2k símbolos, k ∈ }
e) L05 = {w ∈ [0, 9]+ | w é um número decimal múltiplo de 5}
f) L06 = {w ∈ {a, b}∗ | w possui quantidade par de a e ímpar de b}
g) L07 = {w ∈ {a, b}∗ | a quantidade de ab é igual à de ba em w}
h) L08 = {w ∈ {a, b}∗ | bbb não é subpalavra de w}
i) L09 = {w ∈ {a, b}∗ | toda ocorrência de bb é seguida de a em w}
j) L10 = {w ∈ {0, 1}+ | w é a representação de um número binário múltiplo de 4}

6
Referências

HOPCROFT, J. E.; ULLMAN, J. D.; MOTWANI, R. Formal Languages and Their


Relation to Automata. Boston, MA, USA: Addison-Wesley Longman Publishing Co.,

Inc., 1969. (Series in Computer Science and Information Processing).

MENEZES, P. F. B. Linguagens Formais e Autômatos. 6. ed. Porto Alegre: Bookman,


2012. v. 3. (Série livros didáticos informática UFRGS, v. 3).

Você também pode gostar