人工智能搜索策略

问题求解系统划分为两大类:
知识贫乏系统:依靠搜索技术解决问题;知识贫乏,缺乏针对性;效率低
知识丰富系统

搜索包含两层含义:一是要找到从初始事实到问题最终答案的一条推理路线,二是找到这条路线是时间和空间复杂度最小求解路线。
盲目搜索具有盲目性,效率不高,不便于复杂问题的求解。
启发式搜索动态地确定规则的排序,优先调用合适的规则,加速问题的求解过程,使搜索朝着最有希望的方向前进,找到最优解。

状态空间及其搜索的表示
状态
操作
状态空间
状态空间用来描述一个问题的全部状态及这些状态之间的相互关系状态。
状态空间常用一个三元组(S,F,G)来表示。其中:
S为问题的所有初始状态的集合,其中的每个元素表示一种状态。
F为操作的集合,用于把一个状态转换为另一个状态。
G是S的一个非空子集,为目标状态的集合。它可以是若干具体的状态,也可以是对某些动态性质的描述。
状态空间也可以用一个赋值的有向图来表示,该有向图称为状态空间图。在状态空间图中,节点表示问题的状态,有向(弧)表示操作。

问题归约描述
问题归约法由下面3个部分组成:
一个初始问题的描述;
一套把问题变换成为子问题的操作符;
一套本原问题的描述。

与/或树的相关概念
节点与弧线
父节点:是一个初始问题或是可分解为子问题的问题节点。
子节点:是一个初始问题或是子问题分解的子问题节点。
或节点:只要解决某个问题就可解决其父问题的节点集合。
与节点:只有解决所有问题,才能解决其父问题的节点集合。
端节点:没有子节点的节点。
终止节点:本原问题所对应的节点。终止节点一定是端节点,而端节点却不一定是终节点。
弧线:是父节点指向子节点的圆弧连线。

或树、与/或树和解树
把一个原问题变换成若干个子问题可用一个或树来表示;把一个问题分解为若干个子问题可用一个与树来表示。

广度优先搜索:一层一层搜索
深度优先搜索:一支一支搜索

估价函数
估价函数的任务是估计待搜索节点的重要程度,给它们排定顺序。在这里,把估价函数f(n)定义为从初始决节点S0经过节点n到达目标节点的最小代价路径的代价估计值,它的一般形式为f(n)=g(n)+h(n),其中,g(n)为初始节点S0到节点n已实际付出的代价,h(n)是从节点n到目标节点Sg最优路径的估计代价。
A算法基于估价函数,A算法也称为启发式搜索算法。

A*算法
A*算法也是一种启发式搜索方法,它是对扩展节点的选择方法做了一些限制,选用了一个比较特殊的估价函数,这时的估价函数f(n)=g(n)+h(n)是对函数f *(n)=g*(n)+h*(n)的一种估计或近似,即,f(n)是对f*(n)的估价,g(n)是对g*(n)的估计,h(n)对h*(n)估计。
A*算法性质
可采纳性
所谓可采纳性是指对于可求解的状态空间图(即从状态空间图的初始节点到目标节点有路径存在)来说,如果一个搜索算法能在有限步终止,并且能找到最优解,则称该算法是可采纳的。

A*算法与A算法的区别:
g(n)是对最小代价g*(n)的估计g( n)大于等于g (n);h(g)最小代价h*(n)的下界,即对任意节点n均有h(n)小于等于h*(n)。

启发式搜索f(x)=g(x)+wh(x)
深度优先搜索g(x)=0
广度优先搜索h(x)=0
当浅层的时候,取w值大,使g(x)的占比小,加速深度搜索;当深层的时候,取w值小,使g(x)的占比大,加速广度搜索。

博弈树的启发式搜索
博弈的初始状态是初始节点;博弈树中的“或”节点和“与”节点逐层交替出现;整个博弈过程始终站在某一方的立场上。例如,站在MAX方,所有能使MAX方获胜的节点都是可解决点,所有能使MIN方获胜的节点都是不可解节点。

a-b剪枝
a-b剪枝的方法如下:
MAX节点的a值为当前子节点最大倒推值;MIN节点的b值为当前子节点最小倒推值。
a-b剪枝的规则如下:
任何MAX节点n的a值大于或等于它先辈节点的b值,则n以下的分枝可停止搜索,并令节点n的倒推值为a。这种剪枝。
任何MIN节点n的b值小于或等于它先辈节点的a值,则n以下的分枝可停止搜索,并令节点n的倒推值为b。这种剪枝称为a剪枝。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值