Cousera过程挖掘5-Module2-Petri Nets

1、Petri Nets基本概念

用Petri Nets表示红绿灯的状态
  • 图中的正方形Transition代表的是从一个状态转换到另一个状态的关系。
  • 一个Petri Net在设定好之后就是静止不变的,但是在上图中的那个红色实心圈Token是一个可以移动的点,它表示当前的状态,可以沿着Petri Net规定的路径进行移动
  • 在一个Petri Net中,当前的状态被叫做Marking
  • reachable markingunreachable marking:
    这是只有一个Token的情况

    拥有两个Token的情况
  • 关于Transition的两个状态区分:EnabledFire——
    Enabled状态和Fire操作示意

上图中的正方形Transition有两个输入,只有同时又两个Token位于输入位置,这个正方形Transition才可以生效,即进入Eabled状态。
同时,进入Enabled状态之后,正方形Transition可以通过Fire操作来消费(Consume)一个Token,然后产生(Produce)一个Token并将其放置在输出Place
特殊情况说明:

Petri Net上有可以同时输入输出的Place(初始状态)

此处p3 Place也必须要有Token存在,Transition才能生效
Petri Net上有可以同时输入输出的Place(结束状态)

2、State Explosion

有6个Token

因为这里每个Transition初始状态有6个Token且Fire操作的顺序并不 固定,所以最终会有超过100000个最终的State

3、安全的同步问题

红绿灯同步问题

两个同时运行的线程,我们希望它们能异步运行,始终保证一个红灯一个绿灯的情况
我们添加一个Place节点:
安全的红绿灯配置

注意这里没有出现红灯的显示,这里同样还有一个问题,就是如何保证r1装置和r2装置轮流进入绿灯状态,所以上述是non-deterministic的,所以我们对这个进行改进:
改进后的安全的红绿灯配置

4、 Reachability Graph

Reachability Graph示意图

上图中右图就是根据左边的Petri Net写出的 Reachability Graph

更加复杂的情况

注意这里从初始状态开始,t2的执行顺序是两个p1和一个p3同时进入t2,然后被转换成了一个p4!!!!

你可能感兴趣的:(Cousera过程挖掘5-Module2-Petri Nets)