我们不知道它们是否终止的最简单的程序示例是什么?


27

停止问题指出,没有算法可以确定给定程序是否停止。结果,应该存在一些我们无法确定它们是否终止的程序。此类程序最简单(最小)的示例是什么?


您的回应自相矛盾.....谢谢!但是停止程序假定源的知识。...如果是真的,您已经回答了您的问题。停止程序已经知道。想象一个控制标牌的系统,它总是亮着并闪烁,什么时候关闭?电源故障,电源开关或闪烁序列期间。或给定备用电池和发电机,再也没有。
htm11h 2015年


我还要补充一点,如果您不设置时间上限,则暂停问题只是一个问题。当然,在实践中得到答案太迟而无用和永远都没有答案之间没有区别。您可以询问程序是否会在多个步骤中返回答案,例如实时性的正确性定义。如果您不能保证及时回答,那么您仅拥有缺少正确性保证的程序。

1
@Rob事实并非如此。如果您不知道机器是否会停止运行,则可以无限期等待以查看机器是否停止运行。一千年之后,您仍然不知道它是否会在第二天停止。
Kyle Strand

@KyleStrand我同意你的看法。但是我也要说的是,实际上这是一个完全夸大的问题,因为所有现实的计算都受期限(毫秒到几个月)的限制。如果您需要5秒钟的答案才能使它有用,那么唯一重要的是您是否可以在5秒钟内保证答案。假设您可以保证在不确定的时间内进行计算就可以得出答案。那将是无用的保证。
罗布

Answers:


41

一个非常简单的示例可以是测试Collat​​z猜想的程序:

f(n)={HALT,if n is 1f(n/2),if n is evenf(3n+1),if n is odd

它的公知的,以停止对高达至少,但一般来说它是一个开放的问题。n5×2605.764×1018


9
从问题下方的评论中强调我的观点:问题“是否对所有都停止?” 是可计算的nf(n)n
拉斐尔

6
@KyleStrand看到这里
拉斐尔

10
@ KyleStrand,Raphael是100%正确的。这是一个普遍的误解。您必须非常仔细地定义一下定义,然后您可能会发现自己的直觉与定义不完全匹配。根据可计算的定义,只要有存在一个图灵机计算它-它不会不管我们是否知道图灵机是什么。乍一看,许多学生认为这是作弊,但事实并非如此,这只是定义的结果。
DW

2
@KyleStrand您必须摆脱程序必须解决问题的想法。它不是。它只需要输出答案,这是一个微不足道的任务。从算法上讲,有限实例集的问题无聊,因为我们可以对答案进行硬编码。(即使我们不知道答案,我们仍然知道有一个正确的算法。)通常,当显示出某事物没有算法时,您就不会对它的运行方式做出任何假设工作。我们缺乏想象力并不能提供证据。
拉斐尔

2
@KyleStrand Afaik,我今天使用的是可计算性的标准定义(而afaik已经使用了数十年)。我建议您吸收答案和链接的资料,并找出哪里出了问题。对于我和其他人来说,一遍又一遍地重复同样的事情是没有意义的。再试一次:可计算性的定义本质上是存在的,而不是建设性的。只要你认为经典逻辑的领域内,没有必要在所有能够交出一个“求解”算法-我们只需要表明的是一个给出正确的答案。
拉斐尔

31

停止问题指出,没有算法可以确定给定程序是否停止。结果,应该存在一些我们无法确定它们是否终止的程序。

“我们”不是算法=)没有通用的算法可以确定给定程序是否为每个程序都暂停。

此类程序最简单(最小)的示例是什么?

考虑以下程序:

n = 3
while true:
    if is_perfect(n):
            halt()
    n = n + 2

函数is_perfect检查n是否为一个完美数。尚不确定是否有奇数个完美数字,因此我们不知道该程序是否暂停。


7
我们是一个算法。
PyRulez

3
@PyRulez没有证据表明人脑的计算能力等同于Turing Machine。该证明不起作用,例如,未知如何在另一个脑子中模拟一个脑子。
2015年

1
@avsmal好的,但是我们不可能进行超计算。
PyRulez

2
@PyRulez约翰·卢卡斯(John Lucas)和罗杰·彭罗斯(Roger Penrose)提出,人的思想可能是某种量子力学增强的“非算法”计算的结果。这是一个很强的假设。但是至少我们的思想可能有一些不确定性。这足以破坏证明:如果不知道图灵机是否停止,就不可能否定“随机化”(对于随机含义的适当定义)。
2015年

5
量子计算被认为是超计算吗?我认为量子计算机可以通过图灵机完美模拟-慢一点。
MaiaVictor

10

你写:

停止问题指出,没有算法可以确定给定程序是否停止。结果,应该存在一些我们无法确定它们是否终止的程序。

这是一个双向的非必修课。您屈服于一个值得解决的普遍谬论

给定任何固定程序,其停止问题(“总是停止吗?”)始终是可确定的,因为答案是“是”或“否”。即使您不知道是哪一种,您也知道两种简单的算法之一总是回答“是”。“否”解决了停止问题。P PPPP

仅当您要求该算法解决所有¹程序的暂停问题时,您才能证明不存在这种算法。

现在,知道停机问题是不可判定并不意味着有任何的程序没有人不能证明终止或循环。即使您没有图灵机强大(这只是一个假设,而没有证明的事实),我们所知道的是,没有哪个算法/人可以为所有程序提供这样的证明。每个程序可能都有不同的人来决定。

其他相关阅读:


因此,您看到您的实际问题(如下重复)与停止问题是否可计算无关。完全没有

什么是[我们不知道要暂停或循环的程序]的最简单(最小)示例?

S

g(n)={1,S true,g(n+1),else.

当然,这些不是很“自然”。


  1. 不一定全部,但在某种意义上是“许多”。至少有无限多个。

评论不作进一步讨论;此对话已转移至聊天
拉斐尔

为了尝试改写我自己的理解,是否应该说,虽然没有唯一的算法可以确定给定的程序是否暂停,但是可能有一些特定于程序的算法可以解决每个可能程序的暂停问题?
Asad Saeeduddin

@AsadSaeeduddin这是“更糟糕的”:对于每个给定的有限程序集,停止问题都是微不足道的每个有限集都是可判定的。
拉斐尔

7

关于具有特殊属性的数字的存在的任何开放性问题都会引起这样的程序(搜索这样的数字的程序)。例如,以Collat​​z猜想为例;因为我们不知道它是否为真,所以我们也不知道以下程序是否终止:

    n:=1;
    found:=false;
    while not found do
      s:={};
      i:=n;
      while i not in s do
        add i to s;
        if i even then i:=i/2 else i:=3i+1
      if 1 not in s then found:=true;
      n:=n+1  


0

这个问题很棘手,因为可确定性(CS等效形式化/停止问题的一般化)与语言相关联,因此需要以这种格式进行重铸。似乎并没有指出太多,但是数学/ CS中的许多未解决问题可以很容易地转换为可判定性未知的问题(语言)。这是因为定理证明和(不可)可判定性分析之间的紧密对应。例如(有点像奇数完美答案的其他答案),可以追溯到希腊人(超过两千年前)的双素数猜想,并且受到例如Zhang / Tao等人最近的重大研究进展的影响。将其转换为以下算法问题:

输入:n。输出:是/ 否至少存在n个双素数。

该算法搜索孪生素数,如果找到n个素数则停止。目前尚不知道这种语言是否可判定。解决孪生素数问题(询问是否存在有限或无限数)也将解决该语言的可判定性(如果也被证明/发现了有限数目的话)。

另一个例子,采用黎曼假设并考虑以下语言:

输入:n。输出:Y / N至少存在n个黎曼zeta函数的非平凡零。

该算法搜索非平凡的零(代码不是特别复杂,其类似于求根,并且存在其他相当简单的等价公式,它们基本上计算所有小于x的质数的“奇偶校验”之和),并在出现以下情况时停止它找到n个,并且不知道该语言是否可判定且分辨率“几乎”等于解决黎曼猜想。

现在,一个更加壮观的例子呢?(警告,可能还有更多争议)

输入:c:输出:是/否存在用于SAT 的O(n c)算法。

同样,这种语言的可判定性解决方案几乎等同于P vs NP问题。但是,在这种情况下,不太可能出现“简单”代码的问题。


1
反对者会解释这个答案有什么问题吗?
MaiaVictor

2
NnNNa,b,can+bn=cnnN=2
vonbrand,2015年

3
我不是拒绝投票的人,但是此答案中的所有主张都是错误的。所有这三个问题都是可以确定的(不需要作任何未经证实的假设)。为什么,请仔细研究拉斐尔的答案。
DW

好的,也许输入需要指定TM,并且算法决定TM是否计算问题。必须多考虑一下...认为针对这些类型的问题有一些简单的配方,基本上将开放的问题与不确定的语言联系在一起...但是同意这很少在CS参考文献中记录/制定...仅发现了一些零散的问题refs ...或者输入是证明,语言会验证证明是否正确...其他高投票答案提到了奇数,奇偶问题等...程序对于特定常量未知是否停止。
vzn15年

对困惑感到抱歉!经过进一步思考,断言的形式是正确的,即它们描述了未知程序(对于所有输入)都未知终止的简单程序(即原始问题),而DW勾勒出/指出的总体思路的失败则试图将其转换为不确定的语言。将继续考虑后一种构想,以寻找成功的构想。另一种看待问题的方法是,问题可以看作是暂停问题解决程序的单独实例/ 输入,但实际上并不能等同于暂停问题本身。
vzn

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.