如何解决找到一个接受语言 L = { a^{n!} : n >= 0 } 的线性有界自动机
我需要为语言 L = { a^{n!} : n >= 0 } 构造线性有界自动机。我知道 LBA 的功能,但是,我不知道它如何检查 n!那要在权力中了。我可能想听听一些建议,因为我在为其开发特定的 LBA 时遇到了困难。
解决方法
线性有界自动机是一种多带非确定性图灵机,其带长度受输入长度的某个固定线性函数的限制。也就是说,可用的磁带数量必须从输入的长度提前知道,并且该长度必须随输入大小线性增长。如果我们可以确定这种语言的图灵机,并表明我们确切知道将使用多少磁带作为输入长度的函数,并且该函数是线性的。我们已经证明 TM 是 LBA。
考虑以下多带非确定性图灵机检查输入是否为a^(n!):
- 如果输入磁带为空,则停止拒绝
- 在第二盘磁带上写一个
- 扫描输入磁带,如果只有一个剩余实例,则停止接受
- 否则,回到输入的开头
- 然后,为您找到的每 n 个实例在输入中划掉 (n-1) 个 a 实例。为此,将第二个磁带头向右移动到 n-1,当您到达第二个磁带上最后一个 a 之后的空白处时,将您所在的 a 留在输入磁带上,重置第二个磁带头,然后继续这个过程
- 如果在第 5 步中尝试划掉除第 n 个之外的所有实例时,最终用完输入磁带上的 a 实例,请停止拒绝,因为输入磁带大于 (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|的线性函数,所以这个TM也是一个LBA。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。