如何证明任何算法都无法写的数字的存在?


14

我有问题:

证明存在一个实数,没有一个程序存在无限长的运行时间并写入该数的十进制数字。

我想可以通过将其简化为停止问题来解决,但我不知道如何解决。

我也希望与类似问题的链接有待进一步练习。




Yuval Filmus提供了有趣的答案,您应该仔细阅读。停止问题“是事物”,您可以尝试将其减少问题上,而不是相反(将问题减少到停止-正如您在问题中所假设的那样)。
quetzalcoatl

通过更正引用部分中的语法,可以改善此问题吗?我觉得很难解析。
JimmyJames

@JimmyJames,我已尽力将其翻译成俄语:Объясните в одно предложение, почему существует такое вещественное число, для которого не существует программы, которая будет работать бесконечно долго и выписывать цифры его представления в десятичной системе счисления。希望有人能改善我的翻译。
刷新

Answers:


18

正如塞巴斯蒂安(Sebastian)指出的那样,仅(无限)有许多程序。列出它们以创建程序列表。该列表很长(但无限)。每个程序在R中生成一个数字。由此,我们可以在R中创建一个(无限但可计数)数字列表。现在,我们可以直接应用Cantor的对角线参数来证明仍然必须存在其他数字。

顺便说一句,如果算法具有(有限)个参数,则可以将其重写为一个“较长的”程序列表,其中每个程序都没有任何参数。

关于您的注释“如果允许使用实数作为自变量怎么办”,那么问题的前提是错误的:然后可以生成R中的所有数字。如果有人找到一个数字,例如皮,并声称无法计算,那么我们可以使用以下“算法”:

func(number):
    return number

并打电话给func(皮)


17

实际上要简单得多。只有可数的算法。然而,有无数的实数。因此,如果您尝试将它们配对,则会留下一些实数。



1

该数字是一个无限长的数字,它在小数点后编码所有不停止的图灵机。有了这个数字,您将能够解决暂停问题。

您可以在号码中“搜索” TM并并行运行它。如果TM停止,则停止。如果没有,您将“在号码中找到其代码”。

证明有很多修改,您应该能够在第一堂复杂的课程之后重现它们:-)



是的,芽更容易理解...
smrt28

-2

点在函数y = 2x中沿路径移动。当横坐标是不可计算的数字时,Point无法计算其路径,但是我们知道它还在继续。因此,不可计算的数字可能根本存在。

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.