250 likes | 576 Views
介绍我们最近所作的一项工作 pi+ 演算及其对 Petri 网的表示. 2008 年度中国计算机学会 Petri 网 专委会工作会议 学术交流 08.11.15. 郝克刚. 用 pi 演算和 Petri 网模型作为基础。. 随着面向服务的计算( SOC , SOA )技术和业务流程管理 (BPM) 技术的发展和应用,不少学者用 pi 演算和 Petri 网模型作为服务组合和工作流模式的严格的理论基础。 但是究竟哪个更合适更好,存在者很大的争论。
E N D
介绍我们最近所作的一项工作pi+ 演算及其对 Petri 网的表示 2008 年度中国计算机学会 Petri 网 专委会工作会议 学术交流 08.11.15. 郝克刚
用pi 演算和Petri网模型作为基础。 • 随着面向服务的计算(SOC,SOA)技术和业务流程管理(BPM)技术的发展和应用,不少学者用pi 演算和Petri网模型作为服务组合和工作流模式的严格的理论基础。 • 但是究竟哪个更合适更好,存在者很大的争论。 • 这就引起学术界关注探讨和研究这两个模型之间在表达能力(expressiveness)和适用性(suitability)等方面的关系和差异的问题。 • 有的用Petri网研究pi 演算的语义,也有的用进程代数研究Petri网的语义。
Pi calculus or Petri nets ? SOA SOC BPEL BPM Workflow best foundation Pi calculus or Petri nets ?
expressiveness Pi calculus Petri nets
pi+演算, 一种对pi演算的扩展 • pi演算(π-calculus)是一个表达能力相当强的模型。然而在考虑如何用它来表示Petri网时,发现pi演算功能仍不够强,很难用其准确地描述Petri网中同步和竞争的组合,以及权重、容量等特性。 • 我们提出了一种对pi演算的扩展,称为pi+演算,增加了多原语同步通信机制。用pi+演算可以较准确地表示Petri网系统的动态行为,而且能更加细致地描述它丰富的动态语义。
pi演算(π演算) • pi+演算是在传统的pi演算的基础上,增加多原语同步通信机制 。 • pi演算中 <y>۰P | x (z)۰R → P | R [y/z] • 我们称 <y>为发送原语(send primitive), x (z)为接收原语(receive primitive), x是通道名,y是沿通道发送的数据,z是接收变量。
单对原语同步通信机制 <u>۰P | <v>۰ Q | x (z)۰y (w)۰R | y (z)۰ S → P | <v>۰ Q | y (w)۰ R[u/z] | y (z)۰ S → P | Q | R[u/z, v/w] | y (z)۰ S 或者 → P | Q | y (w)۰ R[u/z] | S [v/z]
多对原语同步通信机制 <u>۰P | <v>۰ Q | x (z)y (w)۰R | y (z)۰ S → P | Q | R [u/z, v/w] | y (z)۰ S 或者 → <u>۰P | Q | x (z)y (w)۰ R | S [v/z]
pi+演算的语法表达式 • pi+演算的语法表达式: P::=M|P|P|νzP| !P M::= 0 |π ۰P|τ ۰P|M +M π ::= <y> | x (z)| ππ • π是一个由若干个发送原语和接收原语组成的同步通信原语组合。 • pi+演算增加的结构等价规则 • π1π2 ≡ π2π1 • (π1π2) π3 ≡ π1(π2 π3) • 如果π1 ≡ π2 ,则π1 ۰P ≡ π2۰P
完全匹配(fully complementary) • 定义 设S是由若干个π组成的集合S={π1,…, πn},我们考虑其中所有π含的发送原语和接收原语,如果满足下述条件则称S是完全匹配的 • 对何任通道x,S中以x为通道的发送原语的个数和以x为通道的接收原语的个数相同 • 所有通道相同的发送和接收原语或者全带参数,或者全不带参数。 • 所有通道相同的带参数的发送原语,其发送的数据必须相同。 • 在任何πi中,如果带参数的接收原语有多个,则其接收变量不得相同
归约规则(π) • 设S={π1,…, πn} 是完全匹配的,则 π1۰P1 +Q1 | … | πn۰Pn+Qn → P’ 1 | … | P’ n • 其中P’i (i=1,…,n) 定义如下 如果πi中的接收/发送原语全不带参数,则P’ i=Pi 否则,P’ i=Pi [y1/z1, … , yk /zk]。
归约的例子 • <y> w (u) ۰P + Q | x (z) <v>۰R → P[v/u] | R[y/z] • <y> <y> ۰P | x (z) ۰ Q | x (z) ۰ R → P | Q[y/z] | R[y/z] • 但是,下面的例子不能归约 <y> <y> ۰P | x (z) ۰ Q <y> ۰P | x ۰ Q <y > <v> ۰P | x (z) ۰ Q | x (z) ۰ R <y> <v>۰P | x (z) w (z)۰ Q
Petri网(P/T网)系统 • N =(P,T,F,W,K,q0), • 其中P = {P1,…,Pm}(位置集),T = { T1,…,Tn }(转移集),满足P∩T = ∧, • F ⊆(P T)∪(T P)(边集) • W: F →N+ (边的权重) N+ = { 1,2,…} • K: P →N+∪{∝} (容量) • q0 : P →N (初始标识) N = { 0,1,2,…}
3۰0 1۰0 2۰0 4۰0 T= g1 g23 4 ۰T 用pi+ 演算表达 Petri 网系统 !f3۰ 3۰0 !f1۰ 1۰0 !f2۰ 2۰0 !f4۰ 4۰0
与N对应的pi+ 演算表达式 • P = P1 |…| Pm | T1 |…| Tn | q0 • 如果K(Pi)=∝, 则 Pi = ! fi ۰Ri,Ri = i۰0, • 如果K(Pi)= k, 则 Pi = |kQi即Pi = Qi | … | Q i (共k个) Qi = fi ۰Ri, Ri = i۰Qi + ifi ۰Ri,
与转移 对应的表达式 Tj • 我们先把W扩展为A:(PT)∪(TP)→N, 如果e∈F,则A(e) = W(e),否则A(e)=0。 • 令uij=A(Pi ,Tj),vji=A(Tj , Pi) • 与转移对应的表达式 Tj 定义如下
将pi 演算扩展成pi+ 演算的理由 • 也许有人会问,如果把 中多原语同步通信换成串行通信,即 不是就没有必要引入多原语同步通信机制和pi+ 演算了吗。
1 T1 P3 P1 1 T2 P4 2 P2 2 T3 P5 其实不然 T1 = g1۰ 3۰ T1 T2 = g1۰ g2۰g2۰ 4۰ T2 T3 = g2۰ g2۰ 5۰ T3
1 T1 P3 P1 1 T2 P4 2 P2 2 T3 P5 实现容量限制的需要。 另外,为什么要把T中的发送原语也同接收原语一起同步通信呢。这是由于实现容量限制的需要。
可以用pi 演算表达的Petri网的子集 • 定理1。容量不限的不加权的S-网系统、自由选择网系统可以用 pi 演算表达。 • 定理2。容量不限的加权 T-网系统可以用 pi 演算表达。 • 定理3。一般的,允许容量限制的加权的Petri网系统可以用pi+ 演算表达。
Petri网在pi+ 演算中更细致地描述 即使某转移满足能够激发若干次的条件,也必须一个个串行地顺序执行,而不能并行执行。 只要满足条件,可产生多个转移实例并行执行。 限制最多产生k 个转移实例并行执行。
pi+ 演算对带抑止弧的Petri网的表示 • 定理1。对于带抑制弧的Petri网,如果所有引出抑制弧的位置的容量是有穷的,则可以用Pi+演算表达。 • 定理2。对于带抑制弧的Petri网,如果有引出抑制弧的位置的容量是无穷的,则可以用具有优先原语功能的Pi+演算表达。
优先原语 • 这里的优先原语指的是下面加了下划线的原语,在归约中让优先原语先归约。 x (y) ۰P | x ( u ) ۰Q | <z>۰R → x (y) ۰P | Q [z/u]| R 而不能 → P [z/y]|x <u>۰Q | R
参考文章 • Kegang Hao and Xiaoqun Guo The pi+ calculus - an extension of the pi calculus for expressing Petri nets • 郝克刚 郭小群 pi+ 演算及其对Petri网的表示 西北大学信息学院软件工程研究所技术报告 2008.10.27. • 郭小群 郝克刚 pi+ 演算对带抑止弧的Petri网的表示 西北大学信息学院软件工程研究所技术报告 2008.11.6. • 国家863项目No.2007AA010305
谢谢大家! hkg@nwu.edu.cn http://mainpage.nwu.edu.cn/hkg/home/