正規表現は無限にできますか?


10

正規表現を使用して定義できる言語とDFA / NFA(有限オートマトン)で認識できる言語は同等であることを知っています。また、言語のDFAも存在しません{0n1n|n0}。しかし、それでも、正規表現を使用して(つまり、非正規言語を使用できます)、{ ϵ } { 01 } { 0011 }として記述できます{ϵ}{01}{0011}......。しかし、正規表現を持つすべての言語には、それを認識するDFAがあることがわかっています(以前のステートメントとは矛盾します)。これは簡単なことですが、正規表現の定義には、有限であるべきという条件が含まれていますか?


3

1
ですが、DFA / NFAが有限であるという要件を削除すると、を受け入れるオートマトンを構築できます。{0n1nn0}

3
用語のポイントとして、「オートマトン」という言葉は「オートマトン」の複数形です。「オートマトン」という言葉はありません。これまで以上に複数形にすることはできません。(オートマトンは所有格として正しいが複数形としては正しくありません)
chasly from UK

回答:


23

正規表現が無限であることを許可されていれば、どの言語も正規でした。

言語を指定すると、を正確に定義する正規表現をいつでも定義できます。 (例:正規表現は定義します。)L={w1,w2,}R=w1+w2+L
R1=ϵ+0+1+00+01+10+11+L1={0,1}

一部の言語は正規ではないことがわかっているため、無限の正規表現は有限の正規表現よりも言語のクラスが大きいことを示しています。


5
無限の正規表現が異なるだけでなく、全体の概念が意味をなさないことを示しているので、私はこの答えが大好きです。
jmite 2015年

私が2番目の段落に埋め込んだポイントのより簡潔なステートメントであり、したがってより明確です。
Davislor

しかし、それは純粋なトートロジーで終わります。では、この形式の場合、すべての言語を通常の言語と見なさないのはなぜでしょうか。正規表現を使って行うことは、もはや機能しません。帰納的アルゴリズムで状態機械を構築することはできません。なぜなら、それは決して終了せず、無限の状態を持っているからです。リストのすべてと比較して、一致するものがなければ拒否することはできません。とにかく、リストを物理的に表すことはできません。(コンピューターで生成できるリストは決定可能な言語です。)すべての言語がこの形式を持っているという事実を使用して、正規表現について知っている種類のものではないことを証明できます。
Davislor

@jmite "意味がない"または特別な場合?
BAR

@BARは以上の言語のクラスのように、意味がありません無限正規表現で記述されてちょうど2 Σは、すべての言語のセット、すなわち。有限RE、CFG、またはチューリングマシンで行うような言語クラスはありません。Σ2Σ
jmite

5

はい、有限でなければなりません。考えられる一致の無限のセットがあり、入力がであると想像してください011。あなたはそれを拒否することができますか?チェックするマッチが不足することはありますか?

その定義により、通常ではない言語はありますか?特定のプログラムが特定の入力で停止するように、プログラムと入力のすべてのペアのセットはどうですか?

ここで、言語の文字列を辞書式順序で列挙するプログラムがある場合は、

更新

コメントのフィードバックに基づいて少し明確にするために、このフォームのすべての言語が通常であるとは限らない理由は、定義によるものです。たとえば、クリーネの定理の証明を調べる場合、それは有限状態機械を生成することを証明するために正規表現が有限でなければならないという事実に依存します。

「通常の」言語をそのように定義するのはなぜですか?すべての正式な言語はアルファベットの文字列のサブセットであり、すべての文字列のセットはシングルトンの和集合として表現できるため、任意の文字列のセットを「通常の」言語と呼ぶと、通常の言語は単なる同義語になります。言語。これはあまり有用な定義ではありません。ハードウェアやソフトウェアで実際に実装することができないためです。任意の無限リストをどこにも保存したり、無限状態マシンを構築したりすることはできません。

しかし、私が示唆したように、言語のすべての文字列を順番に列挙する方法がある場合は、そこからディサイダーを構築できます(その正確な文字列が表示されたときに受け入れ、後の文字列に遭遇したら拒否します'を探している)、またはその逆(順番に各文字列について、ディサイダーを介して実行し、受け入れられた場合にのみ出力します)。したがって、列挙可能なすべての言語をregularと考えると、すべての決定可能な言語は「通常」であり、有限状態マシンによって認識される言語と、それに相当するエンコーディングを有限式として表す新しい用語が必要になります。


1
この答えは間違っています。言語の一部の表現が単純な方法でアルゴリズム決定器を構築するのに適していないという事実だけでは、この表現が間違っていることを意味するものではありませ。他のアプローチがあるかもしれません。実際、すべての決定可能な言語は、サーシャが提案する形式の表現を持っています!要するに、あなたは「私はどうすればいいのか分からないので、それは不可能でなければならない」という誤りを犯しています。
ラファエル

@Raphael:あなたの発言の意味を考慮してください、「すべての決定可能な言語はサーシャが提案する形式の表現を持っています!」つまり、実際、私が私の回答で指摘した点です。問題は、この形式のすべての言語が通常のものとして定義されているかということでした。 さて、すべての決定可能な言語は定期的ですか?(そして、私が示したように、いくつかの決定不可能なものも?)それは「通常」の有用な定義でしょうか?
Davislor

さらに、文字列の無限リストの決定者は実行できないと誤解するどころか、私の最後の文はそれをどのように実行できるかについてのヒントでした。順序付けでそれを過ぎた文字列に遭遇したとき。ただし、有限状態機械はこれを行うことができません。無限リストの各文字列と比較したすべての状態を表すことができず、正規表現もできないためです。できれば、すべての決定可能な言語を認識できるほど強力です。
Davislor

0

正規表現が無限であることを許可されていると仮定します。

したがって、{ϵ}∪{01}∪{0011} ...によって定義された言語は通常のものになります。すべての通常の言語にはNFAが存在します。このNFAを取得する1つの方法は、{ϵ}、{01}、{0011}のそれぞれに個別のNFAを用意し、ϵ遷移を使用してそれらを結合することです。無限の異なる正規表現があるため、無限のサブNFAを組み合わせる必要があります。ただし、NFAは有限数の状態しか持てません(NFAの定義)。

したがって、無限の正規表現の和集合によって定義される言語を定義できるNFAは存在しません。これは、言語が正規でないことを意味します。

したがって、無限正規表現の和集合によって定義される言語と同じ言語を定義できる正規表現はありません。

したがって、正規表現は有限式のみを持つことができます。


次に、「無限正規表現」で、通常の言語ではなく、別のクラスの言語を定義します。実際、彼らはどんな言語でも定義することができ、それはまったく興味をそそられません(それらは有限ではないため、操作が難しく、何でもできるので、制限の観点から学ぶことは何もありません)。
フォンブランド、2015年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.