文章目录

  • 前言
  • 一、终点未知的搜索(Uninformed search strategies)
    • 深度优先搜索(DFS)和广度优先搜索(BFS)
    • 深度限制搜索
    • 迭代加深搜索
    • 评价

前言

Uninformed search strategies直译为不知情的搜索,即在已知起点位置,未知终点未知的情况下寻找最佳路径的方法。与启发式搜索不同,启发式搜索详见第二章。


一、终点未知的搜索(Uninformed search strategies)

Breadth-First Search(BFS)广度优先广度优先搜索
Depth-First Search(DFS)深度优先
Depth-Limited Search(DLS)深度限制搜索
Iterative Deepening Search(IDS)迭代加深搜索

深度优先搜索(DFS)和广度优先搜索(BFS)

区别仅仅在:

       - 深度优先搜索,在队列的头加入新的候选节点- 广度优先搜索,在队列的尾加入新的候选节点

二叉树的深度优先遍历的非递归的通用做法是采用栈,广度优先遍历的非递归的通用做法是采用队列。

深度优先遍历:对每一个可能的分支路径深入到不能再深入为止,而且每个结点只能访问一次。要特别注意的是,二叉树的深度优先遍历比较特殊,可以细分为先序遍历、中序遍历、后序遍历。具体说明如下:

先序遍历:对任一子树,先访问根,然后遍历其左子树,最后遍历其右子树。
中序遍历:对任一子树,先遍历其左子树,然后访问根,最后遍历其右子树。
后序遍历:对任一子树,先遍历其左子树,然后遍历其右子树,最后访问根。

广度优先遍历:又叫层次遍历,从上往下对每一层依次访问,在每一层中,从左往右(也可以从右往左)访问结点,访问完一层就进入下一层,直到没有结点可以访问为止。


先序遍历:35 20 15 16 29 28 30 40 50 45 55
中序遍历:15 16 20 28 29 30 35 40 45 50 55
后序遍历:16 15 28 30 29 20 45 55 50 40 35
广度优先遍历:35 20 40 15 29 50 16 28 30 45 55

深度限制搜索

深度限制搜索其实是深度优先搜索的变体,它限制住了访问的深度。因为当一棵树的子树过深时,进行深度搜索会在该子树上消耗太多的时间,所以,在在DLS算法中,若该节点当前深度大于限制深度K,那就不再继续遍历K节点的子女。实质上就是限定下界的深度优先搜索。

迭代加深搜索

迭代加深(Iterative deepening)搜索是深度限制搜索的升级版本,即首先允许深度优先搜索K层搜索树,若没有发现可行解,再将K+1后重复以上步骤搜索,直到搜索到可行解。

在迭代加深搜索的算法中,连续的深度优先搜索被引入,每一个深度约束逐次加1,直到搜索到目标为止。

评价

根据以下维度评估策略:

完整性(Complete):是否总会找到解决方案?
时间复杂度(Time):生成的节点数
空间复杂度(Space):内存中的最大节点数
最优性(Optimal):是否总能找到成本最低的解决方案?
时间和空间的复杂性是根据
b:搜索树的最大分支因子
d:成本最低的解决方案的深度
m:状态空间的最大深度(可以为∞)

广度优先搜索评价

深度优先搜索评价

迭代加深搜

summary

最佳路径搜索(一):盲目搜索(深度优先,广度优先,深度限制,迭代加深)相关推荐

  1. 人工智能学习:python实现迭代加深的深度优先搜索

    人工智能学习:python实现深度优先搜索算法 本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 环境: 主机:WIN10 python版本:3.5 开发 ...

  2. [AI]深度优先、广度优先、迭代加深搜索练习题

    一. 请分别用广度优先,深度优先,迭代加深搜索按顺序写出其访问和扩展的节点: 1. 广度优先搜索: Visit{A, B, C, D, E, F, G, H, I, J} Expansion{A, B ...

  3. 【算法】【殊途同归】搜索算法之(深度优先 || 广度优先) (约束条件 || 限界函数)

    对于所谓的分支限界法和回溯法,我们完全可以更加灵活,请看表格. 深度优先 广度优先 约束条件 限界函数 算法 策略 √ √ 回溯法 局部判定 √ √ √ 分支限界法 局部判定 √ √ √ 加限界的回溯 ...

  4. 浅谈*迭代加深*深度优先搜索

    目录 算法核心概念及思想 算法的产生 概念 拯救时间的函数 例题:<加法链> 如题,由于此文章只讲"迭代加深",所以请先了解what "深度优先搜索" ...

  5. 区别:迭代加深搜索广度优先搜索

    我之前始终不明白,迭代加深的深度优先搜索和宽度优先搜索有什么区别. 路径不同 搜索问题的解,不单单是那个点的位置.数值,还包括从根节点到达目标节点所经过的路径. 虽然在初次求解的时候,迭代加深的计算步 ...

  6. 二叉树深度优先广度优先算法

    1. 深度优先算法 class Solution{public List<List<Integer>> levelOrder(TreeNode root){List<Li ...

  7. 深度优先 广度优先

    如图所示,爬去网站的url时,深度优先按照这个顺序爬取  利用递归实现树的广度优先遍历 A B D      E I      C F G H(递归实现) def depth-tree(tree-co ...

  8. Windows Azure 安全最佳实践 - 第 1 部分:深度解析挑战防御对策

    我每次与开发人员讨论将应用程序迁移到云时都围绕着两个主要问题. 1. 首先是业务.将应用程序迁移到云可以带来怎样的规模经济? 2. 其次是安全问题."云的安全性如何,尤其是Windows A ...

  9. 图算法--深度优先/广度优先/最小生成树/最短路径

    1. 深度优先搜索 1.1 标记法探索迷宫 探索迷宫而不迷路的一种古老办法叫做Tremaux搜索(标记法),要探索迷宫中的所有通道,我们需要: 选择一条没有标记过的通道,在你走过的路上铺一条绳子: 标 ...

  10. 二叉树遍历(深度优先+广度优先)

    文章目录 1.深度优先遍历 1.1 先序遍历 1.2 中序遍历 1.3 后序遍历 2. 广度优先遍历 3.验证结果 参考文献 二叉树的遍历分为两类,一类是深度优先遍历,一类是广度优先遍历. 1.深度优 ...

最新文章

  1. 如何利用C#开发“通讯录”小程序
  2. pc调试微信h5页面
  3. matlab 仿真模型,MATLAB Simulink 仿真
  4. 开源GIS---.Net系列
  5. 前端学习(631):字符串类型
  6. kendo treeview 修改节点显示值_VBA学习笔记60-1: Treeview控件
  7. VScode+MarkDown导出PDF图片显示问题
  8. (转)被AI改变的风投模式:数据驱动使效率提高10倍
  9. 优学院中国近现代史纲要试题及答案
  10. LaTeX 插入图片 公式
  11. 解决!适用黑苹果解决充电和使用电池中黑苹果自动睡眠
  12. 小猿圈 python学习-细讲数据类型-字典
  13. 2022世界杯期间,独立站卖家如何借势营销?
  14. “假作真时真亦假”:分类器设计中几个常见的评价指标
  15. 计算机无法连接iphone,iPhone连接电脑没反应,怎么办?
  16. 西门子PLC-smart二分频源程序带解析
  17. mysql高可用集群MHA,PXC
  18. centos 监视文件变动脚本
  19. vue stomp 的使用笔记
  20. Vue中的computed计算属性

热门文章

  1. 定时重启php,linux系统定时重启
  2. Luogu3390 【模板】矩阵快速幂
  3. [2018.07.31 T3] 第三题
  4. js高级学习笔记(b站尚硅谷)-13-作用域链
  5. umask 文件预设权限掩码
  6. 预检请求会让服务器性能,如何避免“预检请求”?
  7. Springboot中使用JWT
  8. 将Nginx添加到系统服务
  9. linux 常用图形库,在Linux下常用的3款Git图形客户端
  10. oracle的用户和mysql的用户_oracle数据库的用户以及表空间