可计算的定义?

时间:2011-11-13 21:41:27

标签: computer-science

我想知道什么是可计算的“简洁”定义?我问,因为我对可计算的内容感到困惑。

只有停止时才能计算出某些东西吗?例如

function foo(){
 while(true);
}

不可计算,只是因为它永远不会停止?或者我是否将可计算的定义与暂停问题混为一谈?

由于

2 个答案:

答案 0 :(得分:0)

可计算性不是程序的属性。可计算性是数学问题的一个属性,它意味着存在一种算法,通过为每个问题实例提供正确的答案来有效地解决问题。

暂停问题是不可计算的,因为不存在完全解决它的算法(对于图灵完整的编程语言),但它不是可计算性的定义。

答案 1 :(得分:0)

如果考虑到某种(通常是纯理论的)计算机的能力,你可以证明有一种算法可以在有限的时间内解决这个问题。

有些东西是可以正式计算的。

因此,可计算性是计算机和问题的属性,而不是一段代码。

研究可计算性的两个有趣结果:

  • 某些类别的计算机在可计算的内容方面比其他计算机更受限制,但即使是一些非常简单的模型(如图灵机)也可以计算我们知道如何计算的所有内容。
  • 有些问题可以证明是不可计算的或不可判定的。停止问题就是这样一个问题。