AI agent 搜索算法

agent 分类

	reflec(reactive) agent: 只会对特定的条件作出反应 类似 if else
	有internal state的agent:记住周围环境的变化 有内部状态
	goal_based agent:以目标为导向执行动作
	utility_based agent:满足以上条件时 找到最优解

环境类型

fully/partially observable 可以获得所有的环境还是部分环境
deterministic/stochastic 下一个状态由当前状态和行为决定还是随机
episodic分布/sequential连续:是否需要考虑历史信息
static/dynamic: 在机器人判断时 环境静止还是动态
discrete离散/continuous: 有限数量的

定义一个搜索问题

	1.initial state 初始点
	2 transition:
		operators 可以进行的操作
		successor function:s(x)从x进行一步之后可以达到的状态
	3.goal state 目标点
	4 path cost  用于评估一系列transitions的成本
	1和2共同定义一个状态空间

问题的解

a solution to a problem is an action sequence that 
leads from the initial state to a goal state
即:一个问题的解就是 从初始状态到目标状态的行动序列
最优解就是所有解里 路径成本最小的解

为什么要搜索算法

状态空间太大 所以需要搜索算法 相当于一种求解模式

搜索问题的数据结构

搜索树的每个节点 有以下成分:
	state 状态
	parent 父节点
	action 父节点生成该即诶单时采取的行动
	path-cost 从初始节点到该节点的路径消耗
	depth 树深度

求解算法的性能

completeness完备性 当问题有解时 能否找到解
time complexity 时间复杂度 找到解要花多长时间
space complexity 空间复杂度 执行过程中需要多少内存
optimality 最优性 是否能找到最优解

无信息搜索策略

无信息指的是  无法知道当前位置到目标节点的情况 不知道是变远了 还是 变近了

BFS 广度优先搜索
每次总是扩展深度最浅的节点 这可以通过将未扩展的节点组织成fifo 先进先出 队列来实现
找到的是最浅的目标节点
  每个状态都有b个后继状态 解的深度为d 
  时间复杂度 b^d 空间复杂度b^d 完备性 true	
 
uniform cost search 一致代价搜索
一致代价搜索也是一种图搜索算法 扩展的是路径消耗g(n)
从初始状态到当前状态的路径消耗最小的节点n

在这里插入图片描述

	用uniform search的结果是
	1. s
	2. s-a 1
		s-b 5
		s-c 18
	3. 发现a最小
		s - a - g 13 但并不是当前遍历最小的 所以继续搜索 扩展b
	4. s - b - g 10为当前最小cost 完成搜索


dfs深度优先搜索
	深度优先总是扩展搜索树的当前边缘节点集中最深的节点
	搜索直接推到最深层
	如果最深层节点扩展完了 就回溯到下一个还有未扩展节点的深度稍浅的节点。

在这里插入图片描述

遍历顺序  1->2->4->8->5->3->6->7


深度限制搜索
设置最大深度

迭代加深的深度优先 iterative deepening search
ids = dfs + bfs

在这里插入图片描述
走这张图

深度0

A,没了

深度1

ABCE,没了

深度2

A, B, D, F,

这时该往回走

C, G, E,完了, F(F撞了)

深度3

A, B, D, F, E,

这时该往回走

C, G,完了, E, F, B(这三个撞了)
在这个搜索策略中,一个具有深度限制的深度优先搜索算法会不断重复地运行,
并且同时放宽对于搜索深度的限制,直到找到目标状态。

我们可以估计一个深度,例如2,让DFS搜索前2步所能到达的节点,如果搜不到,也不继续搜索,
直接返回,然后搜索其它的节点。如果找不到,就放款限制,让深度变为4,即搜索前4步内所能到达的节点,
若没找到,就让深度变为8、16、32。依次类推,直到找到终点。这样我们就可以给出IDDFS的大致框架了

有信息的搜索策略

有信息搜索 informed search = 启发式搜索
启发式搜索比无信息搜索更加高效
启发函数:h(n) 估算当前state和目标state之间的距离
存储结构:全部用优先队列

最佳优先搜索 best - first - search
节点是基于评估函数f(n)被选择扩展的
f(n) 可自己定义

贪婪搜索 greedy search
f(n) = h(n) 使用h(n) 对node进行排列 选择小的进行扩展

A* search
评估函数 f(n) = g(n) + h(n) 
g(n)是从出发位置到当前位置的cost
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值