Escolar Documentos
Profissional Documentos
Cultura Documentos
Formas Normais
Formas Normais
Algoritmo GLC ⇒ FNC
• Uma gramática é dita normalizada em relação
a um certo padrão quando todas as suas Etapa 1: Simplificação da Gramática
produções satisfazem às restrições impostas • Eliminação de produções vazias
pelo padrão em questão.
• Eliminação das produções da forma A → B
• padrão ⇒ formas normais. (produções unitárias)
• Restrições rı́gidas na definição das produções. • Eliminação de sı́mbolos inúteis
• Usadas no desenvolvimento de algoritmos e Gramática resultante: G1 = (V1 , T1 , P1 , S)
provas de teoremas.
• Forma Normal de Greibach • Garante que o lado direito das produções com
comprimento ≥ 2 é composto exclusivamente
por variáveis.
• A exclusão de um terminal pode ser realizada
colocando-se um não terminal intermediário.
Forma Normal de Chomsky Por exemplo, é possı́vel substituir a por Ca e
incluir a produção Ca → a
• Uma GLC G = (V, T, P, S) é dita na Forma
Normal de Chomsky (FNC) se todas as suas Algoritmo para a Etapa 2
produções são da forma
Gramática resultante: G2 = (V2 , T1 , P2 , S).
– A → BC ou
V2 = V1
–A→a
P2 = P1
onde A, B, C ∈ V e a ∈ T para toda A → X1 X2 ...Xn ∈P2 tal que n ≥ 2
• Linguagem não aceita palavra vazia faça se para r ∈ {1,...,n}, Xr é terminal
ent~
ao (suponha Xr = a)
V2 = V2 ∪ {Ca }
substitui a por Ca na prod. A
N. Chomsky é lingüista que primeiro propôs as gramáticas
livres de contexto como uma forma de descrever linguagens natu- P2 = P 2 ∪ { C a → a }
rais e que provou que toda GLC poderia ser convertida nessa
forma. Esta forma permite um teste eficiente da pertinência de
uma palavra a uma LLC. Para todo terminal a que aparecer em um corpo de com-
primento 2 ou mais, crie uma nova variável, digamos A. Essa
variável terá apenas uma produção A → a. Agora usamos A no
lugar de a em todo lugar em que a aparecer em um corpo de
comprimento 2 ou mais.
A etapa 3 garante que o lado direito das produções de com- Toda linguagem NÃO VAZIA pode ser transformada na
primento maior do que um é composto exatamente por duas forma normal de Greibach. Esta forma tem várias conseqüências
variáveis. Para concluir a transformação é suficiente garantir que interessantes. Tendo em vista que cada uso de uma produção
o lado direito é composto por exatamente duas variáveis. Isto é introduz exatamente um terminal em uma forma sentencial, uma
possı́vel desmembrando as produções A → B1 B2 . . . Bn (n ≥ 2) palavra de comprimento n tem uma derivação de exatamente n
em grupos de produções com duas variáveis. Introduzimos n − 2 etapas.
variáveis.
para toda Br → As βr
faça excluir Br → As βr de P4
para toda As → aα
faça P4 = P4 ∪ {Br → aαβr }
Exemplo
Transforme a gramática abaixo na Forma Normal
de Greibach
1. Gramática simplificada
2. Renomeação das variáveis em ordem crescente:
A1 → A 2 A2 | a
A2 → A 1 A1 | b
3. Ar → As α com r ≤ s:
A1 → A 2 A2 | a
A2 → A2 A2 A1 | aA1 | b
4. Ar → Ar α:
A1 → A 2 A2 | a
A2 → aA1 | b | aA1 B | bB
B → A 2 A1 | A 2 A1 B
5. terminal no inı́cio de cada lado direito das produções:
A1 → aA1 A2 | bA2 | aA1 B2 | bBA2 | a
A2 → aA1 | b | aA1 B | bB
B → aA1 A1 | bA1 | aA1 BA1 | bBA1 | aA1 A1 B | bA1 B | aA1 BA1 B |
bBA1 B
6. A → aα com α composta exclusivamente por variáveis.
Nenhum procedimento é necessário.