90 likes | 359 Vues
Forma Normal de Chomsky. Programa de Pós-graduação em Ciência da Computação - UFU Profa. Sandra de Amo. Definição. Uma gramática livre do contexto está na Forma Normal de Chomsky (FNC) se: suas regras de produção são do tipo A  BC ; A, B, C são variáveis
 
                
                E N D
Forma Normal de Chomsky Programa de Pós-graduação em Ciência da Computação - UFU Profa. Sandra de Amo
Definição Uma gramática livre do contexto está na Forma Normal de Chomsky (FNC) se: • suas regras de produção são do tipo • A  BC ; A, B, C são variáveis • A  a ; A variável e a terminal • S  ϵ • a variável start S não aparece no corpo das regras
Arvores de Derivação de uma FNC • Arvores de derivação são binárias : cada nó tem no máximo 2 filhos • Nós intermediários são variáveis • Folhas só tem terminais • A variável S só aparece na raiz
Arvores de Derivação = Start S = Variáveis distintas de S = terminais
Toda gramática LC é equivalente a uma gramática em FNC Transformação das regras em FNC • Inserir novo simbolo start S0 e regra S0 S Desta forma, o simbolo start S0 não aparece em nenhum corpo de regra • Remover todas as regras do tipo A  ϵ(inclusive S  ϵ ) Para cada regra onde A tem uma ocorrência do lado direito, inserir uma regra sem esta ocorrência de A Exemplo: se R  uAvAw é uma regra então acrescentamos as regras: R  uvAw R  uAvw R  uvw se R  A é uma regra e R  ϵnão foi removido em um passo precedente então acrescentamos a regra R  ϵ Desta forma, obtemos uma gramática sem regras do tipo A  ϵ (para A distinto da variável start S0 )
Toda gramática LC é equivalente a uma em FNC • Eliminar regras unitárias do tipo A  B. Para cada regra começando com B, acrescentar regra análoga, substituindo B por A na cabeça (a menos que a regra assim obtida seja uma regra unitária já removida) Exemplo: A  B B  C1C2a B  C1C2a A  C1C2a • Resolver o problema de regras do tipo X = regras com corpo com comprimento maior do que 1 e contendo terminais. Para cada terminal a aparecendo no corpo de uma destas regras de tipo X inserir regra do tipo Ua a, onde Ua é uma nova variável. Substituir todas as ocorrências de a em regras do tipo X pela variável Ua. Exemplo: R  aAB R UaAB Ua  a
Toda gramática LC é equivalente a uma em FNC • Resolver o problema de regras do tipo Y = regras com corpo com comprimento maior do que 2: R  ABCD R  UD R  UD U  ABC U  VC V  AB
Exemplo S  ASA | aB S0 S S0 S A  B | S S  ASA | aB S  ASA | aB | a B  b | ϵ A  B | S A  B | S | ϵ B  b | ϵB  b (6 regras) S0 SS0 ASA | aB | a | AS | SA S  ASA | aB | a | AS | SA | SS  ASA | aB | a | AS | SA A  B | S A  B | ASA | aB | a | AS | SA B  b B  b S0 ASA | aB | a | AS | SA S0 | AA1 | UB | a | AS | SA S  ASA | aB | a | AS | SAS  AA1 | UB | a | AS | SA A  b | ASA | aB | a | AS | SA A  b | AA1 | UB | a | AS | SA B  b A1  SA U  a B  b (FNC : 20 regras)