0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

计算机的简单理论模型到有限状态机

UtFs_Zlgmcu7890 来源:互联网 作者:佚名 2017-10-13 06:52 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

近日周立功教授公开了数年的心血之作《程序设计与数据结构》,电子版已无偿性分享到电子工程师与高校群体下载,经周立功教授授权,特对本书内容进行连载。

>>>>1.1状态机

>>>1.1.1 有限状态机

1. 起源

自动机是计算机的简单理论模型,通常将自动机分为有限自动机和图灵机。尽管有限自动机更简单,但在定义图灵机之后数年,这个概念才被提出来。

沃伦·麦卡洛克当时正在研究脑部创伤治疗精神病人,他想研究出一种解释大脑如何工作的理论。沃尔特·皮茨最初被培养成为一位逻辑学学者,但是却在全新的数学生物物理学领域发表论文。两人于1942年相识,认识到他们对相同类型的问题感兴趣,于是开始联手研究彼此取长补短。他们发表了第一篇论文“神经活动中内在的思想逻辑演算”(A Logical Calculus of Ideas Immanent in Nervous Activity),在这篇论文中,他们借助细胞对神经元进行了建模。虽然每个细胞都有多个输入,但只有一个输出。一个细胞的输出必须成为另一个细胞的输入,输入的类型有两种——抑制的和兴奋的。如果兴奋的输入超过了一定阈值,且没有抑制输入,细胞将会被激活。虽然细胞的集合和它们之间的连接被两人称为神经网络,但他们没有意识到,这是大脑实际运作的简化模型,通过研究神经网络可以得知神经网络如何处理逻辑活动。他们的网络模型与神经元和人类的大脑具备相同的特征,因此他们希望自己的研究能够揭示人类逻辑推理的奥秘。

他们的论文引起了计算机专家约翰·冯·诺依曼和著名的数学家、哲学家诺伯特·维纳的注意,两位学者对这篇论文印象深刻。维纳看到了其中蕴含的力量,他意识到,这一观点具有广泛的适应性,可以发展出控制论。控制论将催生可以学习的机器的理念,反过来也会孕育人工智能。冯·诺依曼认识到,麦卡洛克和皮茨对细胞和细胞间连接的描述,同样可以应用到电子组件和计算中。他在《关于EDVAC的报告》(First draft of a report on the EDVAC)一文中对此进行了详细的描述,正是这篇论文奠定了现代计算机构建的基石。

另一个受到麦卡洛克和皮茨影响的人是马文·明斯基,1954年明斯基在他的博士论文中对神经网络进行了研究,展示了如何使用这些网络对自动机进行全面的描述。明斯基的著作《计算:有限和无限机器》是这一领域的经典之作,高屋建瓴地描述了自动机和计算理论。通过对比物理学,明斯基在这本书的前言中解释了这种使用理论机器研究的理论为什么能够发挥作用。

与物理学使用统计定义事件的方法不同,我们是用逻辑定义的计算或表达式。它们被联系在一起,不是通过几何或能量性质,而是通过它们与类似机器或类似定义之间的关系。我们能够使用机器组件进行简单的交互,应用最显而易见的逻辑命题。面对等价的现实物理机器时,我们必须解决极端复杂的分析等式。

自动机被划分为两类:一类具有有限内存,另一类具有无限内存下面只研究有限的一类。

2.有限状态机

有限状态机(Finite State Machine,FSM)是一种抽象的机制, 它包括有限数量的状态。因此FSM是一个状态集,值的一个有限集合。

闸机是一个常见的状态机,这是《敏捷软件开发——原则、模式与实战》一书中展示的一个经典示例。在这里,将以香港地铁站的闸机为例介绍有限状态机,其用例文本摘要如下:

通常闸机默认是关闭的,当闸机收到有效卡信息时,则打开闸机;当乘客通过后,则关闭闸机。如果有人非法通过,则闸机会发出连续的“滴、滴、滴……”报警声;如果闸机已经打开,而乘客还在刷卡,则闸机会发出“滴”的声音提示乘客,并显示“票价和余额,闸机已经打开,请通过,谢谢!”

FSM会响应“事件”而改变状态,即将每个“事件”实现为一个函数,当“事件”发生时,就意味着调用了一个函数。FSM也执行动作产生输出,所执行的动作是当前状态和输入事件的一个函数,其目的是执行系统的任务。

事件是指在某个时刻发生的事情,比如,闸机的“刷卡(card)”事件和“通过(pass)”事件,状态是系统的状态。事件表示时间点,状态表示时间段,状态对应对象接收的两次事件之间的时间间隔。比如,闸机可能处于的状态:Locked状态和Unlocked状态。

转换是从一个状态转移为另一个状态的路径,引发它的事件被称为事件触发器,简称触发。而转换可以触发动作——表示对象的某个方法的调用,比如,当事件card发生时,闸机从Locked状态转换为Unlocked状态并执行打开闸机动作。转换还有一个监护条件逻辑测试——或布尔测试,只有测试通过时转换才发生。

而事件可以是外部事件和内部事件,外部事件是在系统和它的执行者之间传递的事件,比如,按下一个键和一个来自传感器的中断都是外部事件。内部事件是在系统内部的对象之间传送的事件,比如,溢出异常是一个内部事件。可以用UML对4种事件建模:信号、调用、时间推移或状态的一次改变。信号或调用可以带有参数,参数值对转移(包括监护条件和动作的表达式)是可见的。

信号是一个异步事件,在实例间异步传递消息的通信规约。消息是一个具名对象,信号是消息的类型,象类一样,信号也有属性和操作。而信号事件是指发送或接收信号的事件,其差别在于信号是对象之间的消息,而信号事件是指在某时某刻发生的事情。

如果事件没有产生任何效果,则FSM保持状态不变。通常下一个状态依赖于当前状态和输入事件,有时状态转移会导致输出动作。在某些情况下,虽然一个事件不会立即导致状态转换,但它会影响随后的状态转换。如果事件已经产生,则可以将该情况保存为一个条件,在之后进行检验。

监护条件是由一个方括号括起来的布尔表达式,放在触发器事件的后面。其表示法为“事件[条件]”(Event[Condition]),条件是某一段时间内值为True或False。通常“事件”引起了“状态转换”,当事件发生时,为了发生转换,可选的“条件”的值必须为True,可选的“动作”作为结果被执行。

动作是与状态转换相关的可选的输出,动作执行了计算(调用相应的函数),作为状态转换的结果。事件导致状态转移,而动作是状态转移所产生的效果。动作在状态转移时被触发,执行后自行终止。

● 转换动作

转换动作是指从某一状态转换为另一状态时产生的动作,该动作也可能发生在状态转换至自身状态时。为了描述状态图中的动作,将状态转换表示为:事件/动作(Event/Action)或事件[条件]/动作(Event[Condition]/Action),比如,card/unlock。

考虑闸机状态图中的动作:当事件card发生时,闸机从Locked状态转换为Unlocked状态,发生在该状态转移中的动作是获取card信息。作为状态机的输出,该动作显示票价和余额并开锁。

通常多个动作可以和同一个状态转换关联,因为动作都是并发执行的,所以这些动作之间不能有任何的相互依赖关系。比如,不能同时发生两个并发的事件——计算余额和显示余额,因为这两个动作有先后顺序的依赖关系,在余额计算之前不无法显示出来。为了避开这个问题,可以引入“计算余额”的中间状态。动作“计算余额”在进入该状态时执行,动作“显示余额”在退出该状态时执行。

● 进入动作

进入动作是指在开始进入该状态时触发的即时动作,使用保留字“进入(entry)”表示,在状态框里表示为“进入/动作(entry/Action),即entry/[action-list]。”

● 退出动作

退出动作是指在离开该状态时触发的即时动作,使用保留字“退出(exit)”表示,在状态框里表示为“退出/动作(exit/Action),即exit/[action-list]。”

实例分析

由于状态图源自于用例,因此要从用例开发状态图。首先需要用例中的一个特定的场景,即从用例中的一条特定路径描述对象之间的交互,正常的业务序列详见图 4.8(a)。

图 4.8 闸机业务序列图

如果闸机在Locked状态收到card事件,则转移到Unlocked状态并执行unlock动作,此时闸机将它的状态改为Unlocked并调用unlock函数;如果闸机在Unlocked状态收到一个pass事件,则转移到Locked状态并执行lock动作,此时闸机将它的状态改为Locked并调用lock函数。

如图 4.9 (a)所示为正常的业务序列图对应状态图,由于闸机处于打开状态或关闭状态时,“card()”或“pass()”操作对应的处理是不同的,因此难以用一个序列图清晰地描绘对象交互与状态的关系。如果以业务实体(闸机)的状态(打开状态或关闭状态)为核心,将执行者与系统交互的具体操作称之为“事件”,比如,card()、pass()等。

图 4.9 闸机状态图

表4.1 闸机状态转移表

状态 状态 动作

这些图是由状态、事件、转换和动作组成的有向图,圆角矩形表示闸机的状态,闸机始终保持状态直到转换促使它改变状态。转换用导向箭头表示,通常由收到触发事件的元素发起。当输入的事件与有向边上的事件匹配时,闸机将会从一个状态转换到另一个状态。

其中包含了起始状态、触发转移事件、终止状态和要执行的动作,将其转换为状态转移表的表格,详见表 4.1。由于状态转移表列出了所有状态下,接收所有事件后的状态是如何变化的,因此很容易帮助发现遗漏了哪些状态转移。虽然状态转移表的优点是直观,但其缺点也是非常明显的,那就是难以确认状态转移的完整性。

显然,通用状态图与状态表描述状态机的行为,开发者可以很容易检查那些未知的,甚至没有处理的情况。比如,闸机在Unlocked状态下没有处理card事件的转移,且在Locked状态下也没有处理pass事件的转移。假设如果闸机在Locked状态收到一个非法pass事件,则状态不变并执行alarm动作,其业务序列图详见图 4.8(b)。如果乘客不熟悉流程,当闸机已经转移到Unlocked状态时,而乘客还在刷卡(card),则闸机会发出“滴”的声音提示乘客,并显示“票价和余额,闸机已经打开,请通过,谢谢!” 其业务序列图详见图 4.8(c),完整的闸机状态转移表详见表 4.2

4.2 完整的闸机状态转移表

起始状态 事件 结束状态 动作
Locke car Unloc unloc

在关闭状态下,当需要增加报警功能时,只需要新增一条事件/动作线,详见图 4.9(b)。同理,增加一条事件/动作线表示闸门在已经打开时继续刷卡的情况,详见图 4.9(c)。由于这两种情况不会改变闸机的状态,因此导向箭头起始和结束均为同一状态。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 有限状态机
    +关注

    关注

    0

    文章

    52

    浏览量

    10646
  • 状态机
    +关注

    关注

    2

    文章

    497

    浏览量

    28845
  • 周立功
    +关注

    关注

    38

    文章

    130

    浏览量

    38575
  • 自动机
    +关注

    关注

    1

    文章

    28

    浏览量

    9578

原文标题:周立功:状态机——有限状态机

文章出处:【微信号:Zlgmcu7890,微信公众号:周立功单片机】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    什么是状态机

    什么是状态机状态机(state machine)有5个要素: 状态(state) 迁移(transition) 事件(event) 动作(action) 条件(guard) 状态
    发表于 11-27 08:15

    工控与普通计算机的核心差异解析

    在工业自动化和智能制造领域,计算机设备作为核心控制单元,其选择直接影响整个系统的稳定性与可靠性。工控与普通计算机虽同属计算设备,但其设计目标、性能侧重和应用场景存在根本性差异。准确理
    的头像 发表于 11-25 14:45 1112次阅读
    工控<b class='flag-5'>机</b>与普通<b class='flag-5'>计算机</b>的核心差异解析

    睿远研究院丨IO-Link规范解读(六):主从站状态机解析

    前言 书接上文,今天我们就来好好聊聊主从站的DL-Mode状态机,还请各位童鞋前排坐好! 1主站状态机解析 主站的DL-Mode状态机有5个大状态,也是我们很熟悉的 建立通信、开始、预
    的头像 发表于 10-28 17:34 5754次阅读
    睿远研究院丨IO-Link规范解读(六):主从站<b class='flag-5'>状态机</b>解析

    掌握数字设计基础:迈向芯片设计的第一步

    寄存器、计数器。 两者结合,就能实现强大的数据处理与控制能力。 4、有限状态机(FSM):数字系统的大脑 在更复杂的设计中,有限状态机(FSM) 就像系统的“大脑”,通过状态与转移逻辑来驱动整个电路
    发表于 10-09 21:11

    【作品合集】赛昉科技VisionFive 2单板计算机开发板测评

    VisionFive 2 上为目标检测准备软件环境并运行 MobileNet-SSD 模型【VisionFive 2单板计算机试用体验】VisionFive 2复古游戏改造 作者:TLLED【VisionFive 2
    发表于 09-04 09:08

    工业计算机的重要性

    工业计算机对某些行业至关重要。我们将在下面详细解释这些行业中的工业计算机应用。1.制造与工业自动化工业级计算机非常适合制造工厂,特别是那些想要自动化装配过程的工厂。在这样的环境中,工业计算机
    的头像 发表于 07-28 16:07 398次阅读
    工业<b class='flag-5'>计算机</b>的重要性

    自动化计算机经过加固后有什么好处?

    让我们讨论一下部署坚固的自动化计算机的一些好处。1.温度范围宽自动化计算机经过工程设计,配备了支持宽温度范围的组件,使自动化计算解决方案能够在各种不同的极端环境中运行。自动化计算机能够
    的头像 发表于 07-21 16:44 419次阅读
    自动化<b class='flag-5'>计算机</b>经过加固后有什么好处?

    自动化计算机的功能与用途

    工业自动化是指利用自动化计算机来控制工业环境中的流程、机器人和机械,以制造产品或其部件。工业自动化的目的是提高生产率、增加灵活性,并提升制造过程的质量。工业自动化在汽车制造中体现得最为明显,其中许多
    的头像 发表于 07-15 16:32 527次阅读
    自动化<b class='flag-5'>计算机</b>的功能与用途

    工业计算机与商用计算机的区别有哪些

    能够高效稳定地运行,减少停机时间,确保生产效率。那么工业计算机与普通商用计算机有哪些区别呢?一、组件选择与制造质量:工业级组件:使用更宽温度范围(如-20°C60
    的头像 发表于 07-10 16:36 516次阅读
    工业<b class='flag-5'>计算机</b>与商用<b class='flag-5'>计算机</b>的区别有哪些

    计算机网络入门指南

    计算机网络是指将地理位置不同且具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统、网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。
    的头像 发表于 04-22 14:29 1858次阅读
    <b class='flag-5'>计算机</b>网络入门指南

    软通计算机重磅发布DeepSeek大模型一体产品

    3月20日,华为中国合作伙伴大会2025在深圳盛大启幕。大会上,软通计算机重磅发布了“DeepSeek大模型一体产品”,为用户提供一站式的AI应用算力平台,让大模型的落地变得前所未有
    的头像 发表于 03-22 10:40 1340次阅读
    软通<b class='flag-5'>计算机</b>重磅发布DeepSeek大<b class='flag-5'>模型</b>一体<b class='flag-5'>机</b>产品

    NVIDIA 宣布推出 DGX Spark 个人 AI 计算机

    的 DGX™ 个人 AI 超级计算机。   DGX Spark(前身为 Project DIGITS)支持 AI 开发者、研究人员、数据科学家和学生,在台式电脑上对大模型进行原型设计、微调和推理。用
    发表于 03-19 09:59 504次阅读
       NVIDIA 宣布推出 DGX Spark 个人 AI <b class='flag-5'>计算机</b>

    如何快速入门PLD电路设计

    基本的数字逻辑概念,如与、或、非、异或等逻辑门。 布尔代数 :掌握布尔代数的基本原理,这对于设计复杂的逻辑电路至关重要。 状态机 :学习有限状态机(F
    的头像 发表于 01-20 09:48 1472次阅读

    云端超级计算机使用教程

    云端超级计算机是一种基于云计算的高性能计算服务,它将大量计算资源和存储资源集中在一起,通过网络向用户提供按需的计算服务。下面,AI部落小编为
    的头像 发表于 12-17 10:19 942次阅读

    Simulink中的状态机建模方法 Simulink数据可视化与分析功能

    1. Simulink中的状态机建模方法 1.1 理解状态机的基本概念 在开始建模之前,了解状态机的基本概念是必要的。状态机由以下几个部分组成:
    的头像 发表于 12-12 09:27 4273次阅读