2

私はこの練習の問題に困惑しています(マークではありません):

{wは{a、b}の要素です*:aの数は偶数で、bの数は偶数です}

私はこれを理解できないようです。この場合、0は偶数と見なされます。いくつかの受け入れ可能な文字列:{}、{aa}、{bb}、{aabb}、{abab}、{bbaa}、{babaabba}など

同様の例を実行しましたが、aはプレフィックスである必要があり、答えは(aa)(bb) ですが、この場合は任意の順序にすることができます。

クリーネ閉包(*)、結合(U)、交差(&)、および連結を使用できます。

編集:これにも問題があります

{wは{0,1}*の要素です:w = 1 ^ r 0 1 ^ s 0いくつかのr、s> = 1}

4

2 に答える 2

2

これはちょっと醜いですが、うまくいくはずです:

ε U ( (aa) U (bb) U ((ab) U (ba) (ab) U (ba)) )*

2番目の場合:

11*011*0

通常、ここa+の代わりに使用しaa*ます。

于 2010-10-05T21:55:39.960 に答える
1

編集:削除されていない再:NullUserExceptionの回答のコメント。

1)個人的には、文字列を受け入れることができるDFAを最初に構築する方が、これを概念化する方が簡単だと思います。私はそれを書き留めていませんが、頭のてっぺんから、4つの状態と1つの受け入れ状態でこれを行うことができると思います。そこから、このようなアルゴリズムを使用して一度に1つずつ状態を削除することにより、同等の正規表現を作成できます。これが可能なのは、DFAと正規表現がおそらく同等であるためです。

2)クリーネ閉包は最も近い正規表現にのみ適用されるという事実を考慮してください。したがって、グループ化されていない2つの個別のアトムがある場合(アトム自体は正規表現です!)、2番目のアトムにのみ適用されます(ab*たとえば、1つのaに一致し、次に0-bを含む任意の数に一致します)。何かを存在させたいが、いくつあるかわからない場合に、これを有利に使用できます。

于 2010-10-05T21:59:27.580 に答える