新鲜寄存器自动机的即时双模拟检查
1. 即时算法
1.1 基本算法
即时算法的核心函数是
onfly(u,V,A,B)
,其中
u ∈ UA
是用于双模拟检查的三元组,
V
、
A
、
B ⊆ UA
分别是已访问、假定和不良三元组的集合。这些集合满足
A ⊆ V
且
V ∩ B = ∅
,初始时均为空。调用
onfly(u,V,A,B)
的步骤如下:
1. 检查
u
是否在不良或已访问三元组集合中。若在不良集合中,可知
u
代表非双模拟配置对;若在已访问集合中,则假定其代表双模拟对。
2. 将
u
(及其逆)添加到已访问状态集合,并调用
simulate
函数,检查
u
及其逆是否满足 (NSyS) 条件。
simulate
函数会调用
onfly
函数,以检查某些目标配置是否可添加到候选符号双模拟关系中。在此过程中,
V
、
A
和
B
集合可能会改变。
3. 若
simulate
调用失败,则表明
u
不代表双模拟对,将其添加到
B
集合。若
u
已进入假定集合
A
,则需将
V
和
A
恢复到原始值,因为
simulate
调用对它们的添加操作可能基于
u
代表双模拟对的错误假设。
此外,还使用了
qi.nexts(tag, register, type)
函数,该函数返回状态
qi
使用形式为
(tag, register, type)
的转换所能进行的所有转换。若不传递任何参数,则返回该状态的所有转换。
1.2 算法复杂度
命题 13 指出,对于
r - FRA A = ⟨Q, q0, μ, δ, F⟩
和
u ∈ UA
,
onfly(u, ∅, ∅, ∅)
的终止时间为 $O(|UA|^2|δ|^2)$,因此为 $O(|Q|^4r^{(2 + ϵ)r}|δ|^2)$。
定理 14 表明,若
onfly(u, ∅, ∅, ∅)
返回
True
,则
u ∈ s∼
,反之亦然。
2. 生成器即时算法
2.1 算法改进原因
基本即时算法需探索指数级大的状态空间
UA
,由于回溯,其复杂度与
|UA|
的平方成正比。但由于双模拟性的性质,并非所有空间都需要显式探索。例如,对于每个
u ∈ UA
,只需检查
u
或
u−1
中的一个,因为若
u ∈ s∼
,则
u−1 ∈ s∼
,反之亦然。
2.2 生成系统
存在一种基于生成系统的多项式大小的方式来表示符号双模拟。生成系统是一个元组
G = ⟨⋄, {(qC, XC, GC) | C ∈ Q/⋄}, {σq | q ∈ Q}⟩
,其中:
-
⋄⊆ Q × Q
是一个等价关系,
[q]⋄
表示
q
的等价类,
Q/⋄ = {[q]⋄ | q ∈ Q}
。
- 对于任何
⋄
- 等价类
C
,
qC
是
C
中的一个状态(类代表),
XC ⊆ μ(qC)
且
∅ ≠ GC ⊆ SXC
。
- 对于任何
q ∈ Q
和
C = [q]⋄
,有
σq ∈ ISr
且
dom(σq) = XC
。最后,对于任何
C
,有
σqC = idXC
。
生成系统
G
生成的
UA
子集定义为:
gen(G) = Cl({(qC, σ, qC) | C ∈ Q/⋄, σ ∈ GC} ∪ {(qC, σq, q) | q ∈ Q, C = [q]⋄})
。
2.3 基于生成系统的即时算法
使用生成系统表示已访问状态的即时算法中,不再使用假定状态集合,且模拟尝试失败时总是恢复状态。原因如下:
- 更新生成系统
G
时,由于使用了闭包操作,
G
表示的关系可能会扩展多个元素,这些元素可能是未来的错误假设。
- 从生成系统中移除单个
u
不是唯一确定的操作。
该算法在第 3 行和第 5 行分别检查三元组
u
是否在
gen(G)
中,并通过添加
u
来更新
G
。这两个操作具有多项式时间复杂度:
- 检查
u ∈ gen(G)
的时间复杂度为 $O(r^5)$。
- 构造包含
u
的
G
的最小扩展的时间复杂度为 $O(r^5 + |Q|r)$。
命题 20 指出,对于
r - FRA A = ⟨Q, q0, μ, δ, F⟩
和
u ∈ UA
,
onflygen(u, 1, ∅)
的终止时间为 $O(|Q|^3r^{2 + (1 + ϵ)r}(r^5 + |Q|r + |δ|^2))$。
3. 实验结果
3.1 算法基准测试
对五种类型的 FRA 进行测试:
1.
栈(Stacks)
:有限栈,存储不同名称,使用
{push, pop}
标签进行栈操作,每个状态
qi
有寄存器
1, ..., i
可用,是唯一的确定性测试。
2.
有损栈(Lossy stacks)
:有限栈,弹出时可能“丢失”名称,是非确定性的。
3.
团(Cliques)
:每个状态都有所有寄存器可用,通过已知/新鲜转换与其他所有状态相连。
4.
花(Flowers)
:先使用标签
t0
填充寄存器,直到到达汇状态,然后使用多个标签读取和刷新所有寄存器,是高度非确定性的。
5.
CPTs(紧凑表示的部分置换)
:紧凑但允许大量转换,可形成大的双模拟关系。
实验结果表明,使用生成系统的算法通常能显著提高速度,在构建的双模拟关系较大的示例中,加速效果更明显。
3.2 与现有方法的比较
将算法与三种替代方法进行比较:
-
LOIS - FW 和 LOIS - PR
:基于 LOIS 库的即时算法和分区细化算法。
-
DEQ
:基于生成系统的多项式时间工具,专门用于确定性寄存器自动机。
由于 DEQ 仅适用于确定性自动机,且 LOIS 结果在初始测试中较慢,因此比较仅限于栈示例。结果显示,两种算法与 DEQ 性能相似,且优于基于 LOIS 的实现。
3.3 π - 演算结果
π - 演算是一种用于涉及名称传递的并发交互的过程语言。其语法如下:
P, Q :: = 0 | τ.P | ¯xy.P | x(y).P | νy.P | P|Q | P + Q | [x = y]P | [x ̸= y]P | A(x)
早期语义由 LTS 定义,标签由以下语法给出:
α :: = τ | xy | ¯xy | ¯x(y).
定义了早期强模拟和早期双模拟的概念。将 π - 演算过程转换为 FRA,并使用基于生成器的算法进行双模拟检查。
对对应于栈和花的 π - 演算过程进行基准测试,并与 PiET 工具进行比较。结果表明,该工具表现良好,尽管它在翻译阶段可能会遇到瓶颈。
以下是算法流程的 mermaid 流程图:
graph TD;
A[开始] --> B{检查 u 是否在 B 或 V 中};
B -- 是(在 B 中) --> C[u 代表非双模拟对];
B -- 是(在 V 中) --> D[u 假定代表双模拟对];
B -- 否 --> E[将 u 及其逆添加到 V];
E --> F[调用 simulate 函数];
F -- 成功 --> G[u 代表双模拟对];
F -- 失败 --> H[将 u 添加到 B];
H --> I{u 是否在 A 中};
I -- 是 --> J[恢复 V 和 A 到原始值];
I -- 否 --> K[结束];
G --> K[结束];
C --> K[结束];
D --> K[结束];
以下是测试示例的表格:
| 测试类型 | 描述 | 确定性 |
| ---- | ---- | ---- |
| 栈(Stacks) | 有限栈,使用 {push, pop} 标签 | 是 |
| 有损栈(Lossy stacks) | 弹出时可能丢失名称的有限栈 | 否 |
| 团(Cliques) | 每个状态与其他状态相连 | 否 |
| 花(Flowers) | 先填充寄存器,再读取和刷新 | 否 |
| CPTs | 紧凑且允许大量转换 | 否 |
4. 详细分析与结论
4.1 算法复杂度分析
4.1.1 基本即时算法
基本即时算法
onfly(u, ∅, ∅, ∅)
的终止时间为 $O(|UA|^2|δ|^2)$,进一步推导为 $O(|Q|^4r^{(2 + ϵ)r}|δ|^2)$。这是因为在算法执行过程中,每次完整调用
onfly
函数(即超出第 3 行的调用),要么将
u
(及其逆)添加到
V
中,要么将
u
添加到
B
中,使得状态集合的规模不断增加。具体来说,定义 $\beta = B ∪ V$,其大小 $|\beta| = (|B|, |V|)$ 以 $(|UA|, |UA|)$ 为上界(按字典序)。在每次完整调用之间,$|\beta|$ 严格递增,因此算法最多进行 $|UA|^2/2$ 次完整调用。每次调用可能会发起 2 次对
simulate
函数的调用,而
simulate
函数会尝试 $O(|δ|^2)$ 种可能的匹配。
4.1.2 生成器即时算法
生成器即时算法
onflygen(u, 1, ∅)
的终止时间为 $O(|Q|^3r^{2 + (1 + ϵ)r}(r^5 + |Q|r + |δ|^2))$。其复杂度分析与基本即时算法类似,但考虑到生成系统的特性,状态集合
V
的增加次数被限制在 $O(|Q|r^2)$。这是因为子群链的长度为 $O(r)$,集合
XC
的连续增加次数为 $O(r)$,等价类合并的总次数为 $O(|Q|)$。结合检查
u ∈ gen(G)
和构造包含
u
的
G
的最小扩展的复杂度,得到了最终的时间复杂度。
4.2 实验结果分析
4.2.1 算法性能比较
从实验结果来看,使用生成系统的算法在大多数情况下都能显著提高速度。尤其是在团、花和 CPTs 等构建的双模拟关系较大的示例中,加速效果更为明显。这是因为生成系统能够利用双模拟性的性质,避免对不必要的状态空间进行探索,从而减少了计算量。
与其他现有方法的比较中,在栈示例上,两种算法与 DEQ 性能相似,且优于基于 LOIS 的实现。DEQ 是专门用于确定性寄存器自动机的多项式时间工具,而我们的算法在处理确定性和非确定性自动机时都表现良好。基于 LOIS 的算法由于其通用性,在处理特定问题时效率较低。
4.2.2 π - 演算测试结果
在 π - 演算的测试中,将 π - 演算过程转换为 FRA 并使用基于生成器的算法进行双模拟检查。与 PiET 工具的比较结果显示,该工具表现良好。然而,在翻译阶段,由于需要生成整个转换系统,可能会遇到瓶颈。这表明在实际应用中,需要进一步优化 π - 演算到 FRA 的翻译过程,以提高整体性能。
4.3 总结与展望
本文介绍了新鲜寄存器自动机的即时双模拟检查算法,包括基本即时算法和基于生成系统的即时算法。通过理论分析和实验验证,证明了生成系统的使用能够有效提高算法的性能,尤其是在处理大规模双模拟关系时。
在未来的工作中,可以进一步优化算法的复杂度,特别是在 π - 演算的翻译阶段。此外,可以探索更多的应用场景,将这些算法应用到更广泛的领域中,如并发系统的验证和优化。
以下是不同算法复杂度的表格:
| 算法 | 时间复杂度 |
| ---- | ---- |
| 基本即时算法
onfly
| $O(|Q|^4r^{(2 + ϵ)r}|δ|^2)$ |
| 生成器即时算法
onflygen
| $O(|Q|^3r^{2 + (1 + ϵ)r}(r^5 + |Q|r + |δ|^2))$ |
以下是 π - 演算到 FRA 转换及双模拟检查的 mermaid 流程图:
graph TD;
A[π - 演算过程] --> B[转换为 FRA];
B --> C[基于生成器的算法进行双模拟检查];
C --> D{是否双模拟};
D -- 是 --> E[双模拟结果为真];
D -- 否 --> F[双模拟结果为假];
超级会员免费看
31

被折叠的 条评论
为什么被折叠?



