几周前,我参加了计算机考试理论考试,这是一个问题:
假设语言
L是正规的吗?如果是,请为其提供正则表达式或自动机。
在考试后我简短地问了他答案之后,看来它确实是正规的(我相信他说的表达很简单)。但是我似乎无法理解为什么。我看到它的方式,它串联 [R倍,像这样:
,
这是不规则的,因为自动机无法每次都调用n和m。我在哪里错?
编辑:我再次与教授交谈,他承认这是一个错误。该语言的确不正常。
几周前,我参加了计算机考试理论考试,这是一个问题:
假设语言
L是正规的吗?如果是,请为其提供正则表达式或自动机。
在考试后我简短地问了他答案之后,看来它确实是正规的(我相信他说的表达很简单)。但是我似乎无法理解为什么。我看到它的方式,它串联 [R倍,像这样:
,
这是不规则的,因为自动机无法每次都调用n和m。我在哪里错?
编辑:我再次与教授交谈,他承认这是一个错误。该语言的确不正常。
Answers:
语言是不规则的,可以使用Nerode的方法证明。考虑下面的词语瓦特ñ = 一个ñ b为Ñ ∈ Ñ。然后瓦特2 Ñ ∈ 大号,但对于Ñ ≠ 米,瓦特Ñ 瓦特米 ∉ 大号。因此,L的任何自动机在读取每个w n后必须处于不同的状态,这与它的有限性相矛盾。
在您的评论中,您暗示(引用)“对进行了泵激引理证明,说相同的情况适用于更大的r ”。
确实可以通过应用闭包属性将其形式化。常规语言在交叉点下关闭。因此,如果是定期的,那么将是大号∩ 一个* b 一个* b = { 一个Ñ b 一个Ñ b | Ñ ≥ 0 },有效地设置- [R = 2和米= 1。
语言:{(a n b m)r | N,M,r≥0}是不规律的,因为当所述自动机/机读取的字母“a”,然后字母“B”的第一序列,它需要计数的次数它读字母“a”和它在第一个序列中读取字母'b'以知道n和m的值的次数。
如果r> 1,则字母'a'和字母'b'的另一个相同序列是预期的。
如果自动/机不不知道多少个字母“A”和字母“B”是第一序列中的读那么它也不会不知道的价值ñ和米,因此它可以不告诉我们,如果从第二到最后的其他顺序是等于第一个顺序的单词。
但是众所周知,只有图灵机可以计数并知道n和m的值并可以识别上面的语言,所以不仅上面的语言不是常规的,而且甚至不是上下文无关的,也就是说,不存在用于识别该语言的下推自动机,也不存在上下文无关文法,即从该上下文无关文法派生的每个单词都在上述语言中。
因为确定性有限自动机和下推有限自动机都无法计数并知道n和m的值,这与图灵机不同,它们无法识别上述语言,因此上述语言并非上下文无关而且不是正常的
假设上述语言为常规语言,这是一个反例:
对于n = 3∧m = 5∧r = 2,以下单词是上述语言:
aaabbbbbaaabbbbb
但是以下单词不是该语言的意思:
aaabbbbbaaaaabbb,因为它不存在N,M和[R这样:
(a n b m)r = aaabbbbbaaaaabbb,因为要满足字母'a'的第一个序列然后是字母'b',所以n = 3∧m = 5必须是正确的,并且因为我们看到2个字母序列' a'然后是字母'b',则r = 2,但是如果n = 3∧m = 5∧r = 2则(a n b m)r =(a 3 b 5)2 =(aaabbbbb)2 = aaabbbbbaaabbbbb ≠aaabbbbbaaaaabbb,因为它们的后缀不同,即aaabbbbb≠aaaaabbb,尽管对于r = 1,它们的前缀等于aaabbbbb。
可以为这种语言建立的“最佳”确定性有限自动机是识别正则表达式(a * b *)*的确定性有限自动机,但是它不能识别上述语言,因为它告诉两个词aaabbbbbaaabbbbb和aaabbbbbaaaaabbb所用的语言,这是不正确的,因为aaabbbbbaaabbbbb是在语言,但aaabbbbbaaaaabbb是没有的语言。
即使下推式有限自动机也无法判断两个单词是否都使用该语言,因此只有图灵机可以知道。
在第二个序列中,图灵机发现n = 5∧m = 3,这与在第一个序列中发现n = 3∧m = 5 矛盾,因此它告诉第二个单词不是该语言中的n ,但第一个字没有发现矛盾。
这两个序列都满足n = 3∧m = 5,因此图灵机说第一个单词在该语言中。
只有Turing机器可以计数和记住n和m的值,方法是在它们的磁带上写入它们的值,然后再读取它们,就可以了。