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

文章目录

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

上一篇

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

启发式搜索

提高一般图搜索效率的关键是优化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.mzph.cn/news/210528.shtml

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

相关文章

mysql面试题——MVCC

一&#xff1a;什么是MVCC&#xff1f; 多版本并发控制&#xff0c;更好的方式去处理读-写冲突&#xff0c;就是为了查询一些正在被另一个事务更新的行&#xff0c;并且可以看到它们被更新之前的值&#xff0c;这样在做查询的时候就不用等待另一个事务释放锁。 二&#xff1a…

万界星空科技mes系统中看板管理

我们很多企业现在都有大屏&#xff0c;那到底万界星空科技低代码云mes系统管理中看板管理有什么作用&#xff1f;我总结了几条: 1.提高车间的生产效率 2.有效的监控设备运行状况 3.控制生产线运行 4.增加和改善用户体验 5.提高工作效率和工作安全性

Zabbix监控腾讯云VPC

一、简介 私有网络&#xff08;Virtual Private Cloud&#xff0c;VPC&#xff09;是腾讯云上一块由用户自定义的逻辑隔离网络空间&#xff0c;为云服务器、云数据库等资源提供安全可控的网络环境。通过构建逻辑隔离的、用户自定义配置的网络空间&#xff0c;用户能够提升其云…

WIN11家庭中文版使用ENSP+VirtualBox启动AR失败40错误+未完全关闭hyper-V,以及安装VirtualBox兼容性问题

使用版本&#xff1a;eNSP 1.3.00.100VirtualBox 5.2.44WinPcap_4_1_3Wireshark最新版。 win11系统最好按照上述版本安装&#xff0c;VirtualBox不要安装更高版本&#xff0c;否则可能出现不兼容情况&#xff0c;Wireshark版本要求还好&#xff0c;安装顺序是VirtualBox 5.2.4…

python+pytest接口自动化之参数关联

什么是参数关联&#xff1f; 参数关联&#xff0c;也叫接口关联&#xff0c;即接口之间存在参数的联系或依赖。在完成某一功能业务时&#xff0c;有时需要按顺序请求多个接口&#xff0c;此时在某些接口之间可能会存在关联关系。比如&#xff1a;B接口的某个或某些请求参数是通…

如何利用人工智能+物联网技术实现自动化设备生产

随着科技的发展与行业竞争的日益激烈&#xff0c;制造业也逐渐走向智能化发展。制造业的改革是利用物联网技术和自动化设备&#xff0c;实现生产线的智能化和自适应生产&#xff0c;优化生产流程&#xff0c;提高生产效率和质量&#xff0c;为企业创造更大的价值。 方案概述 智…

Gif表情包怎么用图片制作?一招简单易上手

很多朋友对于gif动图的名字不是很熟悉&#xff0c;但是对于“gif表情包”一定很熟悉吧&#xff01;在日常网络聊天中经常能见到其的身影&#xff0c;能够调节聊天的气氛。想要制作gif表情包可以使用gif动图在线制作&#xff08;https://www.gif.cn/&#xff09;网站-GIF中文网&…

学习Linux(2)-学习Linux命令

Linux目录结构 Linux目录结构-菜鸟教程 /bin&#xff1a;bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。 /boot&#xff1a;这里存放的是启动 Linux 时使用的一些核心文件&#xff0c;包括一些连接文件以及镜像文件。 /dev &#xff1a;dev 是 De…

Dockerfile文件

什么是dockerfile? Dockerfile是一个包含用于组合映像的命令的文本文档。可以使用在命令行中调用任何命令。 Docker通过读取Dockerfile中的指令自动生成映像。 docker build命令用于从Dockerfile构建映像。可以在docker build命令中使用-f标志指向文件系统中任何位置的Docke…

C语言-字符串操作函数-附加使用方式

文章目录 前言字符串复制-strcpy字符串复制&#xff08;按照位数&#xff09;-strncpy字符串比较-strcmp字符串比较(按照位数)-strncmp不区分大小写的字符串比较-strcasecmp不区分大小写的比较(前n位)-strncasecmp字符串按照格式写入-sprintf字符串按照格式和个数写入-snprintf…

JUC包(面试常问)

1. Callable接口 类似于Runnable接口&#xff0c;Runnable描述的任务&#xff0c;不带返回值&#xff1b;Callable描述的任务带返回值。 public class Test {//创建线程&#xff0c;计算12...1000public static void main(String[] args) throws ExecutionException, Interru…

js/jQuery常见操作 之各种语法例子(包括jQuery中常见的与索引相关的选择器)

js/jQuery常见操作 之各种语法例子&#xff08;包括jQuery中常见的与索引相关的选择器&#xff09; 1. 操作table常见的1.1 动态给table添加title&#xff08;指定td&#xff09;1.1.1 给td动态添加title&#xff08;含&#xff1a;获取tr的第几个td&#xff09;1.1.2 动态加工…

每日一练【三数之和】

一、题目描述 15. 三数之和 给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三元组。 注意&#xff1a;答案中不可…

【数据结构(九)】线索化二叉树(3)

文章目录 1. 前言——问题引出2. 线索二叉树的基本介绍3. 线索二叉树的应用案例3.1. 思路分析3.2. 代码实现 4. 遍历线索化二叉树4.1. 代码实现 1. 前言——问题引出 问题&#xff1a;     将数列 {1, 3, 6, 8, 10, 14 } 构建成一颗二叉树. &#xff08;n17个空指针域&…

1688API接口系列,商品详情数据丨搜索商品列表丨商家订单类丨1688开放平台接口使用方案

1688商品详情接口是指1688平台提供的API接口&#xff0c;用于获取商品详情信息。通过该接口&#xff0c;您可以获取到商品的详细信息&#xff0c;包括商品标题、价格、库存、描述、图片等。 要使用1688商品详情接口&#xff0c;您需要先申请1688的API权限&#xff0c;并获取ac…

老有所依:TSINGSEE青犀养老院智能视频监管方案

养老院智能监控方案是为了提高养老院内老人的安全和护理质量&#xff0c;利用智能技术与监控设备进行全方位的监控和管理&#xff0c;可以加强对老人的监护和护理&#xff0c;提高养老院的服务质量和安全性。 旭帆科技基于视频技术与AI智能分析技术构建的养老院智能视频监控方…

22 FlexSPI—读写外部 SPI NorFlash

文章目录 22.1 SPI 协议简介22.1.1 SPI物理层22.1.2 协议22.1.3 CPOL/CPHA 及通讯模式22.1.4 扩展 SPI 协议22.1.5 SDR 和 DDR 模式 22.2 RT1052 的 FlexSPI 特性及架构22.2.1 RT1052 的 FlexSPI 外设简介22.2.2 RT1052 的 FlexSPI 架构剖析22.2.2.1 通讯引脚22.2.2.2 指令查找…

如何将html网页免费转为excel?

一、直接复制。 直接复制是最简单有效、快捷的解决方案&#xff0c;操作方法如下&#xff1a; 1、用鼠标像平常复制文本一样&#xff0c;将整个网页表格选中。 2、点击右键&#xff0c;点击“复制”。 3、打开excel软件&#xff0c;鼠标点击任意单元格。 4、点击右键&#…

Power BI - 5分钟学习拆分列

每天5分钟&#xff0c;今天介绍Power BI拆分列功能。 什么是拆分列&#xff1f; 有时导入Power BI的数据表中&#xff0c;某列内容都包含同样的特殊字符如 /&/-/_等&#xff0c;可以利用这个特殊字符进行拆分列的操作&#xff0c;获得我们想要的信息。 操作举例&#xf…

SugarCRM 任意文件上传漏洞复现(CVE-2023-22952)

0x01 产品简介 SugarCRM是美国SugarCRM公司的一套开源的客户关系管理系统(CRM)。该系统支持对不同的客户需求进行差异化营销、管理和分配销售线索,实现销售代表的信息共享和追踪。 0x02 漏洞概述 SugarCRM index.php接口存在安全漏洞,该漏洞源于安装组件中存在授权绕过和P…