controls - Petri 网和有限状态机有什么区别?
问题描述
它们都代表系统可以采取的不同状态。那么Petri网和有限状态机有什么区别呢?什么时候使用 Petri 网,什么时候使用有限状态机?
解决方案
标准有限状态机只包含一个当前状态。而在 Petri 网络中,多个位置或多或少与有限状态机中的状态相当,可以包含一个或多个令牌。有限状态机是单线程的,而 Petri 网是并发的。
在有限状态机中,活动状态响应事件而改变。在 Petri 网中,只要所有输入位置都包含至少一个标记,就会执行转换。
有限状态机可以被认为是 Petri 网的一个特例。
一般来说,如果您的进程或您希望表示的部分是单线程的,我建议使用有限状态机:其他软件工程师可能更熟悉有限状态机;还有更多工具可以将有限状态机转换为实现。
仅当您需要并发性或额外的表现力时才使用 Petri 网。或者,当您为工厂建模时,其中一半的制造物被转化为产品,或者当您的观众更熟悉此图像时。
或许 Petri 网也可以用于建模、可视化运行的海量并发系统,例如微服务架构、azure service fabric 可靠服务和可靠参与者、运行在 kubernetus 上的服务、azure function 和 AWS Lambda。
此外,关于和使用 Petri 网的理论研究比关于有限状态机的研究更多(请注意,正如我之前所说,有限状态机可以简化为 Petri 网)。
推荐阅读
- ios - 在 collectionView 单元格及其边框之间添加填充
- javascript - 如何仅使用 vanilla Javascript 从 Ajax 返回变量(字符串)
- python - 将列表制作成字典,由列表中的标签索引
- c# - 如何检查c#中是否包含数组?
- php - PHP 对象数组需要我克隆每个对象,否则它将持续更改
- jquery - Laravel 不会将数据从数据库填充到 Web 表单
- java - 检查 ArrayList 中是否存在 JTextfield 值
- android - 无法访问 zzbfm 类文件 zzbfm not found, firebase, android?
- c# - 序列化和读取对象列表的最佳方法?
- ios - 如何修复 iOS 中的滚动视图大小?