Automata 查找接受语言L={a^{n!}:n>;=0}的线性有界自动机

Automata 查找接受语言L={a^{n!}:n>;=0}的线性有界自动机,automata,automata-theory,Automata,Automata Theory,我需要为语言L={a^{n!}:n>=0}构造线性有界自动机。我知道LBA是如何工作的,但是我不知道它如何检查n!以a的力量。我可能想听听一些建议,因为我在为其开发特定LBA时遇到了困难。线性有界自动机是一种多磁带非确定性图灵机,其磁带长度由输入长度的某个固定线性函数限定。也就是说,可以使用的磁带数量必须根据输入长度提前知道,并且该长度必须随输入大小线性增长。如果我们能为这种语言确定一个图灵机,并表明我们确切地知道有多少磁带将被用作输入长度的函数,这个函数是线性的。我们已经证明TM是LBA 考虑

我需要为语言L={a^{n!}:n>=0}构造线性有界自动机。我知道LBA是如何工作的,但是我不知道它如何检查n!以a的力量。我可能想听听一些建议,因为我在为其开发特定LBA时遇到了困难。

线性有界自动机是一种多磁带非确定性图灵机,其磁带长度由输入长度的某个固定线性函数限定。也就是说,可以使用的磁带数量必须根据输入长度提前知道,并且该长度必须随输入大小线性增长。如果我们能为这种语言确定一个图灵机,并表明我们确切地知道有多少磁带将被用作输入长度的函数,这个函数是线性的。我们已经证明TM是LBA

考虑以下多磁带非确定性图灵机,以检查输入是否为a^(n!):

  • 如果输入磁带为空,则停止拒绝
  • 在第二盘磁带上写一篇文章
  • 扫描输入磁带,如果只剩下一个实例,则停止接受
  • 否则,返回到输入的开头
  • 然后,每找到n个实例,在输入中划掉(n-1)个实例。为此,将第二个磁带头向右移动数到N-1,当在第二个磁带上的最后一个A之后到达空白处时,只留下输入磁带上的A,重置第二个磁带头,继续进程
  • 如果在第5步中尝试删除除第n个以外的所有实例时,输入磁带上的实例已用完,请停止拒绝,因为输入磁带大于(n-1)!但不能被n平均整除
  • 否则,如果在完成第二个磁带的完整计数的同时,a的实例已用完,请重置两个磁带头,将另一个a写入第二个磁带的末尾,然后从步骤3继续此过程
  • 以下是该TM如何工作的示例:

    Input:  #aaaaaa#    #aaaaaa#    #xaaaaa#    #xaaaaa#
             ^       =>  ^       =>   ^      =>    ^
    Second: ########    #a######    #a######    #a######
             ^           ^            ^          ^
           
            #xaxaaa#    #xaxaaa#    #xaxaxa#    #xaxaxa#
       =>       ^    =>      ^   =>       ^  =>   ^
            #a######    #a######    #a######    #aa#####
              ^          ^            ^          ^
    
            #xxxaxa#    #xxxxxa#
       =>       ^    =>       ^  => halt-accept since we are at the end
            #aa#####    #aa#####    of the tape and looking at a blank
              ^            ^        on the second tape and only one a
                                    remains
    
    对该TM工作方式的简单分析表明,使用的额外磁带单元数不能超过输入使用的磁带单元数。因为我们只使用额外的磁带单元来写下当前的除数,以及所有足够大的n值的除数!小于n!,正在播放(包括输入)的磁带单元总数肯定少于2*| input |。但是2*| input |是输入大小| input |的线性函数,所以这个TM也是LBA