为 L = (na(w)-nb(w)) mod 3>0 构造 DFA
Posted
技术标签:
【中文标题】为 L = (na(w)-nb(w)) mod 3>0 构造 DFA【英文标题】:Construct DFA for L = (na(w)-nb(w)) mod 3>0为 L = (na(w)-nb(w)) mod 3>0 构造 DFA 【发布时间】:2018-03-18 04:18:56 【问题描述】:根据标题:
L = (na(w)-nb(w)) mod 3>0
字母 = a,b
我找到了这个问题的两个答案:
在此解决方案中,我们的语言被接受。
然而,
w = b
也被接受。
在下一个解决方案中:
我们的问题
w = b
在这里解决了,但是
w = aaab
不被接受。
我该如何解决这个问题?我在互联网上找不到合适的答案。
【问题讨论】:
接受b
有什么问题?
我不确定-1 mod 3
是否可以接受。应该吗?
取决于您的mod
是如何定义的。 -1 mod 3
-1
或 2
在你的系统中吗?
我以为是-1
。不过,我明白你的意思。如果 -1 mod 3 = 2
,自动机 1 是正确的。如果我们在系统中定义-1 mod 3 = -1
,是否仍然可以构造这个DFA?
我不确定。我的直觉是不,因为这看起来非常令人兴奋。
【参考方案1】:
假设我们有以下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 > 0
让我们定义A := n_a(w)
和B := n_b(w)
。所以我们需要使用mod
的定义来解决(A - B) mod 3 > 0
。我们有五个案例:
如果 0 0 false,所以我们可以排除这种可能性。
如果 0 = 3 + B,则 (A - B) mod 3 = (A - B - 3) mod 3。根据假设,A - B - 3 >= 3 + B - B - 3 >= 0,所以我们仍然处于情况 1 或 2。如果我们仍然处于情况 2,我们可以重复此过程直到我们最终达到案例 1,我们将看到我们不能有 A - B - 3k = 0;也就是说,对于任何正的 k,它不可能是 A = B + 3k。
如果 -3
如果 A - B
我们不可能在这种情况下,因为 3 > 0。
我们不得不从我们的语言中去掉以下字符串:
A = B A = B + 3k A所以我们只保留 a 多于 b 的字符串,其中 A - B 不能被 3 整除。假设这种语言是正则的。考虑语言中的字符串 (b^p)(a^(p+1))。根据抽水引理,我们应该可以抽b
s的数量;但是我们可以得到比a
s更多的b
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
根据这个定义:
-
在情况 1 中,我们抛出 A = B
在情况 2 中,我们抛出 A = B + 3k
在情况 3 中,我们抛出 A = B - 3k
由于 3 > 0,案例 4 不适用
现在我们只排除了 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-------------+
【讨论】:
以上是关于为 L = (na(w)-nb(w)) mod 3>0 构造 DFA的主要内容,如果未能解决你的问题,请参考以下文章
ini Dodanie subomeny w Apache na Webserv