这是一类智能的算法,没有什么固定的模式,就是一个算法思想,可以给我们一些有价值的指导,当我们想要做一些相关工作的时候,可以扩宽我们的视野,打开我们的脑洞,借鉴其中的原理。我不想多说里面的什么数学和公式,只要你懂里面的思想会迁移到实际的应用中就很不错,更好的则是在其基础上形成自己的思维,需要用的话,就像什么神经网络一样,最好使用现成的框架。

简介

有限状态机,(英语:Finite-state machine, FSM),又称有限状态自动机,简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。

状态存储关于过去的信息,就是说:它反映从系统开始到现在时刻的输入变化。转移指示状态变更,并且用必须满足来确使转移发生的条件来描述它。动作是在给定时刻要进行的活动的描述。有多种类型的动作:

进入动作(entry action):在进入状态时进行

退出动作:在退出状态时进行

输入动作:依赖于当前状态和输入条件进行

转移动作:在进行特定转移时进行

通俗的介绍

接下来来说说理解,首先从名字上来看,机指的是算法 状态则就是状态 有限表示其中状态是有限个数的。具体在模型上来看,有限状态机应该是这样的

这是一个简单的例子,在一个情境中存在三种状态,两种动作,圆圈表示就是的是状态,状态之间的箭头表示状态的转移,而箭头上的表示对应的触发条件,例如在1状态如果发生b则状态变化为2,自己到自己的箭头表示状态不变化。

下面可以有一个更加通俗的小图例

这是一个游戏ai的状态自动机模型,表示了ai在过程中的不同状态转换,虽然没有标志条件,但是看起来是不是更有意思了。

概念及加深理解

其在任意时刻都处于有限状态集合中的某一状态。当有一个触发动作时可以从当前状态转换到另一个状态,或者仍然保持在当前状态。任何一个FSM都可以用状态转换图来描述,图中的节点表示FSM中的一个状态,有向加权边表示输入字符时状态的变化。如果图中不存在与当前状态与输入字符对应的有向边,则FSM将进入“消亡状态(Doom State)”,此后FSM将一直保持“消亡状态”。状态转换图中还有两个特殊状态:状态1称为“起始状态”,表示FSM的初始状态。状态6称为“结束状态”,如果一个流程适用状态机来拟合,当达到结束状态后则表示该过程与模型拟合

在图例中,我们的状态机初始是在状态1,这是人为初始设置的,而后根据我们箭头上的转移条件,我们可以看到随着状态的不断变化.如果达到了状态6,一切却停止了,因为无论施加什么条件都不能使状态发生变化,我们的状态机也结束了。

适用范围

这种基本原理决定了它是适用对象必须是包含多种状态的,但状态这是一个描述而且没有那么严格,可以是协议交互中不同的状态,也可以是有其中ai人物的状态,也可以是一个字符串中字符的状态。FSM的作用主要是描述对象在它的生命周期内所经历的状态序列,以及如何响应来自外界的各种事件。而我们使用它,常用的功能也就是两点:

  • 在当前状态,根据系统的输入决定下一状态,也就是控制或者类似于ai
  • 判断一个事件、序列是否符合某个流程,以此来判断目标是否符合我们的要求

这里有几个小例子,一个是TCP协议状态机,大家应该都有所耳闻,三次握手什么的计算机网络课上 协议课上都是主菜

注意的地方

虽然我我们有用过状态机,但是也遇到过不少,无论是其他人的论文中,还是某些博客上,我只说说在理解时或者是实现时容易导致的问题‘

1.注意状态的变化

自动机就是状态到状态的变化,如果是一个大的模型,其中的状态和调试势必是非常多的,我们如果只是观察和理解的话,从这个转移图中直接看就可以。但是如果需要自己动手实现某个自动机的时候,我们需要有充分的准备,起码是心中有这样一个表,不用仔细看,只是为了示意用从别人那里摘过来的,当然在文尾已经引用了原文链接。

这样的一个图可以很明显的展示你要做的工作,哪怕是比较复杂的逻辑,过了一段时间你在看也不会烦,因为这个图已经表明了一切,不需要你再去思考太多

2.实现方案

这个列表已经这么明显了,就是一个矩阵,对于条件的判断和转移我们可以使用if 也可以使用switch语句,甚至可以malloc一个矩阵然后定义好其中的元素。

抛除上边的不说,如何定义一个状态转移结构,方法也很多,甚至我们可以不需要定义特殊的结构,就使用一个变量来表示当前状态,其他的所有输入判断未尝不可以使用一个大循环来解决。当然在你有一定基础的情况下,采用链表的结构类似于【当前状态,【条件,下一状态】集合】这也不是不可以。

https://blog.csdn.net/benjonc/article/details/79870947 有关于一些接口的设计

https://www.jianshu.com/p/5eb45c64f3e3

https://www.cnblogs.com/benxintuzi/p/4931258.html 还包含了c代码的示意实现

https://baike.baidu.com/item/%E6%9C%89%E9%99%90%E7%8A%B6%E6%80%81%E6%9C%BA/2081914?fr=aladdin

https://www.jianshu.com/p/5eb45c64f3e3

https://blog.csdn.net/bbs598598/article/details/50728332

人工智能-自动机模型相关推荐

  1. 华为高级研究员谢凌曦:下一代人工智能计算模型探索

    2020-04-30 23:30:04 导读:下一代人工智能计算模型,主要是使用一些自动化技术帮助我们设计更好的深度学习网络结构,并在任务中提升性能.在深度学习如火如荼的当下,如何设计高效的神经网络架 ...

  2. python元胞自动机模拟交通_大师兄带你复现 -gt; 难度超高的二维CA元胞自动机模型...

    最近过上了在家躺着就为祖国做贡献的生活. 然而,热心的知友们找我私信,询问"怎么画二维CA(元胞自动机)模型的仿真界面呀?""菜鸟如何做CA仿真?" 刚交完稿子 ...

  3. 史上最大,人工智能算法模型 GPT-3 问世,这意味着什么?

    作者 | 谭婧 来源 | 亲爱的数据 封图 | CSDN 付费下载自东方 IC 2020年,年中. 人类历史上最大的人工智能模型,来到人间. 这个体格巨大的北鼻,哭声嘹亮,告知全世界:"我写 ...

  4. 人工智能大模型多场景应用原理解析

    前言 在上篇文章<人工智能大模型之ChatGPT原理解析>中分享了一些大模型之ChatGPT的核心原理后,收到大量读者的反馈,诸如:在了解了核心原理后想进一步了解未来的发展趋势(比如生成式 ...

  5. MAAS 模型即服务:人工智能大模型时代已经到来

    MAAS 模型即服务:人工智能大模型时代已经到来 随着人工智能技术的快速发展,越来越多的大型模型被应用于各种领域,如自然语言处理.计算机视觉.语音识别等.这些大型模型通常需要庞大的计算资源和存储空间, ...

  6. 通用医学人工智能基础模型(GMAI)

    最近,Eric J. Topol和 Pranav Rajpurkar研究团队提出了一个通用医学人工智能基础模型,文章名字<Foundation models for generalist med ...

  7. c#元胞自动机_基于元胞自动机模型的行人排队行为模拟

    06 系统工程理论与方法 基于元胞自动机模型的行人排队行为模拟 廖明军 1, 2 , 孙

  8. 元胞自动机模型—interesting应用

    最近回忆起元胞自动机模型,让我们来康一康这个模型的基本原理: 元胞自动机是由计算机之父冯·诺伊曼模拟生命系统的自复制功能提出来的.元胞自动机采用离散的空间布局和时间间隔,将元胞分成有限种状态.元胞个体 ...

  9. 元胞自动机模型_【ABM仿真模拟】第三章 元胞自动机 B

    是新朋友吗?记得先点蓝字关注我哦- 第三章 元胞自动机 B 2020/01/23 3.3 投票模型(Voting) 课程导读 无论是国内国外,投票结果的预测都异常受到关注.在众多唐斯模型.中间选民模型 ...

最新文章

  1. MyBatis执行过程显示SQL语句的log4j配置
  2. 那些商人败类们在想什么
  3. jq 控制td只显示一行_桥式八角翼闸DAIC-TD-YZ
  4. Hulu直播服务难点解析(三):关键收获
  5. Python Demo 02 蒙特卡罗方法输出e
  6. SAP Spartacus CMSFlexComponent
  7. oracle导出一个表数据库,excel怎么导出多个表格数据库数据-一个excel表格中有多个sheet,如何将其导入oracle数......
  8. URAL 题目1297. Palindrome(后缀数组+RMQ求最长回文子串)
  9. [Spark] - HashPartitioner RangePartitioner 区别
  10. 软件行业渠道的价值在哪里?
  11. 博弈论与逻辑思维(传教士与妻子忠贞的问题)
  12. advanced installer 使用常见问题整理
  13. iis中间件_.NET Core技术研究中间件的由来和使用
  14. MongoDb系列文章
  15. C++ 安全单例模式总结
  16. 认识影片版本(CAM、TS、TC、DVD、HD、BD、TVRIP等)
  17. 单机数据库的实现----------01数据库
  18. 网络地址与直接广播地址有关计算
  19. 基于springboot实现学校线上教学平台管理系统【源码+论文】
  20. 2022年东北大学计算机考研复试最低分数线

热门文章

  1. autojs 自阅 刷宝短视频 脚本源码
  2. 蓝松视频编辑SDK使用说明
  3. ESP使用MQTT登陆阿里云,arduino环境
  4. 跳槽前恶补面试题,成功上岸阿里,拿到33k的测开offer
  5. 算法设计(algorithm Design)官方配套课件
  6. 避开这四个雷区,你也可以策划出10万+创意素材! | 黎想
  7. CC1101和CC1120的区别
  8. 一键关闭微软自动杀毒软件Windows Defender软件:Defender Control v1.4
  9. 个人对生活意义的观点
  10. android书架效果 .