在单带图灵机上计算输入长度


13

关于这个问题,我想知道:单带单头图灵机计算其输入长度的时间复杂度是多少?具体而言,让我们说,磁带字母表是,输入是在一个字符串0 + 1 *由空白包围,机器开始于最左边的输入符号,并且它必须在终止字符串的最左符号{0,1,b}(0+1)(0+1)(再次用空格包围),给出了输入长度的二进制表示形式。也可以将其视为将数字从一元转换为二进制的问题。

在两带式或两头式机器上以线性时间很容易解决此问题(只需用一个头扫描输入,而使用另一头重复递增计数器;递增是恒定的摊销时间操作)。但是我能想到的单头解决方案只有O(nlogn)(例如,重复增加一个计数器,然后沿着磁带将其移动一个位置)。是否有匹配的下限?

我尝试了一些搜索,但是“单头”和“输入长度”之类的短语非常普遍,以至于很难在文献中搜索有关此问题的已知结果。


有趣的是。这比看起来应该的要明显。我很好奇此下限与遗忘的TM模拟的下限之间是否存在关系。(按照定义,任何解决此问题的TM都会被遗忘(或具有不必要的代码)。)
Daniel Apon 2013年

Answers:


11

无法在时间进行计算。o(nlgn)

令为一台机器,它给定一个输入字符串x 停顿,其大小为Mx 以二进制形式写在磁带上。x

我们可以向M添加一个简单的(零空间线性时间)DFAM 以检查输入的大小是否为2的幂:只需检查第一位为1,其余为零即可。

假设运行时间o n lg n 。然后我们可以在时间o n lg n 中确定输入的大小是2的幂。换句话说,以下语言在D T i m en lg n )中是可确定的大号= { 0 | ķ = 2 ķ } 它从如下d Ť 中号ÈMo(nlgn)o(nlgn)DTime(nlgn)

L={0ik i=2k}
大号应定期。但是很容易检查语言是否不规则。因此 M不能在时间 o n lg n )中运行DTime(o(nlgn))=RegLMo(nlgn)

我在这里错过的东西:当你说,你考虑一个单磁带机上计算?通常我认为,使用两盘式磁带机来定义复杂性类。一个非常相关的问题是上述结果来自何处?DTime(o(nlgn))=Reg
Bruno

DTime(nlgn)=Reg

感谢您的指导,我看了“经典递归理论”卷。二。对于事实,它对我来说还不是很清楚。例如,Sipser的书使用单带TM来定义时间复杂度类别,而Hopcroft-Ullman的书以及最新的Arora-Barak和Goldreich的书都使用多带TM。
布鲁诺

1
@Bruno,我认为是比较常见的定义DTIME更为复杂。例如,通常所说的“时间层次定理不紧密”仅适用于单卷带机,对于两卷带机,自1982
。– Kaveh 2013年

DTime
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.