状态图与状态机

8
我是一名学生,正在备考一场考试,其中一道之前考试的题目是:

enter image description here

很多网络答案声称状态图和状态机是相同的东西?如果不是,有人能够解释一下与这个问题相关的区别吗?

如果有人能够给出两者的例子,那将非常有帮助。谢谢。


可能是Does statemachine and statechart mean the same?的重复问题。 - qwerty_so
我看到了这个,但仍然不理解它们之间的差异。请问是否有地方可以找到状态图和状态机并排的示例? - user3541209
它们几乎是相同的。UML规范:在UML中使用的有限状态自动机的特定形式基于David Harel状态图形式的面向对象变体。 - qwerty_so
抱歉,我不明白这如何解释差异。 - user3541209
我不是说过“它们几乎一样吗?” - qwerty_so
欢迎来到StackOverflow,@user3541209。如果您找到了答案,请考虑接受它(点击复选标记),并考虑给它点赞(点击上箭头)。接受一个答案表示向更广泛的社区表明您已经找到了解决方案,为自己赚取一些声望分,并为回答您问题的人赚取一些声望分。如果您没有找到满意的答案,请留下评论。 - Jim L.
5个回答

13
状态图与有限状态机相比有很大的不同(我假设"传统"状态机是指有限状态机)。状态图是 Harel 在 1984 年发明的一种符号表示法,被提议作为传统有限状态机的重要符号扩展。
状态图已经被纳入 UML 语言中(尽管它们将其称为行为状态机,并且 UML 还支持另一种称为协议状态机的概念,这增加了混淆)。主要的重要区别是状态图实际上是一种“分层”的状态机。状态可以包含嵌套的状态机(在任何深度级别)。
除此之外,还添加了正交区域的概念,用于模拟并行运行的不同子状态图,以及历史状态的概念(浅层历史或深层历史),可用于记住重新进入组合状态时要访问哪个子状态。
所有这些额外的特性使得状态图比简单、平面的状态机更具可伸缩性和表现力。状态图也允许向事件添加关联动作(在状态内部或在状态之间的转换上)。
存在许多不同的(通常是商业化的)工具,允许从状态图完全生成可执行代码或模拟模型行为(例如 StateMate、Rhapsody、Stateflow、Yakindu Statechart Tools、visualSTATE 等)。它们也经常被用于工业领域,主要是嵌入式和反应性系统领域。
这就是为什么状态图可以被认为是可执行建模的成功案例之一。

1

状态:状态是等待执行转换的系统状态的描述。

这里找到示例。

状态机(有限状态机):多个状态的视觉描述或抽象组合。状态机在任何给定时间只能处于有限数量的状态之一。

状态图:状态图是一个状态机,其中状态机中的每个状态都可以定义自己的下属状态机,称为子状态。状态图的主要特点是状态可以按层次结构组织。状态图可以同时处于多个状态。在这里找到示例。


0
(也许有点晚了)回答该问题的一个好提示可能是对状态图本身进行基础工作 - 来自David Harel于1984年的论文“STATECHARTS: A VISUAL FORMALISM FOR COMPLEX SYSTEMS”。
具体来说:
一个好的状态/事件方法也应该自然地满足更一般和灵活的语句,例如
(1)“在所有飞行状态下,当黄色手柄被拉出时,座椅将被弹出”,
(2)“变速箱状态的改变与制动系统无关”,
(3)“当选择按钮被按下时,进入所选模式”,
(4)“显示模式由时间显示、日期显示和秒表显示组成”。 条款(1)要求能够将状态聚集成超级状态,(2)引入了独立性或正交性,(3)暗示需要更一般的转换而不仅仅是单个事件标记的箭头,(4)捕捉状态的细化。 希望对你有所帮助。

0

请查看我的完整答案https://dev59.com/W2sy5IYBdhLWcg3w-i7h#67067188,但是简而言之,状态图表就像模块化分解和抽象化对于单片代码的作用一样,是状态转换图表的进化版。

希望这能帮助你理解它们之间的区别。


-1
状态机是一种比图灵机更为特化的计算机数学模型。另一个常见的“状态机”使用方法是实现该模型并在计算机上运行的代码。
相反,状态图是状态机的描述,通常表示为图表或表格。单词“图表”是拉丁语,因此意味着书写或绘制的东西。
有许多种状态机,包括Mealy、Moore和Harel。关于Harel是否定义了一种状态机形式主义还是只是更好的状态图符号尚不清楚。UML是它们的超集,具有统一的表面符号来描述底层模型。模型和图形符号都描述了可以运行的状态机的设计。表示模型的图形符号可以被视为状态图。
我认为你引用的问题实际上是混淆和令人困惑的。哈雷尔1984年的论文将Mealy和Moore形式主义称为“传统的”,但这个词现在可能也适用于哈雷尔的工作。术语“状态图”可能指的是Harel或UML,可以将其映射到Mealy或Moore状态机中。尽管如此,我仍会列举出差异来回答这个问题。

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