人工智能——图搜索

人工智能和经典图搜索问题之间有什么关系? 全文共5764字,预计学习时长11分钟 人工智能与图搜索 通常,我们在浏览一些与人工智能相关的话题、教程、或者文章时会发现,作者为了解释人工智能代理的工作原理,常会用图搜索问题作为例子。这是为什么呢?人工智能和经典的图搜索问题之间有什么关系呢? 什么是人工智能 查找各种资料后你会发现,对于人工智能并没有一个清晰而明确的定义。部分人认为“人工智能就是对理性主体的研究,此处的理性主体指... 阅读详情



一.数据驱动和目标驱动搜索

以下情况建议使用目标驱动搜索:

(1)目标或假设是在问题陈述中给出的。例如定理的证明,目标就是定理。

(2)与问题数据匹配的规则非常多,会产生大量分支。

(3)问题数据不是给定的,目标驱动搜索可以引导如何获取数据。

以下情况建议使用数据驱动搜索:

(1)问题的初始陈述给出了所有或大部分数据。

(2)潜在目标的数量非常庞大。

(3)难以组成目标或假设。

总而言之,要考虑的主要因素就是分支因子(即每个方向新状态的平均数量)。

二.盲目搜索

1.回溯搜索

回溯搜索就是从起始状态出发沿一条路径前进,要么达到目标,要么到达死端。如果到达死端,它便回溯到路径上含有尚未分析过兄弟的最近节点。这种回溯思想被应用到其他算法。

2.宽度优先搜索

算法如下:

(1)把起始节点放到OPEN表中;

(2)如果OPEN表是个空表,则失败退出,否则继续;

(3)把第一个节点n从OPEN表中取出,放入CLOSE表中;

(4)扩展节点n,如果没有后继节点,则转向(2);

(5)把n的后继节点中不在OPEN和CLOSE表中的放到OPEN表的末端,这些后继节点要有指向父节点n的指针;

(6)如果n的任意一个后继节点是一个目标节点,成功推出;否则,转向(2)。

显而易见,宽度优先搜索方法能够保证找到一条到目标节点的最短路径。

递归形式的宽度优先搜索略。

3.深度优先搜索

含有深度界限的深度优先搜索:

(1)把起始节点放到OPEN表中;

(2)如果OPEN表是个空表,则失败退出,否则继续;

(3)把第一个节点n从OPEN表中取出,放入CLOSE表中;

(4)扩展节点n,如果节点n的深度等于最大深度,或者n没有后继节点,则转向(2);

(5)把n的后继节点中不在OPEN和CLOSE表中的放到OPEN表的首端,这些后继节点要有指向父节点n的指针;

(6)如果n的任意一个后继节点是一个目标节点,成功推出;否则,转向(2)。

可以看出,与宽度优先的唯一区别就是新节点放在open表的开始还是结尾。

分支过程:如果含有多条路径,要找最优,则可以简单地利用分支过程降低复杂度。找到目标后,记录下路径长度为MIN,若搜索到的节点路径大于MIN,则放弃搜索,回溯到其他节点;如果小于MIN,这把较小值赋给MIN。

递归形式的深度优先搜索算法:
OPEN和CLOSE为全局变量;

Depthsearch(){

如果OPEN表为空,return fail;

current=OPEN中的第一个值;

If(current==goal)  return success;

else{

从OPEN表中移除current,放入CLOSE表中;

把current的孩子节点中的不是OPEN和CLOSE表中的添加到OPEN的开头;

}

Depthsearch();

}

还可以进一步简化这个过程:用递归本身来组织状态空间中的状态和路径,而不用显式的OPEN表,用全局变量CLOSE来探测重复状态并防止死循环:

CLOSE为全局变量;

Depthsearch(){
if (current==goal)  return success;

Add current to CLOSE;

While(current has unexamined child){

Child =next unexamined child;

If (child not a member of closed){

If(depthsearch(child)==success) return success;

}

}

Return fail;

}

4.等代价搜索

寻找具有最小代价的解答路径,是宽度优先搜索的推广:

(1)把起始节点放入OPEN表中,如果是目标节点,则成功退出,否则令g(s)=0;

(2)如果OPEN是空表,则失败退出;

(3)从OPEN表中选择一个g(i)最小的节点,如果几个节点都合格,有目标节点就选目标节点成功退出,否则选一个节点i从OPEN表中移出放入CLOSE表中;

(4)扩展节点i,如果没有后继节点,则转向第(2)步;

(5)对于节点i的每个后继节点j,计算g(j)=g(i)+c(i,j),并把所有后继节点j放入OPEN表中,提供回到节点i的指针;

(6)转向第(2)步。

5.与或图搜索

与常规的图搜索相比,与或图搜索需要多保存一些记录。检查或后继节点的方法与回溯中一样:一旦找到了沿或节点把目标连接到起始节点的一条路径,那么这个问题就解决了。如果一条路径失败,那么算法可以回溯并试验另一个分支。在检查与节点时,要证明与节点为真就必须证明这个节点的所有与后继都为真。 

下面给出目标驱动的深度优先的与或图搜索算法:

先定义节点:

class Node{

Node Parent;  //指向父节点指针

Int Value;  //False=0,True=1,不确定=2

Int type;  //当前节点类型,与=0,或=1

Int child_number;  //子节点数目

Int child_check;  //已检查子节点数目

}

在建立图时,把节点转换成纯粹的与节点或者或节点,例如:

 

(1)把头结点放入OPEN表中,如果头结点为真或假,则成功退出;

(2)如果OPEN为空则失败退出,如果头结点为真或假,则成功退出;

(3)移出OPEN中第一个元素i,放入CLOSE中,current=i;

(4)如果current为真:

a.父节点是与,把父节点已检查子节点数目加一,如果父节点已检查数目等于父节 点的子节点数目,则current=父节点,返回(2);

b.父节点是或,父节点为真,current=父节点,并删除current在OPEN表中的所有 子节点,返回(2);

(5)如果current为假:

a.父节点是与,父节点为假,current=父节点,并删除current在OPEN表中的所有子节点,返回(2);

b.父节点是或,把父节点已检查子节点数目加一,如果父节点已检查数目等于父节点的子节点数目,则父节点为假,current=父节点,返回(2);

(6)如果current不确定:

a.如果还有子节点,把子节点放入OPEN表中,返回(2);

b.如果没有子节点,则让current为假,返回(5);

三.启发式搜索

1.估价函数f(n)

f(n)=g(n)+h(n)

其中,g(n)是从任意状态n到起始状态的路径长度,h(n)是状态n到目标距离的启发性估计。估价函数的g(n)分量是这种搜索带有更多的宽度优先性,这防止了搜索被错误的评估所误导:如果启发对一条无法到达目标的路径上的状态连续给出“好的”评估,那么g值会上升来控制f,从而迫使搜索返回一条较短的解路径,这保证算法不会永久迷失。

当然,也可以让g(n)=0,来更快地找到目标;或则让h(n)=0,就是宽度优先搜索。

2.A算法

算法如下:

与宽度优先搜索不同之处就是:要对对OPEN表中的所有元素按照f进行排序,如果某个节点已经存在于OPEN或CLOSE表中,如果f值较小,则修改已存在节点的f值。还可以把OPEN和CLOSE表维护为堆或左撇子树来提高效率。

3.A星算法

我们定义一个估价函数:f星(n)=g星(n)+h星(n)

其中:g星(n)是从起始节点到节点n的最短路径代价,h星(n)是从n到目标的最短路径的实际代价。这样f星(n)就是从起始节点经过节点n到达目标的最优路径的实际代价。

可采纳的算法:如果在任何图中只要存在从起始节点到达目标状态的最优路径,搜索算法就可以找到这样的路径,那么这个算法就是可采纳的算法。

算法:如果在A算法中使用的评估函数满足h(n)<=h星(n),这种算法就称为A星算法。

所有的S星算法都是可采纳的。

四.博弈中的启发式搜索

1.可穷举搜索的极小极大过程

在状态可以穷举的博弈中,主要难点是如何考虑对手的动作。一简单方式是假定对手具有相同的关于状态空间的知识。MAX代表棋手,MIN代表对手,MAX总是最大化他的优势,MIN总是使MAX的优势最小。

如下图所示,每个叶子节点有一个0和1的值,代表MIN取胜或MAX取胜。极小极大搜索根据下面的规则沿连续的父节点向上传播这些值:

如果父节点是一个MAX节点,那么把孩子中的最大值赋给它;如果父节点是一个MIN节点,那么把孩子中的最小值赋给它。于是赋给每个状态的值表示了这个棋手可以期望达到的最佳状态值,算法就按此值来选择移动方法。

 

2.固定层深的极小极大过程

即探索到n层,然后给每个叶子节点赋一个启发值。

3.a-b过程

即对固定层深的极小极大搜索过程进行修剪。

 

它与分支过程思想类似:先沿着一条路径搜索到底,比如搜索完A,B,E,K,L后,E的值为3,由于F最小为5,故F的另一个分支就不用再搜索。同样,由于B的值为3,而C的值最大为0,故C的另一个分支也不用再搜索,D的另一个分支也不用再搜索。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

人工智能——状态空间搜索及状态空间表示法 图中,节点Sk表示状态,状态之间的连接采用有向弧(Arc),弧上标以操作数OK来表示状态之间的转换关系。根据上述分析,共有16个合法状态和允许的操作,可以划出传教士和食人者问题的状态空间图,如图所示。(5)当状态数量不是很大时,按问题的有序元组画出状态空间图,依照状态空间图搜索求解。(5)当状态数量不是很大时,按问题的有序元组画出状态空间图,依照状态空间图搜索求解。(4)估计全部的状态空间数,并尽可能列出全部的状态空间或予以描述之。问题的状态可以用一个三元数组来描述,以左岸的状态来标记,即。 阅读详情

相关推荐

人工智能导论(5-9)-TYUT

考前复习

weixin_51603782的博客 1万+

算法-广度优先、深度优先和等代价搜索

0.摘要 本文主要介绍三种盲目搜索算法:广度优先、深度优先和等代价搜索。 首先,介绍几个之后会用到的概念: OPEN表:存放未扩展节点的表格 CLOSE表:存放以扩展节点的表格   1.宽度优先搜索 宽度优先搜索(BFS,Breadth First Search。 )又称广度优先搜索,是最简便的图的搜索算法之一。 定义:如果搜索是以接近初始节点的程度一次扩展节点的,那么这种搜索就叫...

qq_17753903的博客 2万+

人工智能中的图搜索策略与重排九宫问题

人工智能实验报告实验一 图搜索策略   一.实验目的  1.加深对各种图搜索策略概念的理解  2.进一步了解启发式搜索  3.比较分析各种搜索策略的异同   二.实验内容和步骤    以重排九宫问题为例演示各种搜索策略(包括广度优先搜索、深度优先搜索、有界深度优先搜索、最好优先搜索和局部择优搜索等搜索策略)的搜索过程,要求程序具有一定普适性,重点是要把算法描述清楚。   四.重排九宫问题的定义  

rockcarry的专栏 1万+

人工智能——与或图的搜索

与或图的搜索

Sun7_She的专栏 2万+

人工智能导论——Prolog编程求解图搜索问题(代码实现)

人工智能导论实验报告 实验二:Prolog编程求解图搜索问题一、 实验目的二、 实验的硬件、软件平台三、 实验内容及步骤1. 实验内容:【问题描述】【问题分析】2. 实验步骤:2.1. 安装prolog集成开发环境2.2. 采用prolog编写所选问题的源程序2.3. 编译程序,输出查询问题的结果或数据3. 画出状态空间图:四、 问题与分析1. 直接使用write打印表结构无法输出所有路径2. 逆序输出五、 总结六、 附录1. 事实与规则2. 查询语句3. 查询结果 一、 实验目的 熟悉PROLOG的运行

weixin_43973089的博客 3453

等代价搜索算法

等代价搜索算法Java实现版 求从某个顶点(源点)到其它顶点(终点)的最短路径

人工智能和图搜索

我们可以走这条路径,A -> B -> D,成本为 20,或者我们可以选择 A -> C -> B -> D,成本较低,为 16。考虑到,在访问起始节点之后,我们将继续访问它的所有邻居,然后我们将进入下一个“层”,并且需要一个队列。嗯,是的,但不仅如此。人工智能不仅仅是一种编程范式,就像图搜索算法一样,而且,正如我之前所说,它是对理性主体的研究,这些理性主体研究环境并尝试选择具有最佳结果的行动。所有这些算法的要点是,在访问一个节点后,我们必须选择下一个未访问的节点并“访问”它,以查看是否达到目标。

vvoennvv的博客 267

Icarus Verilog和GTKwave使用简析

本简要介绍Icarus Verilog和GTKwave的使用,使用iverilog(Icarus Verilog)编译仿真verilog而使用GTKWave查看仿真数据波形下载安装 基本使用 iverilog使用 GTKWave使用 iverilog常用选项 使用库 注意

husipeng86的专栏 1万+

实现图的宽度优先遍历_人工智能和经典图搜索问题之间有什么关系?

全文共5764字,预计学习时长11分钟人工智能与图搜索通常,我们在浏览一些与人工智能相关的话题、教程、或者文章时会发现,作者为了解释人工智能代理的工作原理,常会用图搜索问题作为例子。这是为什么呢?人工智能和经典的图搜索问题之间有什么关系呢?什么是人工智能查找各种资料后你会发现,对于人工智能并没有一个清晰而明确的定义。部分人认为“人工智能就是对理性主体的研究,此处的理性主体指任何能够作出决策的主体,...

weixin_39849800的博客 336

Ego-Planner实战避坑指南:从环境搭建到仿真运行

本文详细介绍了在Windows系统下,通过WSL2搭建Ego-Planner无人机路径规划算法开发环境的完整流程与实战避坑指南。内容涵盖ROS Noetic安装、第三方依赖库(如Ceres Solver)编译冲突解决、Realsense SDK版本降级处理,以及Gazebo仿真与真机调试的常见问题,旨在帮助开发者高效完成环境配置并成功运行仿真。

weixin_29232507的博客 700

KF-gins输出结果绘图

KF-gins输出结果绘图

m0_51977577的博客 1107

实现图的宽度优先遍历_运用图搜索算法看人工智能的基本概念

全文共5764字,预计学习时长11分钟人工智能与图搜索通常,我们在浏览一些与人工智能相关的话题、教程、或者文章时会发现,作者为了解释人工智能代理的工作原理,常会用图搜索问题作为例子。这是为什么呢?人工智能和经典的图搜索问题之间有什么关系呢?什么是人工智能查找各种资料后你会发现,对于人工智能并没有一个清晰而明确的定义。部分人认为“人工智能就是对理性主体的研究,此处的理性主体指任何能够作出决策的主体,...

weixin_39679061的博客 862

WRF中使用ERA5再分析数据

   本人在做一些实例时,需要用到最新的ERA5再分析数据集,其中我下载的是ERA5 hourly data on pressure levels form 1979 to present和ERA5 hourly data on single levels from 1979 to present中的3天数据。 1、注册climate copernicus账号 下载ERA5数据前先要注册其账号 2、选择变量    WRF中对于气象数据的字段有具体的要求, ......

GIS 8171

AI 解决问题的本质:图搜索模型

AI 解决问题的本质:图搜索模型

Flyingapepoet的博客 389

Python实战:用MNE-Python从脑电数据中提取P300成分(附完整代码)

本文提供了一份使用MNE-Python从脑电数据中提取P300成分的完整实战指南。通过详细的代码示例,系统讲解了从环境搭建、数据加载、预处理(滤波、分段、伪迹剔除)到P300波形提取、可视化与参数量化的全流程。重点介绍了如何利用零相位滤波和叠加平均技术,从EEG信号中精准分离出反映认知加工的P300事件相关电位,适用于脑机接口与认知神经科学研究。

weixin_29240343的博客 338

ANSYS二次开发:Python和ANSYS进行交互操作(PyAnsys库,DPF)

🎈ANSYS二次开发:APDL开发入门准备🎈- 🎈ANSYS二次开发:后处理使用APDL命令流解析结果文件🎈 🎈ANSYS二次开发:Python解析ANSYS结果文件(PyAnsys库)🎈 🎈ANSYS二次开发:Python操作ANSYS(PyAnsys库,PyDPF)🎈 文章目录1、简介2、安装2.1 ansys-mapdl-core2.2 pyaedt2.3 ansys-dpf-core2.4 ansys-dpf-post2.5 ansys-mapdl-reader2.6 G...

爱看书的小沐 2万+

湖南大学人工智能实验二:Prolog编程求解图搜索问题

说在前面:这个实验我也是抄的 真的有人会写prolog嘛? 代码链接:人工智能实验 文章目录人工智能实验二:Prolog编程求解图搜索问题一.实验目的二.实验的硬件、软件平台三.实验内容及步骤四.实验报告要求五.实验步骤通过PROLOG的基本编程练习,说明实验的方法和步骤针对图搜索要求,说明求解的问题与程序、程序分析、注释、运行结果等,在讨论与结论部分说明实验收获、难点重点讨论等求解的问题程序程序分析及注释运行结果实验收获实验源代码 人工智能实验二:Prolog编程求解图搜索问题 一.实验目的 熟悉.

Moyu-42的博客 1625

MATLAB应用实战系列(四十三)-基于MATLAB的光伏并网系统仿真设计

在Matlab中建立光伏电站接入系统模型,包括光伏发电逆变器及负荷模型等,仿真分析接入点处的电能质量,实现高品质并网运行。 壹 构建太阳能电池模型。 初始化参数如下图所示。 贰 构建MPPT控制模型。 具体封装如下所示: 通过PWM算法实现DC-DC稳步输出最大点。 叁 三、构建直流短距离输电线路。 仿真模型如下图: 通过电容来均衡线路电压,使得线路电压保持可靠性。 肆 通过逆变器变换,使得直流线路转换成...

wenyusuran的专栏 3169

贪吃蛇AI项目:从图搜索到强化学习的完整技术指南

贪吃蛇AI项目是一个展示人工智能在经典游戏中应用的绝佳案例,通过Python实现了从传统图搜索算法到深度强化学习的完整技术栈。这个项目不仅让开发者能够学习AI算法的实际应用,还提供了完整的代码架构和性能对比分析。对于想要深入了解游戏AI、图搜索算法和强化学习的技术爱好者来说,这是一个不可多得的学习资源。 ## 项目价值与定位 贪吃蛇AI项目的核心价值在于提供了一个完整的AI算法对比平台。在6x

gitblog_00605的博客 805

Claude Code 错误解决方案 API Error: 前缀通用错误

本文分析了Claude Code与Anthropic API通信时出现的通用错误处理问题。当API返回未分类错误时,系统会直接显示"API Error: "前缀的原始错误信息。通过错误链路追踪发现,这是由于未匹配特定错误类型时触发了通用兜底处理逻辑。文章提供了三种解决方案:查看具体错误内容、启用调试日志以及提交问题反馈,并建议用户关注错误码、使用/compact命令处理上下文超限问题。最后强调这些未分类错误是预期行为,用户应通过错误消息中的线索自行排查或反馈开发者。

多媒体编程、网络编程、系统编程、网络安全编程、驱动编程 1349

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

人工智能(AI)导论性材料,覆盖了**历史演进、学术流派、核心研究与应用领域、知识表示与推理方法、图搜索技术、专家系统、Prolog语言、模糊理论

- 用Python+`nltk`实现简单产生式系统(如天气预报规则引擎); - 用`scikit-fuzzy`库搭建模糊温控器仿真; - 在SWI-Prolog中复现八数码问题的状态空间搜索。

[Blog][Domain] programb.blog.youkuaiyun.com 1045

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

人工智能练手二(图搜索)

背景 在我们工作中,经常会遇到类似路径规划、知识图谱的需求,抽象出来即为图数据的处理,基于此,以下主要来分析图数据处理的算法 文中用到的库 import requests import json import re import math import networkx as nx import matplotlib import matplotlib.pyplot as plt from col...

不知者无畏 384

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

便利店AI推荐优化:提升地图搜索排名的智能策略

在数字化时代,地图搜索已成为用户寻找便利店的主要方式之一。通过AI驱动的智能优化策略,便利店可以显著提升在地图应用中的曝光率。现代地图推荐系统基于用户画像、时空特征和行为数据等多维度动态调整排序,传统的GEO优化方法已不再适用。有效的优化策略包括空间数据智能增强、用户画像动态匹配、语义化标签体系和反馈闭环系统。这些技术不仅提升了便利店的线上可见度,还能通过数据分析优化实际经营策略。以7-11、全家等连锁品牌为例,AI推荐系统已成功应用于本地化服务优化,帮助店铺在竞争激烈的市场中脱颖而出。

cunfuxiao7305的博客 425

研一上,人工智能课,图搜索的学习之路

dfs bfs a*

ssssxj_的博客 104

《人工智能:计算Agent基础》——3.3 图搜索

本节书摘来自华章计算机《人工智能:计算Agent基础》一书中的第3章,第3.3节,作者:(加)David L.Poole,Alan K.Mackworth 更多章节内容可以访问云栖社区“华章计算机”公众号查看。 3.3 图搜索 在这一章中,我们将一般搜索机制抽象表示为在有向图中的路径搜索。要解决一个问题,首先定义潜在的搜索空间,然后将搜索算法应用于其中。...

weixin_34309543的博客 255

[人工智能] 第2章 基于图的知识表示与图搜索技术

第2章 基于图的知识表示与图搜索技术 问题求解所需要的知识包括: 叙述性知识:描述问题的状态有关的各种知识 过程性知识:描述状态之间的变换关系的各种知识 控制性知识:描述如何在当前状态下选择合适操作的知识 状态空间图是一个描述该问题全部可能的状态及相互关系的图,如考虑操作的代价,状态空间图就是一个赋值有向图 状态空间常记为三元组:<S,F,G> S:初始状态的集合 F:操作的集合 G:目标状态的集合 显式状态空间图:表示了问题所有可能的状态及状态之间的关系 八数码问题状态图仅给出了初始节

hahastephanie的博客 2101
上一篇: 部分可观测Markov决策过程的上界近似算法
下一篇: 动态规划心得
beiger
博客等级 码龄14年 6粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值