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

文章目录

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

上一篇

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

启发式搜索

提高一般图搜索效率的关键是优化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 α>=β时剪枝

下一篇

未完待续

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

馆藏档案管理系统和数字档案管理系统的区别

馆藏档案管理系统是指传统的档案管理系统&#xff0c;主要包括档案馆内纸质档案的收集、整理、存储、保护、利用等工作。它的主要特点是针对纸质档案的管理&#xff0c;需要建立大量的文件柜、卷宗和保管设备&#xff0c;检索和借阅需要现场操作。 专久智能数字档案管理系统则是…

文献速递:多模态影像组学文献分享:多模态图注意力网络用于COVID-19预后预测

文献速递&#xff1a;多模态影像组学文献分享&#xff1a;多模态图注意力网络用于COVID-19预后预测 01 文献速递介绍 在处理像 COVID-19 这样的新出现的疾病时&#xff0c;患者和疾病特定因素&#xff08;例如&#xff0c;体重或已知共病&#xff09;对疾病的即时进展的影响…

使用智能AI文心一言处理采集数据

简数采集器支持调用百度智能AI文心一言大模型API接口&#xff0c;可对采集的数据进行研究分析&#xff0c;内容创作。 文心一言API使用方法如下&#xff1a; 目录 1. 采集数据 2. 申请API 3. 对接文心一言API 4. 设置文心一言API的执行指令 5. 使用文心一言API处理采集数…

案例061:基于微信小程序的互助学习系统

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…

54.grpc实现文件上传和下载

文章目录 一&#xff1a;简介1. 什么是grpc2. 为什么我们要用grpc 二&#xff1a;grpc的hello world1、 定义hello.proto文件2、生成xxx_grpc.pb.go文件3、生成xxx.pb.go结构体文件4、编写服务代码service.go5、编写客户端代码client.go 三、服务端流式传输&#xff1a;文件下载…

pycharm安装

1.先去官网下载pycharm 2.下载python3.8 3.修改pip镜像 4.如果有环境变量没加的加一下

一加 12 Pop-up快闪活动来袭,十城联动火爆开启

12 月 9 日&#xff0c;一加 12 Pop-up 快闪活动在北京、深圳、上海、广州等十城联动开启&#xff0c;各地加油欢聚快闪现场&#xff0c;抢先体验与购买一加 12。作为一加十年超越之作&#xff0c;一加 12 全球首发拥有医疗级护眼方案和行业第一 4500nit 峰值亮度的 2K 东方屏、…

我尝试用 AI 来做数据分析,结果差强人意!

大家好&#xff0c;我是木川 工作中经常会需要分析数据 1、统计分析&#xff0c;计算某项指标的均值、分位数、标准差等 2、相关性分析&#xff0c;比如分析销售额与顾客年龄、顾客性别、促销活动等的相关性 3、可视化分析&#xff0c;比如绘制柱状图、折线图、散点图等 有了 A…

Java网络编程——对象的序列化与反序列化

当两个进程进行远程通信时&#xff0c;彼此可以发送各种类型的数据&#xff0c;如文本、图片、语音和视频等。无论是何种类型的数据&#xff0c;都会以二进制序列的形式在网络上传送。当两个Java进程进行远程通信时&#xff0c;一个进程能否把一个Java对象发送给另一个进程呢&a…

本地部署语音转文字(whisper,SpeechRecognition)

本地部署语音转文字 1.whisper1.首先安装Chocolatey2.安装3.使用 2.SpeechRecognition1.环境2.中文包3.格式转化4.运行 3.效果 1.whisper 1.首先安装Chocolatey https://github.com/openai/whisper 以管理员身份运行PowerShell Set-ExecutionPolicy Bypass -Scope Process -…

自动化测试框架性能测试报告模板

一、项目概述 1.1 编写目的 本次测试报告&#xff0c;为自动化测试框架性能测试总结报告。目的在于总结我们课程所压测的目标系统的性能点、优化历史和可优化方向。 1.2 项目背景 我们公开课的性能测试目标系统。主要是用于我们课程自动化测试框架功能的实现&#xff0c;以及…

记录 | ubuntu监控cpu频率、温度等

ubuntu监控cpu频率、温度等 采用 i7z 进行监控&#xff0c;先安装&#xff1a; sudo apt install i7z -ysudo i7z

基于51单片机的多模式智能闹钟系统【代码+仿真+论文+PPT等16个文件资料】

一、项目功能简介 整个设计系统由STC89C52单片机LCD1602显示模块DS1302模块温度模块存储模块矩阵按键模块组成。 具体功能&#xff1a; 1、智能闹钟正常模式显示阳历年、月、日、星期、小时、分、秒&#xff1b; 2、可设置时间和日期&#xff1b; 3、 LCD显示当前温度&…

游戏玩家升级不伤手之选,光威龙武系列超强性能

得益于国产存储芯片的崛起&#xff0c;现在的内存条价格太香了。要放在前几年&#xff0c;购买内存条时都会优先考虑国际一线品牌。随着内存条行业发生巨变&#xff0c;国产品牌光威GLOWAY&#xff0c;是全球前三的内存模组厂商嘉合劲威旗下品牌&#xff0c;它推出的内存条产品…

十八、FreeRTOS之FreeRTOS任务通知

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

JOSEF约瑟 接触式中间继电器 JZC1-53 AC220V 导轨安装

系列型号 JZC1-22中间继电器&#xff1b;JZC1-44中间继电器&#xff1b; JZC1-62中间继电器&#xff1b;JZC1-80中间继电器&#xff1b; JZC1-71中间继电器&#xff1b;JZC1-53中间继电器&#xff1b; JZC1-32中间继电器&#xff1b;JZC1-40中间继电器&#xff1b; JZC1-31中间…

HarmonyOS4.0从零开始的开发教程10Video组件的使用

HarmonyOS&#xff08;九&#xff09;Video组件的使用 概述 在手机、平板或是智慧屏这些终端设备上&#xff0c;媒体功能可以算作是我们最常用的场景之一。无论是实现音频的播放、录制、采集&#xff0c;还是视频的播放、切换、循环&#xff0c;亦或是相机的预览、拍照等功能…

【Python】翻译包translate

在Python里&#xff0c;可以用translate包完成语言的翻译转化 import translatetrantranslate.Translator(from_lang"ZH",to_lang"JA") strtran.translate("今天的天气怎么样")print(str)

四招打造完美分层自动化测试框架,让测试更高效!

写在前面 我们刚开始做自动化测试&#xff0c;可能写的代码都是基于原生写的代码&#xff0c;看起来特别不美观&#xff0c;而且感觉特别生硬。 来看下面一段代码&#xff1a; 具体表现如下&#xff1a; driver对象在测试类中显示 定位元素的value值在测试类中显示 定位元素…

【Vue+Python】—— 基于Vue与Python的图书管理系统

文章目录 &#x1f356; 前言&#x1f3b6;一、项目描述✨二、项目展示&#x1f3c6;三、撒花 &#x1f356; 前言 【VuePython】—— 基于Vue与Python的图书管理系统 &#x1f3b6;一、项目描述 描述&#xff1a; 本项目为《基于Vue与Python的图书管理系统》&#xff0c;项目…