复杂性中的思维物质-第22章
按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
函数f具有二次计算时间,如果对于所有的长度为n的输入和常数c,f的计算时间不大于c·n2。
一个简单的二次计算时间的例子是两(二)数相乘。例如,对于7·3二21,相应的二进制计算:
1 1 1·0 1 1
___________________
0 0 0
1 1 1
1 1 1
——————————
1 0 1 0 1
按照前面的约定,我们有n=6。基本二进制乘法的步数是n/2·n/2=n'2'/4。包括进运算,基本二进制相加的步数是n/2·n/2-n/2=n2/4-n/2。总起来,我们得到n2/4+n2/4-n/2=n2/2-n/2,它小于n2/2。
函数f具有多项式计算时间,如果f的计算时间不大于c·nk,假定它是多项式P(n)的首项。函数f具有指数计算时间,如果f的计算时间不大于c·2P(n)。许多实际的和理论的问题都属于这种P复杂性,所有P类函数都是可以用确定论的图林机在多项式时间中加以计算。
数学史上有一些优美的图论问题可以说明复杂性理论的基本概念。1736年,著名的数学家利昂纳德·欧拉(1707-1783)解决了图论中的第一个问题。在东普鲁士的首都柯尼斯堡,所谓的老普里戈尔河和新普里戈尔河在普里戈尔河连接起来了。在18世纪,河上建造了7座桥,把南面s、北面n、东面e与小岛i联系起来(图5.3)。是否有这样一条路线,即每座桥只走一次而可以返回到最初的起点?
欧拉把问题归结为图论。区域n,s,i,e用图的顶点来代替了,在两个区域之间的桥用相应顶点之间的边来代替(图5.3b)。
在图论的语言中,欧拉的问题就成为,对于每一顶点,是否存在一条线路,它仅仅通过每一条边一次而最终返回到起点(“欧拉环”)。对于任意的图形,欧拉证明:欧拉环存在,当且仅当每一顶点都具有偶数条边(“欧拉条件”)。对于图5.3a,它并不满足这种条件,因此在这里欧拉问题不可能有解。一般地,存在用欧拉条件来检验任意的图的算法,如果它是欧拉环。算法的输入包括所有顶点1,…,n的集合V,所有边的集合E,它是所有顶点对的集合的子集。这种算法的计算时间线性地依赖于图的大小,它由定点数和边数之和来定义。
1859年,数学家威廉姆·哈密顿(1805-1865)引入了一个颇为类似的问题,但比欧拉的问题更复杂。哈密顿考虑的是任意的图,它仅仅意味着有限的顶点的集合,通过边联系起来的一定数目的顶点对。哈密顿问题是:是否有一个通过每一顶点(而不是欧拉问题中的通过每一边)的封闭环(“哈密顿环”)。图5。3c示意了有一个哈密顿环的图,其中按照数字顺序通过每一顶点。
不过,与欧拉问题的情形不同,我们并不知道这样的条件:它精确地表明一个图中是否包含哈密顿环。我们仅仅能够定义一种算法,来检验任意的图是否包含有哈密顿环。该算法检验所有的顶点的排列,以确定它们是否形成了一个哈密顿环。由于n个顶点有n!种不同的排列,该算法找到某个解的步骤不大于c·n!,其中c是常数。容易证明,n!阶相应于n'n'阶。结果是,对于哈密顿问题,一个算法需要指数的计算时间,而欧拉问题的算法求解需要的是线性计算时间。因此,哈密顿问题实际上是计算机无法解决的,甚至对于小的数目n也如此。
大的计算时间的主要原因在于,确定论的计算机只能一步步地对于其中巨大数量的一个个情形进行检验。更方便的是运用非确定论的计算机,它允许在有限的可能数目中随机地选择计算程序,而不是以系列的方式一步步地进行。让我们再一次考虑哈密顿问题。假定一个输人图具有n个顶点u1,…,un。一个非确定论的算法以非确定论的、随机的方式选择了一定的顶点顺序Vi1,…,Vin。然后,该算法进行检验:这种顺序是否形成了一个哈密顿环。问题也就是,对于所有的数字j(j=1,…,n-1),相继的顶点Vij和Vij+1以及起初的开始顶点Vin和Vi1是否是由边联系起来的。这种非确定论算法的计算时间线性地依赖于图的大小。
一般地说,NP意味着这样类型的函数的复杂性,它们用非确定论图林机进行计算时需要多项式时间。哈密顿问题是一个NP问题的例子。另一个NP问题是“旅行推销员问题”,除了种种边都有一定的数目规定以外,它与哈密顿问题非常相似。人们要解决的是:对于这一问题的哈密顿环,找出其数字的和的极小值,或更直觉地说,找出其旅行的距离的极小值。
所有的P问题由定义,都是NP问题。但是,复杂性理论的关键性问题在于是否有P=NP,或换言之,由非确定论计算机以多项式时间解决的问题,是否也可以由确定论计算机以多项式时间来加以解决。
哈密顿问题和旅行推销员问题,是所谓的NP完全问题的例子。这意味着,任何其他的NP问题都能够以多项式时间转化成它。结果是,如果一个NP完全问题实际上被证明是P问题(例如能够构造以多项式时间来解决哈密顿问题的一个确定论算法),那么接着还有是否所有的NP问题实际上都是P问题。否则,如果P≠NP,那么NP完全问题就不可能用确定论算法以多项式时间来解决。
显然,复杂性理论表达了图林机或图林类型机的算法能力的程度。它在科学应用和工业应用中具有实际的后果。但是,它是否意味着人的思维的极限呢?复杂性理论的基本问题(例如N=NP或N≠NP)涉及到算法的速度、计算时间、存贮能力等等的度量。另一个问题是,人们如何开始发现复杂性程度不同的算法。这是计算机科学家的创造性工作,是算法的复杂性理论中不考虑的。
另一方面,哥德尔的著名定理常常被认为限制了计算机和人的思维的数学能力。他的不完全性定理说,对于形式数论的每一协调的公理化扩展,就有一个(封闭的)不确定的表达式。实际上,他的定理陈述了,在整数的真陈述在其逻辑内不可能得到证明的意义上,任何合理的协调的算术逻辑都是不完整的。甚至如果我们用不可确定的表达式来扩展我们的公理化,那么也会有另一表达式在扩展的形式化中是不可确定的。哥德尔的结果表明,在莱布尼茨和希尔伯特传统中对于完整协调的算术逻辑的形式化追求,是注定要失败的。
而且,哥德尔证明,算术逻辑——它可能是不完整的——使用可以在其逻辑内表示的方法来使之协调,也是不可能的。在哥德尔的著名结果提出来若干年以后,金藤(1909-1945)证明了初等数论的协调性,他运用了所谓的EO归纳法,该方法是通常的归纳法对自然数的无限扩展。但是,金藤的扩展的证明法的协调性却还是有疑问的,有待证明。换言之,证明方法的复杂性并不低于被证系统的复杂性。因此,只可能有相对协调的证明,所用证明方法必须得到证明,所用来进行证明的方法又需要得到证明,如此等等。对于人的思维,不存在绝对的可以由形式算法提供的协调性基础。
但是,哥德尔定理对人的思维的限制是有某些基本假设条件的:我们必须把定理的证明作为人的智能的关键。公理仅仅适用于这样的精神模型:它是由其中所有知识都仔细形式化了的机器构成的。而且,哥德尔定理仅仅是对协调机的限制,而模糊性、不协调性和迷惑性都是人的决策的典型特征。如果我们在作出是否要行动的决定之前先要作出长时间的仔细的定理证明,那么我们就不可能有长期的生存。还应该考虑到,图林机具有固定的数据结构,而人的精神则是对新奇经验开放的,并能够从错误中进行学习。因此,哥德尔定理对于机器的限制,就如同对于人的大脑封锁新信息的进入一样。
1936年,丘奇和图林证明了根本没有一种算法能决定一个一阶预测逻辑的表达式是否是同义反复的真理。随之即有,为找到某种数学证明,我们必须具有某些启发性思想。
所以,AI的第一阶段(1957…1962)是受启发性编程问题支配的,这意味着在可能的分支树中自动地寻求人的问题求解,其间借助启发性来控制和评价。一个例子是纽厄尔、肖和西蒙的“逻辑理论家”(1957),它首次对罗素和怀特海的《数学原理》中前面的38条定理提供了证明。他的启发性来自一些人在心理学测验中使用的约略估量法。
1962年,这些模拟程序被推广和扩展到所谓的“一般问题求解者”(GPS),它被假定为人的问题求解的启发性框架。但是GPS只可能解决形式化微观世界中的一些无意义的问题。另一个启发性编程的例子是,在博奕(下棋、将军)中寻求取胜策略。最初的模式识别程序(例如词语和符号的词汇表和句法表)都是以统计方法为基础的。但是从长远的观点看,这些早期的任何程序,都没有证明一般认知模拟程序中的欣快信念。至少,它的形而上学鼓舞了麦卡锡发明编程语言LISP,它是作为一种功能的编程语言引入的,用于处理可怕的符号表,成为今天基于知识的系统的一种最强大的编程语言。
在一般方法失败以后,AI研究者们传播了一种预设的“语法信息处理”程序。AI的第二阶段(1963-1967)以专业程序的发展为特点。这样的专业程序,例如有求解简单代数问题的STUDENT,进行类似物体的模式识别的ANALOGY,等等。麻省理工学院的马尔文·闵斯基是这个时期的头面人物,他放弃了进行心理学模拟的主张:“目前的探索,其特点是聪明地选取问题从而得到复杂智能活动的幻象来进行的预设求解。成功的实用编程方法依赖于专业知识,这个思想首次被加以强调,成为后来基于知识的系统的中心概念。
对于问题求解的一般原理的追求,在理论计算机科学中仍在继续:J.A.罗宾逊引入了所谓的以预测逻辑演算和赫布兰德的完全性定理为基础的求解原理,允许用逻辑反驳程序去发现证明。
在AI中推动实用和专业编程方法,在第三个阶段(1967-1972)得到了加速发展。其标志是构造出专业系统、知识表示方法和对于自然语言的兴趣。发明了在数学应用中取得成功的MACSYMA程序的J.摩西描述了AI中范式的变化:“事实上,1967年是我的精神的转折点,那时候我充分地感受到一般原理的旧思想必须放弃……并抓住了我称作专业技能至上的证据。”
这一时期的另一个著名例子是DENDRAL程序,它运用了质谱学中化学家的专业知识,以发现分子的结构式。这个阶段中的一个范式的例子变成了机器人的SHRDLU程序,机器人可以操纵不同组件组成的小世界。这种系统可以用英语理解和回答关于这个组件世界的问题,执行操作这个组件世界的指令,并把次序划分为一系列操作,理解干了什么并为什么这样干,并用英语描述它的行动。
在第四阶段(1972-1977),知识的描述、组织和处理成为了把工程学和AI哲学结合起来的中心范式。米彻尔·费根鲍姆引入了“知识工程”这一术语,用于所谓专家系统的发展。一个例子是用于医学诊断的MYCIN程序,它模拟了一个具有细菌感染专业医学知识的内科医生。
一种新的知识表示方法是马尔文·闵斯基提出的框架概念。一种用于符号性知识处理的新的编程语言是PROLOG(“逻辑编程”),它可以与LISP相比拟。
AI的第五阶段(1977-1986)被说成是托马斯·库恩的意义上的“常规”阶段,指的是专家系统范式正在运行并实现了商业化。一些工具发展起来,以建设诸如大规模汽车生产使用的新专家系统。AI正在从实验室和哲学家的研究中崛起,正在变成世界性的知识工业的关键性技术。
接下去,我们重点讨论专家系统,因为这里看来具有最令人感兴趣的哲学问题。一个专家系统是一种计算机程序,其中已经装入了知识和能力,使得它可以在专家水平上进行操作(例如化学中的DENDRAL和医学中的MYCIN)。人类专家的推理过程示意在图5.4中。
一些专家系统甚至可以揭示为何它们拒绝一定的推理途径而选择其他的途径。设计者们在努力工作以实现这一点,因为他们知道,专家系统的最终运用取决于它对于使用者的可信度。如果它的行为是透明的、可解释的,那么它的可信度就会增加。
但是,与人不一样,专家系统的知识是限于某种专业信息基础的,而没有关于世界的概括性、结构性知识。因此,专家系统在数字计算机的约定程序和人之间发挥着某种中间功能(图5.5)。
一个专家系统包括如下的组件:知识基础、问题求解组件(推理系统)、解释组件、知识获取组件和对话组件。它们的协调示意在图5.6中。
知识是专家系统运行中的关键性因素。知识具有两种类型:第一种类型是领域事实,它们书写在该领域的教科书和杂志中;对于一个领域的实践同样重要的是第二种知识,叫做启发性知识,是在该领域中的良好实践和进行判断的知识。正是实验性的知识,猜测高超艺术为一位专家经过多年工作所能获得的。
顺便说一下,知识库与数据库不同。例如,一位医生的数据库是关于病人的记录,包括病人历史、重要症状的测量、所开药物和药物反应。这些数据必定要通过医生的医学知识来解释,以进一步进行诊断并制订医治方案。知识库是医生在他的医学教育中和在实习阶段、高级训练阶段、专业训练阶段和医学实践中学会的东西。它包括事实、倾向、信念和启发性知识。
启发性知识是最难获得的,因为专家很少自觉地认识到它是什么。所以,跨学科训练的知识工程必须去获得专家的规则,将其表示为编程语言,并植入工作程序中。这个专家系统的组件叫做知识获取。它在专家系统的知识处理过程中的中心功能示意在图5.7中。
最重要的知识表示方法是产生系统、逻辑、框架和语法网络。除了知识以外,专家系统还需要一种推理程序,一种用以理解和作用于知识和问题数据及其组合的推理方法。这些程序是独立于特定的知识库的,是建立在多种哲学方法论基础上的,为此我们将在后面分析几个专家系统的例子。
专家系统的解释组件的任务是向使用者解释程序的步骤。问题“如何”也就是要对该系统导出的事实或断言进行解释;问题“何时”则是要求,指出一个系统的问题或秩序的前提。
对话组件处理专家系统与使用者的通信。自然语言的处理器当然可以使甚至未受过专门训练的使用者也容易接受。
从技术的观点看,专家系统的局限性是显然的。首先是知识表示问题。所论领域的知识如何表示为计算机记忆装置中的数据结构并为问题求解所接受?其次是知识利用问题。推理器应该如何设计?第三是知识获取问题。获得知识是如何可能的?这对于自动的问题求解是非常重要的,以使得计算机容易将人的专业知识转移到符号数据结构中。
专家系统的最后一个也是最重要的问题是哲学问题。如何将专家系统的专业知识库与关于世界的一般化结构化的知识结合起来?这种一般化结构