“Petri 网展开从另一种数据表示减少重复交错:它显式保存事件和 token 实例的因果关系,让多个线性执行对应同一个无冲突配置。有限完整前缀依靠标识比较及合适的截断顺序,不能只因两个结点标…”
形式陈述
本页以有限 1-safe Petri 网为模型:每个可达库所至多一个 token。其展开是一个通常无限的发生网,包含表示 token 实例的条件结点、表示变迁发生实例的事件结点,以及到原网库所和变迁的标签映射。
发生网的有向路径给出因果偏序。两个事件若竞争同一个输入条件,则直接冲突;冲突传播到其后继。事件集合
展开不把原网里的每个变迁只复制一次。同一变迁在不同因果历史或不同轮次发生时,会产生不同事件实例;正是这些副本让展开自身保持无环。
直觉
状态图把“先做甲后做乙”与“先做乙后做甲”画成两条路径;若二者使用独立资源,这只是同一次并发活动的两种排队方式。展开保留甲、乙没有因果先后的事实,用一个配置代表这些交错。
另一方面,共享输入资源的两项选择不能一起进入配置。因果无先后不自动等于可并发,还必须排除冲突。
例子与边界
两个独立任务只需两个事件
初态在
若再加入
循环为什么复制 token 实例
若网只有
每个
有限完整前缀凭什么截断
有界网虽然展开可无限,但能构造保留全部可达 marking 所需信息的有限完整前缀。典型规则将某事件的局部配置与一个更早配置比较:若到达相同 marking,且后者在合适的 adequate order 中更小,就把该事件标为 cutoff,不继续扩展其后代。这里的顺序须良基、与有限扩展相容,并细化配置的严格包含关系,即
上面的单循环中,发生一次
推论与应用
展开适合分析可达 marking、死锁及因果冲突。其优势取决于并发结构:
偏序约简通常从状态探索中删去冗余交错;展开则显式构造事件及 token 的因果结构。二者目标相近,保存的数据对象和正确性证明不同。Mazurkiewicz 迹把独立动作交换归为同类,可帮助理解交错如何对应同一个配置。
本页没有声称任意无界网都能靠同样规则得到有限完整前缀。离开 1-safe 或有界范围时,需要额外的多重 token 处理和明确的终止条件。
参考资料
- [1] Javier Esparza, Stefan Römer and Walter Vogler, An Improvement of McMillan's Unfolding Algorithm, TACAS 1996,pp. 87–106:完整前缀与 adequate orders。
- [2] 论文公开稿,发生网、配置和 cutoff 的详细定义。