質問
以下の言語を考えると、私は言語の正規表現を見つけるのですか。
L = {^ N B ^ M | N => 1、M => 1、NM => 3}
解決
N> = 1およびm> = 1及びNM> = 3以下のそれぞれについても同様である。
N = 1、M> = 3
N> = 3、M = 1
N> = 2、M> = 2
それでL = {ABBB、abbbb、abbbbb、...} U {AAAB、aaaab、aaaaab、...} U {^ N B ^ M | N> = 2、M> = 2}
この正規表現はLと同等である必要があります:
((ABBB(B *))|(AAA(*)b)の|(AA(*)BB(B *)))
これよりもはるかに簡潔な答えはおそらくあります。
他のヒント
言語の例の単語の集合を書き留めます。それらの感触を取得します。パターンを探してください。共通接頭辞/接尾辞/部分文字列を探します。
abbb
abbbb
abbbbb
aabb
aabbb
aabbbb
aaab
aaabb
aaabbb
aaaab
aaaabb
aaaabbb
たとえば、次のすべての単語がa
とb
と終わりで始まることに注意してください。だから、あなたの正規表現はa...b
ようになります。 ?
...
部分を見て何をして
bb
bbb
bbbb
ab
abb
abbb
aa
aab
aabb
aaa
aaab
aaabb
これはちょっと少なくとも一つa
又はおそらくはゼロ以上a
s続いb
のいずれかに続いb
のいずれかのように見えます。あるいは単につ以上のb
s一連ます。
a(a+|b)b*|b{2,}
また、それは、少なくとも二つのa
sのシリーズまたは少なくとも2 b
sのシリーズまたはa
s続くb
s一連のどちらかであると言えるでしょう。私はその式を書き留めるつもりはありません。
このの、すべての後、の宿題です。 (ところで:私はを使用するすべてのショートカットがちょうど糖衣構文のであり、彼らはのの正規表現をより強力にしていないすなわちは、単純な構文の変換は、標準的な正規表現になり、それらことがあります。 。)
[私はちょうど私が正しい希望と自分のお尻をしない: - )]