最新网址:m.leshugu.info
从某种基本意义上讲,计算机和数学家只是不容易识别的图灵计算机,知道这一点也许令人泄气。但在另一方面,从表面上看过于简单的图灵计算机,由于证明能够解各种各样的计算问题,从而又可被认为是鼓舞人心的。数学家与计算机之间理论上的相似性不仅适用于他们能解出的各种问题,而且也适用于他们不能解出的各种问题。
工业上每天都出现许多计算问题,若用任何已知的方法去解,则太费时间,现在都例行地由计算机去着手解决。然而工业需要的是对这些问题的解法,而计算机常常牵扯到程序设计人员的水平,他们往往不能编出最佳程序。其中有许多是众所周知的使旅行推销员感到为难的问题;已知一个城市与公路网络,要找一条推销员在往返旅程中到每个城市去一次的最短路线。仅有一种已知的算法用来解这种旅行推销员问题,就是可靠的逐步试探法,这种方法费力,缺乏预见性,只是对每一种可能性都进行尝试。看来,数学并未减轻威利·洛曼的烦恼。
过去15年内,数学家们都感到迷惘,他们寻求巧妙的、较快的算法都告失败,这是由于他们无知呢,还是这种问题本身存在内在的困难?按照当前的知识水平,暂时还没有较快的算法,甚至在理论上也没有。目前还没有人能够证明这一点。对证明的研究已是理论计算机科学中最为热门的课题,而且在这个领域中工作的数学家已被公认为是复合型理论学家。
当数学家们谈到保证解题方法时,他们的意思就是指算法。不要由于“算法”(algorithm)这个英语单词的发音令人生畏而摈弃它,它是9世纪波斯数学家阿布·贾法尔·穆罕默德·伊本穆萨·阿尔霍瓦里米的姓氏音译转讹而来的,他的语义遗产还包含有单词代数(algebra)在内。算法的音难读但不难懂。你早已了解什么是算法的直观概念。
你可曾记得,在你读小学时,你的英语老师让你制定出一整套令人厌烦的规定,去做诸如系鞋带一类枯燥无味的琐事,然后老师叫约翰尼·怀斯盖严格按照你的规定去系他的鞋带(与此同时,这个讨厌的老师还会让你大声念你的那一套规定)。
当然,他会立即出错——而且是个大错——因为你没有考虑一些看来好像是理所当然不成问题的基本步骤,就像系鞋带时理所当然要握住鞋带的塑料包头,而不是握住它的中部一样。如果你详详细细地写出,那么你就会得到一个有关系鞋带的规则系统,而这个规则系统不过是一个循序渐进的程序,在这个程序中,每一步都说得很明确,你可以按部就班地解决每个问题。每个步骤都要规定得清清楚楚,其间不允许留下任何靠可能、直觉、经验、解释或想象等方法来处理的细节。
当然,数学家们对于计算问题的算法要比系鞋带更感兴趣。两个整数相加的算法,根据小学老师教给我们的方法,是用纸和铅笔按照如下的明确步骤进行:把整数写成一行,一个数写在另一个数的上方,两数右端对齐,在它们下方划一横线,从右到左地进行计算,有时还“进位”1,而且照此步骤计算许多其他数的相加,也是不成问题的。这种算法应该包括如下法则,像“如果一个数2在另一个数4的上方,可在其下写一个数6”和“如果一个数3在另一个数6的上方,可在其下写一个数9”等法则。
算法的功能之一是其能用于一个问题的所有实例。例如加法算法可以算出任何两个整数的和。你虽然花费时间去详尽写出一种算法的全部细节,但你却得到了一种能够保证工作的方法。计算机的程序或是单一的算法或是系列的算法。如果没有指令告诉该算法的每一步骤应该做些什么,那么计算机就同不能模拟系好鞋带一样,也不能进行两数相加的计算。程序设计员的作用在于编好完整的指令,换句话说,要编好完整的算法。当程序设计员责怪其程序中的错误时,他的意思是指在编写详尽算法或把算法译成计算机语言时,他犯了一个错误。
必须强调的是,算法的用户不管是一部机器还是一个人,不需要对算法做出判断。例如,加法算法的使用,不需要“什么是数字”这一概念。要应用算法时,你可以盲目地按照法则进行。比方说,你不必知道,5是跟在4之后,7是大于3等等,甚至你也不必知道你是在使用十进制的数制。哲学文献中已有许多篇幅谈论过,就计算机的思考能力而言,缺乏判断会意味着什么。但是,探讨这样一个引人兴趣的说法则使我们离题太远了。
数学家们都不大关心旅行推销员这一专题。对于一系列较小的城市与公路网络,由于没有多少可能的路线需要审查,因而找到解法是很容易的。甚至对于大的城市与公路网络,那也可能幸运地或者偶然地找到最佳的路程。当数学家们宣称某问题实际上是不可解时,他们的意思是,仅仅知道保证解法的许多方法,就像穷举搜索所有可能性的方法一样低效,即使对于最高级的超级计算机来说,这种穷举搜索法也是太慢的。
数学的行家对于快速(与可用)的算法和慢速(与不可用)的算法都有严格的确定方法。假设数字n是某问题大小的量度
最新网址:m.leshugu.info