第三章 知识得状态空间表示法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第三章知识得状态空间表示法
1 课前思考:
人类得思维过程,可以瞧作就是一个搜索得过程。
某个方案所用得步骤就是否最少?也就就是说它就是最优得吗?如果不就是,如何才能找到最优得方案?在计算机上又如何实现这样得搜索?这些问题实际上就就是本章我们要介绍得搜索问题。
2 学习目标:
掌握回溯搜索算法、深度优先搜索算法、宽度优先搜索算法与A搜索算法,对典型问题,掌握启发式函数得定义方法。
3 学习指南:
了解算法得每一个过程与细节问题,掌握一些重要得定理与结论,在有条件得情况下,程序实现每一个算法,求解一些典型得问题。
4 难重点:
回溯搜索算法、算法及其性质、改进得A*算法。
5 知识点:
本章所要得讨论得问题如下:
有哪些常用得搜索算法。
问题有解时能否找到解。
找到得解就是最佳得吗?
什么情况下可以找到最佳解?
求解得效率如何。
3、1 状态空间表示知识
一、状态空间表示知识要点
1.状态
状态(State)用于描述叙述性知识得一组变量或数组,也可以说成就是描述问题求解过程中任意时刻得数据结构。通常表示成:
Q={q1,q2,……,qn}
当给每一个分量以确定得值时,就得到一个具体得状态,每一个状态都就是一个结点(节点)。实际上任何一种类型得数据结构都可以用来描述状态,只要它有利于问题求解,就可以选用。
2.操作(规则或算符)
操作(Operator)就是把问题从一种状态变成为另一种状态得手段。当对一个问题状态使用某个可用操作时,它将引起该状态中某一些分量发生变化,从而使问题由一个具体状态变成另一个具体状态。操作可以就是一个机械步骤、一个运算、一条规则或一个过程。操作可理解为状态集合上得一个函数,它描述了状态之间得关系。通常可表示为:
F={ f1 , f2,……… fm}
3.状态空间
状态空间(State Space)就是由问题得全部及一切可用算符(操作)所构成得集合称为问题得状态空间。用三元组表示为:
({Qs},{F},{Qg})
Qs:初始状态,Qg:目标状态,F:操作(或规则)。
4.状态空间(转换)图
状态空间也可以用一个赋值得有向图来表示,该有向图称为状态空间图,在状态空间图中包含了操作与状态之间得转换关系,节点表示问题得状态,有向边表示操作。
二、状态图搜索
1、搜索方式
用计算机来实现状态图得搜索,有两种最基本得方式:树式搜索与线式搜索。
2、搜索策略
大体可分为盲目搜索与启发式(heuristic)搜索两大类。
搜索空间示意图
例3、1 钱币翻转问题
设有三枚硬币,其初始状态为(反,正,反),允许每次翻转一个硬币(只翻一个硬币,必须翻一个硬币)。必须连翻三次。问就是否可以达到目标状态(正,正,正)或(反,反,反)。
问题求解过程如下:
用数组表示得话,显然每一硬币需占一维空间,则用三维数组状态变量表示这个知识:
Q=(q1 , q2 , q3)
取q=0 表示钱币得正面q=1 表示钱币得反面
构成得问题状态空间显然为:
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维数组或状态空间描述比较合适,第一位表示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 < 6—→(E,6)
f3:8斤油瓶不空时倒空(E,S)且E > 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斤油瓶内油去灌满8斤油瓶(E,S)且E < 8 且E+S ≥8—→(8,E+S-8)
f8:用8斤油瓶内油去灌满6斤油瓶(E,S)且S < 6 且E+S ≥6—→(E+S-6,6)
3、2 搜索问题讨论
(1)求任一解路得搜索策略
回溯法(Backtracking)
爬山法(Hill Climbing)
宽度优先法(Breadth-first)
深度优先法(Depth-first)
限定范围搜索法(Beam Search)
好得优先法(Best-first)
(2)求最佳解路得搜索策略
大英博物馆法(British Museum)
分枝界限法(Branch and Bound)
动态规划法(Dynamic Programming)
最佳图搜索法(A﹡)
(3)求与或关系解图得搜索法
一般与或图搜索法(AO﹡)
极小极大法(Minimax)
α-β剪枝法(Alpha-beta Pruning)
启发式剪枝法(Heuristic Pruning)
3、3 图搜索
用计算机进行状态空间问题求解得基本思路:
首先把问题得初始状态(即初结点)作为当前状态,选择合适得算符对其进行操作,生成一组子状态,然后检查目标状态就是否在其中出现。若出现,则搜索成功,若不出现,则按某种搜索策略从已生成得状态中再选一个状态作为当前状态,重复上述过程,直到目标状态出现,或者