私が取っているCSコースには、規則的ではない言語の例があります。
{a^nb^n | n >= 0}
メモリコンポーネントがないため、この入力を検証して受け入れる有限状態オートマトン/マシンを作成できないため、これは定期的ではないことを理解できます。 (間違っている場合は訂正してください)
正規言語に関するウィキペディアのエントリ にもこの例がリストされていますが、正規でない理由の(数学的な)証明は提供されていません。
誰かがこれについて私に教えて、これの証拠を提供することができますか、または私にあまりにも良いリソースを指摘することができますか?
「a」と「b」のシンボルの同一のシーケンスを「カウント」する有限状態マシンを作成できないためです。一言で言えば、FSMは「カウント」できません。そのようなFSMを想像してみてください:シンボル「a」にいくつの状態を与えますか? 'b'はいくつですか?入力シーケンスにさらに多くの情報がある場合はどうなりますか?
Xが整数値でn <= Xの場合、そのようなFSMを準備できることに注意してください(多くの状態を持つが、それでも有限数のFSMを用意することによって)。そのような言語は規則的です。
有限状態オートマトンにはデータ構造(スタック)がありません-プッシュダウンオートマトンの場合のようにメモリ。ええ、それはあなたにいくつかの「a」の後にいくつかの「b」を与えることができますが、正確な量の「a」の後にそのない「b」を与えることができます。
その理由は、いいえの場合にのみ最終状態に到達する必要があるためです。 'a'とnoの。 'b'のは入力文字列で等しい。そのためには、両方を数える必要があります。 'a'およびno。 'b'の値ですが、 'n'の値は無限大に達する可能性があるため、有限オートマトンを使用して無限大までカウントすることはできません。
だから{a ^ n b ^ n | n> = 0}は規則的ではありません。