【人工智能导论】搜索问题(Search Problem)第一部分:无信息搜索(Uninformed)与有信息搜索(启发式搜索)

系列文章目录

搜索问题第一部分 无信息搜索与有信息搜索(启发式搜索)
搜索问题第二部分 约束满足问题(Constraint Satisfaction Problem)和局部搜索(Local Search)算法
搜索问题第三部分 对抗性搜索(Adversarial Search)和蒙特卡洛树搜索(Monte Carlo Tree Search, MCTS)



前言

搜索问题可以是一个很简单的问题,也可以是一个相对复杂的问题。本文是系列文章的第一篇,将介绍几种搜索问题的基础算法,如一致代价搜索(UCS)、A*搜索等,其中A*搜索比较重要。
在接下来的几篇文章中,我会介绍约束满足问题(Constraint Satisfaction Problem),这是一类状态具有结构的搜索问题,如八皇后问题;也会介绍一些局部搜索(Local Search)算法,比如经典的爬山法(Hill Climbing)、模拟退火算法(Simulated Annealing)、局部集束搜索(Local Beam Search)和遗传算法;在本系列文章的结尾,我会介绍对抗性搜索(Adversarial Search)和蒙特卡洛树搜索(Monte Carlo Tree Search, MCTS)。


一、搜索问题介绍

智能体(Agent)大体可以分为两种,反射型智能体和规划型智能体。反射型智能体只能根据它对于现状的认知(percept)做出一个单独的动作,而规划型智能体则会做出一系列的动作(a1,a2,a3,……)(称作solution,解决方案)。要想知道究竟要采取哪些动作就需要用到搜索的方法。规划型智能体

一个抽象的搜索问题包含:

  1. 状态空间S
  2. 初始状态s0
  3. 在每个状态可以采取的所有动作A(s),s是状态空间中的一个状态。
  4. 转移模型Result(s,a),s是当前状态,a是要采取的动作。
  5. 检测是否达到目标状态的函数G(s)
  6. 动作代价c(s,a,s'),其中s是当前状态,a是将要采取的动作,s’是采取动作后转移到的新状态

二、无信息搜索:深度优先搜索DFS、广度优先搜索BFS、迭代加深搜索IDS与一致代价搜索UCS

这几种无信息搜索算法就是大家在算法课上学到的DFS以及BFS的本体或变种,它们都有树搜索和图搜索两个版本。
先介绍两个性质:完备性最优性完备性是指如果存在解决方案solution,则算法保证可以找到;最优性是指算法保证可以找到花费最低的路径。
深度优先搜索DFS:它的策略是优先扩张最深的节点,边缘集是一个LIFO后进先出的栈。

  • 完备性:如果搜索图中不存在环,则可以保证找到解决方案(如果存在)。
  • 最优性:没有最优性,不能保证获得代价最小的解决方案,DFS只能获得最“左”的路径。
  • 复杂度:假设b是分支因子(每个父节点的孩子节点数),m是最大深度,则有:
    时间复杂度:O( bm )
    空间复杂度:O( bm ),因为只有这条路径上的节点(b个)和它们的兄弟节点(每个节点有m-1个兄弟节点)加入了边缘集。
    深度优先搜索DFS

广度优先搜索BFS:它的策略是优先扩张最浅的节点,边缘集是一个FIFO后进先出的队列。

  • 完备性:BFS具有完备性。
  • 最优性:如果每一条边的代价都相同,则可以找到最优解;如果不相同,则不能。
  • 复杂度:假设b是分支因子(每个父节点的孩子节点数),d是所有目标节点中的最小深度,则有:
    时间复杂度:O( bd ),
    空间复杂度:O( bd ).
    广度优先搜索BFS

迭代加深搜索IDS:迭代加深搜索IDS可以看作是DFSBFS改进算法,它的目的是用DFS的空间复杂度和BFS的时间复杂度获得BFS可以搜索到的最优解。
IDS实现思路比较简单:在DFS搜索外面套一个大循环,然后人为限制DFS的深度,如果在当前深度没有找到解,则让探索深度+1,再次执行DFS,如此循环直到找到解。因为每次迭代都是执行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值