代码之家  ›  专栏  ›  技术社区  ›  Christophe Herreman

为什么a^nb^n n>=0不是常规的?

  •  13
  • Christophe Herreman  · 技术社区  · 15 年前

    在我学习的一门CS课程中,有一种语言是不规则的:

    {a^nb^n | n >= 0}
    

    我可以理解,它不是规则的,因为没有有限状态自动机/机器可以被编写来验证和接受这个输入,因为它缺少内存组件。(如果我错了请纠正我)

    这个 wikipedia entry on Regular Language 也列出了这个例子,但没有提供(数学)证明为什么它不是规则的。

    有人能给我启发并提供证据,或者给我指出一个好的资源吗?

    3 回复  |  直到 7 年前
        1
  •  13
  •   cletus    15 年前

    你要找的是 Pumping lemma for regular languages .

    这里是一个 example 关于你的确切问题:

    实例:
    设L={A m=1×}。
    那我就不正常了。
    证明:假设n在抽运引理中。
    让W= A n n .
    设w=xyz为抽运引理。
    因此,XY 但是,xy Z比B__浼浼浼浼浼浼浼浼浼

        2
  •  6
  •   lorenzog    15 年前

    因为您不能编写一个有限状态机来计算“a”和“b”符号的相同序列。简而言之,FSMS不能“计数”。想象一下这样一个FSM:你会给符号“A”多少个州?多少到“B”?如果你的输入序列有更多呢?

    请注意,如果n<=x和x是一个整数值,您可以准备这样的fsm(通过有一个具有许多状态,但仍然是一个有限的数字);这样的语言将是规则的。

        3
  •  1
  •   Utsav Dawn dhirendra    10 年前

    有限状态自动机和下推自动机一样,没有数据结构(堆栈)内存。是的,它可以给你一些“A”和一些“B”,但不是确切的“A”和“B”。