知识表示的方法(3)——状态空间表示法

知识表示(knowledge representation)就是将人类知识形式化或者模型化。
知识表示的目的是能够让计算机存储和运用人类的知识。已有知识表示方法大都是在进行某项具体研究时提出来的,有一定的针对性和局限性,目前已经提出了许多知识表示方法。
常用的有:产生式表示法、框架表示法、状态空间表示法

一、状态空间表示

状态空间(state space)是利用状态变量和操作符号表示系统或问题的有关知识的符号体系。状态空间可以用一个四元组表示:
在这里插入图片描述
其中,S是状态集合,S中每一元素表示一个状态,状态是某种结构的符号或数据。O是操作算子的集合,利用算子可将一个状态转换为另一个状态。S0是问题的初始状态的集合,是S的非空子集,即S0⊂S。G是问题的目的状态的集合,是S的非空子集,即G⊂S。G可以是若干具体状态,也可以是满足某些性质的路径信息描述。
从S0结点到G结点的路径称为求解路径。求解路径上的操作算子序列为状态空间的一个解。例如,操作算子序列O1,……,Ok使初始状态转换为目标状态:
在这里插入图片描述
则O1,……,Ok即为状态空间的一个解。当然,解往往不是唯一的。
任何类型的数据结构都可以用来描述状态,如符号、字符串、向量、多维数组、数和表格等。所选用的数据结构形式要与状态所蕴含的某些特性具有相似性。如对于八数码问题,一个3×3的阵列便是一个合适的状态描述方式。

例3.1 八数码问题的状态空间表示
八数码问题(重排九宫格问题)是在一个3×3的方格盘上,放有1~8的数码,另一格为空。空格四周上下左右的数码可移到空格。需要解决的问题是如何找到一个数码移动序列使初始的无序数码转变为一些特殊的排列。例如,下图所示的八数码问题的初始状态(a)为问题的一个布局,需要找到一个数码移动序列使初始布局(a)转变为目标布局(b)。
知识表示的方法(3)——状态空间表示法_第1张图片
该问题可以用状态空间来表示。此时八数码的任何一种摆法就是一个状态,所有的摆法即为状态集S,它们构成了一个状态空间,其数目为9!。而G是指定的某个或某些状态,例如上图的(b)。
对于操作算子设计,如果着眼在数码上,想应的操作算子就是数码的移动,其操作算子共有4(方向)×8(数码)=32个。如着眼在空格上,即空格在方格盘上的每个可能位置的上下左右移动,其操作算子可简化成4个:

  • ①将空格向上移UP;
  • ②将空格向左移Left;
  • ③将空格向下移Down;
  • ④将空格向右移Right。

移动时要确保空格不会移出方格盘之外,因此并不是在任何状态下都能运用这个4个操作算子。如空格在方格盘的右上角时,只能运用两个操作算子——向左移Left和向下移Down。

二、状态空间的图描述

状态空间可用有向图来描述,图的节点表示问题的状态,图的弧表示状态之间的关系。初始状态对应于实际问题的已知信息,是图中的根节点。在问题的状态空间描述中,寻找从一种状态转换为另一种状态的某个操作算子序列等价于在一个图中寻找某一路径。
如图3.5所示为用有向图描述的状态空间。该图表示对状态S0允许使用操作算子O1,O2及O3,分别使S0转换为S1,S2及S3。这样一步步利用操作算子转换下去,如S10∈G,则O2,O6及O10就是一个解。
知识表示的方法(3)——状态空间表示法_第2张图片
上面是较为形式化的说明,下面再以八数码问题为例,介绍具体问题的状态空间的有向图描述。

例3.2
对于八数码问题,如果给出问题的初始状态,就可以用图来描述其状态空间。其中的弧可用4个操作算子来标注,即空格向上移Up、向左移Left、向下移Down、向右移Right。改图的部分描述如图3.6所示。
知识表示的方法(3)——状态空间表示法_第3张图片
在某些问题中,各种操作算子的执行是有不同费用的。如在旅行商问题中,两两城市之间的距离通常是不相等的,那么,在图中只需要给各弧线标注距离或费用即可。下面以旅行商问题为例,说明这类状态空间的图描述,其终止条件则是用解路径本身的特点来描述,即经过图中所有城市的最短路径找到时搜索便结束。

例3.3 旅行商问题(traveling salesman problem,TSP)或旅行推销员问题
假设一个推销员从出发地到若干个城市去推销产品,然后回到出发地。要求每个城市必须走一次,而且只能走一次。问题是要找到一条最好的路径,使得推销员访问每个城市后回到出发地所经过的路径最短或者费用最少。
图3.7是这个问题的一个实例,其中结点代表城市,弧上标注的数值表示经过该路径的费用(或距离)。假定推销员从A城出发。
知识表示的方法(3)——状态空间表示法_第4张图片
图3.8是该问题的部分状态空间表示。可能的路径有很多,例如,费用为375的路径(A,B,C,D,E,A)就是一个可能的旅行路径,但目的是要找具有最小费用的旅行路径。
上面两个例子中,只绘出了问题的部分状态空间图。对于许多实际问题,要在有限的时间内绘出问题的全部状态图是不可能的。
知识表示的方法(3)——状态空间表示法_第5张图片
例如旅行商问题,n个城市存在(n-1)!/2条路径。如果用108次/秒的计算机进行穷举,
则当n=7时,搜索时间为t=2.5×10-5秒;
则当n=15时,搜索时间为t=1.8小时;
则当n=20时,搜索时间为t=350年;
则当n=50时,搜索时间为t=5×1048年;
则当n=100时,搜索时间为t=5×10142年;
则当n=200时,搜索时间为t=5×10358年。
因此,这类显式表示对于大型问题的描述是不切实际的,而对于具有无限结点集合的问题则是不可能的。因此,要研究能够在有限时间内搜索到较好解的搜索算法。

三、总结

状态空间是利用状态变量和操作符号表示系统或问题的有关知识的符号体系,状态空间是一个四元组(S,O,S0,G)。
从S0结点到G结点的路径被称为求解路径。状态空间的一个解是一个有限的操作算子序列,它使初始状态转换为目标状态。
状态空间有向图的节点表示问题的状态,图的弧表示状态之间的关系。

你可能感兴趣的:(人工智能导论,人工智能)