| Chen's profileBlue CastlePhotosBlogLists | Help |
|
August 17 转载篇室友写的理论计算机科学的介绍 因为别人知道我是计算机专业的,结果每次亲戚朋友要买或者修电脑的时候都会想起来我,然后每每不能顺利帮别人“排忧解难”的时候又被别人嗤之以鼻的鄙视一番,甚是无奈,只好解释道自己是做理论计算机的,结果就是被别人质问什么是理论计算机,往往无言以对,最后只好语焉不详了。
这回适逢室友Zhang-zi开辟自己的blog开始撰写专业研究内容的介绍文章,赶紧转过来,以塞幽幽之口了,哈哈。真是急我之所急啊。不过这个基本上还是有点专业的,如果是文科的朋友可能有点困难,大家凑和先看看吧。而且根本上来说,毕竟出自北大数学系才子之手,逻辑还是很清楚的。这个方面本人自愧不如。希望Zhang-zi同学再接再厉,笔耕不辍,也好让我以后不至于闲置这个space想不起来更新,哈哈。
下面是wikipedia上算法的定义:
一个简单而且耳熟能详的算法的例子是求最大公约数的辗转相除法:给出两个数,要求出他们俩的最大公约数。在小学的时候,我们就知道这样做就行了:将大数除以小数,用所得余数替换大数,继续用这两个数中大者除以小者,用所得余数替换较大者,继续下去,直到所得余数为0,此时除数即为所求的最大公约数。下面是一个实例:(15, 21) = (15, 6) = (3, 6) = (3, 0) = 3。又如,要判断某个数是否为质数,只需枚举所有比它小的数,检验是否其约数即可。 算法是理论计算机的灵魂。几乎所有问题都围绕它而来。为了讨论算法的性质,在理论计算机中,算法已不限于只是上面定义中的计算机程序。或者说,这里计算机的含义被大大扩广了。 我们平时所说和所使用的计算机,基于图灵提出的确定型图灵机模型。它是最好理解的:给出固定的程式,模型按照程式和输入完全确定性地运行。 但为了理解算法和这种确定型图灵机的能力,人们又发展了许多其它各式各样的图灵机模型。其中最为有名的是非确定型图灵机。这种计算模型,它在进行计算的时候,会自动选择最优路径进行计算。通俗地说,它有预测能力。比如说,为了说明某个数是合数,非确定型图灵机会猜测一个数,恰好是其因子,从而证明了它不是质数。 确定型和非确定型图灵机的计算性能所引起的P vs NP问题,一直是理论计算机科学的核心问题,这点下面专文论述。 另一个引起广泛关注的计算机模型是量子计算机模型。与上面的非确定型图灵机只存在于人们的想象中不同,量子计算机在物理上是可以实现的。关于量子计算理论,以后也有单独的介绍性文章。 虽然上面的各种计算模型的效率可能不同,比如非确定性图灵机判定一个数是合数便要快得多,但是它们的计算能力是完全一样的。也就是在某个计算模型上面运行的算法,可以被其余模型模拟实现。 这些计算模型的计算能力是一样的,那是不是世界上所有问题都有算法呢?看上去这似乎是一个哲学问题,但答案早就有了,有些问题是不可能能通过算法求解的,连下面这个看上去很简单的问题都不行:给出一些分数(指12/23,18/9这样的),问是否可以从中选出若干个分数数(可以重复选取),使得按一定顺序排起来,其分母连起来和分子连起来恰好一样? |
|
|