程序与计算:从基础概念到不可计算函数
1. 计算的历史与重要性
计算的历史和数学一样悠久,早期的数学实际上就是计算的艺术。随着数学家们证明越来越多的通用结果,他们逐渐开始考虑一些在实际中无法计算,但在理论上可计算的问题,即假设计算时间不受限制时可计算的问题。最终,他们还遇到了即使在理论上也无法计算的问题。
算法在数学中一直占据着重要地位,因为如果无法计算理论的结果,就无法将其应用于实际问题。我们与现实世界的交互本质上是可计算的,所以任何理论都应该提供计算指令,否则就无法对其进行测试。不过,也有许多理论结果并不会直接产生算法,比如表明某些结构不存在或某些计算不可能的结果,这些结果更多地是起到警示作用。
在20世纪后半叶,计算理论,尤其是其应用部分,从数学中分离出来,计算成为了一个新兴的产业。计算机科学和物理学一样,研究具体的事物——计算机及其计算过程。但计算也存在许多纯粹的理论问题,这些问题更属于数学范畴。其中一个主要问题是在有限资源(时间、计算机大小和内存)的情况下能计算什么。这个问题不仅对计算机科学至关重要,对数学基础也有重要意义,因为我们与世界的交互也受到同样的限制,我们的大脑也可以看作是某种计算机,而且我们个人和人类整体使用大脑的时间都是有限的。
2. 算法与程序的基本概念
算法的主要特性是,对于其设计要解决的每个具体问题实例(即每个输入),它只应使用有限的时间和空间。这是进行物理计算的必要条件,但对于实际计算来说,这还远远不够。有些问题需要大量的时间,实际上是无法计算的,这就引出了对计算所需资源(时间和空间)的研究,即计算复杂性理论。
在计算理论中,存在着与逻辑类似的二元性。有对计算的描述,即算法或程序,还有
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



