人工智能中的搜索策略大体分为两种:无信息搜索和有信息搜索。无信息搜索是指我们不知道接下来要搜索的状态哪一个更加接近目标的搜索策略,因此也常被成为盲目搜索;而有信息搜索则是用启发函数f(n)来衡量哪一个状态更加接近目标状态,并优先对该状态进行搜索,因此与无信息搜索相比往往能够更加高效得解决问题。
  要衡量一个搜索策略的好坏,我们需要从四个方面对其进行判断:完备性、时间复杂度、空间复杂度和最优性。因此以下通过这四个方面来比较常见搜索策略之间的优劣。

无信息搜索策略

宽度优先搜索(BFS)

  首先扩展根节点,然后扩展根节点的所有后继,接着再扩展它们的后继,从而一层一层的对节点进行扩展。BFS是一个简单的搜索策略,在搜索过程中会对所有状态进行遍历,因此它是完备的;假设搜索树每个节点有b个后继,深度为d,则时间复杂度和空间复杂度均为O(bd);最后考虑最优性,因为我们总会在最浅那一层找到目标状态,因此当且仅当每一步的代价都一致的时候,BFS可以得到最优解。

一致代价搜索

  在BFS的基础上,一致代价搜索不在扩展深度最浅的节点,而是通过比较路径消耗g(n),并选择当前代价最小的节点进行扩展,因此可以保证无论每一步代价是否一致,都能够找到最优解。

深度优先搜索(DFS)

  DFS扩展根节点的一个后继,然后扩展它的一个后继,直到到达搜索树的最深层,那里的节点没有后继,于是DFS回溯到上一层,扩展另外一个未被扩展的节点。在有限状态空间中,DFS是完备的,因为它可以把所有空间遍历一遍;而在无限空间中,DFS则有可能会进入深度无限的分支,因此是不完备的。DFS的时间复杂度为为O(bd),而空间复杂度仅为O(d),因为我们只需要保存当前分支的状态,因此空间复杂度远远好于BFS。然而DFS并不能保证找到最优解。

深度受限搜索

  深度受限搜索设定一个最大深度dmax,当搜索深度大于dmax的时候立即回溯,从而避免了在无穷状态空间中陷入深度无限的分支。

迭代加深的深度有限搜索

  迭代加深的深度有限搜索也设定一个最大深度dmax,开始我们把dmax设为1,然后进行深度受限搜索,如果么有找到答案,则让dmax加一,并再次进行深度有限搜索,以此类推直到找到目标。这样既可以避免陷入深度无限的分支,同时还可以找到深度最浅的目标解,从而在每一步代价一致的时候找到最优解,再加上其优越的空间复杂度,因此常常作为首选的无信息搜索策略。

有信息搜索

贪婪最佳优先搜索

贪婪最佳优先搜索总是扩展距离目标最近的节点,其启发函数f(n)=h(n)其中:

f(n)=节点n到目标节点的最小代价路径的估计值

贪婪最佳优先搜索的最大问题是它往往不能找到最优解。

A*

为了找到最优解,A*算法对一个节点的评估结合了h(n)和g(n)从开始节点到节点n的路径代价,即f(n)=g(n)+h(n)

f(n)=经过节点n的最小代价解的估计代价

因为A*搜索总是搜索f(n)最小的点,因此它总能找到最优解。

转载于:https://www.cnblogs.com/bgmind/p/AI.html

人工智能中的常用搜索策略相关推荐

  1. 一文看懂机器学习中的常用损失函数

    作者丨stephenDC 编辑丨zandy 来源 | 大数据与人工智能(ID: ai-big-data) 导语:损失函数虽然简单,却相当基础,可以看做是机器学习的一个组件.机器学习的其他组件,还包括激 ...

  2. 互联网反欺诈体系中的常用技术和数据类型

    互联网反欺诈常用的技术主要包括数据采集.特征工程.决策引擎.数据分析等几个类别: 数据采集: 主要应用于从客户端或网络获取客户相关数据的技术方法.值得强调的是,数据采集技术的使用,应当严格遵循法律法规 ...

  3. 作为SLAM中最常用的闭环检测方法,视觉词袋模型技术详解来了

    摘自:https://mp.weixin.qq.com/s/OZnnuA31tEaVt0vnDOy5hQ 作为SLAM中最常用的闭环检测方法,视觉词袋模型技术详解来了 原创 小翼 飞思实验室 今天 基 ...

  4. Pytorch:NLP 迁移学习、NLP中的标准数据集、NLP中的常用预训练模型、加载和使用预训练模型、huggingface的transfomers微调脚本文件

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) run_glue.py微调脚本代码 python命令执行run ...

  5. 马尔可夫链在人工智能中的应用

    目录 前言 正文 零. 什么是马尔可夫链? 1. 从古诗文之美到数学思维之妙 2. 这就是马尔科夫链 3. 马尔可夫链的其他相关数学概念 壹. 马尔可夫链的历史 提出概念 理论基础 规定领域,深入研究 ...

  6. 人工智能中的Web端编程

    Java是当前的主流编程语言之一,常年稳居TIOBE编程语言排行榜前五.Java的使用领域非常广泛,包括了桌面端编程.Web端编程.移动端编程等几乎所有的编程领域.Java是Web端编程使用最广泛的编 ...

  7. 人工智能中的概率论与统计学修炼秘籍之著名教材

    概率论与统计学的学习者众多,为了迎合不同学习者的需求,各种教材种类繁多.眼花缭乱.为此,非常有必要推荐一些常用的教材给人工智能学习人员,提升学习的效率,提高学习的效果.根据学习逐渐深入的顺序,本文将按 ...

  8. 人工智能中的运筹学与最优化就该这样学之著名教材

    本文为读者朋友们推荐一些运筹学与最优化方面的常用教材,方便读者选择相应的教材进行学习,提高学习效率.由于教材非常多,本文只列出了部分,读者也可以自己进行搜索,选择适合自己的教材. 首先来看运筹学方面的 ...

  9. AI+IoT(人工智能+物联网)常用的专业名词解释

    AI+IoT(人工智能+物联网)常用的专业名词解释 物联网:( IoT ,Internet of things )即"万物相连的互联网",是互联网基础上的延伸和扩展的网络,将各种信 ...

最新文章

  1. websocket连接mqtt实现发布及订阅主题
  2. Silverlight开发常见的一个小问题:2103错误
  3. ORACLE TEXT DATASTORE PREFERENCE(六)
  4. python函数(二)
  5. android sqlite更改数据,更新现有的sqlite数据库中的列,但没有任何更改android
  6. MessagePack Java 0.6.X List, Map 对象的序列化和反序列化
  7. 《CCNP TSHOOT 300-135认证考试指南》——2.9节凭记忆完成表格和列表
  8. 线程同步与异步套接字编程
  9. tomcat java_opts 最大_tomcat性能优化(JAVA_OPTS)
  10. 有钱鹅!腾讯奖励万名员工每人一台16999元华为手机,员工“十动然鱼”
  11. springboot框架搭建
  12. 2022年Java面试宝典【4万字带答案】
  13. 【人脸姿态】2D人脸姿态估计的两种方式:solvePnP与3DMM参数
  14. Iris数据集神经网络训练
  15. 职称计算机 2007 还是2003,职称计算机考试, PPT2003和2007 区别大吗?哪个版本更容易。...
  16. JAVA字符串格式化-String.format()的使用总结
  17. 小学四年级数学上册计算机算题,四年级上册数学计算题大全
  18. 信息的可再生性举例_举例说说信息的可处理性
  19. Java开源项目合集<一>
  20. mysql 正则表达式区间,MySQL——使用正则表达式查询

热门文章

  1. 论文阅读:FlowNet 2.0: Evolution of Optical Flow Estimation with Deep Networks
  2. 动态Probit模型及Stata实现
  3. decode函数python在哪里,Python SHA1 DECODE函数
  4. There is insufficient memory for the Java Runtime Environment to continue IDEA闪退
  5. python热图_Python 绘制热图
  6. 传智播客开课的第四天
  7. 亚马逊AWS产品学习 ------ ELB ---- 简介
  8. LCD1602液晶显示屏模块资料
  9. 解决No tf data. Actual error: Fixed Frame [world] does not exist错误
  10. MySql基础之DML语言