一,状态空间表示法概述
1,状态空间表示法就是用来表示问题及其搜索过程的一种方法。是人工智能中最基本的形式化方法,也是讨论为题求解技巧的基础。
2,状态空间表示法的基础是状态和算符
(1)状态
描述某一类不同事物间的差别而引入的一组最少变量q0,q1,…,qn的有序集合,
例如,描述学生,变量可以有年级、班级、姓名、性别、学号……
根据要解决的问题,从中选择最少的一组变量,比如:区分所有在坐的同学分别在哪一个班上课(年级、班级);区分在坐的每一位同学(姓名、性别、学号)
状态变量:Q=(q0,q1,…,qn),其中每个元素qi(i=0,1,2,…n)为集合的分量,称为状态变量。
具体状态:当给每一个分量以确定的值时,就得到了一个具体状态。
(2)操作(算符)
引起状态中某些分量发生变化,从而使问题由一个状态变为另一个状态。
算符可分为走步、过程、规则、数学算子、运算符号或逻辑符号等 。
操作算子:O = {o1, o2, …, om}式中oj(j=0,1,…,m)为操作算子。
例如,描述学生,算符可以有入学、正常升级、毕业
3,状态空间
由表示一个问题的全部状态及一切可用算符构成的集合称为该问题的状态空间,一般有三部分构成:
①问题所有可能初始状态构成的集合S
②算符集合F
③目标状态集合G
可用三元组(S, F, G)
4, 状态空间图
状态空间的图示形式称为状态空间图。其中,节点表示状态,有向边(弧)表示算符。
5,问题的解
从问题的初始状态集S出发,经过一系列的算符运算,到达目标状态。
由初始状态到目标状态所用算符的序列构成了问题的一个解。(重点:算符的序列)
二,问题状态图示法
1,状态空间可以用有向图来描述
2,有向图表示状态空间法的对应关系
图中的一个节点对应于某一个状态
图中的一个有向弧对应于某一个算符
从初始状态的某个操作符序列转化为寻找途中初始节点到目标节点的一条路径
3,在某些情况下,每个操作符作用和成本是不一样的需要引入代价的概念
4,用状态空间表示问题的步骤
(1)定义状态的秒速形式
(2)用所定义的状态描述形式把问题的所有可能的状态都表示出来,并确定出问题的初始状态集合描述和目标状态集合描述。
(3)定义一组算符,使得利用这组算符可把问题由一种状态转变为另一种状态。
5,利用状态空间求解问题的过程
问题请求的过程是一个不断把算符作用于状态的过程
(1)首先,将适合的算符作用于初始状态,以产生新的状态;
(2)然后,再把一些适合的算符作用于新的状态
(3)直到产生的状态为目标状态为止
(4)得到了为题的解
三、状态空间表示法的简单应用
1,实验内容
将三枚处于反、正、反状态的钱币,每次只翻动一枚钱币,判断连续反动三次以后能否出现权证或全反的状态;并设计一个算法,验证最后的结果。
2,实验步骤
①定义状态的描述形式
用一个三元组(X, Y, Z)表示该问题的状态
X——硬币1的状态,当硬币正时为1,反时为0
Y——硬币2的状态,当硬币正时为1,反时为0
Z——硬币3的状态,当硬币正时为1,反时为0
②用所定义的状态描述形式把问题的所有可能的状态都表示出来
状态 | X, Y, Z |
---|---|
S1 | 1, 1, 1 |
S2 | 1, 1, 0 |
S3 | 1, 0, 1 |
S4 | 1, 0, 0 |
S5 | 0, 1, 1 |
S6 | 0, 1, 0 |
S7 | 0, 0, 1 |
S8 | 0, 0, 0 |
③确定问题的初始状态集合描述和目标状态集合描述
初始状态:(0,1,0)
目标状态:(1,1,1)或(0,0,0)
④定义一组算法,使得利用这组算法可把问题由一种转台转变为另一种状态
reverse1——表示翻转硬币1
reverse2——表示翻转硬币2
reverse3——表示翻转硬币3
#include
#include