搜索算法的形式化描述:

<状态state、动作motion、状态转移state transition、路径path、测试目标test target>

一、启发式搜索(有信息搜索)(Heuristic  Search)

代表算法:贪婪最佳优先搜索(Greedy best-first search)、A*搜索

启发式搜索需要有:

1、辅助信息,也就是与求解问题相关的额外信息,就跟做数学题时的已知条件一样,根据已知条件求解。

2、评价函数(evaluation function)f(n),从当前节点n出发,根据评价函数来选择后续节点。

3、启发函数(heuristic function)h(n),计算从节点n到目标节点所形成路径的最小代价值。

例如下图所示的一个城市路线图,要求搜索目标为找到一条从Arad-->Buchareat的最短路径

辅助信息:任意一个城市与Bucharest的直线距离

利用GBFS算法:

f(n)=h(n):下一个节点=当前节点到目标节点为最小代价的节点

过程:从起始状态(start state)Arad根据辅助信息寻找下一个可能成为最短路径的城市,也就是寻找与Arad相邻的城市中与Buchareat的直线距离最短的那个城市作为下一个状态(state),也就是Sibiu,依次往下寻找,最后找到最短路径:

Arad-->Sibu-->Fagaras-->Bucharest

因为这个搜索过程每次在确定下一个候选节点的时候,总是选择那个到达目标城市直线距离最短的节点, 所以称其为贪婪最佳优先搜索。但是通过结果我们可以发现,算法得到的路线Arad-->Sibu-->Fagaras-->Bucharest比Arad-->Rimnicu Vilcea-->Pitesti-->Bucharest路线还多出32公里,因此GBFS算法不是最优的而且也是不完备的。因为它可能沿着一条无限路径走下去而不回来做其他尝试,距离目标节点直线距离最近的节点组成的路径不可能都是最短路径,这种搜索算法得到的实际路线可能会绕路,或者根本到达不了目标节点。比如,搜索从Iasi-->Fagaras的最短路径,根据GBFS算法由启发式建议需先扩展Neamt,这样就形成了一条死循环路径。最坏的情况下,GBFS算法的时间复杂度和空间复杂度都是O(b^m),其中b是节点的分支因子数目,m是搜索空间的最大深度。因此,需要设计一个良好的启发式函数(Heuristic Function)。

为了解决GBFS算法的不足,A*算法被提出。

下面我们介绍一下A*算法:

评价函数:f(n)=g(n)+h(n)

其中,g(n) 表示从起始节点到节点n的开销代价值,

h(n) 表示从节点n到目标节点路径中所估算的最小开销代价值,

f(n) 视为经过节点n、具有最小开销代价值的路径。

为了保证A*算法是最优(optimal),需要启发函数 h(n) 是可容的(admissible heuristic)和一致的(consistency,或者也称单调性,即 monotonicity)

算法过程;

以上我们可以得出A*算法是最优的,其保持最优的条件就是启发函数具有可溶性(admissible)和一致性 (aconsistency)。

上述将直线距离作为启发函数h(n),则启发函数一定是可容的,因为直线距离最短,不会高估开销代价。

g(n) 是从起始节点到节点n的实际代价开销,且f(n) = g(n) + h(n),因为g(n)是确定的,我们预估的是h(n),h(n)是不会高估开销代价的,因此f(n)不会高估经过节点n路径的实际开销。

一致性条件:h(n) <= c(n,a,n')+h(n')构成了三角不等式。这里节点n、节点n'和目标节点Gn之间组成了一个三角形。如果存在一条经过节点n',从节点n到目标节点Gn的路径,其代价开销小于h(n),则破坏了h(n)是从节点n到目标节点Gn所形成的具有最小开销代价的路径这一定义。

  • Tree-search的A*算法中,如果启发式函数h(n)是可容的,则A*算法是最优的和完备的;
  • Graph-search的A*算法中,如果启发函数h(n)是一致的,A*算法是最优的。
  • 如果函数满足一致性条件,则一定满足可容条件;反之不然
  • 直线最短距离函数既是可容的也是一致的。
  • 如果h(n)是一致的(单调的),那么f(n)一定是非递减的(non-decreasing)
  • 如果A*算法将节点n选择作为具有最小代价开销的路径中一个节点,则n一定是最优路径中的一个节点。即最先被选中扩展的节点在最优路径中。

本文借鉴于mooc 吴飞老师的人工智能:模型与算法

人工智能-搜索----启发式搜索相关推荐

  1. 专访三桐:阿里人工智能搜索应用的交互式未来

    点击有惊喜 12月13-14日19:30,阿里巴巴技术协会.云栖社区联合主办并独家直播的<2017阿里双11技术十二讲>将强势来袭.本次双11在线技术论坛将专注更深的科技层面,全方面展现时 ...

  2. 人工智能--搜索概述

    文章目录 搜索的含义 搜索的分类 搜索的含义 人工智能所研究的对象大多是属于结构不良或非结构化的问题.对于这些问题,一般很难获得其全部信息,更没有现成的算法可供求解使用.因此,只能依靠经验,利用已有知 ...

  3. (六)从零开始学人工智能-搜索:对抗搜索

    对抗搜索 文章目录 对抗搜索 1 为什么要学习对抗搜索? 2 什么是对抗搜索? 3 对抗搜索算法 3.1 极小极大值算法 3.1.1 分硬币游戏 3.1.2 最优路径示例 3.2 α-β剪枝 3.3 ...

  4. mcq 队列_人工智能搜索问题能力问题解答(MCQ)

    mcq 队列 1) The main Aim of the AI system is to provide a solution for real-life problems by acting an ...

  5. 搜索 —— 启发式搜索

    [概述] 启发式搜索算法,就是在状态空间中的搜索对每一个搜索的位置进行评估,得到最好的位置,再从这个位置进行搜索直到目标. 有时我们会遇到这样的一类题:题目描述的是一道时间复杂度很高的 NP 问题,我 ...

  6. 人工智能——搜索策论2

    3.3博弈树的启发式搜索 3.3.1概述 博弈可分为双人完备信息博弈和机遇性博弈.所谓双人完备信息博弈,就是两位选手对垒,轮流走步,每一方不仅知道对方已经走过的棋步,而且还能估计出对方未来的走步.对弈 ...

  7. 人工智能——搜索技术

    转载:https://blog.csdn.net/Sun7_She/article/details/40344329 AI-3的80~84不懂 A*算法不懂 引言: 什么是搜索: 根据问题的实际情况不 ...

  8. 人工智能 —— 搜索的含义

    一.概念: 依靠经验,利用已有知识,根据问题的实际情况,不断寻找可利用知识,从而构造一条代价最小的推理路线,使问题得以解决的过程称为搜索 二.适用情况: 不良结构或非结构化问题:难以获得求解所需的全部 ...

  9. 搜索 —— 启发式搜索 —— 爬山法

    [概述] 爬山法(Hill Climbing,HC)是一种局部择优的贪心搜索算法,其本质上是梯度下降法. 该算法每次从当前的节点开始,与周围的邻接点进行比较: 若当前节点是最大的,那么返回当前节点,作 ...

最新文章

  1. iOS下拉tableView实现上面的图片放大效果
  2. Manage Common Field Service Jobs
  3. 摆放家具-完成添加家具方法
  4. Python实战-获取鼠标键盘事件
  5. 存储过程-----DECLARE---实用注意事项
  6. pandas合并groupby_pandas实践之GroupBy()
  7. c语言 已知某系统在通信联络中,数据结构(习题)..doc
  8. 如何知道电脑服务器操作系统,电脑如何查看服务器操作系统
  9. PHP设计模式之工厂模式
  10. 中国移动携手华为完成5G话音的全部功能测试
  11. 五步法”判断自媒体创作好与坏的标准
  12. 关于使用jacob出现的异常
  13. poj 3468 A Simple Problem with Integers 线段树!!!!
  14. wx:if 与hidden
  15. python excel数据分析师职业技能_数据分析师=Excel+Python?其实不止!
  16. 网站容器化升级---各模块分别运行一个容器
  17. Docker学习(一):基础理论基础操作
  18. k8s上使用流水线部署应用
  19. 51单片机-LED模块-来回流水灯
  20. 驭势科技携手奇辉机器人,联合发布面向多行业的智慧物流整体解决方案

热门文章

  1. 电脑数据怎么迁移?6种旧电脑数据传输到新电脑方法分享
  2. App第三方支付那些坑
  3. Android 读取本地txt文件中的内容
  4. Java简单类、变量详解(概念和分类、声明、命名、初始化)
  5. 企业/工作室官网 期末作业
  6. 关于一个简单函数方程问题的深入探究
  7. Box2D 实现不倒翁效果 绘制扇形
  8. AD中使叠在一起的元器件快速分开排列
  9. 幻数java题_幻数
  10. win7右下角的网络图标不显示