这个学期刚好上这门课,此课绝对是CS课程中的神课,需要一定的决心和耐心才能啃下来。这篇文章可以说是一篇科普文,争求通俗易懂。
可计算理论是计算理论的一个分支,还有两个分支分别是自动机和计算复杂性。
这些名词都顾名思义,自动机讲的是计算的模型,比如图灵机,它是由无限长磁带,读写磁头和一些状态转移序列组成;可计算理论,研究的是一个函数(或程序)是不是能被计算,但是什么叫能被计算呢,比如说给定x,你给我计算出2x,这个函数就是可计算的,那又有什么函数是不可计算的呢?稍后你会看到著名的停机问题,这个程序就是不可计算的;计算复杂性研究的是如何有效地解决问题。
这刚好是计算的三个方面:计算的模型,计算的界限,计算的代价。
现在让我们关注可计算性这个方面。
什么是可计算函数?
如果存在一段程序来计算一个函数,那么这个函数就是可计算的。通俗来讲,你能用编程语言写出来并运行的都是可计算函数,更通俗来讲,你写完程序,在windows下会生成一个exe执行文件,假设打开后会提示你给一个程序的输入,这个程序根据这个输入能计算出相应的结果,可以把这个程序看为一个函数,给定x,输出f(x)。以后你每次想计算f(x),只要运行相同的程序就可以了。处理一类问题有相同的算法,这样的函数叫可计算函数。比如给x,输出x^2+6,就是可计算的。