状态机和状态图是指相同的东西吗?

11

我听过人们使用这些术语。

我想知道它们是否指的是同一件事情,或者它们之间有什么区别?

3个回答

18

维基百科实际上已经对此有很好的解释。 http://en.wikipedia.org/wiki/State_diagram

状态机已经存在很长时间(至少几十年)。它们由状态(通常是圆圈)和状态之间的箭头组成,在箭头上某些动作可以触发状态转换。Moore和Mealy机器是两种主要的变体,它们指示输出是来自转换还是状态本身。

状态图表是由David Harel发明的,有时也被称为Harel状态图表。他定义了一个相当广泛的扩展,以使状态机在复杂系统的实际工作中更加有用。

现在,状态图表的一种变体被内置到Matlab中,称为stateflow,这是Simulink的扩展。状态图表也是UML“状态机图”的基础。


嗨@Pursuit!UML中的状态图是建立在状态机(Moore和Mealy机)还是状态图(Harel状态图)的基础之上的呢? - Chriss
2
UML状态机图基于Statecharts。最明显的特征是超级状态和并发正交状态。 - Pursuit
感谢您亲爱的朋友@Pursuit :)这是否意味着状态图并不对应于状态图表,而只是建立在其概念之上? - Chriss
1
UML状态机图明显受到Harel状态图的影响。然而,我认为无论是Harel状态图还是UML状态图都不够具体,无法有意义地讨论它们是否等效。我们只能使用类似于“[状态图]本质上是带有标准符号的Harel状态图”的说法(来自http://en.wikipedia.org/wiki/State_diagram_%28UML%29)。 - Pursuit

0

可以在此处了解有关Stateflow的更多信息: https://www.mathworks.com/help/stateflow/examples.html

自R2012b以来,Stateflow已经更新,使得创建 状态机和流程图变得非常容易。

主要更新内容包括一个新的图形编辑器,状态转换表,将MATLAB作为动作语言以及集成调试器。


0

从Ian Horrocks于1999年所著的开创性书籍《使用状态图构建用户界面》(Addison-Wesley出版)中(以粗体/斜体表示重点):

从用户界面的本质来看,状态和事件是描述其行为的自然媒介。有限状态机是一种正式机制,用于收集和协调这些片段以形成整体。然而,普遍认为,由于大量以非结构化方式组织的状态和事件,有限状态机不适合描述复杂系统。基于状态的方法规定用户界面的可行性依赖于产生简洁、良好结构化、模块化和分层图表的规范语言。
有许多不同的符号用于表示有限状态机,例如状态转换图和状态转换矩阵。然而,这些符号并未解决与有限状态机相关的根本问题。状态图符号不仅仅是有限状态机的另一种符号;状态图是状态符号的重要进步。它们提供了比任何有限状态机符号更丰富、更强大的规范语言。所有与有限状态机相关的严重问题都可以通过状态图解决:
1. 状态图中的状态数量随着被指定的系统的复杂性而增加。在有限状态机中,状态的数量往往会随着被指定的系统的复杂性的轻微增加而迅速增加。
2. 状态图避免了重复的状态和重复的事件箭头。这避免了大型、混乱的图表,这些图表难以理解和修改。
3. 状态图中的状态具有分层结构,这意味着被建模的系统可以在不同的抽象级别上考虑。状态的模块化性质确保不需要理解整个状态图就能理解其中的一部分。简而言之,状态图对于状态转换图来说就像模块化分解和抽象化对于单片代码来说一样。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接