人工智能原理复习--搜索策略(二)

news2024/11/20 1:47:28

文章目录

  • 上一篇
  • 启发式搜索
  • 与或图搜索
  • 博弈
  • 下一篇

上一篇

人工智能原理复习–搜索策略(一)

启发式搜索

提高一般图搜索效率的关键是优化OPEN表中节点的排序方式
最理想的情况是每次排序OPEN表表首n总在解答路径上

全局排序–对OPEN表中的所有节点进行排序(A算法,A*算法)
局部排序–仅对新扩展出来的子节点排序(爬山法)

A算法
基本思想:
设计体现启发式知识的评价函数 f ( n ) f(n) f(n)指导OPEN表中带扩展节点的排序。
评价函数: f ( n ) = g ( n ) + h ( n ) f(n) = g(n) + h(n) f(n)=g(n)+h(n)
n – 搜索图G中的节点
f(n) – G中从初始状态节点s,经由节点n到达目标节点 n g n_g ng, 估计的最小代价
g(n) – G中从s到n,目前实际的路径代价
h(n) – 从n到 n g n_g ng, 估计的最小代价
h(n)称为启发式函数

与一般图搜索顺序类似
但是在扩展n的节点时对每个子节点 n i n_i ni计算 f ( n , n i ) = g ( n , n i ) + h ( n i ) f(n, n_i) = g(n, n_i) + h(n_i) f(n,ni)=g(n,ni)+h(ni)
然后适当标记修改指针,排序OPEN表
在这里插入图片描述
实现启发式搜索应考虑的关键因素:

  1. 搜索算法的可采纳性
  2. 启发式函数h(n)的强弱及其影响

若一个搜索算法总能找到最短(代价最小)的解答路径,则称该状态空间的搜索算法具有可采纳性,也叫最优性。
宽度优先搜索算法是可采纳的,只是搜索效率不高。
A算法是可采纳的



.
A ∗ 算法 A^*算法 A算法
如果A算法是可采纳的则 f ∗ ( n ) = g ∗ ( n ) + h ∗ ( n ) f^*(n) = g^*(n) + h^*(n) f(n)=g(n)+h(n)
*代表实际的最短路径
理想情况下: g ( n ) = g ∗ ( n ) 、 h ( n ) = h ∗ ( n ) g(n) = g^*(n)、h(n) = h^*(n) g(n)=g(n)h(n)=h(n)
每次搜索过程中不扩展任何无关结点

而实际情况下g(n)容易在已经生成搜索树中计算出来,但是h(n)具有未知性,只能尽可能靠近 h ∗ ( n ) h^*(n) h(n)

因此可以得出 A ∗ 算法定义 A^*算法定义 A算法定义
在A算法中,规定 h ( n ) < = h ∗ ( n ) h(n) <= h^*(n) h(n)<=h(n)
A算法中最优秀的就是 A ∗ A^* A算法

而 h(n)接近 h ∗ ( n ) h^*(n) h(n)的程度–是衡量启发式函数的强弱

  • h ( n ) < h ∗ ( n ) h(n) < h^*(n) h(n)<h(n)且差距过大,排序误差较大,产生更大的搜索图,无用节点更多
  • h ( n ) > h ∗ ( n ) h(n) > h^*(n) h(n)>h(n)且h(n)过强,A算法失去可采纳性,不能确保找到最短路径
  • h ( n ) = h ∗ ( n ) h(n) = h^*(n) h(n)=h(n)可以确保生成最小的搜素图,找到最短路径

因此 A ∗ A^* A算法就是在 h ( n ) < = h ∗ ( n ) h(n) <= h^*(n) h(n)<=h(n)的条件下,越大越好。

若h(n) = 0 ⇒ \Rightarrow BFS
若g(n) = 0 ⇒ \Rightarrow DFS

在这里插入图片描述
通过模拟过程,和算法设计与分析的堆优化的分支界限法相似

在这里插入图片描述
close表就是已经访问过的状态,open表就是待访问的状态,而评估函数就是找出下一个最先访问的状态
在这里插入图片描述
定义状态空间,
定义对应状态的h(n)
在这里插入图片描述
在这里插入图片描述
为更有效地搜索解答,可使用评价函数 f ( n ) = g ( n ) + w ∗ h ( n ) f(n) = g(n) + w*h(n) f(n)=g(n)+wh(n),添加一个加权
在搜索图的浅层(上部),可让w取较大值,使得搜索加速向纵深方向搜索
当搜索到较深的层次时,再让 w w w 取较小值, 保证 w h ( n ) < = h ∗ ( n ) wh(n) <= h^*(n) wh(n)<=h(n)的情况下,在横向方向发展,寻找较短的解答路径

迭代加深 A ∗ A^* A算法
由于 A ∗ A^* A算法会将节点全部保存在内存中,所以 A ∗ A^* A算法困在空间问题
因此有了迭代加深 A ∗ A^* A算法 I D A ∗ IDA^* IDA算法
但是不满足最优性和完备性
它以深度优先的方式在有限制的深度内搜索目标节点,在每个深度上,该算法在每个深度上都会检查节点是否出现如果出现则停止,否则深度加一继续搜索。启发函数用作深度的限制, 而不是选择扩展结点的排序。

特点:由于 A ∗ A^* A算法需要指数级的存储空间,没有深度限制,而 I D A ∗ IDA^* IDA算法可以节省大量内存。当启发式函数是最优的时候, I D A ∗ IDA^* IDA算法和 A ∗ A^* A算法扩展相同的结点,并且可以找到最优路径。

与或图搜索

问题归约:是将复杂问题转换成若干需要同时处理的较为简单的子问题后再加以分别求解,只有子问题全部解决时,问题才算解决。问题的解答由子问题的解答联合构成。
实质就是,将目标逆向推理分解成一个个子问题,直至最后把初始问题归约为一个平凡的本原问题集合。

运用问题归约策略得到的状态空间图称为与或图。

表示:
用圆弧将几条节点间关联弧连接起来,子问题全部解决才能导致原问题解决。
或关系 → \rightarrow 解决其中一个或关系就能解决上层问题

与或图基本概念:

  • K-连接:父节点与K个子节点连接,子节点之间是与关系。
    一个父节点可以有多个K-连接(与关系)
    K-连接之间是或关系
  • 解图:解答路径不复存在,取而代之的是广义的接路径----解图, 解图是纯粹的与图,节点之间不存在或关系。
  • 终节点:能用于联合表示目标状态的节点

在这里插入图片描述

  • 解图的生成:从根节点选K-连接,然后从子节点再选择K-连接直到所有K-节点都指向终节点为止。存在或关系可能搜索到多个解图。

  • 解图的代价:
    令K-连接的代价就是K
    则代价 C ( n ) = K + C ( n 1 ) + C ( n 2 ) + . . . + C ( n k ) C(n) = K + C(n_1) + C(n_2) + ...+ C(n_k) C(n)=K+C(n1)+C(n2)+...+C(nk)

  • 能解节点:
    终节点是能解节点,若K-连接的子节点都是能解节点则这个父节点也是能解节点。

  • 不能解节点:
    非终节点是不能解节点,若K-连接至少连接一个不能解节点则父节点是不能解节点

AO*算法

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

博弈

博弈树的特点:

  • 博弈的初始状态是初始节点
  • 博弈树的“与”节点和“或”节点是逐层交替出现的
  • 整个博弈过程始终站在某一方的立场,让自己获胜的为可解节点,让对方获胜的都是不可解节点

极大极小过程
考虑对弈若干不之后从可能的走法中选一步相对好的走法来走,即在有限的搜索深度范围内进行求解。
需要定义一个静态评估函数f,对棋取台式进行分析。
双方定义:
MAX方:有利于,f( p)取正值
MIN方:有利于,f( p)取负值
均衡时f§为0,p代表棋局。

基本思想:

  1. 当轮到MIN走步的节点时(取与时),MAX应考虑最坏情况( f ( p ) f(p) f(p)取极小值)
  2. 当轮到MAX走步的节点时(取或时),MAX应考虑最好的情况( f ( p ) f(p) f(p)取极大值)
  3. 评价使用1、 2的极值进行推出评估函数的值

过程:
定义博弈树的层数(往后考虑几步),设定静态评估函数(找到最优步),形成博弈树

优点

  1. 确保最优解: 极大极小过程的一个主要优势是能够确保在有限的博弈情境中找到最优解,即使是在较为复杂的游戏中也能找到最优解决方案。
  2. 理论上的保证: 在完全信息和有限博弈的情况下,这个算法可以保证找到一个最优解,这是一种理论上的保证。
  3. 广泛适用性: 这种算法不仅限于特定类型的游戏或情景,可以应用于各种类型的博弈,从棋类游戏到经济决策等。

缺点

  1. 计算复杂度高: 在某些情况下,特别是在博弈树非常庞大的情况下,极大极小过程需要大量的计算资源和时间,可能会变得不切实际,效率较低。
  2. 只适用于完全信息博弈: 这个算法假设所有的信息都是完全可见的,而在现实生活中很多情况下信息并不完整,这限制了它在实际应用中的适用性。

α − β \alpha-\beta αβ过程


由于极大极小过程生成博弈树会生成规定深度的所有节点后在进行评估函数的倒推计算,这使得生成博弈树和估计值的倒推两个过程完全分离,因此搜索效率较低。

如果能边生成博弈树,边进行估值计算,则可能不必生成规定深度内的所有节点,以减少搜索的次数,这就是 α − β \alpha-\beta αβ过程。


好处: α − β \alpha-\beta αβ过程是吧生成后继节点和倒推评估函数的过程结合起来,及时减掉无用分支来提高算法效率,所以也称 α − β \alpha-\beta αβ剪枝

取MAX节点的最大下界为 α \alpha α
而MIN节点的最小上界为 β \beta β

步骤:

  1. 初始化 β \beta β + ∞ +\infty +, α \alpha α − ∞ -\infty
  2. 从上至下MAX,MIN交替
  3. MAX层只改变 α \alpha α
  4. MIN层只改变 β \beta β
  5. α , β \alpha, \beta α,β是传递的
  6. α > = β \alpha >= \beta α>=β时剪枝

下一篇

未完待续

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

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

相关文章

论文阅读:PointCLIP: Point Cloud Understanding by CLIP

CVPR2022 链接&#xff1a;https://arxiv.org/pdf/2112.02413.pdf 0、Abstract 最近&#xff0c;通过对比视觉语言预训练(CLIP)的零镜头学习和少镜头学习在2D视觉识别方面表现出了鼓舞人心的表现&#xff0c;即学习在开放词汇设置下将图像与相应的文本匹配。然而&#xff0c;…

内外联动——记建行江门鹤山支行营业部堵截一起新型骗局

建设银行广东省江门市分行&#xff08;以下简称“江门建行”&#xff09;认真贯彻落实党中央、国务院决策部署&#xff0c;紧紧围绕当地市委工作部署和上级行要求&#xff0c;扛牢国有大行责任&#xff0c;坚守金融工作的政治性、人民性&#xff0c;以深化新金融行动助力江门全…

skynet 中 mongo 模块运作的底层原理解析

文章目录 前言总览全流程图涉及模块关系连接数据库函数调用流程图数据库操作函数调用流程图涉及到的代码文件 建立连接SCRAMSASL 操作数据库结语参考链接 前言 这篇文章总结 skynet 中 mongo 的接入流程&#xff0c;代码解析&#xff0c;读完它相信你对 skynet 中的 mongo 调用…

蓝桥杯日期问题

蓝桥杯其他真题点这里&#x1f448; 注意日期合法的判断 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader;public class Main{static int[] days {0,31,28,31,30,31,30,31,31,30,31,30,31};static BufferedReader in new Buf…

Python数据科学视频讲解:数据清洗、特征工程和数据可视化的注意事项

1.6 数据清洗、特征工程和数据可视化的注意事项 视频为《Python数据科学应用从入门到精通》张甜 杨维忠 清华大学出版社一书的随书赠送视频讲解1.6节内容。本书已正式出版上市&#xff0c;当当、京东、淘宝等平台热销中&#xff0c;搜索书名即可。内容涵盖数据科学应用的全流程…

【数电笔记】58-同步D触发器

目录 说明&#xff1a; 1. 电路组成 2. 逻辑功能 3. 特性表、特性方程 4. 状态转移图 例题 5. 同步D触发器的特点 6. 集成同步D触发器&#xff1a;74LS375 74LS375内部原理 说明&#xff1a; 笔记配套视频来源&#xff1a;B站本系列笔记并未记录所有章节&#xff0c;…

2024最新软件测试面试最全八股文

请你说一说测试用例的边界 参考回答&#xff1a; 边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充&#xff0c;这种情况下&#xff0c;其测试用例来自等价类的边界。 常见的边界值 1)对16-bit 的整数而言 32…

ELK简单介绍一

任务背景 运维人员需要对系统和业务日志进行精准把控&#xff0c;便于分析系统和业务状态。日志分布在不同的服务器上&#xff0c;传统的使用传统的方法依次登录每台服务器查看日志&#xff0c;既繁琐又效率低下。所以我们需要集中化的日志管理工具将位于不同服务器上的日志收…

[仅供学习,禁止用于违法]编写一个程序来手动设置Windows的全局代理开或关,实现对所有网络请求拦截和数据包捕获(抓包或VPN的应用)

文章目录 介绍一、实现原理二、通过注册表设置代理2.1 开启代理2.2 关闭代理2.3 添加代理地址2.4 删除代理设置信息 三、代码实战3.1 程序控制代理操作控制3.1.1 开启全局代理3.1.2 添加代理地址3.1.3 关闭代理开关3.1.4 删除代理信息 3.2 拦截所有请求 介绍 有一天突发奇想&am…

Finereport基于linux的简单安装(单节点)

简介 本文以单节点简单部署为例&#xff0c;不适用企业级高可用部署策略。 FineReport的运行依赖于Tomcat &#xff0c;Tomcat 是免费且性能相对稳定的 Web 应用服务器,也可以充当JSP容器。它是一个用于运行Java Servlet和JavaServer Pages&#xff08;JSP&#xff09;的Web服务…

十八、FreeRTOS之FreeRTOS任务通知

本节需要掌握以下内容&#xff1a; 1、任务通知的简介&#xff08;了解&#xff09; 2、任务通知值和通知状态&#xff08;熟悉&#xff09; 3、任务通知相关API函数介绍&#xff08;熟悉&#xff09; 4、任务通知模拟信号量实验&#xff08;掌握&#xff09; 5、任务通知…

第一课【习题】使用DevEco Studio高效开发

用哪一种装饰器修饰的组件可作为页面入口组件 ArkTS Stage模型支持API Version 9&#xff0c;关于其工程目录结构说法正确的是&#xff1f; 4. DevEco Studio提供模拟器供开发者运行和调试HarmonyOS应用/服务&#xff0c;以下说法错误的是&#xff1f; DevEco Studio支持使…

2023年9月8日 Go生态洞察:gopls的扩展与Go生态系统的成长

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

Qt之实现文字滚动效果

一.效果 二.实现 roller.h #ifndef ROLLER_H #define ROLLER_H#include <QWidget> #include <QPaintEvent> #include <QShowEvent> #include <QHideEvent> #include <QTimer>class Roller : public QWidget { public:explicit Roller(QWidget …

git标签的管理与思考

git 标签管理 git 如何打标签呢&#xff1f; 标签是什么? 标签 相当于一个 版本管理的一个贴纸&#xff0c;随时 可以通过标签 切换到 这个版本的状态 &#xff0c; 有人可能有疑问 git commit 就可以知道 代码的改动了&#xff0c; 为啥还需要标签来管理呢&#xff1f; …

建行驻江门市分行纪检组以廉政家访助推廉洁家风

为强化员工行为管理&#xff0c;深入了解员工的家庭情况以及员工8小时以外的生活&#xff0c;近日&#xff0c;建行驻江门市分行纪检组组长带队对两名青年纪检员开展廉政家访。 驻行纪检组组长亲切问候并访谈了青年纪检员的家庭成员&#xff0c;详细了解其家庭生活情况&#x…

【QED】小樱的问题

目录 题目描述输入格式输出格式 测试样例样例说明 思路核心代码 题目描述 在 f u f u fufu fufu乐园&#xff0c;每天都会有各种各样精彩的内容发生。就比如说&#xff0c;今天&#xff0c;小樱的米饭店开张啦&#xff01; 为了吸引 f u f u fufu fufu们前来购买小樱的大米&a…

来自bioBakery Lab的宏基因组学微生物群落的代谢功能分析工具-HUMAnN 3.0的安装配置及分析使用方法-安装填坑

HUMAnN 3.0 简介&#xff1a; HUMAnN 3.0 是一个用于宏基因组数据分析的工具&#xff0c;能够从宏基因组测序数据中推断出微生物群落的代谢功能信息。它可以识别微生物群落中存在的代谢途径&#xff0c;并定量这些通路的丰度。HUMAnN 3.0 依赖于多个工具和数据库来实现这些功能…

validateEmail

邮箱验证 validateEmail /*** 邮箱验证* * author ZengWenFeng* email 117791303QQ.com* mobile 13805029595* date 2016.08.09*/private static final Pattern PATTERN_EMAIL Pattern.compile("^[_A-Za-z0-9-\\](\\.[_A-Za-z0-9-])*" "[A-Za-z0-9-](\\.[A-Z…

【数电笔记】56-消抖开关

目录 说明&#xff1a; 1. 按键抖动形成的原因 2. 按键消抖的方法 3. 用与非RS触发器构成消抖开关&#xff08;硬件消抖&#xff09; 说明&#xff1a; 笔记配套视频来源&#xff1a;B站本系列笔记并未记录所有章节&#xff0c;只对个人认为重要章节做了笔记&#xff1b;标…