它们两者都代表系统可以采用的不同状态。那么,Petri网和有限状态机有什么区别?什么时候使用Petri Nets,什么时候使用有限状态机?
答案 0 :(得分:3)
标准有限状态机仅包含一个当前状态。而在Petri网中,多个位置(或多或少与有限状态机中的状态可比)可以包含一个或多个令牌。有限状态机是单线程的,而Petri网是并发的。
在有限状态机中,活动状态响应事件而改变。在Petri网络中,一旦所有输入位置都包含至少一个令牌,就会执行网络转换。
可以将有限状态机视为Petri网的特例。
通常,如果您的过程或您要表示的部分是单线程的,我通常建议使用有限状态机:其他软件工程师可能对有限状态机更为熟悉。并且有更多工具可以将有限状态机转换为实现。
仅在需要并发或具有更高表现力时才使用Petri网。或者,当您要在工厂工厂中建模时,将一半的面料转变为产品,或者您的听众更熟悉此图像。
也许Petri网还可以用于建模,可视化正在运行的大型并发系统,例如微服务架构,天蓝色的服务架构可靠服务和可靠的参与者,在kubernetus上运行的服务,天蓝色的功能和AWS Lambda。
另外,与有限状态机相比,有更多关于Petri网的理论研究和使用(请注意,正如我之前所说,有限状态机可归纳为Petri网)。
答案 1 :(得分:1)
在状态机中,状态是全局的。给定两个状态,您只能说“这些状态不同”。在Petri Nets中,国家由地方构成。状态是标记,表示每个位置有多少令牌。给定两个标记,您可以比较它们并说“它们在X,Y,Z处相同,而在U,V,W处不同”。
在定义FSM时,您必须单独查看每个状态并确定可能转换到其他状态。 Petri网中的每个过渡代表基础可达性图中的整个过渡组。例如,Petri Net过渡可能会说:从每个在P1中具有令牌和在P2中具有令牌的标记中,该模型可以达到在P1中减少一个令牌,在P2中减少一个令牌,但多一个令牌的标记在P3中。如果可达性图具有8或800个具有该属性的标记,则单个Petri Net转换表示可达性图中的8或800个转换。
在Petri Net模型中,您可以创建过渡不变式。这些是可达性图中的周期。然后,您可以将更多令牌放入模型的初始标记中,并且可达性图中的状态数会爆炸。虽然它的结构仍由与具有较少令牌的模型相同的周期给出,但Petri Net模型仍然可以理解。 例如,考虑一个客户端/服务器系统。您有客户端的位置,服务器的位置,来回流的消息的位置。然后,您只需为要建模的客户端和服务器的数量添加令牌。它们很容易更改。
关于什么时候使用什么,我同意卡斯珀·范·登·伯格的观点。