23、新鲜寄存器自动机的即时双模拟检查

新鲜寄存器自动机的即时双模拟检查

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[双模拟结果为假];
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值