AI agent 搜索算法
2020-07-18 04:14
561 查看
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
相关文章推荐
- 最近商店搜索算法(数组模拟版)没考虑输入错误
- Java中国象棋博弈程序探秘[5]——搜索算法
- 最快排序和搜索算法的最简代码实现
- pku 1077 eight(据说有人用8中搜索算法做了这道题目)
- 二分搜索算法和快速排序算法
- 海量数据搜索算法优化(转)
- 经典算法研究系列:四、教你通透彻底理解:BFS和DFS优先搜索算法
- 二分搜索算法
- 搜索算法 书籍
- 一个通用的图搜索算法
- ‘聪明的搜索算法’
- AI中的几种搜索算法---SA搜索算法
- k-d tree的最近邻搜索算法
- 杨氏矩阵搜索算法
- 全局最短路径搜索算法 Dijkstra
- A*搜索算法
- 迷宫问题----搜索算法(回溯)
- java深度搜索算法 深度优先搜索——java文件搜索
- 一、A*搜索算法
- 谷歌于4月21日修改搜索算法:根据移动端是否友好增加评级