如何判断实数计算复杂性的定义是自然的还是合适的?


11

众所周知,算法的计算复杂度的定义几乎没有争议,但是实数或实数计算模型的定义却不在这种情况下。我们在《可计算分析》一书中了解了Blum和Smales的模型和模型。看起来,可计算分析中的模型与经典模型是一致的,但是实物的计算复杂性的定义无法移植到经典模型中。

如何判断实数计算复杂性的定义是自然的还是合适的?

以及如何将实数计算复杂性的定义移植到经典模型中?


对于第一个问题,“自然”是一个非常主观的概念,根据您询问的人的不同,一个或另一个定义将被认为是最自然的。至于“合适的”,则取决于:BSS模型似乎适合于计算几何或计算代数几何,而Computable Analysis中的模型更适用于... Computable analysis!我不明白第二个问题。
布鲁诺

@Bruno,谢谢您的评论,我认为可计算分析中的模型,并且不知道如何将计算复杂性的定义应用于图灵机等经典模型的实数计算,因为实数对模型的计算复杂性在可计算分析中,它取决于它的表示形式,即它的计算输入。
XL _At_Here_There 2014年

3
您似乎认为实数计算有一个复杂性概念,它与实数的表示形式无关。是什么让你这么想的?在经典复杂性中也不是这种情况。无论您是使用磁带机还是RAM机,您是否要用邻接表或01矩阵等表示图形都非常重要。–
Andrej Bauer

3
但是,复杂度不取决于表示形式并不是真的。通过切换到愚蠢的表示,您总是可以破坏算法的复杂性。要问的问题是:“什么是输入的良好表示形式?” 对于离散问题,这比对实数要容易得多,因为人们对于“不要浪费比特”有很好的感觉。
Andrej Bauer 2014年

3
BSS模型似乎适合于计算几何 -请参阅我对一个相关问题的回答。计算几何体使用的Real RAM模型比Blum,Shub和Smale早了近十年。
Jeffε

Answers:


13

我不确定这是什么问题,但是我可以尝试说一下以消除可能的误解。

首先,如果我们谈论的是一个地图的复杂性,它使没有意义的问“什么是一个很好的代表性f:R[R?”相反,您必须问“对于f的所有输入,什么是良好的表示形式?”。将情况与离散数学中的一种更简单的情况进行比较:当您讨论将图形作为输入的算法时,您不会询问“我们应该将Petersen图表示为邻接表还是二进制矩阵?”但是您会自动想到一个统一表示,该表示将适用于所有图。2F

另一个警告。通过更改输入数据的表示形式,我们总是可以使任何问题(包括不可计算的问题)都是可微计算的:为了使可计算,将A的元素表示为对a f a 。然后,您可以通过第二个投影“计算” f。这表明我们需要明确的标准来表示数据。F一种一种一种F一种F

我已经写过几次有关表示元素的方法的文章。答案取决于您要捕获的R的结构。例如,如果尝试不捕获任何结构,则可以用空列表表示所有实数。表示R的条件的合理列表是:[R[R[R

  1. 算术运算符×/以及绝对值|都是可计算的- | +×-/|-|
  2. 有一个程序,它为(的表示)真实ķ Ñ和输出整数p q,使得| x p / q | 2 - ķ,即,它可以计算任意良好合理近似。Xķñpq|X-p/q|2-ķ
  3. 有一个程序接受和表示实数y,并且仅当x < y时才终止,即严格顺序是半确定的。XÿX<ÿ
  4. Xññ|Xñ+1个-Xñ|2-ññXñ

有一些古老的定理(请参阅本白皮书的介绍以获取参考)可以解释为什么这些条件是正确的。这些定理还表明,实数的任何两个此类表示都是可计算的同构,也就是说,我们可以使用程序在它们之间进行转换。这为正确性设置了一些标准,从而排除了错误的想法。

例如,我听到有人说“有理数可以用有限的信息表示,所以让我们将它用于有理数,而无理数必须用无穷的信息表示”。这种事情是行不通的,因为它打破了上面的第四个条件(考虑非理性数字的限制-您如何判断它正在收敛为有理数?)。

上述条件消除的另一个示例是Blum-Shub-Smale模型,因为您无法在其中计算序列的极限。最好说,BSS模型适用于实数的离散有序子字段(由存在的任何参数生成),而不适用于实数本身。

在实数的正确表示中,有些实比其他更有效,尽管由于实数是无限的对象,所以这是一个很难讨论的话题。马蒂亚斯·施罗德(MatthiasSchröder)指出,对于一种合理的复杂性理论,必须注意表示的拓扑性质。

最后,假设我们具有的良好表示,我们应该如何测量映射的复杂度?因为由一个函数或一个无限的信息流或诸如此类表示,所以我们应该使用复杂性更高的概念之一。哪一个可能取决于您使用的表示形式。F[R[R[RX[R

BSS模型也是一种合理的电路复杂性模型,我们在其中计算算术运算。请记住,此模型不是关于实数,而是其他内容。


2
非常感谢您的回答,以及许多参考。对于某些计算复杂性的概念,我感到不舒服,让我阅读一下参考文献并思考了一下,然后举一个例子,如果我能找到合适的人来解释为什么我如此不舒服(这听起来很有趣,但是我的经验告诉我如果我感到不舒服,则必须有单数)
XL _At_Here_There 2014年

4
以我的经验,对新知识感到不舒服是一个好兆头,通常这是启蒙的先决条件。
安德拉斯·萨拉蒙

3

可能要探索的另一个模型是可行RAM模型。这是用于实数计算,可行的RAM的修改后的实数RAM模型,或使用离散和实数值算术运算的修改后的RAM模型。该模型允许实际和离散操作,并且Turing模型可以与其互换。可行RAM模型具有由不确定性定义的精度,这意味着仅允许对实数进行比较,直到不定的不确定性1 /(k + 1)。这允许近似计算。另外,正如Vasco Brattkaa和Peter Hertlingb在可行的实际随机存取机器中所陈述的那样,图灵的模型与可行的真实RAM的模型相关。图灵机上所有可计算的时间为函数<ķØŤ可以在时间上在RAM上计算,并且在相反的情况下,图灵机需要一些开销来计算函数(如果实际RAM在中计算函数,则TM在计算函数)。正如指出的拓扑考虑是有用的,人们不知道是否存在针对该计算模型开发的任何拓扑上下文以允许进行实际计算-这具有不确定性在精度上。ØŤØŤØŤ2ØGŤØGØGŤ


您能为可行的RAM模型提供一些参考吗?
XL _At_Here_There 2014年

请参阅上面的区域中的“ ...此引用状态...”具有指向该文章的链接。
user3483902 2014年

2
感谢您指出Brattka&Hertling的工作,那时我忘了提起它。我只想指出,可行RAM模型不包含任何高阶函数,特别是它不能计算(快速)柯西序列的极限,因此我不认为它是精确实现“实数”。可以这么说(可以在顶层)计算一个极限(请参阅本文中有关函数有理逼近的部分)。
Andrej Bauer 2014年
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.