言語が正規かどうかをテストするアルゴリズム


11

言語が正規かどうかをテストするためのアルゴリズム/体系的な手順はありますか?

換言すれば、代数形式で指定された言語与えられる(のようなものを考えるL={anbn:nN})、言語が正規であるかどうかをテストします。学生がすべての宿題を手助けするWebサービスを作成していると想像してください。ユーザーが言語を指定すると、Webサービスは「通常」、「通常ではない」、または「わからない」で応答します。(Webサービスに「わからない」とできるだけ頻繁に回答しないようにしてください。)これを自動化する良い方法はありますか?これは扱いやすいですか?それは決定可能ですか(つまり、「わからない」と答える必要がないことを保証することは可能ですか)?この問題を解決するための合理的に効率的なアルゴリズムはあり、実際に発生する可能性のある多くの/ほとんどの言語に対して「わからない」以外の回答を提供できるでしょうか?

言語が規則的でないことを証明する古典的な方法は、ポンピングレンマです。ただし、ある時点では(たとえば、ポンプする単語を選択するために)手動での洞察が必要となるため、これをアルゴリズムに変換できるかどうかは不明です。

言語が正規であることを証明する古典的な方法は、Myhill–Nerodeの定理を使用して有限状態オートマトンを導出することです。これは有望なアプローチのように見えますが、代数形式で言語に対して基本的な操作を実行する機能が必要です。代数形式の言語で、必要になる可能性のあるすべての操作を象徴的に実行する体系的な方法があるかどうかは、私にはわかりません。


この質問を適切に配置するには、ユーザーが言語を指定する方法を決定する必要があります。私は提案を受け入れていますが、私はこのようなことを考えています:

L={E:S}

ここで、は単語式、Sは長さ変数に対する線形不等式のシステムであり、次のように定義されています。ES

  • ワード表現です。(これらは、Σ ∗の任意の単語をとることができる変数を表します。)x,y,z,Σ

  • それぞれワード表現です。(ここで、x rは文字列xの逆を表します。)xr,yr,zr,xrx

  • それぞれB Cは...ワード表現です。(暗黙的に、Σ = { B C ... }、そうB C ...、基礎となるアルファベットで単一のシンボルを表します。)a,b,c,Σ={a,b,c,}a,b,c,

  • ηB ηC ηは...場合、単語表現であるηは、可変長のです。aη,bη,cη,η

  • 単語式の連結は単語式です。

  • 長可変です。(これらは任意の自然数を取ることができる変数を表します。)m,n,p,q,

  • それぞれ x | | y | | z | は長さ変数です。(これらは対応する単語の長さを表します。)|x|,|y|,|z|,

これは、教科書の演習で見られる多くのケースを処理するのに十分広いようです。もちろん、より適切な提案があれば、代数形式で言語を指定する他のテキストによる方法で置き換えることができます。


あなたの言語表現の選択について多くを考える時間はまだありません。大まかにどのような言語に対応していますか?単語変数が1回だけ出現するという制約を追加した場合、そのような言語はすべて文脈自由ですか?
Gilles 'SO-悪をやめる'

EE::=cηxEEErη::=n|x|

1
{anbncnnN}

@jmad、はい、それは完全に合理的です。私はこの言語表現の選択に慣れていません。他にもっと適切なものを見つけたら、遠慮なく他のものを選択してください。ジル、大きな迎え角!(見物人にとっては、任意の文脈自由文法が通常の言語を定義しているかどうかのテストが決定不可能であることを示す既知の結果があります。)問題が決定不可能である場合、Webサービスが応答できるように問題を微調整することをお勧めします。 「わからない」の場合は、「わからない」となることはほとんどありません。
DW

このクラスはKleene starの下で閉じられていませんね?括弧をバランスよく表現できますか?
Gilles 'SO-悪をやめる'

回答:


13

答えはいいえだ。特定の文脈自由文法が通常の言語を生成するかどうかを決定することは、決定不可能な問題です。

アップデート。私は一般的な質問に対してこの否定的な答えを出しました

代数形式で指定された言語を前提として、その言語が正規であるかどうかをテストします

文脈自由言語は言語の代数方程式の解なので、J。Berstel Transductions and Context-Free Languagesの本の第II章、定理1.4および1.5を参照してください。

しかし、同じ問題が原因スターンズ[1]に自明結果、決定論的文脈自由な言語のために決定可能であり、ヴァリアント[2]によって改善:
プッシュダウン機械、[1] REスターンズ、A規則性テスト情報制御 11 323- 340(1967)。DOI:10.1016 / S0019-9958(67)90591-8。
[2] LGヴァリアント。決定論的プッシュダウンオートマトンの規則性と関連する問題 J. ACM 22(1975)、pp。1–10。

NkNkNkRNk

L(R)={u1n1uknk(n1,...,nk)R}
L(R)RNkNk

S. GinsburgおよびEH Spanier。、Semigroups、Presburger式、および言語Pacific J. Math。 16(1966)、285-296。

S.ギンズバーグとEHスパニエ。境界付き正規セットProc。アメリカの数学の。Soc。 17、1043年から1049年(1966)。

これは質問の2番目の部分を解決しません。これは単語変数のために決定できない可能性がありますが、最初から妥当なフラグメントを提供します。


(a)Pedantic nit:上記の代数構文がすべての文脈自由文法を表現するのに十分一般的であるかどうかはわからない(Gillesと私がコメントで示唆したように)ので、その特定の結果がここに当てはまるかどうかは完全には明らかではない。(b)より重要:問題のステートメントを適切に調整して、Webサービスが「わからない」に応答できるようにしてください。めったに「わからない」と答えるアルゴリズムを見つけたいと考えていますできるだけ。私は以前これをコメントで提案しました。これを質問自体でより明確にするために、質問を編集します。
DW

あなたは証明を適合させることができると思いますが、結果は続きません。この形式では表現できない文脈自由言語があると思います。たとえば、括弧をどのように表現するのですか?言語のクラスはクリーネの星の下で閉じられていませんか?
Gilles「SO-悪をやめる」

@ギレス、そう、私はそれについて考えました。証明をどのように適応させるかはすぐにはわかりません。文脈自由文法が正規であるかどうかを判断することが決定的でないという標準的な証明は、Greibachの定理によるものです。ただし、このクラスの言語はグレイバッハの定理の前提を満たすようには見えません(通常のセットとの連結で閉じられ、和集合で閉じられる可能性は低いようです)。たぶん、私がよく知らない他の証明方法があるかもしれません。同意しますが、この代数形式でバランスのとれた括弧の言語をどのように表現するかは明確ではありません。
DW

参照を追加しました。
J.-E.

あなたの投稿は別のクラスの言語を扱っているため、質問には答えません。ここで許可されている代数的形式(単一の単語表現を使用)は、(私たちの知る限り)任意の文脈自由言語を表現するために必要な代数的形式ほど一般的ではありません。2つの交差点の問題は決定可能である可能性があります。
Gilles「SO-邪悪なことをやめ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.