根据标题:
L = {(n a (w)-n b (w))mod 3> 0}
Alphabet = {a,b}
我找到了这个问题的两个答案:
在此解决方案中,我们的语言被接受。
然而,
w = b
也被接受。
在下一个解决方案中:
我们的问题
w = b
在这里解决但
w = aaab
不被接受。
如何解决此问题?我无法在互联网上找到合适的答案。
答案 0 :(得分:5)
假设我们对mod
有以下定义:
x mod y = { x, if 0 <= x < y
(x - y) mod y, if 0 < y <= x
x, if -y < x < 0
(x + y) mod y, if x <= -y < 0
-(-x mod -y) if y < 0
}
所以我们的模数就像这样:
3 mod 5 = 3
6 mod 5 = 6-5 mod 5 = 1 mod 5 = 1
-3 mod 5 = -3
-6 mod 5 = -6+5 mod 5 = -1 mod 5 = -1
-6 mod -5 = -(6 mod 5) = -1
6 mod -5 = -(-6 mod 5) = -(-1) = 1
我们的语言是L = {(n_a(w) - n_b(w))mod 3&gt; 0}
让我们定义A := n_a(w)
和B := n_b(w)
。因此,我们需要使用(A - B) mod 3 > 0
的定义来解决mod
。我们有五个案例:
如果0 <= A - B < 3,意思是B <= A&lt; B + 3,然后(A - B)mod 3 = A - B.假设它至少为零,如果A = B,则只能为零。我们可以确认当A = B时我们总是如此# 1,我们总是有(A - B)mod 3&gt; 0假,所以我们可以抛出这种可能性。
如果0&lt; 3&lt; = A-B,意思是B&lt; 3 + B <= A或简单地A> = 3 + B,然后(A-B)mod 3 =(A-B-3)mod 3.根据假设,A-B-3> = 3 + B - B - 3&gt; = 0,所以我们仍处于案例1或2中。如果我们保留在案例2中,我们可以重复这一点,直到我们最终达到案例1,我们将看到我们不能拥有A - B - 3k = 0;也就是说,对于任何正k,它不能是A = B + 3k。
如果-3&lt; A - B&lt; 0或B-3 <0。 A&lt; B,然后(A - B)mod 3 = A - B.假设它小于零,所以我们必须抛弃所有这些可能性。
如果A - B <= -3&lt; 0,意思是A&lt; = B-3&lt; B或简单地A&lt; = B-3然后(A-B)mod 3 =(A-B + 3)mod 3.根据该假设,A-B + 3 <= B-3-B + 3 = 0 ,所以我们仍然处于第3或第4种情况。如果我们保留在案例4中,我们可以重复这一点,直到我们最终达到案例3,我们将看不到任何事情。
我们不能在这种情况下因为3&gt; 0
我们不得不从我们的语言中删除以下字符串:
所以我们只保留字符串多于b的字符串,其中A - B不能被3整除。假设这种语言是常规的。考虑语言中的字符串(b ^ p)(a ^(p + 1))。通过泵浦引理,我们应该能够抽出b
s的数量;但是我们可以比b
获得更多a
s。所以语言不能规律。
如果我们采用x mod y
更常见的定义(不一定更正确,必然):
x mod y = { x , if 0 <= x < y
(x - y) , if 0 < y <= x
(x + y) mod y , if -y < x < 0
-(-x mod -y) , if y < 0
}
根据这个定义:
现在我们只抛出A mod B = 0(mod 3)的情况。这种语言是常规语言,有DFA:
+------------a-------------+
| |
| +---b----+ +---b----+ |
| | | | | |
V V | V | |
(q0)---a--->(q1)---a--->(q2)
--->(q0)
(q0)---b--->(q3)---b--->(q4)
^ ^ | ^ | |
| | | | | |
| +---a----+ +---a----+ |
| |
+------------b-------------+