Automata-theory-cfg-simplification

提供:Dev Guides
移動先:案内検索

CFGの簡素化

CFGでは、すべてのプロダクションルールとシンボルが文字列の派生に必要ではない場合があります。 その上、いくつかのヌル生産とユニット生産があるかもしれません。 これらのプロダクションとシンボルの削除は、* CFGの単純化*と呼ばれます。 簡素化は、基本的に次の手順で構成されます-

  • CFGの削減
  • ユニット生産の削除
  • Nullプロダクションの削除

CFGの削減

CFGは2段階で削減されます-

フェーズ1 *-CFG *G からの同等の文法* G ’*の派生。各変数が何らかの終端文字列を派生します。

導出手順-

ステップ1-一部の端末を派生させ、 i = 1 を初期化するすべてのシンボル* W〜1〜*を含めます。

ステップ2-* W〜i〜を導出するすべてのシンボル W〜i + 1〜*を含めます。

ステップ3- i をインクリメントし、* W〜i + 1〜= W〜i〜*になるまでステップ2を繰り返します。

ステップ4-* W〜i〜*が含まれるすべてのプロダクションルールを含めます。

フェーズ2 *-CFGからの同等の文法 *G” の派生、* G ’*。各記号は文型で表示されます。

導出手順-

ステップ1-* Y〜1〜に開始記号を含め、 *i = 1 を初期化します。

ステップ2-* Y〜i〜から派生できるすべてのシンボル Y〜i + 1〜*を含め、適用されたすべての生産ルールを含めます。

ステップ3-* Y〜i + 1〜= Y〜i〜になるまで、 *i をインクリメントし、ステップ2を繰り返します。

問題

文法Gに相当する簡約された文法を見つけます。生成規則はPです。S→AC | B、A→a、C→c | BC、E→aA | e

溶液

  • フェーズ1 *-

T = \ {a、c、e}

W〜1〜= \ {A、C、E}ルールA→a、C→cおよびE→aA

W〜2〜=ルールS→ACからの\ {A、C、E} U \ {S}

W〜3〜= \ {A、C、E、S} U∅

W〜2〜= W〜3〜なので、G ’を次のように導出できます-

G ’= \ {\ {A、C、E、S}、\ {a、c、e}、P、\ {S}}

ここで、P:S→AC、A→a、C→c、E→aA | e

  • フェーズ2 *-

Y〜1〜= \ {S}

Y〜2〜=ルールS→ACからの\ {S、A、C}

Y〜3〜= \ {S、A、C、a、c}ルールA→aおよびC→c

Y〜4〜= \ {S、A、C、a、c}

Y〜3〜= Y〜4〜なので、G”を導出できます-

G” = \ {\ {A、C、S}、\ {a、c}、P、\ {S}}

ここで、P:S→AC、A→a、C→c

ユニット生産の削除

A→Bの形式の生産規則(A、B∈非終端)は、* unit production。*と呼ばれます。

取り外し手順-

ステップ1 *- *A→B を削除するには、文法で B→x が発生するたびに、生成規則 A→x を文法規則に追加します。 [x∈ターミナル、xはヌルにすることができます]

ステップ2 *-文法から *A→B を削除します。

  • ステップ3 *-すべてのユニット生産が削除されるまで、ステップ1から繰り返します。

問題

次からユニット生産を削除します-

S→XY、X→a、Y→Z | b、Z→M、M→N、N→a

ソリューション-

文法には3つの単位生産があります-

Y→Z、Z→M、M→N

最初に、M→Nを削除します。

N→aとして、M→aを追加し、M→Nを削除します。

生産セットは

S→XY、X→a、Y→Z | b、Z→M、M→a、N→a

  • Z→Mを削除します*

M→aとして、Z→aを追加し、Z→Mを削除します。

生産セットは

S→XY、X→a、Y→Z | b、Z→a、M→a、N→a

  • Y→Zを削除します。*

Z→aとして、Y→aを追加し、Y→Zを削除します。

生産セットは

S→XY、X→a、Y→a | b、Z→a、M→a、N→a

これで、Z、M、およびNは到達不能になったため、それらを削除できます。

最終的なCFGはユニットの生産が無料です-

S→XY、X→a、Y→a | b

Nullプロダクションの削除

CFGでは、生産* A→ε*がある場合、または A で始まり、最終的に次で終わる派生が存在する場合、非終端記号 'A' はNULL可能変数です。

ε:A→…​…​.…→ε

取り外し手順

  • ステップ1 *-εを導出するnull許容の非終端変数を見つけます。

ステップ2 *-各プロダクション *A→a で、すべてのプロダクション A→x を構築します。ここで、 x は、ステップ1から1つまたは複数の非端末を削除することにより ‘a’ から取得されます。

  • ステップ3 *-元の制作物をステップ2の結果と組み合わせ、*ε-制作物*を削除します。

問題

次からヌル生産を削除します-

S→ASA | aB | b、A→B、B→b | ∈

ソリューション-

2つのNULL可能変数があります- A および B

最初に、B→εを削除します。

  • B→ε*を削除すると、生産セットは-

S→ASA | aB | b | a、AεB | b | &epsilon、B→b

  • A→εを削除します。*
  • A→ε*を削除すると、生産セットは-

S→ASA | aB | b | | SA | AS | S、A→B | b、B→b

これは、ヌルトランジションのない最終プロダクションセットです。