哪种计算模型是“最佳”的?


41

图林在1937年描述了一种图灵机。从那时起,已经描述了许多计算模型,以试图找到一个类似于真实计算机但仍然足够简单以设计和分析算法的模型。

结果,我们有许多算法,例如针对不同计算模型的SORT问题。不幸的是,我们甚至不能确定在允许位向量运算的字RAM中运行时间为O(n)的算法的实现比在运行时间为O(n⋅logn)的算法中的实现快一个单词RAM(当然,我只在谈论“好的”实现)。

因此,我想了解现有模型中哪个是设计算法的“最佳方法”,并且我正在寻找有关计算模型的最新详细调查,以了解模型的优缺点及其与现实的接近程度。


1
交叉发布在MathOverflow(mathoverflow.net/questions/44558/…)上,但在此重定向。
戴夫·克拉克

@Tatiana,好问题,“最好的”是什么意思?您是说理论运行时间接近“实际”运行时间的模型吗?
Mohammad Al-Turkistany

8
如果您希望准确地对“实际”运行时间进行建模,那么准确地对缓存进行建模似乎很重要。特别是,现代计算具有许多缓存层(CPU,RAM,磁盘等),其中某些层的缓存速度要比其他层慢几个数量级。由高速缓存未命中次数来确定算法的“实际”运行时并不是没有问题的。有趣的是,尽管有很差的理论保证,但线性编程中的屏障方法仍然表现出色的一个原因是,它们通常具有相当高的缓存效率。
mhum

4
据mhum所说,据我所知,Word RAM模型中预测运行时间与实际运行时间的最大差异通常是由于数据检索而引起的...错误的变量位于高速缓存中,并且检索时间变慢正因为如此 有很多尝试使用理论上的分层内存模型对此进行建模,但我不认为这些尝试中的任何一项都非常成功,因为这些模型最终过于复杂而无法轻松使用。
Peter Shor 2010年

2
如果您有一种认为在实践中可能有用的算法,并且希望看到它的实际使用,那么可以做的最好的事情就是确保它是实现它或让其他人实现(即使它不是一个好方法)。足以整合到实际软件中的实现方式)。对于此案例研究,请查看LZW数据压缩算法的历史。实际上,除非人们感兴趣地实现缓存,否则试图弄清楚缓存如何影响算法可能毫无意义。否则没人会关注您的结果。
彼得·索尔

Answers:


30

从您的角度来看,我一直认为标准Word RAM模型是“最好的”。学会使用C语言(或Java等类似宽松形式的语言)进行编程的每个人,在想到计算机时都牢记这种模型。

当然,有时您需要根据工作方式进行概括。外部存储器模型是要记住的重要模型。它不仅适用于使用磁盘,而且适用于理解(迫使您注意)缓存。当然,过分对待它也可能导致无意义的结果,因为纯外部存储器模型不计入计算量。Word RAM的另一种概括是并行性,但是目前我们有点困惑:)

运行时间为的算法肯定比运行时间为的算法要快。这是一个数学事实,对于大而言,前者会更快:)您的问题大小可能根本不够大,以至于无济于事。既然您提出了排序,让我向您保证,对于合理的基于比较的算法来击败基数排序将非常困难。O(n)O(nlgn)nn

关于算法和“现实性”的最后一句话:始终牢记您要实现的目标。当我们从事算法工作时,我们正在尝试解决最困难的问题(例如,对50个变量进行SAT运算,或对十亿个数字进行排序)。如果您尝试对200个数字进行排序或对20个变量求解SAT,则不需要任何奇特的算法。这就是为什么现实中大多数算法都是微不足道的。这并不表示算法研究有什么不好,我们只是对那不寻常的实际问题中的1/1000感兴趣而感到兴趣……


感谢您的回答。我想了解,哪些概括值得添加到Word RAM中。我们能否描述一个模型,该模型将包括所有这些技巧,例如位向量操作,并行性,缓存,并且仍然很简单?
Tatiana Starikovskaya

10

没有哪一种完全令人满意的计算模型可悲地分析算法,即使是在传统环境中也是如此。这是假设所有数据都易于访问,并且工作空间实际上是不受限制的。

多年以来,多带Turing机器在理论上无疑是明确指定的,并且已经在此模型中设计和分析了许多算法。但是,对于某些人来说,它与实际计算机的工作方式并没有真正紧密相关,无法真正成为21世纪使用的良好模型。另一方面,word-RAM模型已变得流行起来,似乎可以更准确地捕获现代计算机的工作情况(对字而非位的操作,对存储位置的恒定访问)。但是,有些方面并不理想。例如,没有一个单词RAM模型。必须首先指定在恒定时间内允许对单词进行哪些操作。有许多选项,没有一个公认的答案。第二,通常将字长w设置为随输入大小而增长(至少与log(n)一样快),以允许使用恒定数量的字来寻址内存中的任何项目。这意味着必须想象一台无限种类的机器在其上运行算法,甚至更糟,当您向其提供更多数据时,机器会发生变化。至少对于我的学生来说,这是一个令人不安的想法。最后,通过word-RAM模型,您会得到一些令人惊讶的复杂性结果,这可能与那些作为学生学习的人不符。例如,在此模型中,两个n位数字的乘积是O(n)时间,而简单地读入n位字符串是突然的亚线性时间操作。这意味着必须想象一台无限种类的机器在其上运行算法,甚至更糟,当您向其提供更多数据时,机器会发生变化。至少对于我的学生来说,这是一个令人不安的想法。最后,通过word-RAM模型,您会得到一些令人惊讶的复杂性结果,这可能与那些作为学生学习的人不符。例如,在此模型中,两个n位数字的乘积是O(n)时间,而简单地读入n位字符串是突然的亚线性时间操作。这意味着必须想象一台无限种类的机器在其上运行算法,甚至更糟,当您向其提供更多数据时,机器会发生变化。至少对于我的学生来说,这是一个令人不安的想法。最后,通过word-RAM模型,您会得到一些令人惊讶的复杂性结果,这可能与那些作为学生学习的人不符。例如,在此模型中,两个n位数字的乘积是O(n)时间,而简单地读入n位字符串是突然的亚线性时间操作。

说了这么多,如果您只是想知道您的算法是否有可能快速运行,那么任何一种都可能会:-)


2
我认为,如果为了避免“机器随输入大小的增长”问题而避开按位运算或字模型算术运算,但仍使用统一成本的RAM或指针机器,那么您就在自欺欺人:其他型号也有同样的问题。他们如何索引他们的输入?答案是:真正的计算机内存不足,但是尽管假设它们是RAM(或者考虑到内存层次结构成本的模型可能更好),但为它们设计算法仍然比假设它们更方便。 DFA。
David Eppstein 2010年

4
例如,Knuth讨论的RAM模型花费w时间来查找具有w位的地址,并且花费w时间相加两个w位数字(这就是他如何将Theta(n log n)乘以两个n RAM模型中的1位数字,而无需对字进行任何恒定的时间操作)。有趣的是,在过去20年中,最广泛接受的模型已经发生了变化,并且有多少个模型根本不再讨论。
拉斐尔

8

模型只是模型。我不会把它推得太远。他们讲述了您的算法的某些方面,但并没有提供全部真相。

我建议您仅在分析中使用标准word RAM模型实施该算法,并查看其在实践中的表现如何。

(实际上,只是在不运行算法的情况下就执行它就可以告诉您很多有关……一方面,它可以证明是可实现的。)


3
好吧,我有两个反对意见。首先,没有多少理论家实现算法,但是我们将以某种方式进行比较。其次,我想了解我们可以在不失去其简单性的前提下将计算机的哪些功能添加到模型中。
Tatiana Starikovskaya

11
大卫·约翰逊(David Johnson)为此提出的解决方案是让更多的人实现算法-他发起了ALENEX和DIMACS Challenges来解决这个问题。我也有一些经验。与Ken Clarkson一起,我设计了一种随机凸包算法,我们认为它在实践中会很好地工作。克拉克森在贝尔实验室有一个暑期学生来实现它。基于此实现的承诺,这些想法被应用到了qhull程序中(由Geometry Center编写),但是通过一些启发式的加速操作,这意味着该算法在理论上不再保证它可以快速运行。
彼得·索尔

5

如果您的计算任务更多是关于移动数据而不是执行(算术)操作(数据集非常庞大,因此它们甚至无法放入主内存中),则使用I / O模型(由Aggarwal和Vitter于1988年引入)可以非常准确。对于诸如置换主存储器中的大量元素之类的任务,可以使用I / O最佳算法(在谨慎的实现中)。

对于现代多核计算机,Arge,Goodrich,Nelson和Sitchinava在2008年推出的并行变体可能是一个准确的模型。


5

如果您指的是使生活变得更加复杂的“最佳”计算模型,则可以使用Wolfram的2状态,3符号通用图灵机。

优点:除了在理性与疯狂之间走细线的感觉外,没有其他感觉;

缺点:吨...

:-D(只是开个玩笑,我基本上同意前面的答案...)


1

在一个更理论上的注释上:纳米计算机的终极理论模型文章认为,可逆的3D网格模型是最佳的计算物理模型,从某种意义上讲,没有其他物理模型可以更快地渐近。讨论了诸如光速,Landauer原理Bekenstein界等物理考虑。

引用摘要:

我们发现,使用当前的技术,仅包含几百个电路层的可逆机器可能会胜过任何现有机器,而基于纳米技术的可逆计算机只需要跨过几微米即可胜过任何可能的不可逆技术。

我们认为,可逆3D网格的硅实现对于今天加快某些科学和工程计算的价值可能是有价值的,并建议该模型应成为解决广泛问题的并行算法理论中未来研究的重点。

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.