AI基础 L4 Uninformed Search I 无信息搜索

news/2024/9/17 6:17:28/ 标签: 人工智能

Problem-solving agent

• Deterministic, fully observable ⇒ single-state problem
Agent knows exactly which state it will be in; solution is a sequence
• Non-observable ⇒ conformant problem
Agent may have no idea where it is; solution (if any) is a sequence
• Nondeterministic and/or partially observable ⇒ contingency problem
percepts provide new information about current state
solution is a contingent plan or a policy
often interleave search, execution
• Unknown state space ⇒ exploration problem (“online”)

确定性,完全可观察的 => 单一状态问题

  • 在一个确定性和完全可观察的环境中,智能体总是能精确地知道自己处于哪个状态,因为环境的行为是可预测的,所有相关信息都对智能体是可见的。

不可观察的 => 一致性问题

  • 在一个不可观察的环境中,智能体可能不知道它当前的状态。这意味着智能体必须规划出一组无论实际状态如何都能确保达到目标的行为。应急问题的解决方案是一个应急计划或策略。应急计划规定了根据智能体的感知(提供了关于当前状态的新信息)来采取的行动。策略是一种通用策略,告诉智能体在不同情况下应该做什么。智能体通常将搜索(规划下一步)与执行(执行计划并观察结果)相结合。

非确定性和/或部分可观察的 => 应急问题

  • 在一个非确定性的环境中,行动的结果是不确定的,而在一个部分可观察的环境中,智能体没有关于当前状态的所有信息。

未知状态空间 => 探索问题(“在线”)

  • 当状态空间未知时,智能体必须探索环境以了解它,同时尝试解决问题。

  Problem Formulation

  1. 初始状态(initial state):问题的起点,例如“在阿拉德(Arad)”。

    • 这是指智能体开始解决问题时的具体状态。
  2. 动作(actions):智能体可以执行的操作,例如“驾车从阿拉德到泽林德(Arad → Zerind)”。

    • 这些动作定义了智能体如何从一个状态转移到另一个状态。
  3. 后继函数 S(x)(successor function):给定状态 x,返回一组动作-状态对,例如 S(Arad) = {〈Arad → Zerind, Zerind〉, …}。

    • 这个函数描述了从当前状态可以采取的所有可能动作以及这些动作将导致的新状态。
  4. 目标测试(goal test):判断一个状态是否是目标状态,可以是显式的或隐式的。

    • 显式:例如,状态 x = “在布加勒斯特(atBucharest)”。
    • 隐式:例如,NoDirt(x),表示某个条件满足时即为目标状态。
  5. 路径成本(累加的)(path cost  additive):从初始状态到目标状态的行动总成本,例如行驶距离的总和、执行的动作数量等。

    • c(x, a, y) 是单步成本,假设它大于或等于 0。
    • 路径成本用于评估不同解决方案的效率。

解决方案(solution):从初始状态到目标状态的一系列动作。 

Selecting a state space

Example: The 8-puzzle

 

1. 状态(States)

  • 定义:在8拼图问题中,状态是指拼图板上各个数字瓷砖的整数位置。
  • 分析:每个瓷砖只能占据一个特定的位置,因此整个拼图板的状态可以用一个9个整数的数组来表示,其中每个整数代表一个瓷砖,0代表空白格。例如,一个3x3的拼图板可能的状态是 [1, 2, 3, 4, 5, 6, 7, 8, 0],其中数字按照从左到右、从上到下的顺序排列。
  • 注意:在考虑状态时,我们忽略了瓷砖移动过程中的中间位置,只关心瓷砖在格子中的最终位置。

2. 动作(Actions)

  • 定义:动作是指可以将空白格(0)移动到相邻位置的操作。
  • 具体动作
    • 向左移动空白格
    • 向右移动空白格
    • 向上移动空白格
    • 向下移动空白格
  • 分析:每个动作都假设空白格旁边有一个可移动的瓷砖,且移动是合法的(即空白格不能在边界外移动)。我们忽略了如“解卡”等复杂动作,只考虑基本的移动。

3. 目标测试(Goal Test)

  • 定义:目标测试是用来判断当前状态是否是目标状态。
  • 分析:在8拼图问题中,目标状态是预先给定的,通常是 [1, 2, 3, 4, 5, 6, 7, 8, 0]。智能体需要比较当前状态与目标状态,如果两者相同,则目标测试通过。

4. 路径成本(Path Cost)

  • 定义:路径成本是指从初始状态到达目标状态所执行动作的总成本。
  • 分析
    • 在8拼图问题中,每个动作的成本被定义为1。
    • 因此,路径成本就是从初始状态到目标状态所执行的动作数量。

 State Spaces

• For finite state spaces, we can enumerate 
• For infinite state spaces, we need to define a function that generates the next state

 对于有限状态空间,可以枚举

对于无限状态空间,需要定义一个函数,该函数能够根据当前状态和执行的动作生成下一个状态。

Solving Problems 

• n.S T AT E: the corresponding state in the state-space
• n.P ARE N T : the node that generated n
• n.AC T I ON : the action applied to n.P ARE N T which resulted in n
• n.P AT H-C OS T : the cost of the path from the initial state to n, as indicated by the P ARE N T pointers

  • n.STATE: 这是节点n在状态空间中对应的状态。在搜索算法中,每个节点代表状态空间中的一个特定状态。

  • n.PARENT: 这是生成节点n的节点。在搜索树中,每个节点(除了初始节点)都有一个父节点,表示它是通过在父节点上应用某个动作而生成的。

  • n.ACTION: 这是应用于n.PARENT并导致生成节点n的动作。换句话说,这是从父节点移动到当前节点所采取的动作。

  • n.PATH-COST: 这是从初始状态到节点n的路径成本。这个成本是通过沿着从初始节点到当前节点的父指针链累加计算得出的。路径成本通常用来评估不同路径的优劣。

Tree search

• Expansion takes place by applying successor functions to the selected node,
providing new states.
• Nodes that have been generated, but not expanded are referred to as the frontier or
fringe.
• Different search strategies behave very differently.
• The search tree is not the same as the state space. In the route finding example,
there are 20 nodes in the state space, but the search tree has an infinite number of
nodes.

在搜索算法中,扩展(Expansion)是一个关键步骤,它涉及到对已选定的节点应用后继函数(successor function),从而生成新的状态。这些新状态可能会是目标状态,也可能需要进一步扩展。扩展是搜索算法发现新状态并探索状态空间的关键步骤。

在搜索过程中,有些节点虽然已经被生成,但还没有被扩展。这些节点被称为前沿(frontier)或边缘(fringe),它们是搜索树中等待进一步扩展的节点集合。前沿是搜索算法关注的焦点,因为只有扩展前沿中的节点,才能发现新的状态并继续搜索。

不同的搜索策略在处理前沿和扩展时会有非常不同的行为。例如,宽度优先搜索(BFS)会优先扩展前沿中的节点,而深度优先搜索(DFS)会优先扩展当前路径上的节点。这些策略的选择会影响算法的效率、可扩展性和找到解决方案的可能性。

需要注意的是,搜索树并不是状态空间本身。在路径查找等问题的例子中,状态空间可能包含20个节点,但搜索树可以包含无限多个节点,因为它可能会无限地扩展,直到找到目标状态或达到某个终止条件。

每次都将节点的周围节点展开

 


http://www.ppmy.cn/news/1522050.html

相关文章

数据库系统 第40节 数据库安全策略

数据库安全策略是确保数据库系统安全、防止数据泄露和未授权访问的关键措施。以下是一些常见的数据库安全策略,以及它们在实际应用中的一些示例。 1. 访问控制 访问控制是数据库安全的基础,它确保只有授权用户才能访问数据库资源。这通常通过以下方式实…

【开源免费】基于SpringBoot+Vue.JS高校校园招聘服务系统(JAVA毕业设计)

本文项目编号 T 010 ,文末自助获取源码 \color{red}{T010,文末自助获取源码} T010,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 查…

利用Stable Diffusion AI图像模型评估智能车模型算法表现(下篇)

今天小李哥将介绍亚马逊云科技的Jupyter Notebook机器学习托管服务Amazon SageMaker上,通过AI图像生成模型Stable Diffusion Upscale和Depth、向量知识库和LangChain Agent,生成用于AI 智能车模型训练的图像数据集并评估模型表现。 本系列共分为上下两篇…

Math Reference Notes: 三角函数术语的几何学解释

在三角函数中,“正”、“余”、“弦”、"割"这些词汇源自古代的几何学术语,它们与三角形的边和角的关系密切相关。 1. 弦(sin,cos的含义): “弦”字来源于圆中的“弦线”,即连接圆周…

VUE2.0 elementUI el-input-number 数据更新,视图不更新——基础积累

今天遇到一个问题,是关于el-input-number组件的,发现数据明明已经更改了,但是页面上组件输入框中还是之前的值。 比如上方输入框中,我输入120.5,就会出现下面的诡异现象 回显此值是120.779,但是页面上输入…

小阿轩yx-云原生存储Rook部署Ceph

小阿轩yx-云原生存储Rook部署Ceph 前言 Rook 一款云原生存储编排服务工具由云原生计算基金会(CNCF)孵化,且于2020年10月正式进入毕业阶段。并不直接提供数据存储方案,而是集成了各种存储解决方案,并通过一种自管理、…

log4j2 与 log4j使用时的几点小区别 - log4j2上手说明

虽然log4j2 目前还是beta版,不过OneCoder已经忍不住要尝试一下。跟使用log4j 比起来,上手上主要的区别有。 1、依赖的jar包。使用slf4jlog4j2 时,依赖的jar包如下:( gradle配置,Maven对照修改即可) dependencies{ com…

(二十六)Java 数据结构

目录 一. 前言 二. 枚举(Enumeration) 三. 位集合(BitSet) 四. 向量(Vector) 五. 栈(Stack) 六. 字典(Dictionary) 七. 哈希表(Hashtable&…

『功能项目』Unity本地数据库读取进入游戏【29】

本章项目成果展示 打开上一篇28Unity连接读取本地数据库的项目, 本章要做的事情是通过读取本地数据库登录进入游戏场景 首先创建一个脚本文件夹: 新建脚本:MySqlAccess.cs 编写脚本:MySqlAccess.cs using UnityEngine; using MyS…

【无人机设计与控制】 四轴飞行器的位移控制

摘要 本文介绍了一种四轴飞行器的位移控制方法,并通过Simulink模型进行仿真和验证。该方法通过PID控制器对飞行器的位移进行精确调节,以实现飞行器在三维空间中的稳定定位和路径跟踪。通过参数调节,能够适应不同的飞行任务需求,确…

Maven持续集成(Continuous integration,简称CI)版本友好管理

从Maven 3.5.0-beta-1 版本开始可以在pom文件中使用 r e v i s i o n 、 {revision}、 revision、{sha1}、${changelist}做为版本的占位符。 一、单module简单使用${revision}的场景 <project><modelVersion>4.0.0</modelVersion><parent><groupId…

使用 Cloudflare R2 代替 AWS S3……

欢迎来到雲闪世界。目录 1. AWS S3 与 Cloudflare R2 2.什么是 AWS S3&#xff1f; 3.什么是 Cloudflare R2&#xff1f; 4. AWS S3 定价 ∘ AWS S3 定价详情 (美国东部 - 弗吉尼亚北部地区) 5. Cloudflare R2 定价 ∘ Cloudflare R2 定价详情 (美国地区) 6.免费套餐&#xff…

Patlibc———更快捷的更换libc

起初是为了简化做pwn题目时&#xff0c;来回更换libc的麻烦&#xff0c;为了简化命令&#xff0c;弄了一个小脚本&#xff0c;可以加入到/usr/local/bin中&#xff0c;当作一个快捷指令&#x1f522; 这个写在了tools库&#xff08;git clone https://github.com/CH13hh/tools…

数据分析:numpy02

目录 1、NumPy 切片和索引 2、数组元素的添加与删除 3、修改数组形状 4、numpy随机数 1、NumPy 切片和索引 ndarray对象的内容可以通过索引或切片来访问和修改&#xff0c;与 Python 中 列表list 的切片操作一样。 ndarray 数组可以基于 0 - n 的下标进行索引&#xff0c;切片…

Redis位图BitMap

一、为什么使用位图&#xff1f; 使用位图能有效实现 用户签到 等行为&#xff0c;用数据库表记录签到&#xff0c;将占用很多存储&#xff1b;但使用 位图BitMap&#xff0c;就能 大大减少存储占用 二、关于位图 本质上是String类型&#xff0c;最小长度8位&#xff08;一个字…

k8s API资源对象

API资源对象Deployment 最小的资源是pod&#xff0c;deployment是多个pod的集合&#xff08;多个副本实现高可用、负载均衡等&#xff09;。 使用yaml文件来配置、部署资源对象。 Deployment YAML示例&#xff1a; vi ng-deploy.yaml apiVersion: apps/v1 kind: Deployment…

JS设计模式之“分即是合” - 建造者模式

引言 当我们在进行软件编程时&#xff0c;常常会遇到需要创建复杂对象的情况。这些对象可能有多个属性&#xff0c;属性之间存在依赖关系&#xff0c;或需要按照特定的骤来创建。在这种情况下&#xff0c;使用建造者模式&#xff08;Builder Pattern&#xff09;可以提供一种活…

给A的平方根矩阵乘高斯随机向量

所以给A的平方根矩阵乘高斯随机向量&#xff0c;目的是得到很多矩阵&#xff0c;这些矩阵的空间平均 A

嵌入式软件--51单片机 DAY 4

一、蜂鸣器 当电流通过线圈时会产生电磁场&#xff0c;电磁场与永磁体相互作用&#xff0c;从而使金属膜产生震动而发声。为使金属膜持续震动&#xff0c;蜂鸣器需要使用震荡电路进行驱动。有些蜂鸣器元件内部自带震荡驱动电路&#xff0c;这种蜂鸣器叫做有源蜂鸣器&#xff0…

网恋照妖镜源码搭建教程

文章目录 前言创建网站1.打开网站设置 配置ssl2.要打开强制HTTPS&#xff0c;用宝塔免费的ssl证书即可&#xff0c;也可以使用其他证书&#xff0c;必须是与域名匹配的3.上传文件至根目录进行解压4.解压后&#xff0c;修改文件 sc.php 里面的内容5.其余探索 前言 前俩年很火的…