【人工智能基础】状态空间搜索

状态空间法

状态空间:一个问题全部可能的状态以及其关系的集合。

状态空间图:以图的形式表示问题的状态空间,节点对应状态,边对应状态转移算子,边上的权对应转移所需的代价

问题的解:是从最开始状态到目标状态的一条路径。

状态空间法就是将问题抽象为图:

状态->节点

操作->边

状态空间->图

问题的解->路径

求解过程->寻找路径

如:求三个硬币,一次翻两个,能否使三枚初始状态为数字面向上的硬币最终变为三枚国徽面向上的硬币。

我们可以枚举出三枚硬币可可能出现的全部8种状态,记数字面全部向上的状态为0,国徽面全部向上的状态为7,观察0节点是否能根据规则达到7节点。

图的搜索算法

通用图搜索算法

将所有节点分为三类:未知节点、已知已扩展节点(closed)、已知未扩展节点(open)

每次从open表中取一个节点N进行扩展,将扩展出来的新节点加入open表。结束后这个被选取的节点N加入closed表。

已扩展节点表为空还没找到目标节点,则问题无解.

状态空间图的分类

显式图:把状态空间图的全部要素(问题相关的全部状态、状态之间的关系)都以显式的像是存入知识库。

隐式图:初始时只存储初始状态,目标状态,状态之间的转移规则等信息。求解过程中,由初始状态出发,根据状态转移规则逐步生成所需的部分状态空间图。

状态空间图的计算机表示

Node.state 节点状态 Node.father 父节点指针 Node.g 历史已用代价

盲目搜索策略

广搜-open表为FIFO表

  • 有解则一定能找到解
  • 在单位耗散值的条件下,且问题有解,能找到最优解
  • 方法与问题无关,具有通用性
  • 效率低

深搜-open表为FILO表

  • 一般不能保证找到最优解
  • 当深度限制不合理时,可能找不到解
  • 最坏情况,搜索空间等同于穷举
  • 方法与问题无关,具有通用性

启发式搜索策略

对open表中的节点代价进行评估,选取代价最小的点进行扩展 f(n)=g(n)+h(n) g(n)已用代价 h(n)启发函数 代价优先(一致代价)搜索:只考虑g(n),令h(n)为0 爬山法(贪婪法):只考虑h(n)

A*算法h(n)<=h*(n)

  • 算法可纳(有解问题,总能找到最优解)
  • 在保证h(n)M=h*(n)的前提下,h(n)越大越好,h(n)越能准确的估计实际最小代价

评估函数的单调性

  • 单调性(节点对(i,j),j为i的后继,评估函数对于所有的这种节点对都满足f(i)<=f(j))

博弈树搜索

博弈树适用于双方对弈的层次结构

使用Max表示本方,Min表示对方

最大最小法

原理
  • 扩展当前棋局的全部N层子节点
  • 确定各子节点评估值
  1. 最底层节点静态评估
  2. 其余子节点苹果汁需要逐层交替倒推(Max节点取最大值,Min节点取最小值)
步骤
  • 生成规定深度的全部博弈树
  • 计算所有最底层节点的静态估计函数值
  • 自底向上逐层计算非终结节点的倒推估计值
  • Max取最大,Min取最小

α-β剪枝

由于博弈树规模巨大,构造完整的博弈树需要消耗大量时间和内存

  • 对于Max父节点,先探明的子节点可为父节点取值提供下界信息(α),小于α的未探明子节点可以忽略
  • 对于Min父节点,先探明的子节点可为父节点取值提供上界信息(β),大于β的未探明字节的可以忽略

α剪枝:α父≥β β剪枝:α≥β父

  • 跨层比较
  • 有界深搜生成博弈树

剪枝演示

下图中我们看嘴左边的分支,由于MIN会选取评估值最小的节点,所以我们可以知道在这个节点的评估值为-3 

剪枝1

下图中,我们在右边第一个节点中找到了一个评估值为-6的节点,表示如果MAX选中这个分支,可以获得的最高得分只有-6(MIN会选择评估值最小的节点),-6<另一个分支的评估值-3,所以不需要评估后面的分支,我们就可以知道如果走这个分支我们最高只能获得-3分 

剪枝2

 再看另一边,这边我们找到的第一个节点就是两分,由于MAX会倾向于获取高分这个分支的分数最低为2

所以对于MIN来说,选择这个分支的收益比选择前面那个-3的分支的收益低。 

剪枝3

 后面的节点都不需要再评估了 

剪枝4

 由此我们省去了6个节点的评估的时间,并且只进行了4次评估就做出了选择。

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

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

相关文章

python项目练习——28.自动抢火车票脚本

确定抢购信息: 出发站:例如,"北京"到达站:例如,"上海"出发日期:例如,"2024-05-01"确定登录12306账号信息: 用户名密码环境准备: 安装Python编程环境安装相关第三方库:requests、selenium等网页自动化登录: 使用Selenium模拟浏览器操作…

聊聊路径规划算法(二)——图搜索法

图搜索法通过利用已有的环境地图和版图中的障碍物等数据信息建立&#xff0c;由起点至结束点的可行路线。一般分为深度最优和广度最优二种走向。深度优先算法优先拓展搜索深度较大的节点&#xff0c;因此能够更迅速的获得下一个可行路径&#xff0c;不过深度优先算法获取的第一…

Adobe Firefly是否将重新定义AI视频编辑领域?|TodayAI

Adobe最近发布了一段令人瞩目的视频&#xff0c;详细展示了其最新推出的Adobe Firefly视频模型。这一模型集成了尖端的生成式人工智能技术&#xff0c;带来了一系列颠覆性的视频编辑功能&#xff0c;引发了业界的广泛关注和讨论。 视频中的旁白充满热情地宣布&#xff1a;“Ad…

Rabbit加密算法:性能与安全的完美结合

title: Rabbit加密算法&#xff1a;性能与安全的完美结合 date: 2024/4/19 19:51:30 updated: 2024/4/19 19:51:30 tags: Rabbit加密对称加密流密码密钥调度安全分析实际应用加密算法 第一章&#xff1a;引言 1. 加密算法的基本概念和应用 加密算法是一种通过对数据进行转换…

【C++】4.类和对象(下)

一、再谈构造函数 1.1、初始化列表 初始化列表&#xff1a;以一个冒号开始&#xff0c;接着是一个以逗号分隔的数据成员列表&#xff0c;每个"成员变量"后面跟一个放在括号中的初始值或表达式。 class Date { public:Date(int year, int month, int day): _year(yea…

Llama3本地部署实现模型对话

1. 从github下载目录文件 https://github.com/meta-llama/llama3 使用git下载或者直接从github项目地址下载压缩包文件 git clone https://github.com/meta-llama/llama3.git2.申请模型下载链接 到Meta Llama website填写表格申请,国家貌似得填写外国,组织随便填写即可 3.…

爬虫 Selector 选择器查找元素

// <!--jsoup解析工具所需依赖--> // <dependency> // <groupId>org.jsoup</groupId> // <artifactId>jsoup</artifactId> // <version>1.10.3</version> // </depende…

Linux - sed (stream editor)

替换 my.yaml 的 ‘t’ 为 ‘AAA’ sed s/t/AAA/g my.yaml sed -n /^[as]/p my.yaml 这个命令的 -n 选项表示不自动打印每一行&#xff0c;/^[as]/p 是一个 sed 命令&#xff0c;/^[as]/ 是你想要匹配的正则表达式&#xff08;所有以 a | s 开头的行&#x…

【漏洞复现】锐捷 EG易网关 phpinfo.view.php 信息泄露漏洞

0x01 产品简介 锐捷EG易网关是一款综合网关产品&#xff0c;集成了先进的软硬件体系构架&#xff0c;并配备了DPI深入分析引擎、行为分析/管理引擎。这款产品能在保证网络出口高效转发的基础上&#xff0c;提供专业的流控功能、出色的URL过滤以及本地化的日志存储/审计服务。 …

蚂蚁云科技集团正式发布以正教育大模型,专注因材施教

4月12日,蚂蚁云科技集团成功举办“智以育人、慧正无界——以正教育大模型产品发布会”,该产品致力于智慧教育变革,让因材施教成为可能。 上海科学技术交流中心科技企业服务处处长陈霖博士、中国信通院华东分院院长廖运发、上海市科协常委马慧民博士等出席并致辞;南威软件集团执…

框架中的单例模式

上一节我们介绍了单例模式模板 本节来讨论下&#xff0c;在框架代码中&#xff0c;怎样设计单例模式 考虑这种场景&#xff1a; 框架的开发者写了一个类 Config用来管理整个程序运行周期中的配置文件&#xff0c;整个程序中应该只有一个配置文件类&#xff0c;所以站在框架开发…

SQL注入简单总结

一、SQL注入是什么 SQL注入即&#xff1a;是指web应用程序对用户输入数据的合法性没有判断或过滤不严&#xff0c;攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句&#xff0c;在管理员不知情的情况下实现非法操作&#xff0c;以此来实现欺骗数据库服…

武汉星起航:引领跨境电商新潮流,一站式孵化助力卖家轻松出海

武汉星起航电子商务有限公司&#xff0c;作为跨境电商领域的领军者&#xff0c;始终秉持“走出去”的战略理念&#xff0c;依托自营店铺的丰富经验和对跨境电商资源的深度整合&#xff0c;成功打造了一站式卖家孵化体系。这一体系集开店策划、运营教学、资源服务于一体&#xf…

Web安全知识

第二章 虚拟机运行架构&#xff1a; 1.寄居结构 2.原生架构 软件 注&#xff1a;Hyper-V是在Windows 2008操作系统上 附录 连接FTP服务器过程&#xff1a; 1.下载了软件&#xff1a; 2.连接到ftp://10.0.105.223/服务器&#xff08;访问老师课堂资源地址&#xff09; 关闭…

视频教程如何生成二维码?扫码看操作教程视频的制作技巧

产品使用教程的视频二维码如何制作呢&#xff1f;现在商家为了能够让用户可以快速的了解产品的使用说明或者安装教程&#xff0c;会选择将录制的相关视频生成二维码之后&#xff0c;打印到包装上或者通过客服人员发送给用户&#xff0c;用手机扫描对应二维码就可以获取教程&…

__UINT8_TYPE__ 和 __UINT16_TYPE__

__UINT8_TYPE__ 和 __UINT16_TYPE__ 是 C 中预定义的整数类型别名&#xff0c;它们通常由编译器提供&#xff0c;用于确保与特定平台上的原生无符号整数类型相匹配。这些类型别名通常出现在编译器的 <cstdint> 或 <stdint.h> 头文件中&#xff0c;用于提供标准、跨…

消息队列的简介

什么是消息队列? 消息队列就是用于不同系统 不同服务之间异步地传递信息,就是不用生产者和消费者同时在线或者直接连接,消息存储在队列中,直到消费者准备处理 消息队列的核心概念: 生产者:发送消息的一方 消费者:处理消息的一方 队列:存储队列的一方 优点: 1解耦: 生产者和消费…

C#发票检验真伪示例、全电票查验接口、发票OCR识别

假发票的最直接危害体现在税收的流失&#xff0c;但发票查验对于现如今票据量大的企业而言成为了一大难题&#xff0c;传统手动输入发票信息的方式已无法满足当下企业的需求。人工智能时代&#xff0c;“以票控账&#xff0c;以票审计&#xff0c;以票查税"是推动企业数字…

Spring Cloud OpenFeign底层实现原理

Spring Cloud OpenFeign底层实现原理 先说一下写这篇文章的一个原因&#xff0c;就是我被面试官吊打了&#xff0c;我只知道OpenFeign底层采用了RestTemplate进行调用&#xff0c;采用了动态代理&#xff0c;但是具体怎么实现的我就母鸡了。为了防止同样的地方摔倒&#xff0c…

【可靠数据传输的原理】

文章目录 可靠数据传输的原理可靠数据传输&#xff08;rdt&#xff09;的原理可靠数据传输&#xff1a;问题描述Rdt1.0&#xff1a; 在可靠信道上的可靠数据传输Rdt2.0&#xff1a;具有比特差错的信道rdt2.0&#xff1a;FSM描述rdt2.0&#xff1a;没有差错时的操作rdt2.0&#…