佩特里網

佩特里網（），又譯為裴氏網、派翠網路，是对离散并行系统的数学表示。佩特里網屬於離散事件動態系統，是1960年代由卡尔·亚当·佩特里发明的Petri CA. 1962. Kommunikation mit Automaten (Communication with automata). University of Bonn.，适合于描述异步的、并发的计算机系统模型。佩特里網既有严格的数学表述方式，也有直观的图形表达方式。

由于佩特里網能表达并发的事件，被认为是自动化理论的一种。研究领域趋向认为佩特里網是所有流程定义语言之母。

 背景 
卡尔·亚当·佩特里是一名物理学家，他发明佩特里網主要是从物理的角度去描述并发现象的。据佩特里本人所述，他认为60年代计算机科学的概念构架由于缺乏并发不适合于描述物理系统。其中一个重要的概念，就是佩特里網里面不存在所谓的“全局时间”的概念，因为这跟狭义相对论是冲突的。相反，佩特里網可以描述每一个节点的时序。

从狭义相对论的观点出发，两个时空点之间如果没有因果关系把它们连接起来（或者说“类空”的），它们就是独立的，不能说其中一个发生在前另一个在后或者相反。因此，佩特里網里面的两种变迁（见下文）如果都有发生的条件，则不能认为其执行顺序有任何关系。然而，佩特里網旨在描述变迁之间的因果关系，并由此构造时序。

 經典佩特里網 
经典的佩特里網是简单的过程模型，由两种节点：库所和变迁，有向弧，以及令牌等元素组成的。

File:PetriNet.JPG
 结构 
佩特里網的元素：

库所（Place）圆形节点
变迁（Transition）方形节点
有向弧（Arc）是库所和变迁之间的有向弧
令牌（Token）是库所中的动态对象，可以从一个库所移动到另一个库所。

佩特里網的规则是：

有向弧是有方向的
两个库所之间或两个变迁之间不允许有弧
库所可以拥有任意数量的令牌

 行为 

如果一个变迁的每个输入库所（input place）都拥有数量足够的令牌时，该变迁即为被允许（enable）。一个变迁被允许时，变迁将发生（fire），输入库所（input place）的令牌被消耗，同时为输出库所（output place）产生令牌。

注意：
变迁的发生时是独立且唯一的，也就是说，没有一个变迁只发生了一半的可能性。
有两个或多个变迁都被允许的可能，但是一次只能发生一个变迁。这种情况下变迁发生的顺序没有定义。
如果出现一个变迁，其输入库所的个数与输出库所的个数不相等，令牌的个数将发生变化，也就是说，令牌数目不守恒。
佩特里網络是静态的，也就是说，不存在发生了一个变迁之后忽然冒出另一个变迁或者库所，从而改变Petri网结构的可能。
佩特里網的状态由令牌在库所的分布决定。也就是说，变迁发生完毕、下一个变迁等待发生的时候才有确定的状态，正在发生变迁的时候是没有一个确定的状态的。

两个变迁争夺一个令牌的情形被称之为冲突。当发生冲突的时候，由于佩特里網的时序是不确定的，因此具体哪个变迁得以发生也是不确定的。实际应用中，往往需要避免这种情形。用于描述现象的佩特里網也可能自然出现冲突，这表明我们对于变迁发生的条件没有完全了解。

多个弧连接两个节点的情况。在输入库所和变迁之间的弧的个数决定了该变迁变为被允许需要的令牌的个数。弧的个数决定了消耗／产生的令牌的个数。

 佩特里網的形式化定义 
一个经典的佩特里網由四元组（库所，变迁，输入函数，输出函数）组成。任何图都可以映射到这样一个四元组上，反之亦然。

被允许的形式化 变迁发生的形式化佩特里網 到变迁系统的映射 可达性图

佩特里網是一个三元组(P,T,F)

F(P X T)U(T X P)是弧的集合

 流程建模 
一个流程的状态是由在场所中的令牌建模的，状态的变迁是由变迁建模的。令牌表示事物（人，货物，机器），信息，条件，或对象的状态；库所代表库所，通道或地理位置；变迁代表事件，转化或运输

一个流程（Flow）有当前状态，可达状态，不可达状态。

 经典Petri网的局限性 
没有测试库所中零令牌的能力
模型容易变得很庞大
模型不能反映时间方面的内容
不支持构造大规模模型，如自顶向下或自底向上

 高級佩特里網 
为了压缩经典佩特里網中的重复结构，提高佩特里網的建模能力，高级佩特里網应运而生。高级佩特里網包括有色佩特里網和谓词/变迁系统。这类网系统的特点是通过折叠来减少网的网元，压缩网的规模。

 有色佩特里網 
一个有色的令牌（托肯）通常代表具有一个可以标识的对象，从而避免相同网络结构的重复建模，如一个令牌可以取值“令牌A”，另一个令牌取值“令牌B”。当有色令牌的标识符取值（颜色）可以使用复杂的复合类型时，因此令牌拥有取值（颜色）代表由令牌建模的对象的具体特征，如一个令牌代表一个工人（张三，28岁，经验3级）。

 佩特里網拓展 
为了扩展佩特里網的建模能力，很多研究学者在多个方面对Petri网进行了扩展：

 时间 
为了进行分析，我们需要建模期间，延迟等，因此可以为每一个令牌附加一个时间戳，由变迁决定生产出的令牌的延迟。常用的时间佩特里網可分为Timed Petri Net 和 Time Petri Net。

 时序 
增加时序逻辑的定义，更好的描述行为过程。

 层次化 
构造一个复杂性与数据流图相当的佩特里網的机制。层次佩特里網是由库所，变迁和子网构成的网络。佩特里網的层次化具有多种实现形式，例如高层次佩特里網中的一个变迁可以代表一个子佩特里網。

 Petri网的应用 
软件设计
工作流管理
工作流模式
数据分析
并行程序设计
协议验证

 相关内容 
排队论
有限状态机
流程建模

 外部链接 
 Petri网世界（英文）
 Petri网标记语言 （英文）

Category:并行流计算
Category:计算模型
Category:图表
Category:建模语言