在证明语言L = {0 ^(n)1 ^(n)|的证据中发现错误n> 0}是正则表达式

时间:2016-05-07 23:52:30

标签: regular-language proof automata

证明:让M成为以下NFA:

Automata for L 现在,如果x在L中,那么x = 0 ^(n)1 ^(n)。因此,在处理x时,M将在状态q0中开始,在状态q0中循环n次,然后在第一个上转换到状态q1,并且在状态q1中跟随循环总共n次1次。由于它以状态q1结束,因此将接受x。因此,M识别L中的每个字符串,因此L是NFA可识别的(并且由Kleene定理,因此是常规的)。

2 个答案:

答案 0 :(得分:1)

你已经证明M接受L的每一串。但这并不意味着M认出L:因为这是真的,你还必须表明M完全接受L和没有其他人(或等效地:它不接受任何不在L中的字符串)。不幸的是,在你的情况下,M 接受一些非L字符串:例如,"011"

答案 1 :(得分:0)

你的证据确实是错误的。为了证明语言L是规则的,你需要证明存在一个识别语言L的有限状态自动机M.因此,你需要证明有关自动机M的三件事:

  1. 自动机M存在。
  2. 自动机M识别语言L(仅此而已)。
  3. 自动机M具有有限数量的状态。
  4. 您的证明问题是您发布的自动机无法识别语言L:

    O*1+

    此自动机识别语言0*1+,该语言与语言L(0^n1^n)不同。是的,L中的每个字符串都被此自动机识别。但是,这个自动机还可识别1之类的字符串,这显然不在L中。因此,在您的证明中使用此自动机是错误的。

    那么,你如何证明自动机M存在?那么,证明自动机M存在的唯一方法是通过显示M存在。唯一的问题是L不是常规语言。因此,没有有限状态自动机M识别L。

    相反的方法是证明L不是常规语言。为了证明L不是常规语言,你需要证明没有有限状态自动机M识别L。这是一个更容易证明,因为你不必找到自动机M.你可以假设它存在。

    您需要做些什么来证明L不是常规语言:

    1. 假设存在识别语言L的自动机M.
    2. 表明M必须具有无限数量的状态。
    3. 证明自动机M不能具有有限数量状态的标准方法是使用Pumping Lemma。我会把它作为练习让你弄明白,因为它不在你的问题范围内。