【人工智能】—_有信息搜索、最佳优先搜索、贪心搜索、A_搜索

news2025/7/18 10:31:59

文章目录

  • 【人工智能】— 有信息搜索、最佳优先搜索、贪心搜索、A*搜索
  • 无/有信息的搜索
  • Informed Search Algorithms
    • Best-first search(最佳优先搜索)
    • Greedy Search
    • A* Search
      • 解释说明A*搜索是代价最优的和完备的
      • 对搜索等值线如何理解

【人工智能】— 有信息搜索、最佳优先搜索、贪心搜索、A*搜索

无/有信息的搜索

  • Uninformed search无信息的搜索:除了问题中提供的定义之外没有任何关于状态的附加信息。
  • Informed search有信息的搜索:在问题本身的定义之外还可利用问题的特定知识。
  • 无论任何情况下,与无信息搜索策略相比,使用好的有信息的启发式搜索可以节省大量的时间和空间
  • 有信息搜索又叫做启发式搜索,顾名思意,这种搜索方法和启发式函数h(n)有着密切的关系。而h(n)就是有信息搜索的关键信息。这里的有信息指的是所求解问题之外的,但是与求解问题相关的特定信息或知识

Informed Search Algorithms

  • 评价函数(evaluation function,f(n)) 从当前结点出发根据评价函数来选择下一结点
  • 启发函数(heuristic function,h(n))从结点n到目标结点之间所形成的路径的最小代价值
  • 启发函数并不唯一,在罗马尼亚问题中,启发函数使用的是两个城市之间的直线距离即欧氏距离。这里作者并未考虑地形因素的影响。
  • 在启发函数的选择中,我们还可以以公路里程或者花费的时间作为启发函数。下表即为各个城市距离bucharest的直线距离,即有信息搜索中的关键信息。在这里插入图片描述
  • 代价一致搜索 Uniform Cost:
    • UCS的原理:一致代价搜索总是扩展路径消耗最小的节点NN点的路径消耗等于前一节点N-1的路径消耗加上N-1N节点的路径消耗
    • 优点:UCS是完备的和可以取得最优解的!
    • 缺点:
      • 会扩展所有“方向”
      • 没有关于目标状态的信息
    • 为什么不是有信息搜索:
      • 定义两个函数
        • g(x) 为从根节点到x节点的代价总和
        • h(x) 为从x节点到目标节点的估计代价总和
      • 代价一致搜索 (Uniform Cost Search or Dijkstra search) f(x) = g(x)
      • 贪心搜索 (Greedy Search) f(x) = h(x)
      • A星搜索 (A* Search) f(x) = g(x) + h(x)
    • 所以,因为g(x)是问题的定义获取的信息,不是跟目标状态有关的信息,所以代价一致搜索不是有信息搜索

Best-first search(最佳优先搜索)

  • 思想:对每个节点使用评价函数f(n)
    • 评估“可取性”
    • 扩展最理想的未扩展节点
  • 特例:
    • 贪婪搜索
    • A*搜索

Greedy Search

  • h S L D ( n ) h_{SLD}(n) hSLD(n)= 从 n n n到布加勒斯特的直线距离
  • Greedy search expands the node that appears to be closest to goal(试图扩
    展离目标节点最近的点)
    在这里插入图片描述
  • 完备性:不一定,可能会陷入死循环,例如:with Oradea as goal,Iasi → Neamt → Iasi → Neamt →…
    • 在具有重复状态检查的有限空间可以实现完备性
    • b:分支因子、d:解深度、m:最大深度
  • 时间复杂度: O ( b m ) O(b^m) O(bm),但一个好的启发式方法可以带来显著的改进
  • 空间复杂度: O ( b m ) O(b^m) O(bm),将所有节点保留在内存中
  • 最优解:不能保证,例如:在这里插入图片描述

A* Search

  • 评估函数:Evaluation function f ( n ) = g ( n ) + h ( n ) f(n) = g(n) + h(n) f(n)=g(n)+h(n)

  • g(n) = cost so far to reach n —到达节点n的耗散

  • h(n) = estimated cost to goal from n —启发函数:从节点n到目标节点的最低耗散路径的耗散估计值

  • f(n) = estimated total cost of path through n to goal —经过节点n的最低耗散的估计函数

  • h ( n ) ≤ h ∗ ( n ) h(n) ≤ h^*(n) h(n)h(n) where h ∗ ( n ) h^*(n) h(n) is the true cost from n.

    • (Also require h(n) ≥ 0, so h(G) = 0 for any goal G. )
  • E.g., h S L D ( n ) h_{SLD(n)} hSLD(n)never overestimates the actual road distance (SLD: Straight-Line
    Distance)

  • 举例:

  • 在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

  • A*启发式h(n)可采纳的:如果对于每个节点n h ( n ) ≤ h ∗ ( n ) h(n)≤h^*(n) h(n)h(n),其中 h ∗ ( n ) h^*(n) h(n)是从n达到目标状态的真实成本

  • An admissible heuristic never overestimates the cost to reach the goal(从不会过高估计到达目标的耗散), i.e., it is optimistic(乐观的)

  • 示例: h S L D ( n ) h_{SLD}(n) hSLD(n)永远不会高估实际道路距离

  • 定理:如果h(n)可采纳的,则使用TREE-SEARCH的A*是最优的

    • 如果h(n)一致的,则使用GRAPH-SEARCH的A*是最优的
  • 提出可采纳的启发式方法是在实践中使用A*所涉及的大部分内容

  • 完备性:满足(除非存在无限多个f≤f(G)的节点)

  • 时间复杂度:A*算法对于任何给定的启发函数都是效率最优,但仍然是指数级

  • 空间复杂度:要保存所有结点在内存中

  • 最优解:可以取得

  • 在这里插入图片描述

解释说明A*搜索是代价最优的和完备的

  • 首先要先定义出什么是代价最优。这里的最优是指不存在另外一个解法能得到比A*算法所求得解法具有更小开销代价。
  • 是否代价最优,取决于启发式函数h(n)的一些性质,其中的一个关键性质为可采纳性(admissibility)一个具备可采纳性的启发式函数永远不会高估到达某个目标的代价
  • 专门针对启发函数而言,即启发函数不会过高估计(over-estimate)从节点n到目标结点之间的实际开销代价(即小于等于实际开销)。如可将两点之间的直线距离作为启发函数,从而保证其可容。
  • 另外一个关键性质为一致性(consistency)。假设节点n的后续节点是n',则从n到目标节点之间的开销代价一定小于从nn'的开销再(单调性)加上从n'到目标节点之间的开销,满足以下条件: h ( n ) ≤ c o s t ( n , a , n ′ ) + h ( n ′ ) h(n)\le cost(n,a,n')+h(n') h(n)cost(n,a,n)+h(n)
  • 这里n'n经过行动a所抵达的后续节点,c(n,a,n')n'n之间的开销代价。则启发式函数h(n)是一致的。
  • A*搜索算法保持最优的条件:启发函数具有可容性(admissible)和一致性 (consistency),如下图所示。在这里插入图片描述
  • 将直线距离作为启发函数h(n),则启发函数一定是可容的,因为其不会高估开销代价。g(n)是从起始节点到节点n的实际代价开销,且 f ( n ) = g ( n ) + h ( n ) f(n)=g(n)+h(n) f(n)=g(n)+h(n),因此 f ( n ) f(n) f(n)不会高估经过节点n路径的实际开销。
  • h ( n ) ≤ c ( n , a , n ′ ) + h ( n ′ ) h(n)≤c(n,a,n')+h(n') h(n)c(n,a,n)+h(n)构成了三角不等式。这里节点n、节点n'和目标结点Goal之间组成了一个三角形。
  • 如果存在一条经过节点n',从节点n到目标结点Goal的路径,其代价开销小于h(n),则破坏了h(n)是从节点n到目标结点Goal所形成的具有最小开销代价的路径这一定义。

对搜索等值线如何理解

搜索等值线的概念更接近于地理上的等高线。如下图所示,在标记为400的等值线内,有 f ( n ) = g ( n ) + h ( n ) ≤ 400 f(n)=g(n)+h(n)≤400 f(n)=g(n)+h(n)400。由于A*搜索扩展的是f最小的边界结点,因此它的等值线是从初始结点以扇形向外扩展的,而一致代价搜索因为只有g(n),因此是以圆形向外扩展的。
在这里插入图片描述

  • 这里设Cf(n)的最优解,那么对于满足f(n)<C的结点n,称之为必然扩展结点(surely expanded node),
  • A*搜索可能会选出到达目标状态之前,恰好在等值线上面的点,即满足f(n)=C的结点。A搜索不会扩展f(n)>C的结点,因此可以得出结论:
    • 具有一致启发性函数的A搜索是效率最优的
情况函数结果
h ^ ( n ) = 0 \hat h(n)=0 h^(n)=0 ,即 f ^ ( n ) = g ^ ( n ) \hat f(n)=\hat g(n) f^(n)=g^(n)A*算法退化为Dijkstra算法保证能找到最短路径
h ^ ( n ) ≤ \hat h(n)\leq h^(n) 实际代价 h ^ ( n ) \hat h(n) h^(n)越小,A*扩展的节点越多,运行的越慢保证能找到一条最短路径,但运算更快了
h ^ ( n ) = \hat h(n)= h^(n)= 实际代价仅寻找最佳路径,而不扩展任何别的节点保证能找到一条最短路径,并且运算非常快
h ^ ( n ) > \hat h(n)> h^(n)> 实际代价寻找最佳路径且扩展别的任何节点不能保证找到一条最短路径,但运算更快了
h ^ ( n ) > > g ^ ( n ) \hat h(n)>>\hat g(n) h^(n)>>g^(n)A*算法退化为BFS算法不能保证找到一条最短路径,但运算非常快

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/972484.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023年文旅地产行业研究报告

第一章 行业概况 1.1 定义 文旅地产,作为一个综合性的产业形态,融合了文化、旅游和地产三大元素,是住宅地产的补充和延伸。它不仅包含了文化和旅游的业态,还融入了商业等多元化元素,被誉为地产中的轻奢品。 在核心业…

AVR128单片机 自动售水机

一、系统方案 1、设计使用两个按键分别为S1和S2及一个发光二极管LED。S1为出水控制按键,当S1按下,表示售水机持续出水,继电器(库元件relay)接通,指示灯LED亮。S2为停水控制键,当S2按下&#xff…

Jenkins详解(三)

Jenkins详解(三) 目录 Jenkins详解(三) 1、Jenkins介绍2、Jenkins CI/CD 流程3、部署环境 3.1 环境准备3.2 安装GitLab3.3 初始化GitLab3.4 GitLab中文社区版补丁包安装3.5 修改GitLab配置文件/etc/gitlab/gitlab.rb3.6 在宿主机输入 http://192.168.200.26:88 地址就可以访问了…

Dom-clobbering原理和例题

目录 引入 1.获取标签 2.覆盖 3.多层覆盖 利用Dom-clobbering 1.tostring 2.集合取值 3.层级关系取值 4.三层取值 5.自定义属性 例题 1 2. 3. 引入 分析 引入 先用三个小例子看看dom-clobbering干了什么 1.获取标签 这个例子给img标签分别做了一个id和一个name…

热释电矢量传感器设计

1 概述 使用4个热释电传感器组成一个2X2的矩阵。通过曲线的相位差、 峰峰值等特征量来计算相关信息。本文使用STM32单片机设计、制作了热释电传感器矩阵;使用C#.NET设计了上位机软件。为以上研究做了试验平台。 2 硬件电路设计 2.1 热释电传感器介绍 热释电红外…

CCKS2023:基于企业数仓和大语言模型构建面向场景的智能应用

8月24日-27日,第十七届全国知识图谱与语义计算大会(CCKS 2023)在沈阳召开。大会以“知识图谱赋能通用AI”为主题,探讨知识图谱对通用AI技术的支撑能力,探索知识图谱在跨平台、跨领域等AI任务中的作用和应用途径。 作为…

MAC系统“无法验证开发者”问题

参考:https://blog.csdn.net/suxiang198/article/details/126550955 对于使用MAC电脑的同学而言,许多时候因为使用需要,从第三方源(比如github等)下载工具或软件,而在运行时会受到MAC系统的安全限制,老是弹…

【STM32】学习笔记-SPI通信

SPI通信 SPI通信(Serial Peripheral Interface)是一种同步的串行通信协议,用于在微控制器、传感器、存储器、数字信号处理器等之间进行通信。SPI通信协议需要使用4个线路进行通信:时钟线(SCLK)、主输入/主输出线(MISO)、主输出/主…

深入浅出AXI协议(5)——数据读写结构读写响应结构

目录 一、前言 二、写选通(Write strobes) 三、窄传输(Narrow transfers) 1、示例1 2、示例2 四、字节不变性(Byte invariance) 五、未对齐的传输(Unaligned transfers) 六…

网络版五子棋C++实现

目录 1.项目介绍 2.开发环境 3.核心技术 4.环境搭建 5.WebSocketpp介绍 5.1WebSocketpp是什么 5.2为什么使用WebSocketpp 5.3原理解析: 5.4WebSocketpp主要特性 6.WebSocketpp使用 7.JsonCpp使用 8.MySQL API 9.项目模块设计以及流程图 10.封装日志宏…

基于单片机的太阳能热水器控制器设计

一、项目介绍 随着环保意识的逐渐增强,太阳能热水器作为一种清洁能源应用得越来越广泛。然而,传统的太阳能热水器控制器通常采用机械式或电子式温控器,存在精度低、控制不稳定等问题。为了解决这些问题,本项目基于单片机技术设计…

Qt鼠标点击事件处理:按Escape键退出程序

创建项目 Qt 入门实战教程(目录) 首先,创建一个名称为QtKeyEscape的Qt默认的窗口程序。 参考 :Qt Creator 创建 Qt 默认窗口程序 Qt响应键盘Escape事件 打开Qt Creator >>编辑 >> 项目 >> Headers>> …

服务运营 | MS文章精读:基于强化学习和可穿戴设备的帕金森治疗方案

作者信息:庞硕,李舒湉 编者按 帕金森疾病的治疗是一个备受关注的医疗问题。本文通过患者的可穿戴传感器收集数据,提出了一个基于强化学习的帕金森药物治疗方案。这是第一篇关于可穿戴治疗设备在慢性疾病管理中的应用研究。原文于2023年4月发…

如何在你的Android工程中启用K2编译器?

如何在你的Android工程中启用K2编译器? K2编译器是用于Kotlin代码编译的最新、高效编译器,你现在可以尝试使用了。 Kotlin编译器正在为Kotlin 2.0进行重写,新的编译器实现(代号K2)带来了显著的构建速度改进&#xff…

K210-调用自定义py库

调用自定义py库 导入py库文件调用py库 用过Python的朋友应该知道,Python是支持将自定义py库(或者第三方py库)放到同一个目录下调用的,MicroPython也是支持调用自定义py库的。在调用自定义py库之前,需要提前将py库文件导…

期货基础知识

一、期货是什么?  期货是与现货相对应,并由现货衍生而来。期货通常指期货合约,期货与现货完全不同,现货是实实在在可以交易的货(商品),期货主要不是货,而是以某种大众产品如棉花、大…

影响Windows 和 macOS平台,黑客利用 Adobe CF 漏洞部署恶意软件

FortiGuard 实验室的网络安全研究人员发现了几个影响 Windows 和 Mac 设备的 Adobe ColdFusion 漏洞。 远程攻击者可利用Adobe ColdFusion 2021中的验证前RCE漏洞,获取受影响系統的控制权力。Adobe 已发布安全补丁来解决这些漏洞,但攻击者仍在利用这些漏…

leetcode:1941. 检查是否所有字符出现次数相同(python3解法)

难度:简单 给你一个字符串 s ,如果 s 是一个 好 字符串,请你返回 true ,否则请返回 false 。 如果 s 中出现过的 所有 字符的出现次数 相同 ,那么我们称字符串 s 是 好 字符串。 示例 1: 输入:s…

鼠标悬停阴影的效果被旁边div挡住的解决办法

出现的问题 需求要求鼠标悬停某个图片上有阴影效果,但阴影被旁边相邻的div挡住了,如图所示 解决方案 给悬停的这块div增加2个css属性 $(this).css(position, relative); $(this).css(z-index, 200);新的效果如图所示 一直写后端,前端的…

国际网页短信软件平台搭建定制接口说明|移讯云短信系统

国际网页短信软件平台搭建定制接口说明|移讯云短信系统 通道路由功能介绍 支持地区通道分流,支持关键字,关键词通道分流,支持白名单独立通道,支持全网通道分流,支持通道可发地区设置,通道路由分组&#x…