2

这个问题的启发

假设我们有一个神奇的图灵机,它拥有无限的内存和无限的 CPU 能力。

发挥你的想象力,看看这怎么可能,例如它使用某种超空间连续体来自动并行化任何需要的东西,这样它就可以计算出任何可计算问题的答案,无论它的时间复杂度和数量是多少在一秒钟内完成实际的“逻辑步骤”。

但是,它只能在一秒钟内回答可计算的问题……所以我不是在假设一台“不可能”的机器(至少我不这么认为)……例如,这台机器仍然无法解决停机问题。

这种机器的编程语言会是什么样子?我目前所知道的所有编程语言都必须对“算法复杂性”做出一些让步……尽管消除了这种限制,但我希望我们所关心的只是编程语言的“表达能力”。即它能够简洁地表达“可计算的问题”......

无论如何,为了希望有趣的讨论,将其作为社区 wiki 开放......

4

11 回答 11

4
SendMessage travelingSalesman "Just buy a ticket to the same city twice already. You'll spend much more money trying to solve this than you'll save by visiting Austin twice."
SendMessage travelingSalesman "Wait, they built what kind of computer? Nevermind."
于 2009-05-28T11:38:58.567 回答
4

这真的不合逻辑。如果一件事需要 O(1) 时间,那么做 n 次将需要 O(n) 时间,即使在量子计算机上也是如此。“一切”不可能花费 O(1) 时间。

例如:Grover 算法,即您所链接问题的已接受答案中提到的算法,需要 O(n^1/2) 时间才能在包含 n 个项目的数据库中找到一个元素。那不是 O(1)。

于 2009-05-28T11:39:34.073 回答
3

内存量或内存速度或处理器速度并不能定义算法的时间和空间复杂度。基础数学就是这样做的。问如果一切都可以在 O(1) 中计算,编程语言会是什么样子,就像问如果 pi 是 3 并且所有平方根的结果都是整数,我们的计算器会是什么样子。这真的是不可能的,如果不是,它不太可能很有用。

现在,问问我们自己,我们将用无限的处理能力和无限的记忆来做什么可能是一个有用的练习。我们仍然必须处理算法的复杂性,但我们可能会以某种不同的方式工作。为此,我推荐《百年语言》

于 2009-05-28T11:51:04.907 回答
2

请注意,即使停止问题是不可计算的,“在所有可能小于 M 的输入上,是否会在 N 步内停止”!

因此,任何编程语言都将成为纯粹的规范。您需要做的就是准确地指定函数的前置条件和后置条件,编译器可以实现最快的代码来实现您的规范。

此外,这将很快触发奇点。如果你可以进行近乎无限的计算,那么构建一个人工智能会容易得多——一旦你有了一个,任何效率的,它都会问一个可计算的问题:“如果我花了十亿年的时间思考它,我将如何改进我的程序? “……

于 2009-05-29T21:29:22.680 回答
2

它可能是一种类似haskell的语言。老实说,编写代码是一个梦想。您编写类型、类和函数的“法则”,然后放开它们。它非常有趣,功能强​​大,您可以编写一些非常简洁和优雅的代码。这就像一门艺术。

于 2009-05-28T11:36:40.040 回答
1

也许它看起来更像是伪代码而不是“真实”代码。毕竟,您不必再担心任何实现细节,因为无论您采用哪种方式,它都足够快。

于 2009-05-28T11:33:45.613 回答
1

您低估了 O(1)。这意味着存在一个常数 C>0,因此计算问题的时间仅限于该 C。

您忽略的是 C 的实际值可能很大,并且对于不同的算法它可能(并且大部分情况下)不同。您可能有两种算法(或计算机 - 没关系),两者都使用 O(1),但在一个中,这个 C 可能是另一个中的十亿倍 - 然后后者会慢得多,并且在时间方面可能非常慢。

于 2009-05-28T11:36:56.997 回答
1

可扩展性将不再是问题。我们会拥有比我们更聪明的人工智能。我们不再需要编程,而是人工智能会在我们自己意识到之前弄清楚我们的意图。

于 2009-05-28T11:39:23.450 回答
1

SQL 就是这样一种语言——你要求一些数据,然后你就得到了。如果您不必担心 db 的微小实现细节,这甚至可能会很有趣。

于 2009-05-28T11:49:16.143 回答
0

如果这一切都在一秒钟内完成,那么大多数语言最终都会是这样的,我称之为 DWIM 理论(Do what I mean theory):

Just do what I said (without any bugs this time)

因为如果我们曾经开发出一台可以在一秒钟内计算出所有事情的机器,那么我们可能会在那个阶段拥有精神控制,至少是人工智能。

于 2010-08-24T22:18:01.247 回答
-1

我不知道会出现什么新语言(我是物理学家,而不是计算机科学家),但我仍然会用 Python 为它编写程序。

于 2010-12-16T06:57:34.933 回答