微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决找到一个接受语言 L = { a^{n!} : n >= 0 } 的线性有界自动机

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

解决方法

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

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

  1. 如果输入磁带为空,则停止拒绝
  2. 在第二盘磁带上写一个
  3. 扫描输入磁带,如果只有一个剩余实例,则停止接受
  4. 否则,回到输入的开头
  5. 然后,为您找到的每 n 个实例在输入中划掉 (n-1) 个 a 实例。为此,将第二个磁带头向右移动到 n-1,当您到达第二个磁带上最后一个 a 之后的空白处时,将您所在的 a 留在输入磁带上,重置第二个磁带头,然后继续这个过程
  6. 如果在第 5 步中尝试划掉除第 n 个之外的所有实例时,最终用完输入磁带上的 a 实例,请停止拒绝,因为输入磁带大于 (n-1)!但不能被 n 整除。
  7. 否则,如果在完成第二个磁带的完整计数的同时用完 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|的线性函数,所以这个TM也是一个LBA。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?