RAM与图灵机复杂性之间的巨大差距


9

如果仅考虑P中的问题,那么对于特定问题,最快的已知word-RAM算法和最快的Turing机器算法之间是否还有较大的差距?如果普遍关注的自然问题之间存在巨大差距,我特别感兴趣。


6
图灵机可以在运行时以开销模拟RAM机。因此不会有太大的差距。O(nlogn)
Shaull

@Shaull对于任何自然/普遍存在的问题,是否存在这么大的差距?
Lembik

3
回文历在单磁带TM上花费时间在RAM中为)。 eecs.yorku.ca/course_archive/2008-09/W/6115/palindrome.pdfΩ(n2)O(n)
SamM 2015年

6
据我所知,Shaull的评论仅适用于非确定性机器和两带TM设置。引用,Shaull?
瑞安·威廉姆斯

1
@ qbt937-哇,这是过去的爆炸:)我相信我没有提供引文,因为我没有(但现在也没有),很可能是Ryan Williams是正确的。
Shaull

Answers:


6

众所周知,您可以及时在RAM机器上计算的任何问题 T(n),您最多可以及时在Turing Machine中完成 T(n)2。您需要注意,所使用的内存总大小不能超过T(n),因为那意味着您执行的写操作多于 T(n),因此每次您从RAM内存中获取内容时,图灵机都会遇到最坏的情况 T(n)时间从磁带上顺序找到所需的元素。除内存访问外,其余操作应大约在同一时间进行。这样您就可以了。


2
RAM可以对数时间计算输入的长度(因此也可以计算该长度的一方),但是基本的图灵机需要线性时间来计算该奇偶校验。

1

下面的例子证明了一种算法 A 这需要 O(nlog(n)) 解决单词拉姆问题 O(n2log(n)3)1磁带图灵机(TM)上,该机器精确执行由A。我了解该问题与1-tape TM有关,我只在回答中使用此问题。这是针对EmilJeřábek的言论所做的编辑。

我们将发现以下更一般的结论。证明TM可以解决O(T(n)2) 解决的问题 O(T(n)) 通过算法 A上RAM,它是不是足够运行A在TM上。可能需要一个聪明的算法。如果一个人想证明一个O(nlog(n))高架。至少可以说,只要有需要,就证明存在一个聪明的算法似乎还不是立竿见影的。这是不是与其它反应线,基本上只提出模拟/执行的TM 所有RAM计算(算法A)宣布TM的复杂性,例如 O(T(n)2) 要么 O(T(n)nlog(n))

问题:我们得到了一个数组/表tabn=2k 每个存储在的整数 log(n)位。我们得到了第二个数组dlog(n) 位置,每个位置记录多个 log(n)位。对于任何t[0..log(n)1],我们定义 Xt=1 如果 tab[i] MOD d[t]=tab[n/2+i] MOD d[t] i[0..n/21]。除此以外,Xt=0。输出量t=0log(n)1Xt。我认为输入是用胶带给出的nlog(n)+log(n)log(n) 二进制数字,以解决EmilJeřábek的评论。

算法 A在RAM中。RAM与字长w=log(n) 需要 O(nlog(n)+log(n)2) = O(nlog(n))读取二进制字符串输入数据。但是在读取数据后,它只能与log(n)尺寸。算法A 计算任何 XtO(n) 通过所有 i[0..n/21]并测试条件。主循环A为了t=0,1,2,log(n)1: 计算 Xt。总的复杂度是O(nlog(n)) (读取数据)+ O(nlog(n)) (进行计算),因此 A 可以做到 O(nlog(n)) 在RAM上。

算法 A在1磁带TM上:我认为1磁带TM需要O(n2log(n)2) 固定时间 t。从TM的角度来看,At 等效于测试两个长度为二进制的字符串的相等性 O(nlog(n))。例如,MOD操作tab[i] MOD d[t] 可能等同于删除位 0tab[i]。在这种情况下,At 等效于对长度为bit的位串进行相等性测试 n(log(n)1)/2。众所周知,要测试两个长度相等的字符串m 要求 O(m2)在1-tape TM上,但我现在找不到真正的参考。但是,我提供了一个ps证明。如果TM执行主循环A,它至少要花费 O((nlogn)2) 每个 t=0,1,2,log(n)1,最终以 O(n2log(n)3)


ps。我展示了使用m不能比对带有m 位(已知疟原虫至少需要 O(m2)时间)。我们可以修改任何TM算法进行相等性测试来解决回文。假设相等性测试TM以两个整数开头:一个在头部的左侧,一个在右侧(这是TM的最简单输入形式)。左位置的每次移动都可以在右位置镜像(反射)。我们建立一个镜像的TM:只要初始TM位于某个位置x<0 (在左侧),镜像的TM位于 x(在右边)。如果TM在少于O(m2),此修改后的镜像TM可以在不到 O(m2)

此外,还有一些测试平等-TM算法,在那里,所有的人都需要二次的时间,因为他们需要一些曲折,参见例如图灵机示例2在courses.cs.washington.edu/courses/cse431/14sp/scribes/ lec3.pdf


回文的下限仅适用于非自然的单带模型。在线性时间内测试TM上两个字符串的相等性很简单。两个较长条目序列的相等性相同。同样,为了使问题完全有意义,两个机器模型的输入必须相同,即在有限字母上以字符串形式编写。因此,您的RAM将需要时间O(log n)来读取每个条目并将其转换为一个单词,从而使该操作毫无意义。
埃米尔·杰拉贝克(EmilJeřábek),

@EmilJeřábek,我将编辑我的答复以表明我只考虑1-tape TM。当您说TM可以在线性时间内测试相等性时,我想您认为是2带TM。但是,我了解到整个问题都与1-tape TM有关。关于输入形式,我必须承认,至少对于某些word-RAM,您可能是正确的。但是据我所知,C ++ int数组将整数一个接一个地存储,没有分隔符,就好像它们将一系列位存储在一起。16位上的10个整数恰好占据了160位,不是吗?即使不是这种情况,也可以制造一台以这种方式工作的机器。
Daniel Porumbel '17

3
复杂性理论中的标准图灵机模型是多带的。我在这里看不到C ++的意义,我们不是在讨论C ++,而是在讨论RAM模型。在此模型中,单个内存位置可以容纳多个长度O(logn),但我们仍然只能在一个(或 O(1))一次存储位置。特别是,我们一次只能访问一个位置的输入:没有任何操作可以让您“读取”logn输入位置,然后在恒定时间内将它们拼接成一个单词。
EmilJeřábek'17

有两种可能:(1)输入位置[0]包含第一个数字的第一位,位置[1]包含第一个数字的第二位,依此类推。那需要O(nlogn)就像在图灵机上一样,可以在RAM上读取时间。因此,即使使用单磁带TM,也只能获得二次加速。(2)输入位置[0]包含第一个数字,位置[1]第二个数字,依此类推。然后,该问题在TM上毫无意义,因为它无法处理这种形式的输入。因此,您根本无法获得任何提速,而只能在其中一种机器模型中表达这一问题。
埃米尔·耶拉贝克(EmilJeřábek),

@EmilJeřábek,根据您的评论,我编辑了问题以提出问题,并明确采用了RAM算法 O(nlog(n))读取数据(从磁带)。我删除了一些不再相关的言论。我希望这能解决您指出的问题。
Daniel Porumbel '17
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.