在课上做作业,我来到这个问题:
对于以下每个正则表达式,给出最小的长度字符串
不是表达式定义的语言。
(bb)*(aa)*b*
a*(bab)*∪b∪ab
我将尝试仅在第一个上获得帮助,看看我是否可以弄清楚第二个。以下是我所知道的:Kleene *表示0个或更多可能的元素。并且集合的并集是包含集合a和集合b的所有元素而不重复元素的集合。通过插入lambda来解决第一个问题,我得到:
如果我正确地执行此操作,则长度为0到5的字符串不在语言中。我这样做了吗?
答案 0 :(得分:3)
第一个正则表达式匹配任何以偶数个'b'(零包含)开头,后跟偶数个'a'(零可以),然后是一些'b'的单词。
这意味着空字符串使用语言,以及字符串“b”。 但是,字符串“a”不在语言中。
因此,语言中不包含的所有最小长度字符串都是“a”。
第二个正则表达式匹配“”,“a”和“aa”(由*(bab)*)以及“b”和“ab”。 但是它与“ba”和“bb”不匹配。
因此,最小字符串的长度为2:“bb”和“ba”。