状态空间表示

article/2025/9/12 23:59:28

前言

本文隶属于专栏《人工智能》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!

本专栏目录结构和参考文献请见人工智能


引子

人工智能的多个研究领域从求解现实问题的过程来看,都可抽象为一个“问题求解”过程,问题求解过程实际上就是一个搜索过程。

在搜索过程开始之前,必须先用某种方法或某几种方法的混和来表示问题。

问题求解技术主要涉及两个方面:

  • 问题的表示
  • 求解的方法

状态空间表示法就是用来表示问题及其搜索过程的一种方法


问题的状态空间表示

状态空间方法:基于解答空间的问题表示和求解方法,它是以状态算符为基础来表示和求解问题的。

主要包括:

  • 状态
  • 算符
  • 状态空间

典型的例子:下棋、迷宫、各种游戏等。


状态( State )

状态是问题求解过程中每一步问题状况的数据结构,一般用一组数据表示:

在这里插入图片描述

式中每个元素为集合的分量,称为状态变量

  • 每一个分量给予确定的值时,得到一个具体的状态。
  • 任何一种类型的数据结构都可以用来描述状态,只要它有利于问题求解。
  • 在程序中用字符、数字、记录、数组、结构、对象等表示状态。

算符( Operator )

当对一个问题状态使用某个可用操作时,它将引起该状态中某些分量值的变化,从而使问题从一个具体状态变为另一个具体状态。

  • 算符可理解为状态集合上的一个函数,它描述了状态之间的关系。
  • 算符可以是某种操作、规则、行为、变换、函数、算子、过程等。
  • 算符也称为操作,问题的状态也只能经定义在其上的这种操作而改变。

问题的状态空间( Statespace )

用来描述一个问题的全部状态以及这些状态之间的相互关系

状态空间常用一个三元组表示:

( S, F, G )
  • S :为问题的所有初始状态的集合
  • F :算符的集合
  • G :为目标状态的集合

在这里插入图片描述


状态空间图

状态空间可用有向图来描述,图的节点表示问题的状态,图的弧表示状态之间的关系。

初始状态对应于实际问题的已知信息,是图中的根结点。

在问题的状态空间描述中,寻找从一种状态转换为另一种状态的某个操作算子序列等价于在一个图中寻找某一路径

如下图所示为用有向图描述的状态空间。

该图表示对状态 S0 允许使用算符 O1 , O2 及 O3 ,分别使 S0 转换为 S1 , S2 及 S3 。

这样一步步利用操作算子转换下去,如 S10 ∈ G ,则 O2 , O6 , O10 就是一个解。

在这里插入图片描述


实践-八数码问题

在 3 × 3 的棋盘,摆有八个棋子,每个棋子上标有 1 至 8 的某一数字。 棋盘上还有一个空格,与空格相邻的棋子可以移到空格中。

在这里插入图片描述

如何将棋盘从某一初始状态变成最后的目标状态?


八数码问题的状态

X1X2X3
X8X0X4
X7X6X5

用向量 S =( X0, X1, X2, X3, X4, X5, X6, X7, X8 ) 表示状态 Xi 为变量, Xi 的值就是方格 Xi 内的数字,取值为{ 0, 1, 2 … 8 },其中 0 表示空格。

于是,向量 S 就是该问题的状态表达式。

则上图中的状态变化为:

  • 初始状态: S0=(028345671)
  • 目标状态: Sg=(012345678)

八数码问题的算符

制定操作算符集:

  • 直观方法一为每个棋牌制定一套可能的走步:左、上、右、下四种移动。这样就需 32 个操作算子。
  • 简易方法一仅为空格制定这 4 种走步,因为只有紧靠空格的棋牌才能移动。空格移动的唯一约束是不能移出棋盘。

八数码问题的状态空间图

  • 从初始棋局开始,试探由每一合法走步得到的各种新棋局,然后再走一步而得到的下一组棋局。这样继续下去,直至达到目标棋局为止。
  • 把初始状态可达到的各状态所组成的空间设想为一幅由各种状态对应的节点组成的图。 这种图称为状态空间图。
  • 图中每个节点是它所代表的棋局。首先把适用的算符用于初始状态,以产生新的状态;算符可以看成状态空间图的边。
  • 状态空间的图示形式称为状态空间图(有向图)。 其中图的节点表示状态,图的边表示算符问题求解过程就是寻求图的某一路径的问题,实际上是一个搜索过程。

比如我们从下面这个初始棋局开始:

在这里插入图片描述

绘制的八数码问题的状态空间图(部分)如下所示:

在这里插入图片描述


http://chatgpt.dhexx.cn/article/M1Zp1Ril.shtml

相关文章

现控笔记(二):状态空间表达式

控制系统状态空间表达式 系统动态过程的两类数学描述: 外部描述:(输入——输出描述) 内部描述:状态空间描述 两个方程描述:状态方程(动态),输出方程(静态&am…

【现控】系统状态空间表达式

【现控】1 系统状态空间表达式 一、基本概念 状态:状态是变化的,是时域里的一系列变量。它可以数字、曲线或者其他什么更为抽象的东西描述。 状态变量:能够完全描述系统的最小一组变量。可抽象可具体。 状态空间:以状态变量构成…

现代控制理论——状态、状态空间、状态空间描述

一、状态: 动态系统的状态粗略地说就是指系统的过去、现在和将来的运动状况。精确地说,状态需要一组必要而充分的数据说明。 对于运动的小车,系统的状态可以为位置和速度,对于电机可以为转速。 二、系统变量 1、状态变量 系统…

现代控制理论(1)——状态空间表达式

文章目录 一、状态变量及状态空间表达式二、状态空间表达式模拟结构图三、状态空间表达式的建立1.由系统框图建立2.由系统的机理建立3.由微分方程或传递函数建立3.1能控标准型3.2能观标准型 四、状态矢量的线性变换1.状态空间表达式变换为约当标准型2.当A为友矩阵时3.系统的并联…

matlab数据类型 —— 逻辑型

matlab系列文章:👉 目录 👈 文章目录 〇、概述一、逻辑型二、逻辑型创建1. 直接赋值2. 根据表达式创建3. 使用 logical 函数转换 三、逻辑型矩阵1. 创建逻辑型矩阵2. 转化逻辑型矩阵 〇、概述 逻辑型:也就是其它语言中的布尔型&…

matlab数据类型 —— 浮点型

matlab系列文章:👉 目录 👈 文章目录 〇、概述一、单精度浮点型二、双精度浮点型三、浮点型的最小值与最小值例1. 查看双精度浮点型以及单精度浮点型的最大正值和最小正值 四、浮点型创建例2. 将数据转换成浮点型 四、浮点型参与的运算1. 运…

MATLAB基础—数据类型

一、数据类型 1、整形数据 (1)有符号整数(int) ①、int8 —— 8位有符号整数(只能取到 -128 — 127,大于127的数,输出结果为127;小于 -128 的数,输出为-128&#xff0…

Matlab里的数据类型

在Matlab里一共有四大类数据类型: 1、数值类型 2、逻辑类型 3、字符和字符串类型 4、结构体类型 这四大类数据类型的存储都是用矩阵来存储的 1、数值类型 数值类型即存储不同种类变量的类型,数值类型有五种:浮点数、整数、复数、Inf、NaN. …

MATLAB数据类型——整数

整数 MATLAB 支持以 1 字节、2 字节、4 字节和 8 字节几种形式存储整数数据。有意识地去使用可容纳您的数据的最小整数类型来存储数据,可以达到节省内存和程序执行时间的目的。 MATLAB具有四个有符号整数类和四个无符号整数类。 有符号类型能够处理负整数以及正整数…

MATLAB数据类型——浮点数

浮点数 MATLAB 以双精度或单精度来表示浮点数,默认数值类型为双精度 双精度浮点(double):以 double 形式存储的任何值都需要 64 位 单精度浮点(single):以 single 形式存储的任何值都需要 32 位…

MATLAB 数据类型中的结构体类型,及其构造方法

Matlab中的数据类型一共有四大类分别为: 1、数值类型 2、逻辑类型 3、字符和字符串类型 4、结构体类型 关于数据类型,尤其是前三种类型具体可见Matlab里的数据类型已经对其进行了详细的介绍。 而结构体类型中的每个属性,都可以是以上四大类中…

matlab数据类型 —— 整型

matlab系列文章:👉 目录 👈 文章目录 〇、概述一、有符号整型二、无符号整型三、整型创建例1. 将数据转换成整型 四、整数参与的运算1. 运算中的注意事项例2. 整型参与的数值运算 〇、概述 整型:是指没有小数点及以后数据部分的…

matlab如何改变数据类型,matlab数据类型转换实用案例

之前群友在群里发了一张有关数据类型转换的图片 数据类型转换对于经常使用Matlab的人来说真的是很基础且实用的知识点,but! 相互之间转换关系很复杂不容易记,每次使用的时候都要百度,为了方便大家记住数据类型转换关系,转换图便应…

Matlab 数据类型

数值类型--整数类型 Matlab中的整数类型,不同的整数类型占据的位数不同,实际应用中,应根据实际需求合理选择合适的整数类型。 Matlab中数值默认是以双精度浮点类型存储,在不超出数值范围的情况下,任意两个整数之间可以…

MATLAB数据类型及转换

MATLAB数据类型及转换 MATLAB的主要数据类型有:整型,浮点型,逻辑,字符,日期和时间,结构数组,细胞数组及函数句柄等,其中函数句柄是MATLAB所特有的一种数据类型。 一:整…

MATLAB-数据类型

默认情况下,MATLAB 存储所有数值变量为双精度浮点值。其他数据类型存储文本,整数或单精度值或单个变量中相关数据的组合。 MATLAB不需要任何类型声明或维度语句。当MATLAB遇到新的变量名称时,它将创建变量并分配适当的内存空间。 如果变量已…

MC20E资料

MC20E资料 U创论坛下载-Quectel_射频LAYOUT_应用指导_V2.2.pdf 文件到原文下载,原文出自:https://bbs.usoftchina.com/thread-202777-1-1.html

移远BC26/BC28(略)/MC20开发之环境搭建 一

1.对于常见的移远OPENCPU开发来说,第一步安装GCC编译器 2.第二步,安装一个集成编译环境,常见的是keil编译环境 3.环境的配置(仅 BC28) 4.最后检查环境是否搭建好 BC28,命令如下: MC20/BC26,命令如下 make clean:清除 m…

3.1 使用STC89C52控制MC20拨打电话

需要准备的硬件 MC20开发板 1个https://item.taobao.com/item.htm?id562661881042GSM/GPRS天线 1根https://item.taobao.com/item.htm?id531979567261IPEX接口转SMA接口转接线 1根https://item.taobao.com/item.htm?id531979903836GPS有源天线 1根https://item.taobao.com/i…