5、模型检查中的局部搜索策略与实践

模型检查中的局部搜索策略与实践

1. 状态空间分区概述

在系统中,组件进程存在一个或多个错误状态是很常见的,而我们希望在整个系统中这些状态永远不会被达到。因此,在进行搜索之前,很难有好的自动方法来决定使用哪种基于组件的分区。不过,我们可以提前创建一系列的分区选项。

当格式有 N 个组件时,每个状态对可看作一个 N + 1 元组状态,额外的一个是规格说明。分区既可以基于实现组件的状态,也可以基于规格说明状态,但不能期望规格说明状态分布会更均匀。

状态空间分区有两种不同的策略:预计算分区和动态分区。

2. 预计算分区

2.1 分区算法思路

预计算分区是基于代表状态对的 N + 1 个进程中的一个或多个进程的状态空间,提前确定一些分区选项。我们需要一个算法将状态机划分为两个或多个相对独立的状态机,使得这些部分之间的转换尽可能少。

这个算法分为两部分:
1. 为组件状态机的各个节点和转换分配权重,评估机器处于给定状态或进行给定转换的可能性。
2. 选择状态机的分区,使每个部分的节点权重大致相等,且它们之间的边权重最小,以提高搜索的局部性。

这两个算法都只能给出近似的最优结果。因为在第一种情况下,不进行搜索就无法预测给定搜索的权重;在第二种情况下,即使能确定两个标准之间的正确平衡,优化它们也几乎肯定是 NP 难问题。由于要分区的组件大小从 2 到数百万不等,我们需要选择非常高效的算法,对应用算法的组件大小设置上限,或者针对不同大小的组件使用不同的算法。

2.2 加权算法

在缺乏系统实际行为证据的情况下,我们可以对特定转换和节点的使用频率进行

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值