解釋如何將CFG轉換為CNF


CFG代表上下文無關文法,CNF代表喬姆斯基正規化,它們是計算理論中的概念。

上下文無關文法 (CFG)

上下文無關文法 (CFG) 是一種形式文法,用於生成給定形式語言中所有可能的字串模式。

它定義為四個元組:

G=(V,T,P,S)

其中:

  • G是一個文法,它包含一組產生式規則。它用於生成語言的字串。
  • T是終結符的集合。它用小寫字母表示。
  • V是非終結符的集合。它用大寫字母表示。
  • P是一組產生式規則,用於將字串中的非終結符(產生式左側)替換為其他終結符(產生式右側)。

喬姆斯基正規化 (CNF)

如果產生式規則滿足以下條件之一,則上下文無關文法處於CNF:

  • 如果存在起始符號生成ε。例如:A->ε
  • 如果非終結符生成兩個非終結符。例如:S->AB
  • 如果非終結符生成一個終結符。例如:S->a

轉換

按照以下步驟將CFG成功轉換為CNF:

步驟1 - 消除右端 (RHS) 中的起始符號

如果起始符號S位於任何產生式的右側,

建立如下產生式:

S1->S

其中,S1是新的起始符號。

步驟2 - 在文法中嘗試去除空產生式、單元產生式和無用產生式。

步驟3 - 如果存在其他非終結符或終結符,則消除產生式右側的終結符。

例如:S->aA 可以分解如下:

          S->RA

          R->a

最終,它只是S->aA。

步驟4 - 消除右側包含兩個以上非終結符的產生式。

例如:S->ABS 可以分解如下:

          S->RS

          R->AB

更新於:2021年6月12日

3K+ 次檢視

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.