通常のコンテキストフリー言語のあいまいさ


11

次の主張が真実であることを理解しています。

  1. 特定のCFGの文字列の2つの異なる派生は、同じ解析ツリーを文字列に起因する場合があります。
  2. 特定のCFGに異なる解析ツリーの属性を示す文字列の派生がある場合、CFGはあいまいです。
  3. あいまいなCFGによって生成される一部のコンテキストフリー言語は、明確なCFGによっても生成されます。
  4. 一部の言語では、その言語を生成できるCFG(およびそのような言語がある)だけがあいまいです。

Q1。上記のポイント3の意味で、任意のCFGが曖昧であるかどうかも決定できないことも理解しています。それとも、ポイント4の意味で、文脈自由言語が曖昧であるかどうかが決定できないということですか?または、両方とも決定不能ですか?

Q2。「context-free」を「regular」に置き換えると、ポイント1〜4のうちどれが偽になりますか?通常の文法と言語は常に明確ですか?


ポイント4で言及する言語は「本質的に曖昧」です。Q1では、GRAMMARが曖昧かどうかは決定できないと思います。したがって、3と4はどちらも決定不能です。
ラミン

そう、ポイント4の言語は「本質的に曖昧」と呼ばれています。
dubiousjim

4
Q1:両方とも決定できません。Q2:センテンス形式で表示される非端末は最大1つであるため、1は不可能です。したがって、派生は左端と右端の両方になります。2それはまだ真実です。3また、「また」ビットを削除した場合は真です。4もはや真実ではありません。たとえば、文法を決定することにより、明確な文法が得られます。
シルヴァン

1
@Sylvainはそれを答えにしますか?
ユヴァルフィルマス

@Sylvain、ありがとう、そしてはい、それが答えです。理解したことを確認できますか?日時2:では、異なる解析ツリーで同じ文字列を生成できる通常の文法がありますか?(それ以来、「曖昧なNFA」への言及に出くわしましたが、私がそういう意味で「曖昧な」を使用しているのかどうかはわかりません)。3と4に関しては、あいまいな通常の文法によっていくつかの標準言語を生成できると言っていると思いますが、常に明確な通常の文法によっても生成されますか?
-dubiousjim

回答:


19

Q1について:あいまいさの問題(CFGが与えられ、あいまいかどうか)と固有のあいまいさの問題(CFGが与えられ、言語が本質的にあいまいかどうか、つまり同等のCFGがあいまいかどうか)の両方が決定不能です。元のリファレンスは次のとおりです。


Q2について:通常の文法は、「片側線形」の文脈自由文法で、ルールの右側に最大で1つの非終端記号があり、その非終端記号が最後(右線形文法)または最初(左線形文法)位置。そのような文法は、同等の有限状態オートマトンに簡単に変換され(通常、各非終端を状態と見なすことにより)、通常の文法が曖昧でない限り明確になります。明確な通常の文法と明確なオートマトンのクラスは、特にスターンズとハント(1985)によって研究されており、包含問題に対して扱いやすいアルゴリズムを楽しんでいることを示しています。

  1. 派生(つまり、ルールアプリケーションのシーケンス(は文法のルール)と派生ツリー(つまり、というラベルノードが親である)との関係についてノードのシーケンス、ここではルールです):一般的なCFGには、異なる派生があり、同じ派生ツリーを異なる方法で訪れます。βAγβαγAαAX1,,XmAX1Xm

    これらの異なる派生は、文型の2つの異なる場所に文法規則を適用することを選択するために発生します:少なくとも2つの非終端記号とを持つ文型で、適用できます最初にを取得して、またはを取得して最初にを取得しますが、他のルールを適用すると同じ。左端(常に任意の文型の左端の非終端記号を導出する)または右端を課すγAηBθABAαγαηBθBβγAηβθγαηβθ 派生は、派生ツリーを訪問するための固定順序を課し、その後、特定の派生ツリーに対して単一の派生があります。

    線形文脈自由文法、任意文形式で非終端多くとも1つであるので、そのような選択は、存在しない、そして左端と右端の両方で指定された派生ツリーのための単一の導出があります。

  2. 同じyield(葉のシーケンス)を持つ2つの異なる解析ツリーを持つことは、が曖昧であるという定義であり、通常の文法を考慮しても変わりません。あるいは、2つの異なる左端の派生を要求することもできます。ノートと呼ばれているその関連有限状態オートマトンで受け入れ実行する片面文法相当に導出そのあいまいな所与の入力のための2つの異なる受け付けランが存在する:全く同じ方法で。www

  3. そして4. あなたは有限状態オートマトンビューを取る場合は、同じ言語のための明確なオートマトンを得るために、あなたのあいまいなオートマトンをdeterminizeすればよい:任意の単語のための単一の実行があるでしょう。この決定的オートマトンは、明確な通常の文法と同等です。 

    あなたのコメントに答えるには、あいまいな正規文法が存在します。たとえば、は、左端に2つの派生がます:および。同等の明確な文法はです。S A S B A S ASAB,Aa,BaaSAaSBaSa

Q1との関係について:通常の文法が曖昧かどうかを決定できます(通常の文法では、入力文法を見なくても答えは常に「いいえ」なので、固有のあいまいさの問題はそれほど難しくありません)。これがチェックインすることができます使用して二乗し、その関連オートマトンの構築:自分自身とオートマトンの製品を構築し、いくつかの状態かどうかを確認とのアクセス可能です共同アクセス可能。私がこのアイデアについて知っている最も古い参考文献は、Even(1965)による論文です。q q q q O(|G|2)(q,q)qq


1

Q1。文法が言語(すべての単語を含む)を生成するかどうかは決定できないため、すべては決定不能です。しかし、決定論的なPDAによって構築された文法のような特定の文法がある場合、質問は決定可能ですが、それは非常に退屈なケースです。Σ *GΣ

4でどのような言語を話すかについては、私はまったく知りませんでした。すべてのCF言語には曖昧な文法があります。

Q2。通常の文法を扱う場合、すべてが決定可能です。最小限のDFAを構築する必要があり、それを使用して明確な文法を構築できます。CF文法で定義された通常の言語を扱う場合、答えはノーです。Q1を参照してください。


ありがとう、Q2。言語が通常の文法で指定されている場合、通常の言語に関する質問は決定可能です。しかし、言語がCFGで指定されている場合、まだ決定可能であるという意味ではありません。それがあなたの言っていることですよね?それで、通常の言語を生成するCFGに制限されている場合、任意のCFGで決定できない曖昧さなどに関する質問も決定できない場合があることを知っていますか?
dubiousjim

そうではないかもしれませんが、それらは常に決定可能です。つまり、CFGのサブクラスである通常の文法で記述された言語を扱う場合、好きな質問はすべて決定可能です。ただし、一部の非正規CFGは通常の言語を生成でき、CFGが通常の言語を生成するかどうかを検証することもできません。
アレクサンダールブツォフ

2
@ alexandr-rubtsov「通常の文法で記述された言語を扱う場合、好きな質問はすべて決定可能です」。これは過度に楽観的な発言のように見えます...
J.-E.

おかげで、私は「誰が知っているか」という意味ではなく、その修辞的な機能で「かもしれない」を意味しました。
dubiousjim

@ J.-E.Pinはい、私はもっと繊細になり、«曖昧さなどの自然な質問»のようなことを言うべきでした。
アレクサンダールブツォフ

0

それは、「言語」の前だけで「コンテキストフリー」を「通常」に置き換えるか、「文法」の前でも置き換えるかどうかに依存します。

すべての通常言語は、通常の文法によって生成されます。特に、明確な通常の文法、たとえば、すべてが明確なLL(1)の正則文法によって生成されます。

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