人工智能1
状态空间及其搜索策略AI搜索:v问题求解技术主要是两个方面:v问题的表示v求解的方法v状态空间法v状态(state): 一组特定的值v算符(operators/transitions):把问题从一种状态变换为另一种状态的手段
怎样可以从初始状态到到目标状态呢?是按照某个方法还是盲目的尝试呢?? 有两种思想:1移动数字,每个数字可以向(上、下、左、右)移动,则八个数码可以移动的方法8X4=32种2移动空格,一个空格可以向(上、下、左、右)移动,则有1X4种,这种方法更高效
如何能向下面这样高效地找到目标呢??少走一些弯路。
下面是一个简单的例子,大的瓶子可以装5加仑的水,小瓶子可以装2加仑的水,这两个瓶子都没有刻度,请问怎么在第二瓶子上装1加仑的水?其中,初始状态是大瓶子的装满水(5加仑),小瓶子为空。多余的水可以倒掉。 这个问题很简单,大瓶子的水往小瓶子倒,倒满小瓶子,则小瓶子的水为2加仑,再将小瓶子的水倒掉,再重复一次,则大瓶子剩下1加仑的水,把这1加仑的水倒到小瓶子上。则完成任务。怎么用状态空间树去解决呢??定义下面的函数:
则状态空间可以这样解决:
下面是一个思考题。有两个空的瓶子,大瓶子可以装4加仑的水,小瓶子可以装3加仑的水。假设水源不断,怎么可以在大瓶子装2加仑的水?(这两个瓶子没有刻度) 状态空间树解法:结点:状态描述弧:操作,运算(可以保留父结点的状态,方便回溯)假设状态为(x,y),x表示大瓶的装的水,y代表小瓶的装的水假设初始状态为(4,0),目标状态为(2,0)
那么大的空间数,如何做到高效呢?
结点如此多,如何只找到我们需要的结点呢??
下面有几个重要的概念
海量数据搜索结点生成----->结点扩展------->目标测试------>解 (费用代价)
结点生成就是初始化结点扩展就是生成所有的儿子结点从已有的(显示的)去扩展一些儿子,使得隐式的结点一步步的显示的过程。在搜索的过程中:结点类型分成了下面几类
白色虚线表示显示的结点,其中红色的虚线表示的是Close,红色和白色虚线之间的是Open
状态空间搜索树算法的特点
这是学习后面章节的基础,再重申一次。