“后向基搜索在许多小模型中有用,不过其有限基也可能迅速变大。实践上可以先用守恒不变量、支配删除和结构约束排除目标,仍需如实报告未解决实例,不能把超时当成安全结论。”
形式陈述
设
算法迭代
每轮只保存有限基
直觉
前向搜索问“还能走到哪里”,可能不断生产更大的资源。后向搜索改问“至少需要哪些资源才能出事”。某个阈值一旦被更小的阈值替代,原先表示的所有大状态自动保留,无需逐个存储。
不变量是:第
例子与边界
Petri 网的前驱公式
对目标阈值向量
最大值逐坐标取。它同时保证输入 token 足够、扣除输入再加输出后不少于目标。只倒减净变化可能给出负数或不使能的伪前驱。
从三个 token 的坏状态倒推
两库所
第一轮由
再算
第三轮,
若继续,
为什么会停,为什么可能很慢
但基的大小、每轮前驱的数值和轮数均可能很大。对
推论与应用
若稳定基
坏集合必须向上闭,或先证明所作向上闭包是允许的抽象。若规格是“恰好两个 token”,直接替换为“至少两个”可能产生额外反例;此算法回答的是覆盖,不是任意精确可达性。
参考资料
- [1] Alain Finkel and Philippe Schnoebelen, Well-Structured Transition Systems Everywhere!, 2001,§3,Proposition 3.5、Theorem 3.6。
- [2] Javier Esparza, Petri Nets: Lecture Notes,覆盖性算法部分。