2. Roteiro
1 Gramáticas e Linguagens
Gramáticas
Formalização de uma Gramática
Hierarquia de Chomsky
2 Gramáticas Regulares
Gramáticas Lineares
GLUD → Linguagem Regular
Linguagem Regular → GLUD
3 Referências
2
3. Motivação
Na primeira parte do curso, vimos dois formalismos para
descrever/reconhecer linguagens:
1 Autômatos Finitos
2 Expressões Regulares
Entretanto, vimos que algumas linguagens como
L = {an
bn
|n ≥ 0}
não podem ser descritas com esses formalismos.
3
4. Gramáticas
Vamos ver um outro formalismo para definir Linguagens Formais.
Gramáticas
Uma gramática possui regras para geração de todas as palavras de uma
linguagem.
• Os formalismos vistos até aqui são úteis apenas para as
Linguagens Regulares.
4
5. Roteiro
1 Gramáticas e Linguagens
Gramáticas
Formalização de uma Gramática
Hierarquia de Chomsky
2 Gramáticas Regulares
Gramáticas Lineares
GLUD → Linguagem Regular
Linguagem Regular → GLUD
3 Referências
5
6. Gramáticas
Definição informal:
• É basicamente um conjunto finito de regras que, quando aplicadas
sucessivamente, geram palavras.
S → aSb
S → A
A → E
O conjunto de todas as palavras geradas por uma gramática G define a
linguagem L(G).
{ab, aabb, aaabbb, aaaabbbb, . . . }
Já vimos essa linguagem antes?
6
7. Linguagens Naturais
A motivação original para o estudo de Gramáticas encontra-se na
descrição de Linguagens Naturais:
• Relacionamentos entre termos tais como nomes, verbos e adjetivos.
hsentencei → hnoun phraseihverb phrasei
hnoun phrasei → harticleihnouni | hnouni
hverb phrasei → hverbihadjetivei
harticlei → the
hnouni → boy | girl
hadjetivei → small | big
hverbi → is
Mais tarde, viu-se que Gramáticas são úteis para descrever Linguagens Artificiais,
em especial, linguagens de programação.
7
9. Roteiro
1 Gramáticas e Linguagens
Gramáticas
Formalização de uma Gramática
Hierarquia de Chomsky
2 Gramáticas Regulares
Gramáticas Lineares
GLUD → Linguagem Regular
Linguagem Regular → GLUD
3 Referências
9
10. Gramática
Definição
Uma gramática (irrestrita), denotada por G, é uma 4-tupla ordenada
G = (V , Σ, P, S)
tal que:
• V é um conjunto de sı́mbolos não terminais (ou variáveis)
• Σ é um conjunto de sı́mbolos terminais, com Σ disjunto de V
• P : (V ∪ Σ)+ → (V ∪ Σ)∗ é o conjunto de regras de produções, em
que cada par (α, β) é representado por α → β
• S ∈ V é denominado sı́mbolo inicial.
Vamos entender mais tarde o por quê de (irrestrita).
10
11. Regras de produção
Cada regra de produção (α, β) pode ser representada como:
α → β
Um grupo de regras de produção da forma
α → β1
α → β2
. . .
α → βn
pode ser abreviado como:
α → β1 | β2 | . . . | βn
11
12. Regras de produção
Exemplo:
G = ({S, A}, {a, b}, P, S)
• Regras de produção:
P : S → aSb|A
A → E
P = {(S, aSb), (S, A), (A, E)}.
12
13. Derivação
Informalmente:
• A aplicação de uma regra de produção é denominada derivação de
uma palavra.
Nota:
A aplicação sucessiva de regras de produção permite derivar as palavras
da linguagem gerada pela gramática.
13
14. Relação de derivação
Definição
Uma derivação é um par hα, βi da Relação de Derivação denotada por
α ⇒ β com domı́nio em (V ∪ Σ)+ e imagem (V ∪ Σ)∗
Esta relação é definida indutivamente como:
• Para toda produção na forma S → β, (S sı́mbolo inicial em G)
S ⇒ β
• Para todo par, α ⇒ β, onde β ⇒ βuβv βw
– se βv → βt é regra de P, então:
β ⇒ βuβtβw
Em outras palavras, uma derivação é a substituição de uma subpalavra
de acordo com uma regra de produção.
14
15. Derivação
Definição
Dizemos que α deriva (diretamente) β, se β puder ser obtido
substituindo alguma subcadeia de α, utilizando uma regra de P,
denotado por:
α ⇒ β.
No exemplo anterior:
G = ({S, A}, {a, b}, P, S)
P : S → aSb|A
A → E
S ⇒ aSb ⇒ aaSbb ⇒ aaaSbbb ⇒ aaaEbbb = aaabbb
15
16. Derivação em múltiplos passos
Definição
Dizemos que α deriva em múltiplos passos β, se houver uma sequência
de derivações tais que α ⇒ α1 ⇒ α2 ⇒ · · · ⇒ β, denotado por:
α ⇒∗
β.
No exemplo anterior:
S ⇒ aSb ⇒ aaSbb ⇒ aaaSbbb ⇒ aaaEbbb = aaabbb
S ⇒∗
aaaEbbb = aaabbbb
16
17. Passos de derivação
Os sucessivos passos de derivação podem ser definidos como:
• ⇒∗: zero ou mais passos sucessivos de derivação;
• ⇒+: um ou mais passos sucessivos de derivação;
• ⇒i : exatos i passos de derivações sucessivas, i ∈ N.
17
18. Linguagem gerada
Definição
Seja G = (V , Σ, P, S) uma gramática.
• A linguagem gerada por G, denotada por L(G), é composta por
todas as palavras de sı́mbolos terminais deriváveis a partir do
sı́mbolo inicial S, ou seja,
L(G) = {w ∈ Σ∗
| S ⇒+
w}
18
19. Linguagem gerada
Exemplo:
G = ({S, A}, {a, b}, P, S)
• Regras de produção:
P : S → aSb|A
A → E
• Cadeias geradas:
S ⇒∗
ab
S ⇒∗
aabb
S ⇒∗
aaabbb
. . .
L(G) = {an
bn
| n ≥ 0}
P = {(S, aSb), (S, A), (A, E)}.
19
21. Linguagem gerada
Mais um exemplo:
G = ({S}, {a, b}, P, S)
• Regras de produção:
P : S → aSa | bSb | a | b | E
• Cadeias geradas:
S ⇒∗
a
S ⇒∗
b
S ⇒∗
aa
S ⇒∗
bb
S ⇒∗
aba
S ⇒∗
ababab
. . .
L(G) = {palı́ndromos sobre o alfabeto terminal {a, b}}
21
22. Roteiro
1 Gramáticas e Linguagens
Gramáticas
Formalização de uma Gramática
Hierarquia de Chomsky
2 Gramáticas Regulares
Gramáticas Lineares
GLUD → Linguagem Regular
Linguagem Regular → GLUD
3 Referências
22
23. Hierarquia de Chomsky
Noam Chomsky, classificou gramáticas (e linguagens) a partir de
restrições em suas regras de produção.
Figura: Noam Chomsky
Chomsky definiu estas classes como (potenciais) modelos para linguagens
naturais.
23
24. Tipos de Gramáticas e Linguagens
Definição:
Uma gramática G = (V , Σ, S, P) é do Tipo 3 se toda produção de P
for da forma:
A → bC ou A → b
com A, C ∈ V e b ∈ Σ ou b = E.
Essas são as Gramáticas Regulares (GR).
24
25. Tipos de Gramáticas e Linguagens
Definição:
Uma gramática G = (V , Σ, S, P) é do Tipo 2 se toda produção de P
for da forma:
A → ω
com A ∈ V e ω ∈ (Σ ∪ V )∗.
Estas são as Gramáticas Livres de Contexto (GLC).
25
26. Tipos de Gramáticas e Linguagens
Definição:
Uma gramática G = (V , Σ, S, P) é do Tipo 1 se toda produção de P
for da forma:
vAw → vzw
com A ∈ V , v, w ∈ (Σ ∪ V )∗ e z ∈ (Σ ∪ V )+ (isto é, z 6= E).
Além disso, permite-se uma única regra S → E quando S não aparece
do lado direito de nenhuma produção.
Estas são as Gramáticas Sensı́veis de Contexto (GSC).
26
27. Tipos de Gramáticas e Linguagens
Definição:
Qualquer gramática G = (V , Σ, S, P) é do Tipo 0.
Não existem restrições na forma das produções para as gramáticas desta
classe.
Estas são as Gramáticas Recursivamente Enumeráveis.
27
29. Hierarquia de Chomsky
Regulares
Livres do contexto
Sensı́veis ao contexto
Recursivamente enumeráveis Máquina de Turing
Autômato linearmente limitado
Autômato com pilha
Autômato de estado finito
Não computáveis
Linguagens Máquinas
29
30. Roteiro
1 Gramáticas e Linguagens
Gramáticas
Formalização de uma Gramática
Hierarquia de Chomsky
2 Gramáticas Regulares
Gramáticas Lineares
GLUD → Linguagem Regular
Linguagem Regular → GLUD
3 Referências
30
31. Roteiro
1 Gramáticas e Linguagens
Gramáticas
Formalização de uma Gramática
Hierarquia de Chomsky
2 Gramáticas Regulares
Gramáticas Lineares
GLUD → Linguagem Regular
Linguagem Regular → GLUD
3 Referências
31
32. Gramáticas Lineares
Vamos ver gramáticas do Tipo 3 e mostrar que elas geram exatamente
as Linguagens Regulares.
• Essas gramáticas também são conhecidas como Gramáticas
Lineares.
32
33. Gramáticas Lineares
Vamos estudar 4 formas de gramáticas do Tipo 3:
1 GLD: Gramática linear à direita
2 GLE: Gramática linear à esquerda
3 GLUD: Gramática linear unitária à direita
4 GLUE: Gramática linear unitária à esquerda
33
34. Gramática Linear à Direita - GLD
Definição
G = (V , Σ, P, S) é uma GLD se todas as regras de produção forem da
forma:
A → ωB ou A → ω
com A, B ∈ V e ω ∈ Σ∗.
Exemplo:
G1 = ({S, A}, {a, b}, P, S)
P : S → aA
A → baA | E
34
35. Gramática Linear à Esquerda - GLE
Definição
G = (V , Σ, P, S) é uma GLE se todas as regras de produção forem da
forma:
A → Bω ou A → ω
com A, B ∈ V e ω ∈ Σ∗.
Exemplo:
G2 = ({S}, {a, b}, P, S)
P : S → Sba | a
35
36. Gramática Linear Unitária à Direita - GLUD
Definição
G = (V , Σ, P, S) é um GLUD se todas as regras de produção forem da
forma:
A → wB ou A → w
com A, B ∈ V e w ∈ (Σ ∪ {E}), ou seja, |w| ≤ 1.
Exemplo:
G3 = ({S, A, B}, {a, b}, P, S)
P : S → aA
A → bB | E
B → aA
36
37. Gramática Linear Unitária à Esquerda - GLUE
Definição
G = (V , Σ, P, S) é um GLUE se todas as regras de produção são da
forma:
A → Bw ou A → w
com A, B ∈ V e w ∈ (Σ ∪ {E}), ou seja, |w| ≤ 1.
Exemplo:
G4 = ({S, A}, {a, b}, P, S)
P : S → Aa | a
A → Sb
37
38. Equivalência das Gramáticas Lineares
Teorema da Equivalência das Gramáticas Lineares
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, todas as Gramáticas Lineares são equivalentes.
A demonstração fica como exercı́cio.
38
39. Equivalência das Gramáticas Lineares
Exemplos: A linguagem a(ba)∗ é gerada pelas seguintes gramáticas:
G1 = ({S, A}, {a, b}, P, S)
P : S → aA
A → baA|E
G2 = ({S}, {a, b}, P, S)
P : S → Sba|a
G3 = ({S, A, B}, {a, b}, P, S)
P : S → aA
A → bB|E
B → aA
G4 = ({S}, {a, b}, P, S)
P : S → Aa|a
A → Sb
Portanto, G1, G2, G3 e G4 são equivalentes.
39
40. Gramáticas Lineares
Importante:
• Se uma gramática tiver produções de ambos os tipos:
– Linear à Direita (A → ωB); e
– Linear à Esquerda (A → Bω).
• Então esta não é uma Gramática Linear.
40
41. Gramática Regular × Linguagem Regular
Os resultados a seguir mostram que a classe das Gramáticas Lineares
denota exatamente a Classe das Linguagens Regulares.
41
42. Roteiro
1 Gramáticas e Linguagens
Gramáticas
Formalização de uma Gramática
Hierarquia de Chomsky
2 Gramáticas Regulares
Gramáticas Lineares
GLUD → Linguagem Regular
Linguagem Regular → GLUD
3 Referências
42
43. Gramática Linear → Linguagem Regular
Teorema
Se L é uma linguagem gerada por uma Gramática Linear, então L é
uma Linguagem Regular.
43
44. Gramática Linear → Linguagem Regular
Ideia da prova:
• Para mostrar que uma linguagem é Regular, vamos construir um
AF que a reconheça.
• Vamos construir um AFNE N , tal que L(N) = L(G) para qualquer
GLUD G.
Todas as Gramática Lineares são equivalentes. Vamos utilizar uma GLUD.
GLUD - Gramática Linear Unitária à Direita (A → wB | w, com w ∈ (Σ ∪ {E})).
44
45. Gramática Linear → Linguagem Regular
Procedimento:
• O AFNE descrito abaixo simula as derivações de uma GLUD
G = (V , Σ, P, S).
N = (Q, Σ, δ, q0, F)
– Q = V ∪ {qf }
– q0 = S
– F = {qf }
– δ é definida como:
Tipo de Produção Transição
A → E δ(A, E) = qf
A → w δ(A, w) = qf
A → B δ(A, E) = B
A → wB δ(A, w) = B
45
46. Exemplo
Exemplo: Considere a GLUD G3 = ({S, A, B}, {a, b}, P, S), com
P : S → aA
A → bB | E
B → aA
Vamos construir o AFNE N3 que reconhece L(G3) = a(ba)∗
N = (V ∪ {qf }, Σ, δ, S, {qf })
Tipo de Produção Transição
A → E δ(A, E) = qf
A → w δ(A, w) = qf
A → B δ(A, E) = B
A → wB δ(A, w) = B
S A
B
qf
a
b
E
a
46
47. Gramática Linear → Linguagem Regular
Prova de corretude:
Fica como exercı́cio mostrar que L(N) = L(G).
Ver no livro (Menezes, Seção 2.6).
47
48. Roteiro
1 Gramáticas e Linguagens
Gramáticas
Formalização de uma Gramática
Hierarquia de Chomsky
2 Gramáticas Regulares
Gramáticas Lineares
GLUD → Linguagem Regular
Linguagem Regular → GLUD
3 Referências
48
49. Linguagem Regular → Gramática Linear
Teorema
Se L é uma Linguagem Regular, então existe uma Gramática Linear que
gera L.
49
50. Linguagem Regular → Gramática Linear
Ideia da prova:
• Se L é uma Linguagem Regular, então existe um AFD que
reconhece L.
• Vamos construir uma GLUD G a partir de AFD M, tal que
L(M) = L(G)
GLUD - Gramática Linear Unitária à Direita (A → wB | w, com w ∈ (Σ ∪ {E})).
50
51. Linguagem Regular → Gramática Linear
Procedimento:
• As derivações da GLUD descrita abaixo simulam a função de
transição estendida do AFD M.
G = (V , Σ, P, S)
– V = Q ∪ {S}
– ∀qf ∈ F, ou seja, todos os estados de aceitação
Transição Tipo de Produção
- S → q0
- qf → E
δ(qi , a) = qj qi → aqj
51
52. Exemplo
Exemplo: Considere a seguinte Linguagem Regular
L5 = a∗ + a∗b+ + a∗b+c+, reconhecida pelo AFD M5 abaixo:
q0 q1 q2
a
b
b
c
c
Vamos construir uma GLUD G5, tal que L(M) = L(G)
G = (Q ∪ {S}, Σ, P, S)
Transição Tipo de Produção
- S → q0
- qf → E
δ(qi , a) = qj qi → aqj
G5 = ({S, q0, q1, q2}, {a, b, c}, P, S)
P : S → q0
q0 → E
q1 → E
q2 → E
q0 → aq0 | bq1
q1 → bq1 | cq2
q2 → cq2
52
53. Exemplo
L(G5) = L(M5) = a∗ + a∗b+ + a∗b+c+:
q0 q1 q2
a
b
b
c
c
G5 = ({S, q0, q1, q2}, {a, b, c}, P, S)
P : S → q0
q0 → aq0 | bq1 | E
q1 → bq1 | cq2 | E
q2 → cq2 | E
53
54. Linguagem Regular → Gramática Linear
Prova de corretude:
Fica como exercı́cio mostrar que L(G) = L(M).
Ver no livro (Menezes, Seção 2.6).
54
55. Gramática Linear × Linguagem Regular
Em resumo:
• A linguagem gerada por qualquer Gramática Linear é uma
Linguagem Regular.
• Toda Linguagem Regular pode ser descrita por uma Gramática
Linear.
Definição
Uma Gramática Linear é chamada de Gramática Regular (GR).
55
56. Formalismos para as Linguagens Regulares
Temos agora mais um formalismo para as Linguagens Regulares:
• Todos eles são equivalentes
ER
AFN AFNE
AFD
GR
56
59. Roteiro
1 Gramáticas e Linguagens
Gramáticas
Formalização de uma Gramática
Hierarquia de Chomsky
2 Gramáticas Regulares
Gramáticas Lineares
GLUD → Linguagem Regular
Linguagem Regular → GLUD
3 Referências
59
60. Referências
Referências:
1 “Introdução à Teoria da Computação” de M. Sipser, 2007.
2 “Linguagens formais e autômatos” de Paulo F. B. Menezes, 2002.
3 Materiais adaptados dos slides do Prof. Evandro E. S. Ruiz, da
USP.
60