2つの正規表現操作だけでは表現できない通常の言語


12

すべての正規言語は正規表現で表現できると思っていました(言語が正規の場合は正規表現で表現できます)が、そのためには3つの正規操作(連結、結合、スター)がすべて必要であると言われました保持する。

たとえば、共用体と連結の正規表現操作(3つのうち2つ)しか使用できない場合、これら2つだけでは説明できない通常の言語があると言われました。

Kleeneスターとユニオンだけで同じです。これのいくつかの例は何ですか?

回答:


19

結合と連結だけでは、無限の言語を記述することはできません。結合と連結では、有限数のストリングのみを生成できます。ユニオンとKleeneスターだけは、のみを生成する式とのみを生成する式を連結する方法がないため、などの言語を記述することはできません。連結とKleeneスターのみでは、などの言語を記述することはできません。a b L = { a b }L={ab}abL={ab}


3
.... and は結合なしでは不可能です。{ab}
ラファエル

では、なぜ結合なしでL = {a、b}を記述できないのでしょうか?それは、星と連結を持つ別々の要素として表現できないからでしょうか?それはab、bb、abaなどしかできませんか?
user3295674

@ user3295674まさに。
DylanSp

そして、L = {a *}のようなものは、結合と連結だけでは不可能ですよね?どうもありがとうございます!
user3295674 16

連結が利用可能でなければ、星がどのように定義されるのかさえ分かりません。
G.バッハ

11

おそらくもっと興味深い質問は、星の高さの質問です。もう1つの答えは、スターを使用できない場合、有限言語しか生成できないことです。星のネストが許可されていない場合ようなものは許可されません)?星を2レベルまでしかネストできない場合はどうなりますか?dレベルが深い?これはすべてのためにあることが判明したD正規表現は、ネストで表現があるDではなく、ネスティングにD - 1。リンクにはいくつかの例が含まれています。abcdddd1


4

Aabaabbaa

ネストされたスターではなくスターを使用できるようになった場合、すべての標準言語を取得できるかどうかを知ることは(少なくとも45年間)未解決の問題です。この質問は一般化された星の高さの問題として知られています。これは、ユヴァルフィルマスが言及した星の高さの問題と似ていますが、補完が許可されるようになりました。

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