logo

Греибацх нормална форма (ГНФ)

ГНФ је скраћеница за Греибацх нормалну форму. ЦФГ (граматика без контекста) је у ГНФ (Греибацх нормалном облику) ако сва правила производње задовољавају један од следећих услова:

  • Почетни симбол који генерише ε. На пример, С → ε.
  • Нетерминал који генерише терминал. На пример, А → а.
  • Нетерминал који генерише терминал који прати било који број нетерминала. На пример, С → аАСБ.

На пример:

 G1 = aB, A → aA G2 = S → aAB 

Правила производње Граматике Г1 задовољавају правила специфицирана за ГНФ, тако да је граматика Г1 у ГНФ-у. Међутим, правило производње Граматике Г2 не задовољава правила специфицирана за ГНФ јер А → ε и Б → ε садржи ε (само почетни симбол може да генерише ε). Дакле, граматика Г2 није у ГНФ-у.

Кораци за претварање ЦФГ у ГНФ

Корак 1: Претворите граматику у ЦНФ.

шта је говорник

Ако дата граматика није у ЦНФ, претворите је у ЦНФ. Можете погледати следећу тему да бисте претворили ЦФГ у ЦНФ: Чомски нормалан облик

како искључити режим програмера за Андроид

Корак 2: Ако граматика постоји лева рекурзија, елиминишите је.

Ако граматика без контекста садржи леву рекурзију, елиминишите је. Можете погледати следећу тему да бисте елиминисали леву рекурзију: Лева рекурзија

Корак 3: У граматици конвертујте дато правило производње у ГНФ облик.

Ако било које производно правило у граматици није у ГНФ облику, конвертујте га.

Пример:

 S → XB | AA A → a | SA B → b X → a 

Решење:

100 кмх у мпх

Како је дата граматика Г већ у ЦНФ-у и нема леве рекурзије, тако да можемо прескочити корак 1 и корак 2 и директно прећи на корак 3.

Правило производње А → СА није у ГНФ, па замењујемо С → КСБ | АА у правилу производње А → СА као:

 S → XB | AA A → a | XBA | AAA B → b X → a 

Правило производње С → КСБ и Б → КСБА није у ГНФ-у, па заменимо Кс → а у производном правилу С → КСБ и Б → КСБА као:

 S → aB | AA A → a | aBA | AAA B → b X → a 

Сада ћемо уклонити леву рекурзију (А → ААА), добијамо:

 S → aB | AA A → aC | aBAC C → AAC | ε B → b X → a 

Сада ћемо уклонити нулту производњу Ц → ε, добијамо:

нумерисање азбуке
 S → aB | AA A → aC | aBAC | a | aBA C → AAC | AA B → b X → a 

Правило производње С → АА није у ГНФ, па замењујемо А → аЦ | аБАЦ | а | аБА у производном правилу С → АА као:

 S → aB | aCA | aBACA | aA | aBAA A → aC | aBAC | a | aBA C → AAC C → aCA | aBACA | aA | aBAA B → b X → a 

Правило производње Ц → ААЦ није у ГНФ, па замењујемо А → аЦ | аБАЦ | а | аБА у производном правилу Ц → ААЦ као:

 S → aB | aCA | aBACA | aA | aBAA A → aC | aBAC | a | aBA C → aCAC | aBACAC | aAC | aBAAC C → aCA | aBACA | aA | aBAA B → b X → a 

Дакле, ово је ГНФ облик за граматику Г.