第三章 知识的状态空间表示法.docx
《第三章 知识的状态空间表示法.docx》由会员分享,可在线阅读,更多相关《第三章 知识的状态空间表示法.docx(26页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精品文档,仅供学习与交流,如有侵权请联系网站删除第三章 知识的状态空间表示法1 课前思考:人类的思维过程,可以看作是一个搜索的过程。某个方案所用的步骤是否最少?也就是说它是最优的吗?如果不是,如何才能找到最优的方案?在计算机上又如何实现这样的搜索?这些问题实际上就是本章我们要介绍的搜索问题。 2 学习目标:掌握回溯搜索算法、深度优先搜索算法、宽度优先搜索算法和A搜索算法,对典型问题,掌握启发式函数的定义方法。 3 学习指南:了解算法的每一个过程和细节问题,掌握一些重要的定理和结论,在有条件的情况下,程序实现每一个算法,求解一些典型的问题。 4 难重点:回溯搜索算法、 算法及其性质、改进的算法。
2、5 知识点:本章所要的讨论的问题如下: 有哪些常用的搜索算法。 问题有解时能否找到解。 找到的解是最佳的吗? 什么情况下可以找到最佳解? 求解的效率如何。 3.1 状态空间表示知识一、状态空间表示知识要点1状态状态(State)用于描述叙述性知识的一组变量或数组,也可以说成是描述问题求解过程中任意时刻的数据结构。通常表示成:Q=q1,q2,qn当给每一个分量以确定的值时,就得到一个具体的状态,每一个状态都是一个结点(节点)。实际上任何一种类型的数据结构都可以用来描述状态,只要它有利于问题求解,就可以选用。2操作(规则或算符)操作(Operator)是把问题从一种状态变成为另一种状态的手段。当对
3、一个问题状态使用某个可用操作时,它将引起该状态中某一些分量发生变化,从而使问题由一个具体状态变成另一个具体状态。操作可以是一个机械步骤、一个运算、一条规则或一个过程。操作可理解为状态集合上的一个函数,它描述了状态之间的关系。通常可表示为:F= f1 , f2, fm3状态空间状态空间(State Space)是由问题的全部及一切可用算符(操作)所构成的集合称为问题的状态空间。用三元组表示为:(Qs,F,Qg)Qs:初始状态,Qg:目标状态,F:操作(或规则)。4状态空间(转换)图状态空间也可以用一个赋值的有向图来表示,该有向图称为状态空间图,在状态空间图中包含了操作和状态之间的转换关系,节点表
4、示问题的状态,有向边表示操作。二、状态图搜索1.搜索方式用计算机来实现状态图的搜索,有两种最基本的方式:树式搜索和线式搜索。 2.搜索策略大体可分为盲目搜索和启发式(heuristic)搜索两大类。搜索空间示意图例3.1 钱币翻转问题设有三枚硬币,其初始状态为(反,正,反),允许每次翻转一个硬币(只翻一个硬币,必须翻一个硬币)。必须连翻三次。问是否可以达到目标状态(正,正,正)或(反,反,反)。问题求解过程如下: 用数组表示的话,显然每一硬币需占一维空间,则用三维数组状态变量表示这个知识: Q=(q1 , q2 , q3) 取q=0 表示钱币的正面 q=1 表示钱币的反面构成的问题状态空间显然
5、为: Q0=(0,0,0), Q1=(0,0,1), Q2=(0,1,0) , Q3=(0,1,1) Q4=(1,0,0) ,Q5=(1,0,1) ,Q6=(1,1,0), Q7=(1,1,1)引入操作:f1:把q1翻一面。 f2:把q2翻一面。f3:把q3翻一面。 显然:F=f1,f2,f3 目标状态:(找到的答案) Qg=(0,0,0)或(1,1,1)例3.2 分油问题。 有两只空油瓶,容量分别为8斤和6斤,另有一个大油桶,里面有足够的油。我们可以任意从油桶中取出油灌满某一油瓶,也可以把某瓶中的油全部倒回油桶,两个油瓶之间可以互相灌。问如何在8斤油瓶中精确的得到4斤油。问题的求解显然用2维
6、数组或状态空间描述比较合适,第一位表示8斤油瓶油量,第二位表示6斤油瓶油量,构成整数序列偶(E,S)E:=0,1,2,3,4,5,6,7,8 。表示8斤油瓶中含有的油量。S:=0,1,2,3,4,5,6。表示6斤油瓶中含有的油量。总结出如下分油操作规则:f1:8斤油瓶不满时装满(E,S)且 E 8(8,S)f2:6斤油瓶不满时装满(E,S)且 S 0(0,S) f4:6斤油瓶不空时倒空(E,S)且 S 0(E,0) f5:8斤油瓶内油全部装入6斤油瓶内 (E,S)E 0 且E+S 6(0,E+S)f6:6斤油瓶内油全部装入8斤油瓶内 (E,S)S 0 且 E+S 8(E+S,0)f7:用6斤油
7、瓶内油去灌满8斤油瓶 (E,S)且 E 8 且E+S 8(8,E+S-8)f8:用8斤油瓶内油去灌满6斤油瓶 (E,S)且 S Dm GO LOOP;7、EXPAND(n) mi,G:=ADDmi,G;8、IF 目标在mi中 THEN EXIT(SUCCESS);9、ADD(mi,OPEN),并标记mj到n指针;10、将mi重排序到open表头部。11、GO LOOP;深度优先搜索性质一般不能保证找到最优解当深度限制不合理时,可能找不到解,可以将算法改为可变深度限制最坏情况时, 搜索空间等于穷举与回溯法的差别:图搜索是一个通用的与问题无关的方法3.4 回溯策略所谓回溯策略,简单地说是这样一种策
8、略:首先将规则给出一个固定的排序,在搜索时,对当前状态(搜索开始时,当前状态是初始状态)依次检测每一条规则,在当前状态未使用过的规则中找到第一条可触发规则,被应用于当前状态,得到的新状态重新设置为当前状态,并重复以上搜索。如果当前状态无规则可用,或者所有规则已经被试探用过仍未找到问题的解,则将当前状态的前一个状态(即直接生成该状态的状态)设置为当前状态。重复以上搜索,直到找到问题的解,或者试探了所有可能后仍找不到问题的解为止。一个递归的例子Int abc(int n) abc(m);八数码游戏回溯控制方式新生成的状态在通向初始状态的路径上已出现过;从初始状态开始,应用的规则数目达到所规定的数目
9、之后还未找到目标状态(这一组规则的数目实际上就是搜索对当前状态,再没有可应用的规则。回溯搜索算法BACKTRACK(DATA)功能:如果从当前状态DATA到目标状态有路径存在,则返回以规则序列表示的从DATA到目标状态的路径(以规则表的形式表示);如果从当前状态DATA到目标状态没有路径存在,则返回FAIL。 递归过程BACKTRACK(DATA)IF TERM(DATA),RETURN NIL;TERM取真即找到目标,则过程返回空表NIL。IF DEADEND(DATA),RETURN FAIL;DEADEND取真,即该状态不合法,则过程返回FAIL,必须回溯。RULES:APPRULES(
10、DATA);APPRULES计算DATA的可应用规则集,依某种原则(任意排列或按启发式准则)排列后赋给RULES。LOOP:IF NULL(RULES),RETURN FAIL;NULL取真,即规则用完未找到目标,过程返回FAIL,必须回溯。R:FIRST(RULES);取头条可应用规则。RULES:TAIL(RULES);删去头条规则,减少可应用规则表的长度。RDATA:GEN(R,DATA);调用规则R作用于当前状态,生成新状态。PATH:BACKTRACK(RDATA);对新状态递归调用本过程。IF PATHFAIL,GO LOOP;当PATHFAIL时,递归调用失败,则转移调用另一规则
11、进行测试。RETURN CONS(R,PATH);过程返回解路径规则表(或局部解路径子表)。回溯搜索算法()BACKTRACK1(DATALIST) DATALIST:从初始到当前的状态表(逆向)返回值:同前面的算法一样,是以规则序列表示的路径表(当求解成功时),或者是FAIL(当求解失败时)。 回溯搜索算法(续)DATA:FIRST(DATALIST);设置DATA为当前状态IF MEMBER(DATA,TAIL(DATALIST) ),RETURN FAIL;TAIL是取尾操作,表示取表DATALIST中除了第一个元素以外的所有元素。如果DATA在TAIL(DATALIST)中存在,则表示
12、有环路出现,过程返回FAIL,必须回溯。IF TERM(DATA),RETURN NIL;TERM取真即找到目标,则过程返回空表NIL。IF DEADEND(DATA),RETURN FAIL;DEADEND取真,即该状态不合法,则过程返回FAIL,必须回溯。IF LENGTH(DATALIST)BOUND,RETURN FAIL;LENGTH计算DATALIST的长度,即搜索的深度,当搜索深度大于给定值BOUND时,则过程返回FAIL,必须回溯。RULES:APPRULES(DATA);APPRULES计算DATA的可应用规则集,依某种原则(任意排列或按启发式准则排列)排列后赋给RULES。
13、LOOP:IF NULL(RULES),RETURN FAIL;NULL取真,即规则用完未找到目标,过程返回FAIL,必须回溯。R:FIRST(RULES);取头条可应用规则。RULES:TAIL(RULES);删去头条规则,减少可应用规则表的长度。RDATA:GEN(R,DATA);调用规则R作用于当前状态,生成新状态。RDATALIST:CONS(RDATA,DATALIST);将新状态加入到表DATALIST中。PATH:BACKTRACK1(RDATALIST);递归调用本过程。IF PATHFAIL,GO LO0P;当PATHFAIL时,递归调用失败,则转移调用另一规则进行测试。RE
14、TURN CONS(R,PATH);过程返回解路径规则表(或局部解路径子表)。 2.1 回溯策略(Backtracking Strategies) 例:四皇后问题 QQQQ存在问题及解决办法:问题:深度问题死循环问题解决办法:对搜索深度加以限制记录从初始状态到当前状态的路径一些深入的问题失败原因分析、多步回溯QQ一些深入的问题(续)回溯搜索中知识的利用 基本思想(以皇后问题为例): 尽可能选取划去对角线上位置数最少的QQQQ3.5 状态空间的与/或树表示法1、 分解(与树)把一个复杂的问题变成简单的子问题,各子问题又可以化成更为简单的子问题,重复此过程,直到不能分解为止。然后对各子问题求解,最
15、后把各子问题复合起来就是问题的解。2、 等价变换(或树)通过同结构的等价变换或同态的等价变换把问题分解成比较容易解的子问题,P1,P2,P3任何一个子问题有解,则问题P就可解,称P1,P2,P3之间存在“或”的关系,节点P成为“或”节点,由P1,P2,P3,P之间构成的树为“或”树。几个概念(1)父问题、子问题:问题空间是由一个个问题组成的空间,在问题求解中,用一个节点代表一个问题,若节点A有一边通向B,则表示A的解决有赖于B的解决。A称为父问题,B称为子问题。(2)本原问题:不能再分解或变换,而且直接可解的子问题。(3)端节点与终止节点:没有子节点的节点,本原问题对应的节点是终止节点。注意,
16、终止节点一定是端节点,但端节点不一定是终止节点。与或图的搜索:基本概念:与或图是一个超图,节点间通过连接符连接。K-连接符:可解节点:终节点是可解节点;若非终节点有“或”子节点时,当且仅当其子节点至少有一能解,该非终节点才可解;若非终节点有“与”子节点时,当且仅当其子节点均能解,该非终节点才可解。不可解节点没有后裔的非终节点是不可解节点;若非终节点有“或”子节点时,当且仅当所有子节点均不能解时,该非终节点才不可解;若非终节点有“与”子节点时,当至少有一子节点不能解时,该非终节点才不可解。“与/或”树的搜索过程1. 把初始节点S0放入OPEN表;2. 移出OPEN表的第一个节点N放入CLOSED
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第三章 知识的状态空间表示法 第三 知识 状态 空间 表示
限制150内