4

我正在为我的计算理论课程复习一些笔记,我有点坚持展示以下陈述,我希望有人可以帮助我解释:)

设 A 为正则语言。语言 B = {ab | a 存在于 A 而 b 不存在于 A*} 为什么 B 是常规语言?

有些观点对我来说是显而易见的。如果 b 只是一个常量字符串,这是微不足道的。由于我们知道 a 在 A 中并且 b 是一个字符串,因此常规语言在联合下是封闭的,因此联合接受这两个字符串的语言显然是常规的。但是,我不确定 b 是恒定的。也许是这样,如果是这样,那么这不是一个真正的问题。我很难理解它。谢谢!

4

3 回答 3

6

可以构造证明: 给出一个识别 B 的正则表达式。正则语言的类在并集、连接、星号和补码下是封闭的。

于 2010-04-11T04:13:29.043 回答
4

问题中的aandb不是常量字符串而是任何字符串,而 B 是字符串的语言,字符串的开头在 A 中,字符串的结尾不在 A 中。现在,由于任何常规语言都可以被常规识别表达式,如果Ra是识别语言A的正则表达式,那么Ra与“<code>not Ra”连接的正则表达式就是识别语言B的正则表达式。由于B可以被正则表达式识别,所以它是正则语言.

编辑:我最初错过了问题中 B 定义末尾的 A 之后的星号。为了解决这个问题,使正则表达式中识别的部分b也包括星号。

于 2010-04-11T04:07:04.067 回答
0

B 是一种常规语言,因为它是在输入“b”出现时结束的语言。我们可以为给定的语言 B 写一个正则表达式为 a*b

于 2016-04-19T14:27:13.833 回答