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


13

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

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

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


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

Answers:


11

无法在时间进行计算。o(nlg⁡n)

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

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

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

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

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

DTime(nlg⁡n)=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.