言語が規則的であると直感的に感じる方法


9

言語与えられた場合、この言語は規則的でないと、プロダクションルールを調べずに直接どのように言えますか?L={anbncn}

ポンピングレンマを使用することもできますが、これは通常の文法ではないと文法を見ているだけの人もいます。どのようにして可能ですか?


1
誰でもどんな言語でも見ることができ、それは規則的ではないと言うだけです。直感それ自体が、経験と同じくらいここにあるかどうかはわかりません。これはかなり単純な言語であり(非正規であるにもかかわらず)、正式な言語の研究で必然的に遭遇する言語です。規則的ではないことが通知され、有効な証明手法を使用して規則的でないことが証明されたら、他の人々を説得するための証明は通常必要ありません。件名。
Patrick87

ええ、しかし、講義では、彼らはいくつかの乾いた数学的証明に従うだけですが、実際には単純な例での直観的な説明に欠けています
doniyor

忘れてn個のB N C nとa n b nが規則的ではないと感じたことはありますか?anbncnanbn
Uday Reddy

2
文法を見て、文法が規則的でないことを宣言することは、言語が規則的でないことは誤りです。通常の言語には、非通常の文法がたくさんあります。注意してください!そうは言っても、文法が正規であるかどうかの判断は簡単です。プロダクションを確認してください。
ラファエル

回答:


11

DFA / NFAの主な特性は、無限のメモリがないことです。言語と唯一のアルゴリズム(後で有限オートマトンに翻訳する必要があります)を見ると、このプロパティが必要であると考えることができます。つまり、それを認識するアルゴリズムは、任意の多数のものを覚えておく必要があると感じます。 (例のように)その言語はおそらく規則的ではありません。n

もちろん、あなたは常に数学的直観が間違っている可能性があることを覚えておく必要があり、あなたの直感を確認する唯一の方法はそれを証明することです。

編集:スペースが足りないため、ここのコメントの最後の質問に回答します。

あなたはそれが規則的でない理由であるあなたが意味する無限のメモリについて話している しかし、a ^ nb ^ mには、必要に応じて無制限のメモリを含めることもできますか?これはまだ私に平和を与えていません。


ambnm,n
anbnabの。これには無制限のメモリが必要です。私が言語を見て、私が考えることができるアルゴリズムが無限のメモリを必要とするのを見るとき、その言語は規則的ではないという私の直感がより強くなります。「スマート」アルゴリズム(一定量のメモリを必要とするアルゴリズム)が妥当な時間内に見つからない場合(妥当な時間はあなた次第です)、言語が規則的でないことを証明してみます。
これが少し明確になることを願っています。


ありがとう、数学的証明は直感をもたらしますが、この生成規則を見てください:S-> ab | aSb。これもa ^ nb ^ nの規則的なものではないということです。しかし、a ^ mb ^ nは、m、n> = 1の正規表現です。どうしてこれなの?これらは実際には同じ形ですよね?私は、これら二つの言語の違いを理解しない
doniyor

1
a ^ nb ^ nの場合、2つのことを追跡する必要があります。最初に、aの数がbの数に等しいこと(これはDFAの不可能な部分です)、次に「b」の後に「a」がないこと'。a ^ mb ^ nの場合、m、nの値は関係ありません。少なくとも1つの「a」と少なくとも1つの「b」があり、「b」の後に「a」が付いていないことに注意してください。非公式に言えば、覚えておかなければならないことは3つだけです。
Boris Trayvas

大丈夫、今私はそれを手に入れました。
doniyor

順序も重要ですよね?aabbccは受け入れられますが、順序が正しくないという理由だけでaabcbcは受け入れられません。正しい?
doniyor

1
「通常の言語の主な特性は、無限の記憶力の欠如です。」-どういう意味かわかりますが、その文は意味がありません。「あなたはそれを認識するどんなアルゴリズムも任意の多くのことを覚えておく必要があると感じます」-これも確かに私が知っている唯一の直感ですが、その種類は非常に非常に危険です。こちらをご覧ください
ラファエル

5

ポンピングレンマを使用できます

anbn

直感をテストする良い方法は、次の言語を調べることです。

  1. {xyyzx,y,z{a,b}+}
  2. {xyyzx,y,z{a,b}}
  3. {xyyzx,y,z{a,b,c}+}
  4. {xyyzx,y,z{a,b,c}}

コンテキストフリーはどれですか?


1
誰かが通常の言語の境界の同様に良い例を知っているなら、そう言ってください。コメントで答えを台無しにしないでください。
ラファエル

ラファエル-よくできました!例を示し、明示的にテストしてくれてありがとう。
doniyor


4

完全な証明を行うのではなく、かなり単純な計算を使用して、言語が正規であるかどうかを実際に決定できます。非常に強力な基準を1つ適用するだけで済みます。言語の商が有限である場合に限り、その言語は正規です。

LxxLwxwLL={anbn}aL={an1bn|n1}bL=akL={ankbn|nk}L

DDSaaLDS


b \ Lは、Lをbで割った場合、空のセットを取得することを意味します。それは私が実際に単語を最初から読み始めなければならないからですか?後ろからではなく?
doniyor

1
bL=L/b

1
ここで商を説明し、どのようにそれらからのDFAを構築するためには良いのスライドデッキです:cs.cmu.edu/~cdm/pdf/Minimization.pdfは
ジェームズ・コッペル

ああ大丈夫、どうもありがとう。今私は少しを得る。うーん...しばらくこれをもう一度勉強させてください...
doniyor
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.