给定下面的语言,我如何找到该语言的正则表达式
L= {a ^n b ^m |n =>1,m=>1,nm =>3}
发布于 2010-03-25 05:14:48
对于以下各项,n>=1、m>=1和nm>=3均为真:
n=1,m>=3
n>=3,m=1
n>=2,m>=2
所以L={ abbb,abbbb,abbbb,... }U{ aaab,aaaab,aaaaab,... }U{ a^n b^m | n>=2,m>=2 }
此正则表达式应等于L:
((abbb(b*)) | (aaa(a*)b) |(aa(a*)bb(b*)
可能有一个比这个更简洁的答案。
发布于 2010-03-25 05:39:09
写下一组该语言的例词。感受一下它们。寻找模式。查找常见的前缀/后缀/子字符串。
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,或者一个b后面可能跟零个或多个b,或者仅仅是一系列两个以上的b。
a(a+|b)b*|b{2,}你也可以说它是至少两个a的序列,或者是至少两个b的序列,或者是a后面跟着b的序列,我不会写下这个表达式。
毕竟,这是家庭作业,所以我会把它留给你去整理,并把它和第一个结果放在一起。(顺便说一下:我使用的所有快捷键都只是语法上的糖,它们不会使正则表达式更强大。也就是说,有一个简单的语法转换,可以将它们转换为标准的正则表达式。)
我只希望我是对的,不要让自己出丑:-)
https://stackoverflow.com/questions/2511313
复制相似问题