写在前面
- 本文严禁转载,只限于学习交流。
- 课件分享在这里了。
- 还有人工智能标准化白皮书(2018版)也一并分享了。
绪论
人工智能的定义与发展
定义
- 一般解释:人工智能就是用 人工的方法在 **机器(计算机)**上实现的智能,或称 机器智能;
- 人工智能(学科):从学科的角度来说,人工智能是一门研究如何 构造智能机器或智能系统,使之能模拟、延伸、扩展人类智能的学科;
- 人工智能(能力):从智能能力的角度来说,人工智能是智能机器所执行的通常 与人类智能有关的智能行为,如判断、推理、证明、识别、感知、理解、通信、设计、思考、规划、学习和问题求解等思维活动。
【补充】 2018年1月发布的人工智能标准化白皮书上关于“人工智能的概念”有如下一段详尽描述(仅供参考):
2.1.2 人工智能的概念
人工智能作为一门前沿交叉学科,其定义一直存有不同的观点:**《人工智能——一种现代方法》**中将已有的一些人工智能定义分为四类:像人一样思考的系统、像人一样行动的系统、理性地思考的系统、理性地行动的系统。维基百科上定义“人工智能就是机器展现出的智能”,即只要是某种机器,具有某种或某些“智能”的特征或表现,都应该算作“人工智能”。大英百科全书则限定人工智能是数字计算机或者数字计算机控制的机器人在执行智能生物体才有的一些任务上的能力。百度百科定义人工智能是“研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学”,将其视为计算机科学的一个分支,指出其研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。
本白皮书认为,人工智能是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。
人工智能的定义对人工智能学科的基本思想和内容作出了解释,即围绕智能活动而构造的人工系统。人工智能是知识的工程,是机器模仿人类利用知识完成一定行为的过程。根据人工智能是否能真正实现推理、思考和解决问题,可以将人工智能分为弱人工智能和强人工智能。
弱人工智能是指不能真正实现推理和解决问题的智能机器,这些机器表面看像是智能的,但是并不真正拥有智能,也不会有自主意识。迄今为止的人工智能系统都还是实现特定功能的专用智能,而不是像人类智能那样能够不断适应复杂的新环境并不断涌现出新的功能,因此都还是弱人工智能。目前的主流研究仍然集中于弱人工智能,并取得了显著进步,如语音识别、图像处理和物体分割、机器翻译等方面取得了重大突破,甚至可以接近或超越人类水平。
强人工智能是指真正能思维的智能机器,并且认为这样的机器是有知觉的和自我意识的,这类机器可分为类人(机器的思考和推理类似人的思维)与非类人(机器产生了和人完全不一样的知觉和意识,使用和人完全不一样的推理方式)两大类。从一般意义来说,达到人类水平的、能够自适应地应对外界环境挑战的、具有自我意识的人工智能称为“通用人工智能”、“强人工智能”或“类人智能”。强人工智能不仅在哲学上存在巨大争论(涉及到思维与意识等根本问题的讨论),在技术上的研究也具有极大的挑战性。强人工智能当前鲜有进展,美国私营部门的专家及国家科技委员会比较支持的观点是,至少在未来几十年内难以实现。
靠符号主义、连接主义、行为主义和统计主义这四个流派的经典路线就能设计制造出强人工智能吗?其中一个主流看法是:即使有更高性能的计算平台和更大规模的大数据助力,也还只是量变,不是质变,人类对自身智能的认识还处在初级阶段,在人类真正理解智能机理之前,不可能制造出强人工智能。理解大脑产生智能的机理是脑科学的终极性问题,绝大多数脑科学专家都认为这是一个数百年乃至数千年甚至永远都解决不了的问题。
通向强人工智能还有一条“新”路线,这里称为“仿真主义”。这条新路线通过制造先进的大脑探测工具从结构上解析大脑,再利用工程技术手段构造出模仿大脑神经网络基元及结构的仿脑装置,最后通过环境刺激和交互训练仿真大脑实现类人智能,简言之,“先结构,后功能”。虽然这项工程也十分困难,但都是有可能在数十年内解决的工程技术问题,而不像“理解大脑”这个科学问题那样遥不可及。
仿真主义可以说是符号主义、连接主义、行为主义和统计主义之后的第五个流派,和前四个流派有着千丝万缕的联系,也是前四个流派通向强人工智能的关键一环。经典计算机是数理逻辑的开关电路实现,采用冯•诺依曼体系结构,可以作为逻辑推理等专用智能的实现载体。但要靠经典计算机不可能实现强人工智能。要按仿真主义的路线“仿脑”,就必须设计制造全新的软硬件系统,这就是“类脑计算机”,或者更准确地称为“仿脑机”。“仿脑机”是“仿真工程”的标志性成果,也是“仿脑工程”通向强人工智能之路的重要里程碑。
起源与发展
人工智能始于20世纪50年代,50多年来,人工智能走过了一条起伏和曲折的发展道路。回顾历史,可以按照不同时期的主要特征,将其产生与发展过程分为5个阶段。
1、孕育期(1956年前)
2、形成期(1956-1970年)
1956年夏,麦卡锡 (J.McCarthy,数学家、计算机专家)、明斯基(M.L.Minsky,哈佛大学数学家、神经学家)、洛切斯特(N.Lochester,IBM公司信息中心负责人)、香农(C.E.Shannon,贝尔实验室信息部数学家和信息学家)
邀请莫尔(T.more)、塞缪尔(A.L.Samuel) 、塞尔夫里奇(O.Selfridge)、索罗蒙夫(R.Solomonff)、纽厄尔(A.Newell)、西蒙(H.A.Simon)在 美国达特茅斯(Dartmouth)大学举办了长达历时两个月的研讨会。会上,麦卡锡正式使用“人工智能AI”这一术语。这是人类历史上首次第一次人工智能研讨会,标志着人工智能学科的诞生。
3、暗淡期(1966-1974年)
失败的预言给人工智能的声誉造成重大伤害
60年代初,西蒙预言:10年内计算机将成为世界冠军、将证明一个未发现的数学定理、将能谱写出具有优秀作曲家水平的乐曲、大多数心理学理论将在计算机上形成。
挫折和困境
- 在博弈方面:塞缪尔的下棋程序在与世界冠军对弈时,5局败了4局。
- 在定理证明方面:发现鲁宾逊归结法的能力有限。当用归结原理证明两个连续函数之和还是连续函数时,推了10万步也没证出结果。
- 在问题求解方面:对于不良结构,会产生 组合爆炸问题。
- 在机器翻译方面:发现并不那么简单,甚至会闹出笑话。例如,把“心有余而力不足”的英语句子翻译成俄语,再翻译回来时竟变成了“酒是好的,肉变质了”
- 在神经生理学方面:研究发现人脑有1011-12以上的神经元,在现有技术条件下用机器从结构上模拟人脑是根本不可能的。
- 在其它方面:人工智能也遇到了不少问题。在英国,剑桥大学的詹姆教授指责“人工智能研究不是骗局,也是庸人自扰” 。从此,形势急转直下,在全世界范围内人工智能研究陷入困境、落入低谷。
Minsky的批评
1969年 M. Minsky 和 S.Papert 在《感知机》一书中指出了感知机无法解决异或(XOR)问题的缺陷,并表示出对这方面研究的悲观态度,使得神经网络的研究从兴起期进入了停滞期。
该批评对人工智能的发展造成了重要的影响
- 在以后的二十年,感知机的研究方向被忽视
- 基于符号的知识表示成为主流
- 基于逻辑的推理成为主要研究方向
当时的人工智能存在三个方面的局限性
- 知识局限性:早期开发的人工智能程序中包含了太少的主题知识,甚至没有知识,而且只采用简单的句法处理。
- 解法局限性:求解方法和步骤的局限性使得设计的人工智能程序在实际上无法求得问题的解答,或者只能得到简单问题的解答,而这种简单问题并不需要人工智能的参与。
- 结构局限性:用于产生智能行为的人工智能系统或程序在一些基本结构上严重局限,如没有考虑不良结构,无法处理组合爆炸问题,因而只能用于解决比较简单的问题,影响到人工智能系统的推广应用。
4、知识应用期( 1970-1988年)
5、集成发展期(1986年至今)
人工智能具体的发展历程图示如下:
这两年人工智能得到了突飞猛进的发展,实现这种发展的基本条件有三个:
- 大数据的积累
- 计算能力的提升
- 理论算法的革新
各种认知观
目前人工智能主要有以下三个学派:
- 符号主义(Symbolicism): 基于物理符号系统假设和有限合理性原理(逻辑)
符号主义观点认为:智能的基础是知识,其核心是知识表示和知识推理;知识可用符号表示,也可用符号进行推理,因而可以建立基于知识的人类智能和机器智能的统一的理论体系。
- 连接主义(Connectionism): 基于神经网络及其间的连接机制与学习算法(仿生)
连接主义观点认为:思维的基元是神经元,而不是符号;思维过程是神经元的联结活动过程,而不是符号运算过程;反对符号主义关于物理符号系统的假设。
- 行为主义(Actionism): 基于控制论及感知—动作型控制系统(进化)
行为主义观点认为:智能取决于感知和行动,提出了智能行为的“感知—动作”模型;智能不需要知识、不需要表示、不需要推理;人工智能可以像人类智能那样逐步进化。
此外,还有一种由钟义信院士提出的一种认知学派:
- 机制主义(mechanism):结构(连接)主义、功能(符号)主义、行为主义的和谐统一。
几种学派各自不足之处:
-
符号主义的不足(功能模拟法/认知学观点)
- 在用符号表示知识的概念时,有效性很大程度上取决于符号表示的正确性和准确性
- 将知识概念转换成符号时,可能丢失一些重要信息
- 难于对含噪信息、不确定性信息和不完全性信息进行处理
-
连接主义的不足(结构模拟法/生物学观点)
- 由于大脑的生理结构和工作机理还远未搞清楚,因而现在只能对人脑的局部进行模拟或进行近似模拟
- 不适合模拟人的逻辑思维过程
- 受大规模人工神经网络制造的制约
- 尚不能满足人脑完全模拟的要求
-
行为主义的不足
- 难以获得高级智能控制行为
研究目标与内容
研究目标
远期目标:构造出可以实现人类思维活动和智力功能的智能系统。
近期目标:使现有的计算机更聪明更有用,使它不仅能够进行一般的数值计算和非数值信息的处理,而且能够运用知识去处理问题,能够模拟人类的智能行为。
研究的基本内容
1、认知建模
认知:可一般地认为是和情感、动机、意志相对应的理智或认识过程,或者是为了一定的目的,在一定的心理结构中进行的信息加工过程。
2、知识表示:基础
3、知识推理:实现问题求解
4、知识应用:目的
知识表示、知识推理、知识应用是传统人工智能的三大核心研究内容。
5、机器感知:就是要让计算机具有类似于人的感知能力,如视觉、听觉、触觉、嗅觉、味觉……,是机器获取外部信息的基本途径
- 相当于智能系统的输入部分
- 机器视觉(或叫计算机视觉):就是给计算机配上能看的视觉器官,如摄像机等,使它可以识别并理解文字、图像、景物等
- 机器听觉(或叫计算机听觉):就是给计算配上能听的听觉器官,如话筒等,使计算机能够识别并理解语言、声音等。
- 模式识别:对客体的识别与分类
- 自然语言理解:实现人机对话
- 机器翻译
6、机器思维:
机器思维是让计算机能够对感知到的外界信息和自己产生的内部信息进行思维性加工,包括逻辑思维、形象思维和灵感思维,涉及信息的表示,组织,积累,管理,搜索,推理等过程。
7、机器学习:
- 让计算机能够像人那样自动地获取新知识,并在实践中不断地完善自我和增强能力。
- 是机器获取智能的途径
- 学习是一个有特定目的的知识获取过程,学习的本质是对信息的理解与应用
8、机器行为:
- 让计算机能够具有像人那样地行动和表达能力,如走、跑、拿、说、唱、写画等。
- 相当于智能系统的输出部分
9、智能系统构建
- 无论是人工智能的近期目标还是远期目标,都需要建立智能系统或构造智能机器
- 需要开展对系统模型、构造技术、构造工具及语言环境等研究
应用领域
问题求解、机器学习、自然语言理解、专家系统、模式识别、计算机视觉、机器人学、博弈、计算智能、人工生命、自动定理证明、自动程序设计、智能控制、智能检索、智能调度与指挥、智能决策支持系统、人工神经网络、数据挖掘与知识发现…
课后习题
- 1-1 什么是人工智能?是从科学与能力两方面加以说明。
- 1-3 在人工智能的发展过程中,有哪些思想和思潮起到了重要作用?
- 1-5 人工智能有哪些学派?他们的认知观是什么?现在这些学派的关系如何?
- 1-9 人工智能的基本研究方法有哪些类?
- 1-10 人工智能的主要研究和应用领域是什么?其中,哪些是新的研究热点?
知识表示与推理
知识表示方法
知识的一般概念
知识是人们在改造客观世界的实践中积累起来的 认识和 经验。
其中,认识与 经验可以这样定义:
- 认识:包括对事物现象、本质、属性、状态、联系等的认识
- 经验:包括解决问题的微观方法和宏观方法
- 微观方法:如步骤、操作、规则、过程、技巧等
- 宏观方法:如战略、战术、计谋、策略等
人工智能系统中的知识
一个智能程序高水平的运行需要有关的 事实知识、 规则知识、 控制知识和 元知识。
- 事实知识 :是有关问题环境的一些事物的知识,常以“…是…”的形式出现。
- 如事物的分类、属性、事物间关系、科学事实、客观事实等。
- 事实是静态的为人们共享的可公开获得的公认的知识,在知识库中属低层的知识,如:雪是白色的、鸟有翅膀、张三李四是好朋友、这辆车是张三的……
- 规则知识 :是有关问题中与事物的行动、动作相联系的因果关系知识,是动态的,常以“如果…那么…” 形式出现。
- 控制知识 :是有关问题的求解步骤、技巧的知识,告诉人们怎么做一件事,也包括当有多个动作同时被激活时应选哪一个动作来执行的知识。控制知识常与程序结合在一起出现,如一个问题求解的算法可以看做是一种知识表示。
- 元知识 :是有关知识的知识,是知识库中的高层知识。包括怎样使用规则、解释规则、校验规则、解释程序结构等知识。
元知识与控制知识是有重迭的,对一个大的程序来说,以元知识或说元规则形式体现控制知识更为方便,因为元知识存于知识库中,而控制知识常与程序结合在一起出现,从而不容易修改。
知识表示
研究用机器表示知识的可行性、有效性的一般方法,是一种数据结构与控制结构的统一体,既考虑知识的存储又考虑知识的使用。
知识表示的要求:
- 表示能力:能否正确、有效地表示问题。包括:表范围的广泛性、领域知识表示的高效性、对非确定性知识表示的支持程度;
- 可利用性:可利用这些知识进行有效推理。包括:对推理的适应性,对高效算法的支持程度;
- 可实现性:要便于计算机直接对其进行处理;
- 可组织性:可以按某种方式把知识组织成某种知识结构;
- 可维护性:便于对知识的增、删、改等操作;
- 自然性:符合人们的日常习惯;
- 可理解性:知识应易读、易懂、易获取等。
状态空间法
状态空间法是一种 基于解答空间的问题表示和求解方法,它是以“状态(state)”和“算符(operator)”为基础的,它是人工智能中最基本的 形式化方法。
由于状态空间法需要扩展过多的节点,容易出现“组合爆炸”,因而 只适用于表示比较简单的问题。
状态空间法的三要素:
- 状态(state):描述某类不同事物间的差别而引入的一组最少变量
q0,q1,…,qn
的有序集合,是表示问题解法中每一步问题状况的数据结构。有序集合中每个元素qi(i= 0,1,…,n)为集合的分量,称为状态变量。给定每个分量的一组值就得到一个具体的状态。 - 算符(operator):使问题从一种状态变化为另一种状态的手段称为操作符或算符。
- 问题的状态空间**:即解答空间,也就是一个表示该问题全部可能状态及其关系的图。它是以状态和算符为基础来表示和求解问题的。它包含三种说明的集合,即S:所有可能的问题初始状态集合、F:操作符集合、G:目标状态集合。可将状态空间记为三元状态
(S,F,G)
。
【例子】
猴子和香蕉问题:在一个房间内有一只猴子、一个箱子和一束香蕉。香蕉挂在天花板下方,但猴子的高度不足以碰到它。那么这只猴子怎样才能摘到香蕉呢?
解题过程
用一个四元表列(W,x,Y,z)
来表示这个问题状态空间
其中W:猴子的水平位置;x:当猴子在箱子顶上时取1;否则取0;Y:箱子的水平位置;z:当猴子摘到香蕉时取1;否则取0。
则可见初始状态为(a,0,b,0)
,目标状态为(c,1,c,1)
这个问题的算符如下:
goto(U)
表示猴子走到水平位置U;pushbox(V)
表示猴子把箱子推到水平位置V;climbbox
表示猴子爬上箱顶;grasp
表示猴子摘到香蕉。
由初始状态变换为目标状态的操作序列为:
Step1: goto(b)
Step2: pushbox(c)
Step3: climbbox
Step4: grasp
问题归约法
问题规约(Problem Reduction):
- 另外一种 基于状态空间的问题描述与求解方法;
- 已知问题的描述,通过一系列 变换 把此问题变为一个 子问题集合;
- 这些子问题的解可以直接得到(本原问题),从而解决了初始问题。
问题归约的组成部分:
- 一个初始问题描述;
- 一套把问题变换为子问题的 操作符;
- 一套本原问题描述。(本原问题:不能再分解或变换且直接可解的子问题)。
问题归约的 实质:
- 从目标(要解决的问题)出发 逆向推理,建立子问题以及子问题的子问题,直到 最后把初始问题归约为一个本原问题集合。
问题归约法举例:
【例子】
汉诺塔问题(Hanoi):规定每次移动一个盘子、且总个过程中大盘在下小盘在上、目标是将盘子从柱子1移到柱子3。
解题过程
原始问题可以归约为下列3个子问题:
规约过程:
归约图示:
与或图表示
用一个类似于图的结构来表示,把问题归约为后继问题的替换集合。
-
与图:把一个复杂问题分解为若干个较为简单的子问题,形成“与”树。
-
或图:把原问题变换为若干个较为容易求解的新问题,形成“或”树。
谓词逻辑法
谓词逻辑法采用谓词合式公式和一阶谓词演算将要解决的问题变成一个有待证明的问题,然后利用消解定理和消解反演来证明一个新语句是从已知的正确语句中导出的,从而证明这个新语句也是正确的。
谓词逻辑是一种 形式语言,能够将数学中的逻辑论证符号化,谓词逻辑经常与其他表示方法混合使用,可以表示比较复杂的问题。
谓词演算
语法和语义
- 基本符号:谓词符号、变量符号、函数符号、常量符号、括号和逗号
- 原子公式由若干谓词符号和项组成
连词和量词
-
连词
合取、析取、蕴涵、非、双条件 -
量词
全称量词、存在量词
谓词公式
-
原子谓词公式
由谓词符号和若干项组成的谓词演算 -
分子谓词公式
可以用 连词把原子谓词公式组成复合谓词公式,并把它叫做分子谓词公式
通常把合式公式叫做谓词公式。在谓词演算中合式公式的递归定义如下:
合式公式的性质
置换与合一
置换
置换是用变元、常量、函数来替换变元,使该变元不在公式中出现,形如{t1/x1, t2/x2,...,tn/xn}
的有限集合,其中:
t1,t2,...,tn
是项;x1,x2,...,xn
是互不相同的变元;ti/xi
表示用ti项替换变元xi
,不允许ti
和xi
相同,也不允许变元xi
循环地出现在另一个tj中。
推理规则:用合式公式的集合产生新的合式公式
置换是 可结合的;
用s1s2
表示两个置换s1和s2的合成,L表示一个表达式,则有(Ls1)s2 = L(s1s2)
以及(s1s2)s3 = s1(s2s3)
,即用s1和s2相继作用于表达式L是与用s1s2
作用于L一样的。
一般说来,置换是 不可交换的,即s1s2 ≠ s2s1
。
合一
寻找项对变量的置换,以使两表达式一致,叫做合一。
如果一个置换s作用于表达式集合{Ei}
的每个元素,则用{Ei}s
来表示置换的集。称表达式{Ei}是可合一的,如果存在一个置换s使得:E1s = E2s = E3s =……
,那么,称此s为{Ei}
的合一者,因为s的作用是使集合{Ei}
成为单一形式。
例如:设有公式集E={ P( x, y, f(y)), P( a, g(x), z) }
,则s={a/x, g(a)/y, f(g(a))/z}
是它的一个合一。
语义网路法
语义网络是通过概念及其语义关系来表达知识一种网络图,是一种 结构化表示方法。
从图论的观点看,语义网络是一个“带标识的有向图”,它由 节点和 弧线或链线组成。节点代表实体、概念、情况等,弧线代表节点间的关系,必须带标识。
语义网络的解答是一个经过推理和匹配而得到的具有明确结果的新的语义网路,扩展后可以表示更复杂的问题。
语义网络中最基本的语义单元称为语义基元,可用三元组表示为:(结点1,弧,结点2)。
二元语义网络的表示
例如:用语义网络表示:李新的汽车的款式是“捷达”、银灰色;王红的汽车的款式是“凯越”、红色;李新和王红的汽车均属于具体概念,可增加“汽车” 这个抽象概念。
多元语义网络的表示
- 增加情况和动作节点;
- 增加事件节点;
- 连接词和量词的表示;
- …
其他方法
- 框架表示法
这是一种 结构化方法;
框架理论是明斯基于1975年作为理解视觉、自然语言对话及其它复杂行为的一种基础提出来的;
框架理论认为,人们对现实世界中各种事物的认识都是以一种类似于框架的结构存储在记忆中的。当遇到一个新事物时,就从记忆中找出一个合适的框架,并根据新的情况对其细节加以修改、补充,从而形成对这个新事物的认识。
框架网络:
框架结构:
-
每个框架都有框架名,代表某一类对象
-
一个框架由若干个槽(项目)组成,用于表示对象的某个方面的属性
-
有时一个槽(属性)还要从不同的侧面来描述,每个侧面可具有一个或多个值。
注意:框架中的槽与侧面可任意定义,也可以是另一框架,形成框架网络系统。 -
剧本表示法(ppt-6)
-
过程表示法(ppt-6)
-
…
确定性推理
推理的基本概念
推理方法及其分类
- 按推理的逻辑基础分:演绎推理,归纳推理,类比归纳推理
- 按推理过程所用知识的确定性分:确定性推理、 不确定性推理
- 按推理过程推出的结论是否单调增加分:单调推理、非单调推理
- 按推理过程是否利用问题的启发性知识分:启发式推理、非启发式推理
推理的控制策略及其分类
推理的控制策略是指如何使用领域知识使推理过程尽快达到目标的策略。
- 推理策略
- 推理方向控制策略可分为
- 正向推理
- 逆向推理
- 混合推理
- 双向推理
- 求解策略:是指仅求一个解,还是求所有解或最优解等。
- 限制策略:是指对推理的深度、宽度、时间、空间等进行的限制。
- 冲突消解策略:是指当推理过程有多条知识可用时,如何从这多条可用知识中选出一条最佳知识用于推理的策略。
- 推理方向控制策略可分为
- 搜索策略(下面会详述)
搜索策略
- 按是否使用启发式信息:
- 盲目搜索:按预定的控制策略进行搜索,在搜索过程中获得的中间信息并不改变控制策略。
- 启发式搜索:在搜索中加入了与问题有关的启发性信息,用于指导搜索朝着最有希望的方向前进,加速问题的求解过程并找到最优解。
- 按问题的表示方式:
- 状态空间搜索:用指用状态空间法来表示问题所进行的搜索
- 与或树搜索:用指用问题归约法来表示问题所进行的搜索
状态空间的搜索策略
- 状态空间的盲目搜索
- 广度优先搜索
- 深度优先搜索
- 代价树搜索
- 状态空间的启发式搜索
- 启发性信息和估价函数
- A算法和A*算法
- 基本思想
- 先把问题的初始状态作为当前扩展节点对其进行扩展,生成一组子节点。
- 然后检查问题的目标状态是否出现在这些子节点中。若出现,则搜索成功,找到了问题的解;若没出现,则再 按照某种搜索策略从已生成的子节点中选择一个节点作为当前扩展节点。
- 重复上述过程,直到目标状态出现在子节点中或者没有可供操作的节点为止。
- 所谓对一个节点进行“扩展”是指对该节点用某个可用操作进行作用,生成该节点的一组子节点。
- 数据结构和符号约定
- OPEN表:未扩展节点表,用于存放刚生成节点
- CLOSED表:已扩展节点表,用于存放已经扩展或将要扩展的节点
- S:用表示问题的初始状态
- G:表示搜索过程所得到的搜索图
- M:表示当前扩展节点新生成的且不为自己先辈的子节点集
*各种搜索策略的主要区别在于对OPEN表中节点的排列顺序不同。*例如,广度优先搜索把先生成的子节点排在前面,而深度优先搜索则把后生成的子节点排在前面。
广度优先搜索算法流程:
- 把初始节点S放入OPEN表中;
- 如果OPEN表为空,则问题无解,失败退出;
- 把OPEN表的第一个节点取出放入CLOSED表,并记该节点为n;
- 考察节点n是否为目标节点。若是,则得到问题的解,成功退出;
- 若节点n不可扩展,则转第(2)步;
- 扩展节点n,将其子节点放入OPEN表的 尾部,并为每一个子节点设置指向父节点的指针,然后转第(2)步。
以八数码问题为例,得到下面这个广度优先搜索树:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WnggcYQ8-1570691337979)(https://i.loli.net/2019/02/24/5c71700f35a3f.jpg)]
在上述广度优先算法中需要注意两个问题:
- 对于任意一个可扩展的节点,总是按照固定的操作符的顺序对其进行扩展(空格左移、上移、右移、下移)。
- 在对任一节点进行扩展的时候,如果所得的某个子节点(状态)前面已经出现过,则立即将其放弃,不再重复画出(不送入OPEN表)。
因此,广度优先搜索的本质是,以初始节点为根节点,在状态空间图中按照广度优先的原则,生成一棵搜索树。
广度优先搜索的优缺点:
- 优点
- 只要问题有解,用广度优先搜索总可以得到解,而且得到的是路径最短的解。
- 缺点
- 广度优先搜索盲目性较大,当目标节点距初始节点较远时将会产生许多无用节点,搜索效率低。
深度优先搜索算法流程:
- 把初始节点S放入OPEN表中;
- 如果OPEN表为空,则问题无解 ,失败退出;
- 把OPEN表的第一个节点取出放入CLOSED表,并记该节点为n;
- 考察节点n是否为目标节点。若是,则得到问题的解,成功退出;
- 若节点n不可扩展,则转第(2)步;
- 扩展节点n,将其子节点放入OPEN表的 首部,并为每一个子节点设置 指向父节点的指针,然后转第(2)步。
在深度优先搜索中,搜索一旦进入某个分支,就将沿着该分支一直向下搜索。如果目标节点恰好在此分支上,则可较快地得到解。但是,如果目标节点不在此分支上,而该分支又是一个无穷分支,则就不可能得到解。所以深度优先搜索是不完备的,即使问题有解,它也不一定能求得解。
因此,为了防止搜索过程沿着无益的路径扩展下去,往往给出一个节点扩展的最大深度,即 深度界限。当搜索深度达到了深度界限而仍未出现目标节点时,就换一个分支进行搜索。
有界深度优先搜索的特点:
- 从某种意义上讲,有界深度优先搜索具有一定的启发性;
- 如果问题有解,且其路径长度≤dm,则上述搜索过程一定能求得解。
- 但是若解的路径长度> dm,则上述搜索过程就得不到解。。
- 这说明在有界深度优先搜索中,深度界限的选择是很重要的,但是要恰当地给出dm的值是比较困难的。
- 即使能求出解,它也不一定是最优解。
代价树搜索
考虑边的代价的搜索方法,代价树搜索的目的是为了找到一条代价最小的解路径。代价树搜索方法包括:
- 代价树的广度优先搜索
- 代价树的深度优先搜索
启发式信息与代价函数
采用问题自身的特性信息,以指导搜索朝着最有希望的方向前进。
启发性信息是指那种与具体问题求解过程有关的,并可指导搜索过程朝着最有希望方向前进的控制信息。启发信息的启发能力越强,扩展的无用结点越少。
启发性信息的种类
- 有效地帮助确定扩展节点的信息;
- 有效的帮助决定哪些后继节点应被生成的信息;
- 能决定在扩展一个节点时哪些节点应从搜索树上删除的信息。
估价函数的一般形式为:f(x) = g(x)+h(x)
,其中g(x)
表示从初始节点S0到节点x的代价;h(x)
是从节