2017-07-06 129 views
-1

我给了2个DFA。 *表示最终状态, - >表示在字母表{a,b}上定义的初始状态。清晰的方式来表示DFA接受的语言?

1) - > A with a去A. - > A with b去* B。 * B与a去* B。 * B与B去 - > A。

该正则表达式是清楚: E = A * B(A * +(A * BA * BA *)*)

而且它接受的语言是L 1 = {瓦特以上{一,b} | w是b前面有任意数量的a,后面跟着任意数量的a,或者w是b前面有任意数量的a,后面跟随任意数量的bb,其中b的中间(中间bb),结束或开始的任意数量。 2) - > * A与b的关系为 - > * A.-> * A与a的关系为* B。 B与b去→ - > A. * B与a去C. C与a去C. C与b去C.

注意:A既是最终状态,也是初始状态。 B是最终状态。

现在,正则表达式,我得到的是这样的:

E = B *((AB)* + A(BB * A)*)

最后,这个DFA接受的语言是: L2 = {w over {a,b} | w是n 1,其次是k 01或a,其次是m 11^r0's其中n,km,r> = 0}

现在问题是,是否有一种更清晰的方式来表示语言L1和L2因为它看起来很丑。提前致谢。

+0

define'cleaner' –

+0

嘿贾森,只是在我可能错过了RE的一些模式。 –

回答

0
E = a* b(a* + (a* ba* ba*)*) 
    = a*ba* + a*b(a* ba* ba*)* 
    = a*ba* + a*b(a*ba*ba*)*a* 
    = a*b(a*ba*ba*)*a* 
    = a*b(a*ba*b)*a* 

这是包含奇数个b S的ab所有字符串的语言。这可能会象{w in {a,b}* | #b(w) = 1 (mod 2)}那样象征性地最紧凑地表示。

对于第二之一:获取到状态B的唯一方法是在看到一个Aa,并且只有这样,才能从外部C到达C是看在B一个aC是一种死亡状态,唯一的办法是看aaA开始。即:如果您连续看到两个a s,则该字符串不在该语言中;语言是ab上不包含子字符串aa的所有字符串的集合。这可能是最紧凑地表示为{(a+b)*aa(a+b)*}^c,其中​​的意思是“补充”。

相关问题