教材:《人工智能及其应用》,蔡自兴等,2016m清华大学出版社(第5版)
参考书:
人工智能要解决的问题,大部分不具备明确的解题方法,这类问题可以用搜索方法解决。
除了图本身之外,还需要两种辅助的数据结构,即存放已访问但未拓展节点的OPEN表,以及存放已拓展节点的CLOSED表。
下面给出OPEN表和CLOSED表的数据结构:
OPEN表:
节点 | 父节点编号 |
---|---|
CLOSED表:
编号 | 节点 | 父节点编号 |
---|---|---|
GRAPHSEARCH:
在搜索图中,除初始节点外,任意一个节点都含有且只含有一个指向其父节点的指针。因此,由所有节点及其指向父节点的指针所构成的集合是一棵树,称为搜索树。
问题表述为:在8×8格的国际象棋上摆放8个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。如果经过±90度、±180度旋转,和对角线对称变换的摆法看成一类,共有42类。计算机发明后,有多种计算机语言可以编程解决此问题。
不需要重新安排OPEN表的搜索叫做盲目搜索或无信息搜索,它包括宽度优先搜索、深度优先搜索和等代价搜索。盲目搜索只适用于求解比较简单的问题。
宽度优先搜索(BFS)是一种以接近起始节点S的程度逐层扩展节点的搜索方法。
宽度优先算法如下:
深度优先搜索(DFS)是一种首先拓展最新产生的(即最深的)节点的搜索方法。
特点:防止搜索过程沿着无益的路径扩展下去,往往给出一个节点扩展的最大深度(深度界限)。
与宽度优先搜索算法最根本的不同在于:将扩展的后继节点放在OPEN表的前端。
深度优先算法如下:
等代价搜索是是宽度优先搜索的一种推广,不沿着等长度路径断层进行扩展,而沿着等代价路径断层进行扩展。其搜索树中每条连接弧线上的有关代价,表示时间、距离等花费。
等代价搜索算法如下:
在等代价搜索算法中,把从节点i到其后续节点j的连接弧线记为c(i,j),,把从起始节点S到任一节点i的路径代价记为g(i)。在搜索树上,假设g(i)也是从起始节点S到节点的最少代价路径上的代价。
把dist看成OPEN表,把path看成CLOSED表,则Dijkstra算法就是等代价搜索。
启发式信息:与具体问题求解过程有关的,并可指导搜索过程朝着最有希望方向前进的控制信息。
启发式搜索,又称为有信息搜索,是一种利用启发式信息的搜索方法。
特点:重排OPEN表,选择最有希望的节点加以扩展
种类:有序搜索、A*算法等
利用启发信息来决定哪个是下一步要拓展的节点,这种搜索总是选择“最有希望”的节点作为下一个被拓展节点,这种搜索叫做有序搜索(Ordered Search)或最佳优先搜索(Best-first Search)。
估价函数(Evaluation Function):为获得某些节点“希望”的启发信息,提供一个评定侯选扩展节点的方法,以确定哪个节点最有可能在通向目标的最佳路径上 。
应用节点的估价函数值来重排OPEN表。
Nilsson(尼尔逊)方法:一个节点的"希望"越大,则其 f 值越小。被选择的节点是估价函数最小的节点。
估价函数一般选择策略:
估价函数选择的三种典型情况:
可纳性: 对任一状态空间图,当从初始节点到目标节点有路径存在时,如搜索算法总能在有限步骤内找到一条从初始节点到目标节点的最佳路径,并在此路径上结束,则称该搜索算法是可采纳的。
A* 算法的可纳性 : A* 算法的搜索效率很大程度上取决于估价函数h(n)。一般来说, 在满足h(n) ≤h*(n)的前提下,h(n)的值越大越好。h(n)的值越大,说明它携带的启发性信息越多,A* 算法搜索时扩展的节点就越少,搜索效率就越高。
消解原理,又称为归结原理,是对谓词演算公式进行分解、化简,消去一些符号, 以求得导出子句。
空子句不含有任何文字,也就不能被任何解释所满足, 因此空子句是永假的, 不可满足的。
消解原理, 力图从子句集中推导出一个表示矛盾的空子句。
鲁滨逊归结原理的基本思想:
求取子句集的步骤:
令L1,L2为两任意原子公式;L1和L2具有相同谓词符号,但一般具有不同的变量。已知两子句L1∨α和~L2∨β,,如L1和L2具有最一般合一者σ,那么通过消解可以从这两个父辈子句推导出一个新子句(α∨β)σ,即消解式。
在谓词逻辑中,因子句集中的谓词一般都含有变元,因此不能像命题逻辑那样直接消去互补文字,而需要先用一个最一般合一对变元进行代换,使父辈(亲本)子句含互补文字后才能进行归结。谓词逻辑的归结要比命题逻辑的归结复杂。
把已知S证明L为真的问题,转化为证明S∧﹁ L为不可满足的问题。
消解反演推理方法:
对于比较复杂的系统、问题,利用搜索技术、消解原理很难甚至无法求解,需要一些更先进的推理技术、系统求解方法,如规则演绎系统、产生式系统等。
对于许多公式来说,子句集是一种低效率的表达式, 一些重要信息会在求取子句集过程中丢失。如:蕴含式:A→B,表示为子句:~AVB,导致因果关系丢失。
我们将研究易于表述的if-then(如果一那么)规则来求解问题,避免了将蕴含式表示为子句的推理方式。
规则演绎系统:运用If→Then规则来建立的问题求解系统,每个if可能与某断言集(事实)中的一个或多个断言匹配,有时把该断言集称为工作内存,then部分用于规定放入工作内存的新断言。在这种系统中,通常称每个if部分为前项,每个then部分为后项。
正向规则演绎系统:从事实到目标进行操作的,即从if到then的方向进行推理的。
1. 事实表达式的与或形变换
在基于规则的正向演绎系统中,我们把事实表示为非蕴涵形式的与或形,作为系统的总数据库。
与或形:子句集求取法的9步法中不必6(生成合取范式)、8(消去合取符号∧)两步,最后得到的形式:
一般把事实表达式的与或图表示倒过来,即把根节点画在最下面,而把其后继节点往上画。
由事实表达式的与或图表示的一重要性质是:由变换表达式得到的一组子句则可从与或图中读出,即每个子句相当于与/或图的一个可解树,它是由叶节点组成的公式。
从上图可以读出上例表达式的三个子句:Q(w,A)、﹁ S(A,v)∨ R(v) 、﹁ S(A,v)∨ P(v),这三个子句正是原表达式化成的子句集,由此可知:与/或图可看成是一组子句的一个简洁的表达形式。
3. 与或图的F规则变换
基于规则的正向演绎推理中,F规则具有以下形式:L → W。
具体要求如下:
将F规则的左部限制为单文字,是因为在进行演绎推理时,要用F规则作用于表示事实的与/或图,而该与/或图的叶节点都是单文字,这样就可用F规则的左部与叶节点进行匹配,大大简化了规则的应用过程。
4. 推理过程
如一个解图中所涉及的置换是一致的, 则该解图称为一致解图。
含有变量的表达式应注意:
- 当事实表达式、F规则、目标表达式中包含变量时,只有当解图中所用的置换是一致时,该解图对应的子句才成立
- 上解图中使用的置换{A/x, A/z}和{A/y, A/z}是一致的, 所以该子句成立
- 将两个置换的合一复合{A/x, A/y, A/z}作用于子句S(z)∨N(z)得到:S(A)∨N(A), 才是真正的结论
如 u1={A/y},u2={B/y}, 则U={u1,u2}是不一致的
逆向规则演绎系统是从then向if进行推理的,即从 目标或动作向事实或状况条件进行推理的。
1.目标表达式的与/或图表示
逆向系统中的目标公式采用与/或形表示,其化简采用Skolem 对偶形式(全称量词的约束变量以Skolem函数或常量取代,并使经Skolem化目标公式只剩下存在量词),并进行变元换名,使主析取元之间具有不同的变元名。
与或形的目标表达式可用与或图表示,但其表示方式与正向演绎中事实表达式的与/或图不同。它的k连接符用来把具有合取关系的子表达式连接起来,而在正向演绎中是把事实表达式具有析取关系的子表达式连接起来 。
反向演绎推理中的规则称为B规则,其表示形式为:W → L。其中W为任一与/或形表达式(Well-Formed Formula),L为单一文字(Literal)。
将规则右部L限制为单一文字,因为推理时要用它与目标与/或图中的叶结点进行匹配,而目标与/或图中的叶节点是文字,这样可以简化B规则对与/或图的应用。
如规则不符合L为单一文字这一要求,则要变换成这种形式。如规则W→L1∧L2可以化两个B规则, 即:W→L1 ,W→L2。
4.推理过程
基于规则的正向演绎推理和反向演绎推理都具有局限性。正向演绎推理要求目标表达式是文字的析取式,而反向演绎推理要求事实公式为文字的合取式。
双向演绎推理分别从正、反两个方向进行推理, 两个与/或图分别扩展, 最关键也是最复杂的是如何判断推理是否结束。
推理的终止处位于两个与/或图分别扩展后的某个交接处, 当正、反两个方向的与/或图对应的叶节点都可合一时, 推理就结束。
构造知识型系统和建立认知模型时常用的知识表示的形式系统。1943年E.波斯特首先将他提出的一种计算形式体系命名为产生式系统。50年代末期,A.纽厄尔和H.A.西蒙在研究人类问题求解的认知模型时也使用了产生式系统这一术语。产生式系统现代已成为研制人工智能系统时采用的最典型的体系结构之一。
在产生式系统中, 论域的知识分为两部分:
这类系统的知识库主要用于存储规则, 因此又把此类系统称为基于规则的系统。
产生式系统由3部分组成:
总数据库:事实库。存放求解过程中各种当前信息的数据结构,如问题的初始状态、事实、证据、中间推理结论、最后结果等。
产生式规则:规则库。用于存放与求解问题有关的某个领域知识的规则集合及其交换规则. 当某条规则的前提与总数据库中的某些事实相匹配时, 该规则就被激活, 并把其结论作为新的事实存入总数据库。
控制策略:推理机构。由一组程序组成,用来控制产生式系统的运行,决定问题求解过程的推理线路,实现对问题的求解。
控制策略:说明下一步应该选用什么规则,也就是如何应用规则。
从选择规则到执行操作分为3步:
产生式系统的控制策略: