在本文中,我们将设计规则语言L = {w∈{a,b} *的确定性有限自动机:Na(w)mod 3> Nb(w)mod 3}。
正则表达式可以是任何形式,从结束符号to到两个正则表达式(R1 + R2),它们的交点(R1 + R2)或正则表达式的闭包(R1 *)或∈Σ的并集,其中Σ是有限的输入符号集,它也是语言{a}的正则表达式。
Regular Language is a language which can be expressed in terms of regular expression.
正则表达式的示例:
- 所有字符串Σ= {a,b}的集合的正则表达式,其中恰有一个a。
b*ab*
- 以前缀ab开头的所有字符串Σ= {a,b}的集合的正则表达式。
ab(a+b)*
问题 :
常规语言L = {w∈{a,b} *:Na(w)mod 3> Nb(w)mod 3}表示该语言接受所有字符串,其中a的字符串模数3大于b的模数3。
例子 :
Input : aaabbbb
Output : Not Accepted
Reason : Na(w) = 3; 3 mod 3 = 0 and Nb(w) = 4; 4 mod 3 = 1. So Na(w) mod 3 !> Nb(w) mod 3
Input : aabbbb
Output : Accepted
Reason : Na(w) = 2 and Nb(w) = 4; 2 mod 3 = 2 and 4 mod 3 = 1. So Na(w) mod 3 > Nb(w) mod 3
方法 :
由于它是模数3,所以余数可以是0、1、2。
当Na(w)mod 3 = 0时,无论Nb(w)mod 3的值是多少,该语言都不会被接受。
如果Na(w)mod 3 = 1,则当Nb(w)mod 3 = 0时,将接受该语言。
同样,当Na(w)mod 3 = 2时,则当Nb(w)mod 3 = 0或1时,将接受该语言。
可以用表格形式进行解释:
a | b | OUTPUT |
---|---|---|
0 |
0 |
NOT ACCEPTED |
0 |
1 |
NOT ACCEPTED |
0 |
2 |
NOT ACCEPTED |
1 |
0 |
ACCEPTED |
1 |
1 |
NOT ACCEPTED |
1 |
2 |
NOT ACCEPTED |
2 |
0 |
ACCEPTED |
2 |
1 |
ACCEPTED |
2 |
2 |
NOT ACCEPTED |
因此,状态q10,q20和q21将成为最终语言将被接受的状态。
最终的DFA状态转换图将为: