• 人工智能第2版学习——盲目搜索3


    书目:人工智能第2版
    有需要电子版的可以私信我。

    这次讲讲盲目搜索算法,分两个,分别是深度优先搜索(DFS)和广度优先搜索(BFS)。
    其实还有迭代加深(DFS-ID)的深度优先搜索,不过好像书这里没讲。
    这几种算法都是不适用领域知识的不知情搜索算法,即不知道状态空间的任何信息。(这句话我其实也不太理解,后面如果有提到我再回来补上解释)

    算法简单说明

    深度优先搜索

    我记得大一的数据结构课有讲过这两种算法,对于深度优先搜索,其实就是,先对每个分支进行搜索,搜索到底了,再回去搜索其它分支。
    这里借用书中的图讲解:
    按照先先左后右的顺序,从顶点A开始一直往左走(A-B-D),到底了,回去一层往右走(D-B-E),又到底了,回退一层再回退一层(E-B-A),因为左分支全部到底了,所以就开始搜索右分支。
    所以最终搜索顺序就是A-B-D-B-E-B-A-C-F-C-G(这里我是便于理解才写这么仔细,图中直接把重复的点给省略了,给出的搜索顺序是A-B-D-E-C-F-G)
    在这里插入图片描述

    广度优先搜索算法

    这个也很好理解的,深度是深度优先,广度就是广度优先。它每次先把同一层的搜索完,再搜索下一层。还是用上面那个图来说明:
    同样是先左后右的顺序,从顶点A开始,搜索第二层(B、C),然后搜索第三层(D、E、F、G)。
    所以最终顺序是A-B-C-D-E-F-G。

    例子讲解1

    3拼图

    规则,图(a)是初始态,其中有个空白块,我们需要移动空白块,使得这个图最终变成图(b)的状态。
    在这里插入图片描述
    这里,书中定义了移动的顺序(上-下-右-左),如果找到了目标状态就不再搜索。然后如果搜索过程中遇到已经出现的状态,则不再对它进行搜索,并用X标记。
    好了,不多说,我直接把书中的图放上来:
    深度优先:可以看到,从一个分支一直往下找,找到了目标,然后就停了,整体结构很狭长。
    在这里插入图片描述
    广度优先:可以看到,每次要搜索同一层级的所有状态,然后再搜索下一层,知道找到目标。整体结构很宽大。
    在这里插入图片描述

    对于优缺点,书中放在了后面,这次就到这里,下次继续。

    觉得我讲的可以的麻烦可以点个赞吗?谢谢啦。

  • 相关阅读:
    CF:1214D.Treasure Island(有向图必经点)
    【附源码】计算机毕业设计JAVA宠物医院管理
    外观专利申请流程是怎样的?
    springboot验证码的生成与验证
    Python中的模块
    C/S架构学习之广播
    等保三级安全要求简要攻略-安全物理环境
    固定文章生成易语言代码
    赴日开发工程师是做什么的?
    JavaScript异步编程:提升性能与用户体验
  • 原文地址:https://blog.csdn.net/weixin_45034895/article/details/126257108