第三章 知识得状态空间表示法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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 图搜索

用计算机进行状态空间问题求解得基本思路:

首先把问题得初始状态(即初结点)作为当前状态,选择合适得算符对其进行操作,生成一组子状态,然后检查目标状态就是否在其中出现。若出现,则搜索成功,若不出现,则按某种搜索策略从已生成得状态中再选一个状态作为当前状态,重复上述过程,直到目标状态出现,或者

相关文档
最新文档