有限自动机运行的逻辑
有限状态机 它是一种基于输入数据或事件在不同状态之间顺序转换的抽象计算模型。 有限状态机包括两种模型构建方法-状态机和转换图。
状态机的逻辑
具有状态机的有限状态机的示例:

执行算法包括以下步骤:
状态机的一般逻辑
-
状态机的操作在任何状态被激活之前开始。:
-
1. 如果状态机有一个默认转换(或几个这样的转换),那么首先执行与这些转换相关的操作,同时考虑到它们的优先级和条件。;
-
2. 如果默认情况下有多个转换,则按照设置的优先级顺序分析转换,直到检测到具有不完整或缺失条件的转换,之后激活相应的状态。;
-
3. 如果没有默认转换并且存在单个状态,则会自动激活它。
转到第2点。
-
-
在机器的下一步,在激活状态之后,检查从激活状态的可能转换。 可以有零个、一个或几个这样的转换。
-
1. 如果没有从当前活动状态的转换,则机器保持在相同的当前状态,并且执行部分。
期间和上(如果指定)这种状态。 部分出口;出口此条件从不执行。
-
2. 如果从当前状态只有一个转换,则检查其条件。 如果不满足条件,则机器保持在相同的当前状态,并且执行部分。
期间和上(如果指定)这种状态。 如果条件具有值"true",则首先执行转换操作(如果指定)。 其次:-
2.1. 如果转换导致不同的状态,则执行以下步骤:
出口;出口当前状态和部分参赛作品不同的状态(如果指定)。 另一个状态变为活动状态而不是当前状态(此处不考虑分层状态)。
-
2. 2. 如果转换导致相同的状态(这里我们只考虑外部转换),则执行部分
出口;出口和参赛作品当前状态,并且它保持活动状态。
-
2.3. 如果转换导致死端节点,那么当前状态保持活动状态,并且其部分被执行。
期间和上(如果指定)。
-
-
3. 如果几个转换退出当前状态,机器会尝试按照设定的优先级顺序依次经过它们,直到遇到条件满足或不存在的转换(这里不考虑复合转换—请参阅下一段)。 如果没有这种转换,那么机器保持其当前状态,并且执行部分。
期间和上(如果指定)这种状态。 如果找到过渡,请参阅第2.2.1、2.2.2和2.2.3段。
-
-
如果任何转换(条款2.2和2.3)是复合的(由两个或多个段组成)并且具有分叉,则可以实现backtrackingfootnote机制:[*Backtracking*是一种解决问题的方法,其基础是尝试依次迭代所有可 当程序到达一个决策节点(例如,在过渡图中,它可能是一个退出节点),并且所有可能的进一步操作选项都是不正确的(例如,来自该节点的所有转换都有假条件)时,它返回(回溯)到前一个决策节点并尝试另一个(替代)选项。]:根据它们的优先级和条件通过转换,自动机记住传递的分叉,如果下一个转换的条件没有满足,自动机返回到最近的传递的分叉,在那里替代分支没有被测试,并作出新的尝试,但沿着替代路径。 如果没有具有替代路径的分叉,则当前状态保持活动状态,并且其部分被执行。
期间和上(如果指定)。
操作员组
在状态机 操作员组 参赛作品, 期间 和 出口;出口 在状态发生变化时和处于状态时启动操作的执行。 执行这些运算符的逻辑与转换、状态和激活顺序密切相关。 让我们仔细看看每组操作员是如何工作的,以及它们是如何相互交互的。:
-
检查转换条件-在每个步骤中,状态机检查是否存在从当前状态的活动转换。 过渡可能受到条件的制约 更改指标(
已互换等。)或时间逻辑(之后和其他人),这表明何时可以进行过渡。; -
在满足条件的情况下进行转换:
-
如果满足转换条件,则状态机停用当前状态。;
-
出口;出口-在当前状态结束之前执行,如果一组运算符出口;出口指定。 它完成与此状态相关的所有操作。; -
然后有一个转换到一个新的状态,其中一组运算符被执行。
参赛作品对于这种情况。
-
-
如果没有发生转换:
-
如果不满足转换条件,则状态机保持当前状态。;
-
期间-如果状态是活动的,并且操作指定为期间. 只要自动机保持在该状态并且不满足过渡条件,这在每个步骤都继续。; -
上—当某个条件发生时执行,如果当前状态为活动状态和一组运算符上它与这种情况有关。
-
执行运算符组的优先级
-
过渡条件-首先检查以确定是否将完成过渡;
-
转换上的操作-在检查条件后执行,如果转换已确认;
-
出口;出口-在转换之前完成当前状态的执行; -
上-如果状态为活动且已发生指定事件,则执行; -
参赛作品—当一个新的状态被激活时,它被执行,为执行操作做好准备; -
期间-它在机器的每个步骤执行,而当前状态保持活动状态。
那么具有转换和运算符组的有限状态机的逻辑如下:
-
在每一步,状态机检查转换条件。 如果转换是可能的,则执行以下操作:
出口;出口为当前状态,然后参赛作品为了一个新的; -
如果未发生转换,则执行以下操作:
期间对于当前状态; -
上添加仅当这些事件发生在活动状态时才通过激活操作来响应事件的功能。
过渡图的逻辑

过渡图的逻辑包括节点和过渡的顺序分析,从默认过渡开始。 运算的算法可以分为以下几点:
-
与状态机不同,转换图在每个步骤都被完全检查。 如果条件为真,则执行转换,或者,如果没有条件,则默认执行转换。 如果转换是可能的(条件是否为真),则图形执行与转换相关的操作。 转到第2点。
-
执行转换时,如果条件为真或缺失,则执行在此转换上定义的操作。 之后,将执行到图形中指定的下一个节点的转换。 完成这些操作将完成第二步并导致步骤3。
-
如果计算机已到达节点,则执行以下操作,具体取决于三种可能的结果:
-
1. 节点是死胡同。 如果回溯是可能的,那么它被执行。 否则,自动机步骤完成。
-
2. 一个过渡起源于节点。 机器正试图进行这种转变。 如果满足条件,则自动机执行过渡动作并前进到此过渡所导致的节点。 如果不满足条件,计算机将尝试执行回溯。 如果回溯是可能的,则执行回溯。 否则,机器的步骤完成。
-
3. 有几个转换来自节点。 如果自动机第一次在这个节点(在当前步骤内),那么它尝试用第一个序列号执行转换。 与此同时,机器试图执行的转换的数量被记住。 如果从这个交界处开始的路径导致回溯,并且自动机返回到当前分叉,它将尝试按顺序执行下一个过渡(编号为"2",然后是"3"等。),直到它耗尽了所有可用的转换或成功完成其中一个转换。
-
-
如果从节点的过渡完成,则自动机移动到下一个节点并从点1继续执行。 如果从节点的过渡未完成,并且回溯是可能的,则执行回溯。 如果回溯不可能,则完成自动机步骤。 整个执行逻辑完全基于节点之间的转换,以及记忆和顺序检查叉节点中转换的序列号。
节点
结 它们是过渡图的关键元素,用作过渡的交汇点。 它们定义了过渡通过的点,组织了模型中有序的步骤序列。
过渡时期

过渡期 它们是节点之间的连接,定义了从一个节点移动到另一个节点的逻辑。 每个转换都可以有一个条件,该条件被检查以确定是否进行转换。 转换可以是有条件的(仅在某个条件为真时执行)或无条件的(如果它们处于活动状态,则始终执行)。 如果多个转换源自一个状态或节点,则程序会将显式转换分配给它们。 优先级以数字显示(1,2,3等)). 在仿真过程中,按此顺序检查转换,并执行具有真实条件的第一个可用转换。
过渡逻辑的典型案例:
-
在满足与变量、参数或计算结果相关的条件时发生的节点之间的简单转换。;
-
依赖于变化指标的转换(
已互换,已经改变了,已经改变了),时间逻辑运算符等。,在更改某些参数的值时执行; -
回溯的逻辑,其中转换可以返回执行到前一个节点,以检查替代路径,如果当前转换的条件不满足。
过境点的情况
过境点的情况 [] 它们设置逻辑表达式,以确定何时应该发生转换。 这些条件可能包括比较值、检查逻辑表达式或使用逻辑运算符,例如 已互换. 如果条件为真,则执行转换,并在下一个节点上继续执行。
在交通路口使用条件的例子:
-条件可以检查值的范围,例如,只有当达到某个参数级别时才进行转换。;
-逻辑表达式可以包括几个检查,例如,一组条件(A>5//B<10);
-变化指标用于确定系统的状态是否在某一时刻发生了变化。
时间逻辑运算符
时间逻辑运算符 过渡允许您考虑与事件频率相关的时间方面或条件。 逻辑运算符 之后, 在,而 每个 (和其他),根据事件的时间,重复或频率设置过渡的条件。 它们可以在具有一组运算符的状态内的状态机中使用。 上 在十字路口。
时间逻辑的应用示例:
-使用操作员 之后 要指定在激活与此运算符关联的状态之后在指定的时间段或状态机的步骤数之后执行的转换;
-使用运算符设置过渡 在,其仅在从激活与此运算符相关联的状态的时刻起的给定步骤处执行;
-使用操作员执行重复操作 每个 来设定执行的频率。
内存节点
内存节点
允许状态机记住最后一个活动的子状态,并在父状态重新激活时恢复它。 内存节点用于需要保存机器操作的上下文并从同一个地方继续执行的情况,即使在退出并重新进入状态之后也是如此。 存储器节点的逻辑基于存储当前子状态并在满足某些条件时激活它,例如,在组完成之后。 期间 和 上 的父状态。
使用内存节点的示例:
-
在重新激活父状态时恢复最后一个活动子状态;
-
实现需要暂时退出状态并在保持上下文的同时返回状态的复杂场景;
-
根据存储的状态管理子状态之间的转换。


