快速验证支配性测试的支配树验证
1. 支配树中的祖先测试
在这部分内容中,我们假定有一个无环有向图,它由一个入口节点和一个从节点到其后续节点列表的映射 sons 来定义。之后,我们会将这个图与支配树关联起来。相关变量定义如下:
Variable entry: node.
(* 入口节点 *)
Variable sons : PTree.t (list node).
(* 邻接映射 *)
如前文所述,祖先测试是从入口节点开始对图进行深度优先遍历,并使用一个遍历时钟,每次遇到节点(通过访问或标记)时,时钟值就会增加。对于每个节点 n ,我们会计算一个区间 I(n) = [d(n), f(n)] ,其中 d(n) 是首次遇到节点 n 时时钟的值, f(n) 是处理完节点 n 的所有后续节点时时钟的值。若图是无环的,并且每个节点都能从入口节点到达,那么我们就可以利用这些区间来高效地进行祖先测试:图中从节点 n 到节点 m 存在路径,当且仅当 I(m) ⊆ I(n) 。为了实现这一目标,我们仅需证明这个条件是充分的。下面是相关的定义:
Record itv := { pre: Z; post: Z }.
Definition itv_Incl (i
超级会员免费看
订阅专栏 解锁全文
1336

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



