📜  门| GATE-CS-2006 |问题 29

📅  最后修改于: 2021-09-26 03:38:09             🧑  作者: Mango

如果 s 是 (0 + 1)* 上的字符串,则让 n 0 (s) 表示 s 中 0 的数量,n 1 (s) 表示 s 中 1 的数量。以下哪一种语言不是常规语言?

GATECS2006Q29 7″ />
(一) A
(乙)
(C)
(四)答案: (C)
解释:选项(A)和(D)中的语言是有限的,所以两个选项都被消除了。

对于选项 A:
有有限没有。 3 位素数。每个有限集都存在一个 FA。因此FA是可能的。

对于选项 D:
7 的可能余数是 0 到 6,而 5 的可能余数是 0 到 4。使用 35 个状态,可以制作 FA。

对于选项 B:
我们可以有 6 个状态(包括 1 个拒绝状态)
状态 1:差异为 0
状态 2:差异为 1(更多 1s)
状态 3:差异为 1(更多 0)
状态 4:差异为 2(更多 1s)
状态 5:差异为 2(更多 0)
状态 6:拒绝差异 >= 3 的状态

假设字符串是 000101
扫描 0 -> 状态 3
扫描 0 -> 状态 5
扫描 0 -> 拒绝(因为现在差异为 3)

同样,如果我们尝试字符串:010100,这将被接受。这个问题的测验