03 · Gramáticas Regulares e Hierarquia de Chomsky

Resumo em 30 segundos

Uma gramática é um mecanismo gerador: a partir do símbolo inicial , aplicamos regras de reescrita até sobrar só terminais. O formato das regras classifica a gramática na Hierarquia de Chomsky (tipos 3, 2, 1, 0). As do tipo 3 (regulares, forma ou ) geram exatamente as linguagens que os autômatos finitos reconhecem (aula 07).

Anterior: 02 - Matemática Discreta · Voltar ao mapa · Próxima: 03b - Expressões Regulares


Slide 3: tipos de linguagens

TipoDescriçãoExemplo
Finitanúmero finito de sentençascomandos de um equipamento
”Vazia”só a sentença vazia
Infinitanúmero infinito de sentenças (a maioria)

"Linguagem vazia" tem dois sentidos

O slide chama de vazia a linguagem que tem apenas , ou seja, . Em muitos livros, “linguagem vazia” é (nenhuma palavra). São coisas diferentes: tem uma palavra; tem zero. Use a notação de conjunto para não ter ambiguidade.

Slide 4: formas de representar uma linguagem

  1. Listar as palavras: só funciona se a linguagem for finita.
  2. Descrição algébrica: por exemplo , com .
  3. Algoritmo que reconhece: dada uma palavra, responde se pertence. Exemplo: autômato finito.
  4. Mecanismo que gera: produz todas as palavras em alguma ordem. Exemplo: gramática.

Provável erro de digitação no slide 4

O exemplo aparece como . Com o conjunto seria vazio, já que não existe repetição negativa. O esperado é ou .

Slides 5 a 7: definição de gramática

Gramática é um dispositivo formal para especificar uma linguagem potencialmente infinita de forma finita.

ComponenteO que éConvenção usual
não terminais (metassímbolos, “variáveis”)letras maiúsculas
terminais (os símbolos que aparecem nas palavras)minúsculas, dígitos
símbolo inicial,
produções (regras de reescrita)

Restrições do slide 7:

  • é o vocabulário, e (um símbolo não pode ser terminal e não terminal ao mesmo tempo).
  • Cada produção tem contendo pelo menos um não terminal e .
  • só pode aparecer do lado direito. A regra se chama regra nula ou regra épsilon.

Slide 8: exemplo, gramática de números inteiros

, , e

Derivação de 036: .

O problema apontado no slide: ela gera zeros à esquerda (00036).

Derivações

Slides 9 e 10.

  • Produção : a regra. Derivação : a aplicação de uma regra.
  • Formalmente: se (substitui uma ocorrência de , o contexto fica igual).
  • : zero ou mais passos. : um ou mais. : exatamente . É o mesmo / de Matemática Discreta.
ConceitoDefiniçãoSímbolos
Sentençasó terminais, derivada de ,
Forma sentencialmistura de terminais e não terminais, derivada de ,
Linguagem geradatodas as sentenças

(O slide 10 escreve ""; falta o .)

Slide 11: exemplo 0ⁿ1ⁿ

.

Complemento: essa linguagem NÃO é regular

Repare que tem terminais dos dois lados do não terminal. Isso não é do tipo 3. E não é só essa gramática: nenhuma gramática regular gera , porque um autômato finito teria que “lembrar” quantos zeros leu, e ele só tem memória finita. A prova formal usa o Lema do Bombeamento, que os livros trazem (no livro de Ramos: seção 3.9 “Linguagens que não são Regulares”, p. 233).

Slide 12: exercício de derivações

: , , .

Slide 13: Hierarquia de Chomsky

TipoNomeForma das produçõesLinguagensReconhecedor (complemento)
3Regular ou Regulares (LR)Autômato finito
2Livre de contexto, com , Livres de contexto (LLC)Autômato com pilha
1Sensível ao contexto com Sensíveis ao contexto (LSC)Autômato linearmente limitado
0Irrestrita, , Recursivamente enumeráveis (LRE)Máquina de Turing

A coluna “reconhecedor” não está nos slides; é o resultado clássico da teoria e aparece nos dois livros de referência.

Como classificar uma gramática, na prática:

flowchart TD
  A{"Todo lado esquerdo é<br/>um único não terminal?"} -- não --> B{"tamanho de α ≤ tamanho de β<br/>em todas as regras?"}
  B -- sim --> T1[Tipo 1]
  B -- não --> T0[Tipo 0]
  A -- sim --> C{"Todo lado direito é<br/>aB ou a (ou tudo linear<br/>para o mesmo lado)?"}
  C -- sim --> T3[Tipo 3 · Regular]
  C -- não --> T2[Tipo 2 · Livre de contexto]

A gramática recebe o tipo mais restrito que ela satisfaz.

Slide 14: gramáticas lineares

FormaProduções ()
Linear à direita ou
Linear à esquerda ou
Linear unitária à direitaà direita com
Linear unitária à esquerdaà esquerda com

As quatro são equivalentes e toda gramática regular é linear (e vice-versa).

Não misture os lados

A equivalência vale quando todas as produções são lineares para o mesmo lado. Uma gramática com algumas regras e outras pode gerar linguagens não regulares. Esse detalhe não está no slide, mas é uma pegadinha comum de prova.

Slide 15: hierarquia como conjuntos

Tipo 3 ⊂ Tipo 2 ⊂ Tipo 1 ⊂ Tipo 0.

flowchart TB
  subgraph T0["Tipo 0 · Irrestritas (LRE)"]
    subgraph T1["Tipo 1 · Sensíveis ao contexto"]
      subgraph T2["Tipo 2 · Livres de contexto"]
        subgraph T3["Tipo 3 · Regulares"]
          r["a*b*"]
        end
        cf["0ⁿ1ⁿ · ww^R"]
      end
      cs["aⁿbⁿcⁿ"]
    end
  end

Os exemplos dentro de cada nível são clássicos (a capa do livro de Ramos, José Neto e Vega, inclusive, desenha essa hierarquia com exemplos parecidos).

Slide 16: exercício de classificação

: , , .

Slide 17: linguagens de cada tipo

  • LR: geradas por gramáticas tipo 3.
  • LLC: tipo 2.
  • LSC: tipo 1.
  • LRE: tipo 0, associadas a Máquinas de Turing, computabilidade e funções parciais recursivas.

Slides 18 a 20: gramáticas com regra vazia

Pela definição, gramáticas regulares e livres de contexto não geram . Para incluir :

  1. Se não aparece do lado direito de nenhuma produção: basta acrescentar . Resultado: .
  2. Se aparece do lado direito: criar um novo inicial , copiar para as produções de e acrescentar .

Por que a regra 2 existe

Se aparece à direita e você põe direto, o pode ser usado no meio de uma derivação e gerar palavras novas, não só a vazia. Com , o só pode ser usado no primeiro passo.

(O slide 19 diz “acrescentar a regra ” no último passo; pelo exemplo do slide 20, a regra acrescentada é .)

Exemplos do slide 20:

Gramática originalCom
1, , ( não aparece à direita)
2, , , ,

Slide 21: exercícios


Aprofundamento com os livros

Páginas das edições da sua pasta: Menezes 3ª edição (2000) e Ramos, José Neto e Vega (Bookman).

Cada autor escreve a gramática de um jeito

FonteQuádruplaObservação
Slides não terminais, terminais
Menezes (Def. 1.27, p. 23) = variáveis (não terminais), = terminais
Ramos (p. 91) = vocabulário inteiro (terminais e não terminais); os não terminais são

O mesmo significa coisas diferentes

No Menezes, são só as variáveis. No Ramos, é tudo. O próprio Ramos avisa numa nota de rodapé (p. 91) que a ordem e os nomes mudam de autor para autor e que é preciso conferir a notação antes de ler. Na prova, use a notação do professor.

O Menezes define a linguagem gerada com : (Def. 1.29, p. 24). O Ramos chama de derivação não trivial a que usa pelo menos uma produção (p. 92).

O exercício do slide 8 está no Menezes

O Exemplo 22 do Menezes (p. 24 e 25) é a mesma gramática de números naturais dos slides (, ), e o livro também sugere como exercício fazer uma versão que não aceite zeros à esquerda. Ele ainda pergunta se existe mais de uma derivação para 243.

Gramáticas lineares, com os exemplos do Menezes (seção 2.6, p. 55 a 57)

O Menezes define quatro formas (Def. 2.15, p. 55), com :

FormaProduções
Linear à direita (GLD) ou
Linear à esquerda (GLE) ou
Linear unitária à direita (GLUD)como GLD, com
Linear unitária à esquerda (GLUE)como GLE, com

Diferença sutil em relação ao slide 14

O slide pede nas formas unitárias. O Menezes pede , o que permite também e . E para o Menezes, gramática regular é qualquer gramática linear (Def. 2.17, p. 56).

A mesma linguagem nas quatro formas (Exemplo 14 do Menezes, p. 56). Conferi por programa que as quatro geram exatamente até tamanho 11:

FormaProduções
GLD,
GLE
GLUD, ,
GLUE,

Repare como a GLE “constrói de trás para frente”: .

Outro exemplo do livro (Exemplo 15, p. 56 e 57), para : GLD , ; GLE , . Também conferido.

Como o Ramos transforma uma forma em outra (seção 3.1, p. 141 a 145)

  • Direita para esquerda (Algoritmo 3.1): obtenha uma GLD para o reverso da linguagem e inverta os lados direitos das regras. A linguagem é a mesma; só muda o sentido em que as palavras são construídas.
  • Várias letras numa regra para uma letra por regra (Algoritmo 3.3): uma regra como vira uma cadeia de regras com não terminais novos: , , , (Exemplo 3.2, p. 145). É isso que deixa a gramática pronta para virar autômato na aula 07.

A Hierarquia de Chomsky no Ramos (seção 2.6, p. 105 a 110)

Dois detalhes que mudam em relação aos slides:

  1. Tipo 2 com : o Ramos aceita produções livres de contexto com lado direito vazio (, p. 107). O slide 13 exige . Por isso o Ramos observa que nem toda gramática tipo 2 é tipo 1: a regra quebra a condição (p. 108).
  2. Tipo 1 e : como as regras nunca encolhem a forma sentencial, uma gramática sensível ao contexto não gera . A convenção adotada é considerar sensível ao contexto se for (p. 107).

Por que existem exatamente essas quatro classes? O Ramos dá uma explicação estrutural (p. 109 e 110) que ajuda muito a decorar:

ClasseO que ela consegue expressar que a anterior não consegueExemplo em programação
Regularsequências e repetições simplesnúmeros, identificadores
Livre de contextoaninhamentoparênteses balanceados, blocos { }
Sensível ao contextodependência de contexto: algo num ponto da cadeia depende de algo em outro pontouma variável só pode ser usada se foi declarada
Recursivamente enumeráveltudo que uma Máquina de Turing faz; aqui aparece a indecidibilidade (não há algoritmo geral para dizer se uma cadeia pertence)

O Menezes cita o mesmo caso de declaração e uso de variáveis como algo que as livres de contexto não resolvem (cap. 5, p. 154 e 155).

Uma gramática sensível ao contexto de verdade (Ramos, Exemplo 2.24, p. 93 e 94)

Para :

A ideia: gera os e deixa uma fila de pares ; a regra “ordena” a fila, empurrando os para a esquerda; depois as regras com contexto (, , ) trocam as variáveis por terminais da esquerda para a direita. Derivação de aabbcc: . Conferi por programa que ela gera abc, aabbcc, aaabbbccc e aaaabbbbcccc e nada mais até tamanho 12. Repare que tem dois símbolos no lado esquerdo: por isso não é livre de contexto.

Essa gramática resolve o exercício 1.21 do Menezes. Se o exercício pedir , acrescente com um novo inicial , como no slide 19.

O Menezes também mostra (Exemplo 23, p. 25) uma gramática irrestrita para . A técnica é bonita: cada terminal gerado na primeira metade deixa uma variável “mensageira” que caminha pela palavra até o marcador do meio e lá vira o terminal correspondente da segunda metade.

Exercícios extras do Menezes (p. 30)

Para aprofundar nos livros

Onde ler (páginas das edições da sua pasta)

  • Menezes (3ª ed.): 1.5, gramática e derivação, p. 23 a 26; 2.6 Gramática Regular, p. 55 a 60; cap. 5 (Hierarquia de Chomsky), p. 153 a 155; exercícios 1.19 a 1.21, p. 30.
  • Ramos, José Neto e Vega: 2.3 Gramáticas, p. 90 a 94; 2.4 Linguagens, Gramáticas e Conjuntos, p. 94 a 96; 2.6 Hierarquia de Chomsky, p. 105 a 110; 3.1 Gramáticas Regulares, p. 141 a 145; 3.9 Linguagens que não são Regulares, p. 233 a 239.
  • A prova de que não é regular (Lema do Bombeamento) está resumida em 08 - Tópicos Complementares dos Livros.

Relacionadas: 03b - Expressões Regulares · 07 - Equivalência AF e GR · Glossário · Flashcards