【问题标题】:How L = {a^n b^m | n,m>=1, n != 3m} is not regular?如何 L = {a^n b^m | n,m>=1, n != 3m} 不规则?
【发布时间】:2020-04-19 12:26:24
【问题描述】:

我正在努力理解这个问题。 有人有什么想法吗?

编辑: 它是 ...n,m=1...

【问题讨论】:

  • n,m >= 1. 不是
  • 你说得对,我拼错了,谢谢!

标签: automata dfa


【解决方案1】:

如果 n 和 m 小于或等于 1,那么这种语言实际上是正则的,因为它是有限语言 {a,b,ab}。相反,如果您的意思是 n 和 m 大于或等于 1,则分析变得更加困难。

假设 n 和 m 大于或等于 1,则语言是无限的,可能是规则的,也可能不是规则的。我有一种感觉,使用常规语言的抽引引理来证明这种语言将很难或不可能证明是非常规的。这里有两种更简单的证明方法:Myhill-Nerode 定理和常规语言的闭包属性。

为了使用 Myhill-Nerode 证明该语言是非常规的,我们需要识别一个无限的字符串序列,这些字符串对于我们的语言都是可区分的。如果两个字符串具有不同的字符串集,可以将它们连接到它们上以获得我们语言中的字符串,则它们对于我们的语言是可区分的。考虑字符串 aaa, aaaaaa, ..., a^3k, ... 。在我们的语言中,不能连接到这些字符串以获得字符串的最短字符串是 b, bb, ..., b^k, ...。这意味着每个字符串 a^3k 就我们的语言而言是可区分的;可以连接到我们的字符串的字符串集取决于参数 k。这表明对于我们的语言,在不可区分关系下存在无限多个等价类。这意味着我们语言的最小 DFA 将具有无限多的状态,这是一个矛盾。

要使用闭包属性证明语言是非常规的,请考虑以下语言:

L = {a^n b^m | n, m >= 1, n != 3m}
R = {a^n b^m | n, m >= 1, n = 3m}
S = {a^n b^m | n, m >= 1}

首先,请注意 R 是非正则的(使用泵引理很容易证明这一点),而 S 是正则的(这是正则语言 aabb)。

接下来注意S\L = R(这里\表示集差)。

然而,这是一个矛盾,因为我们假设 L 是正则的,我们知道 S 是正则的,并且我们知道正则语言在集差下是封闭的(我们可以使用笛卡尔积为两种正则语言的差构造一个 DFA机器结构)。两种正则语言的区别不可能是正则语言R,所以我们用反证法证明了L一定是非常规语言。

【讨论】:

    【解决方案2】:

    这是使用闭包属性显示不规则性的另一种方式。

    直观地说,我们期望语言 {a3nbn | n∈ N} 是非常规的,因为它本质上是规范的“n 个 a 的副本,然后是 n 个 b 的副本”的语言有点延伸。如果您对这种语言不规则的想法感到满意,那就太好了!如果不是,您可以使用 Myhill-Nerode 定理或抽水引理写一个简短的证明。

    考虑到这一点,语言 L = { anbm | n ≠ 3n } 与上面给出的关系非常密切。事实上,它有点像是上述语言的“对立面”。因此,让我们形成所有未出现在 L 中的字符串的补码 L'。那将是所有形式为 a3nbn 的字符串,加上所有没有出现的字符串'不匹配 ab。嘿!如果 L 是正则的,那么 L' 也是正则的。

    由于 L' 中有一些我们不想要的字符串,让我们将它与 ab 相交以获得我们想要的字符串。将正则语言与正则语言相交会返回正则语言,这意味着如果 L' 是正则,则 L' ∩ ab 是正则的。但这种语言是我们在上面看到的,我们知道它不是正规的!这意味着 L 也不是,我们完成了!

    【讨论】:

      猜你喜欢
      • 2018-10-21
      • 2021-12-11
      • 1970-01-01
      • 2013-02-16
      • 2022-01-13
      • 1970-01-01
      • 1970-01-01
      • 2018-06-18
      • 1970-01-01
      相关资源
      最近更新 更多