互模拟(Bisimulation)
背景
首先考虑一个例子。现在我们有一台咖啡机,在咖啡机中投入一个硬币之后,顾客可以按下咖啡按钮和茶按钮,在按下咖啡(茶)按钮之后,顾客可以得到一杯咖啡(茶),从咖啡机中拿走咖啡或茶以后咖啡机回到最初的状态。假设该咖啡机坏了,我们要替换一台行为相同的咖啡机,那么我们如何保证替换的咖啡机一定是与原咖啡机行为相同的一台?在这个例子中我们需要回答三个问题:
- 如何表示机器的行为?
- 在什么意义之下两个机器是一样的?
- 如何证明两个机器是一样的?
行为和过程(Behaviour and Process)
(1). 什么是机器的行为?机器的行为可以理解为我们能够观测到的机器与环境交互的整个流程。
(2). 什么是过程?
对于一个顺序执行的程序而言,它的过程可以看成一个数学对象——函数;而当考虑到并行程序时,过程就不能单纯地看成一个函数。
思考:程序语义分为估值语义(evaluation semantics)和变迁语义(transition semantics)在估值语义中,人们只关心程序运行前后的计算结果,在这个意义下,估值语义可以用函数来刻画;变迁语义关心的是程序运行过程中的每一次变迁,而这每一次变迁就对应于一个基本程序的执行。基本程序有时会涉及并行操作,因此,用过程来刻画变迁语义会更恰当。
对于如何定义过程以及在什么情况下过程的行为是等价的,目前还是尚未解决的问题,尤其是在并发理论中。
带标签的变迁系统(Labeled Transition System)
机器的行为用带标签的变迁系统来表示,定义如下:
一个带标签的变迁系统(LTS)是一个三元组 ( P , Act , T ) ( \mathcal{P},\text{Act}, \mathcal{T} ) (P,Act,T), 其中 P \mathcal{P} P 是状态(过程)的集合, Act 是动作的集合(有限或无限), T ⊆ ( P , Act , P ) \mathcal{T}\subseteq(\mathcal{P}, \text{Act},\mathcal{P}) T⊆(P,Act,P) 是传递关系
LTS的例子参见下文。
行为的
互模拟(Bisilmulation)
LTS提供了讨论两个机器行为的基础,即对两个机器行为的讨论就转化为对两个LTS的讨论。
第一个自然的想法是借助于图论中图的同构,但是,图的同构要求太强。例如以下两个LTS的行为是一样的,但它们是不同构的:
我们也可以将LTS看成是自动机,因此,第二个想法是借助于自动机的轨迹等价,即考虑两个LTS接受的语言是否相同。然而自动机的轨迹等价要求又太弱。例如以下的两个LTS接受的语言是相同的,但是这两个LTS 的行为是不一样的
综上,对于两个LTS而言,我们要找到一个关系,这个关系需要比同构的条件弱,但要比轨迹等价的条件强。互模拟关系就是这样的一种关系。其定义如下:
一个关系 R \mathcal{R} R是状态(或过程)上的互模拟关系,如果对给定的状态