【问题标题】:how can i see directly that a language is not regular我怎样才能直接看到一种语言不规则
【发布时间】:2012-06-16 14:55:51
【问题描述】:

给定 L={a^n b^n c^n},我怎么能不看生产规则就直接说这种语言不规则?我可以使用抽引引理,但有些人说只是看语法,这不是常规的。怎么可能?

【问题讨论】:

标签: regular-language formal-languages


【解决方案1】:

您的字母表中有三个字符。它们都依赖于同一个变量:n。 现在,如果你只有两个,想象一下 {a^n b^n} 你可以通过这个产生式轻松完成任务:

S -> ab |锑

但是你有三个,没有办法将它们都链接到同一个变量。您应该使用两个语法类别,但既然您这样做了,它们就会被取消链接,您可以从它们中的每一个生成不同的字符串。链接它们的唯一方法是只使用一个语法类别,这是不可能的。

你不能这样做:

S -> abc | aSbc

事实上,你的最终字符串中不能有语法类别,所以那不是字符串。它需要再次转变。从那时起你能做什么? 你可以这样做:

aabcbc

或者你可以这样做:

aaSbcbc

第一个是字符串,不属于您的语言。第二个还不是字符串。但很容易看出,您无法从中执行任何允许的字符串。

【讨论】:

  • 你的意思是,我不能这样做:S -> abc | aSbc,但在这种情况下,余额也可以,我有 n 次 a 的 b 和 c。但为什么这是错误的?
  • 哦,我明白了,所以要被语法接受,顺序也是至关重要的吧? like aabbcc 被接受但不接受 aabcbc,只是因为顺序不对。我说的对吗?
  • 没错!我没有意识到你对此感到困惑。 a^n b^n c^n 表示您将有 n 次 a,然后是 n 次 b,然后是 n 次 c。现在,我希望它很清楚。
  • 是的,现在我明白了。有许多小部分决定了整个事情是否清楚......很大的帮助!谢谢
猜你喜欢
  • 1970-01-01
  • 2013-01-09
  • 2016-07-20
  • 2021-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-31
相关资源
最近更新 更多