📜  正规语言的DFA L = {w∈{a,b} *:Na(w)mod 3> Nb(w)mod 3}

📅  最后修改于: 2021-08-27 17:02:31             🧑  作者: Mango

在本文中,我们将设计规则语言L = {w∈{a,b} *的确定性有限自动机:Na(w)mod 3> Nb(w)mod 3}。

正则表达式可以是任何形式,从结束符号to到两个正则表达式(R1 + R2),它们的交点(R1 + R2)或正则表达式的闭包(R1 *)或∈Σ的并集,其中Σ是有限的输入符号集,它也是语言{a}的正则表达式。

正则表达式的示例:

  1. 所有字符串Σ= {a,b}的集合的正则表达式,其中恰有一个a。
    b*ab* 
  2. 以前缀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状态转换图将为: