4

理论计算机初步:算法和计算模型

 3 years ago
source link: https://zhiqiang.org/cs/preliminary-computer-theory-algorithms-and-calculation-model.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

理论计算机初步:算法和计算模型

作者: 张志强

, 发表于 2006-08-16

, 共 1138 字 , 共阅读 127 次

系列:理论计算机初步

查看该系列所有文章

下面是 wikipedia 上算法的定义

算法是指完成一个任务所需要的具体步骤和方法。也就是说给定初始状态或输入数据,经过计算机程序的有限次运算,能够得出所要求或期望的终止状态或输出数据。

算法常常含有重复的步骤和一些比较或逻辑判断。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。

一个简单而且耳熟能详的算法的例子是求最大公约数的辗转相除法:给出两个数,要求出他们俩的最大公约数。在小学的时候,我们就知道这样做就行了:将大数除以小数,用所得余数替换大数,继续用这两个数中大者除以小者,用所得余数替换较大者,继续下去,直到所得余数为 0 ,此时除数即为所求的最大公约数。下面是一个实例:(15, 21) = (15, 6) = (3, 6) = (3, 0) = 3。又如,要判断某个数是否为质数,只需枚举所有比它小的数,检验是否其约数即可。

算法是理论计算机的灵魂。几乎所有问题都围绕它而来。为了讨论算法的性质,在理论计算机中,算法已不限于只是上面定义中的计算机程序。或者说,这里计算机的含义被大大扩广了。

我们平时所说和所使用的计算机,基于图灵提出的确定型图灵机模型。它是最好理解的:给出固定的程式,模型按照程式和输入完全确定性地运行。

但为了理解算法和这种确定型图灵机的能力,人们又发展了许多其它各式各样的图灵机模型。其中最为有名的是非确定型图灵机。这种计算模型,它在进行计算的时候,会自动选择最优路径进行计算。通俗地说,它有预测能力。比如说,为了说明某个数是合数,非确定型图灵机会猜测一个数,恰好是其因子,从而证明了它不是质数。

确定型和非确定型图灵机的计算性能所引起的P vs NP问题,一直是理论计算机科学的核心问题,这点下面专文论述。

另一个引起广泛关注的计算机模型是量子计算机模型。与上面的非确定型图灵机只存在于人们的想象中不同,量子计算机在物理上是可以实现的。关于量子计算理论,以后也有单独的介绍性文章。

虽然上面的各种计算模型的效率可能不同,比如非确定性图灵机判定一个数是合数便要快得多,但是它们的计算能力是完全一样的。也就是在某个计算模型上面运行的算法,可以被其余模型模拟实现。

这些计算模型的计算能力是一样的,那是不是世界上所有问题都有算法呢?看上去这似乎是一个哲学问题,但答案早就有了,有些问题是不可能能通过算法求解的,连下面这个看上去很简单的问题都不行:给出一些分数(指 12/23 , 18/9 这样的),问是否可以从中选出若干个分数数(可以重复选取),使得按一定顺序排起来,其分母连起来和分子连起来恰好一样?

Q. E. D.

avatar-0.jpg

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK