对于像我这样的以算法为生的人来说,21世纪的计算标准模型是整数RAM。该模型旨在比图灵机模型更准确地反映真实计算机的行为。现实世界中的计算机使用并行硬件在恒定时间内处理多位整数。也不是任意整数,而是(因为字长会随时间稳定增长)也不是固定大小的整数。
模型取决于单个参数,称为单词大小。每个内存地址都包含一个w位整数或word。在此模型中,输入大小n是输入中的单词数,算法的运行时间是对单词进行操作的次数。根据定义,对单词的标准算术运算(加法,减法,乘法,整数除法,余数,比较)和布尔运算(按位和,或xor,移位,旋转)需要O (1 )时间。wwñO (1 )
正式地,为了分析该模型中的算法,字长不是常数w。为了使模型与直觉一致,我们需要,否则我们甚至不能存储整数ñ一个字。但是,对于大多数非数值算法,运行时间实际上与w无关,因为这些算法并不关心其输入的基础二进制表示形式。Mergesort和heapsort都在O (n log n )时间中运行;3个快速中位数在O (n 2w ^ ≥ 日志2ññwØ (ñ 日志n )时间在最坏的情况下。一个值得注意的例外是二进制基数排序,它以 O (n w )时间运行。Ø (ñ2)ø (Ñ 瓦特)
设置得到传统的对数成本RAM模型。但是一些整数RAM算法是为更大的字长而设计的,例如Andersson等人的线性时间整数排序算法。,这需要瓦特= Ω (登录2 + ε Ñ )。w = Θ (对数n )w = Ω (对数2 + εn )
对于实践中出现的许多算法而言,字长根本不是问题,我们可以(并且愿意)依靠更为简单的均成本RAM模型。唯一的严重困难来自嵌套的乘法,它可以用于构建非常大的整数非常快。如果我们可以在恒定时间内对任意整数执行算术运算,则可以在多项式时间内解决PSPACE中的任何问题。w
更新:我还应该提到“标准模型”的例外,例如使用多带图灵机(或等效地,称为“位RAM”)的Fürer整数乘法算法和大多数几何算法(在理论上进行了分析)干净但理想化的“真实RAM”模型。
是的,这是一罐蠕虫。