CFGのチョムスキー標準形のような標準形の重要性


12

文脈自由文法は文脈自由言語を表すために使用できることを理解しています。曖昧さがあるかもしれません。ChomskyGreibachの正規形のような正規形もあります。その必要性を理解できませんでした。

なぜそれらは言語の理論において重要なのですか?私が言及したすべての教科書は、これらの通常の形式について語っていますが、その重要性については何も語っていません。


2
通常の形式は、建設的な証明を与えるときに便利です。
カロリスJuodelė13年

回答:


12

少なくとも2つの関連する用途があります。

  1. 証明の単純さ
    文脈自由文法の周りには、還元性やオートマトンとの等価性など、多くの証明があります。これらは、対処しなければならない文法のセットがより制限されているほど単純です。したがって、そこでは通常のフォームが役立ちます。

    具体的な例として、Greibach正規形を使用して、すべてのCFL(εを含まない)に遷移のないPDA があることを(構成的に)示します。εε

  2. 構文解析を有効にします
    PDAを使用して任意の文法の単語を解析できますが、これはしばしば不便です。通常の形式では、処理する構造が増え、解析アルゴリズムが簡単になります。

    具体例として、CYKアルゴリズムはChomsky標準形式を使用します。一方、Greibachの正規形は、再帰下降構文解析を可能にします。バックトラッキングが必要な場合でも、スペースの複雑さは直線的です。


5

チョムスキー標準形を使用すると、多項式時間アルゴリズムで、文字列を文法で生成できるかどうかを決定できます。動的プログラミングを知っている場合、アルゴリズムは非常に滑らかです...

入力の長さ()がnの場合、dim n x nの 2次元配列(A)を取ります。InAnn

A[i,j]GI(i,j)

A[1,n]SS

def decide (string s,grammar G):
    //base case
    for i=1 to n:
        N[i,i]=I[i]    //as the substring of length one can be generated by only a
                       terminal.
    //end base case

    //induction
    for s=1 to n:       //length of substring
        for i=1 to n-s-1: //start index of substring
            for j=i to i+s-1:   //something else
                 if there exists a rule A->BC such that B belongs to N[i,j] and C
                 belongs to N[j+1,i+s-1] then add A to N[i,i+s-1]
    //endInduction

    if S belongs to N[1,n] then accept else reject.

インデックスがかなりおかしいように見えることは知っています。しかし、基本的にここで何が起こっているのでしょうか。

  • 基本ケースはかなり明確だと思います。

  • 帰納的なステップでは、長さのソリューションを構築します ss

  • 5sub1A>BCBCAN[1,6]

  • N[1,n]


  • 3
    これはCYKアルゴリズムであり、a)そのように名前を付ける必要があり、b)私の答えで言及されています。アルゴリズムがすべてのCFGで統一されているため、多項式ランタイムは印象的であることに注意してください。つまり、一般的です。
    ラファエル

    @Raphael OK ....名前を知りませんでした:)
    ishan3243

    弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
    Licensed under cc by-sa 3.0 with attribution required.