Page 159 - 《软件学报》2025年第12期
P. 159

5540                                                      软件学报  2025  年第  36  卷第  12  期


                                       ∈ f}是不一致. 若  f 的任意真子集都不是冲突集, 则称         f 为极小冲突集.
                 Comps, {SD  ∧ Obs  ∧ {¬A(c)|c
                    定义  3. 极小碰集   (minimal hitting set, MHS) . 冲突集合簇  F={f 1 , f 2 ,…, f n }, 集合  S  是  F  的一个碰集, 当且仅当
                                                      [1]
                         ,
                 S  ∩ , ∅ ∀ ∈ F. 如果  S  的任意真子集都不是    F  的碰集, 那么  S  是  F  的一个极小碰集.
                           f i
                    f i
                    下面通过例     1  对以上  3  个定义进一步说明.
                    例  1: 图  2  描述了一个乘法加法器实例, M 1 –M 3 和   A 1 –A 2 分别代表乘法器和加法器. i 1 –i 6 、o 1 和  o 2 分别代表系
                 统的输入和输出.

                                               2  i 1
                                                      M 1
                                               3  i 2
                                                                       o 1 10
                                                                A 1
                                               2  i 3
                                                      M 2
                                               3  i 4
                                                                      o 2 12
                                                                A 2
                                               2  i 5
                                                      M 3
                                               3  i 6
                                                  图 2 乘法加法器电路实例

                    假设通过观测, 输入值       i 1 –i 6 是{2, 3, 2, 3, 2, 3}, 输出值  o 1 、o 2 是{10, 12}. 通过加法和乘法的原则, 若  M 1 –M 3 、
                 A 1 和  A 2 都正常工作, 则  o 1 和  o 2 的输出值应都为  12, 然而  o 1 的输出值却为  10, 通过一致性原理  [1] , 显然至少有一
                 个组件出现故障. 基于当前的观测和模型理论, 调用               MCS  求解算法   [11] , 我们能够得到{M 1 , M 2 , A 1 }和{M 1 , M 3 , A 1 ,
                 A 2 }这两个极小冲突集, 即每个冲突集合中的所有组件都正常工作是不可能的. 对于每一个                         MCS  里面的组件, 至少
                 有一个出现故障, 计算所有极小冲突集的所有极小碰集, 就能够解释观测情况. 根据定义                           3, 我们能够找到所有的
                 极小碰集是{M 1 }, {A 1 }, {M 2 , M 3 }, {M 2 , A 2 }. 例如: {M 1 }是一个候选诊断, 假设  M 1 出现故障  (输出值是  4), 其余组件
                 都正常, 则  o 1 的输出值可以是     10. 可见计算所有冲突集的极小碰集是获得故障诊断的重要步骤, 故提高极小冲突
                 集和极小碰集的求解效率能够快速定位诊断.
                  1.2   基于冲突集计算诊断
                    定义  4. 文字 (literal) . 给定布尔变量集合  X={x 1 , x 2 ,…, x n }, 文字  l i 是变量  x i 或变量  x i 的否定–x i , 二者互为补集.
                                   [11]
                    定义  5. 子句 (clause) [11] . 子句  C  是若干个文字的析取组成,  C = l 1 ∨l 2 ∨...∨l m .
                    定义  6. 合取范式   (conjunctive normal form, CNF) [11] . 由多个不同子句合取所组成的公式称为合取范式,     F = C 1
                 ∧C 2 ∧...∧C m .
                    定义  7. 命题可满足性问题      SAT [11] . 给定一组布尔变量, 若能找到一组对变量的真值指派, 使得给定命题公式
                 中的每一个子句都为真, 则称该问题是可满足的; 反之, 若不存在这样的真值指派, 则称该问题是不可满足的.
                    例  2: 给定一个与非门, 假设有两个输入         x 1 , x 2 , 一个输出  o 1 , 一组输入输出观测  Obs 1 ={x 1 , −x 2 , o 1 }, 用  CNF  公
                 式进行描述该组件的逻辑关系, 则公式            F={{−x 1    ∨ −x 2   ∨ −o 1 }  ∧ {x 1   ∨ o 1 }  ∧ {x 2   ∨ o 1 }  ∧ {x 1 }  ∧ {−x 2 }  ∧ {o 1 }}, 因可以
                 找到一组赋值{x 1 , −x 2 , o 1 }使得  CNF  中每一个子句都为真, 故该      SAT  问题是可满足的. 若再给定一组观测
                 Obs 2 ={−x 1 , −x 2 , −o 1 }, 则此时的  F={{−x 1   ∨ −x 2    ∨ −o 1 }  ∧ {x 1   ∨ o 1 }  ∧ {x 2   ∨ o 1 }  ∧ {−x 1 }  ∧ {−x 2 }  ∧ {−o 1 }}, 因无法找到一
                 组赋值使得所有子句都为真, 故该问题是不可满足的.
                    已知与非门存在一个低电平的输入, 输出为高电平. Obs 1 ={x 1 , −x 2 , o 1 }, 输入分别是高、低电平, 输出是高电
                 平, 符合逻辑值, 产生的     CNF  编码是可满足的. 而对于       Obs 2 ={−x 1 , −x 2 , −o 1 }, 输入是两个低电平, 输出却是低电平,
                 显然逻辑值错误, 对应的       CNF  编码是不可满足的. 也就是说, 若        CNF  编码不可满足, 则对应不满足子句的组件就
                 是待诊断故障组件. SAT      子句是由布尔变量给出, 布尔变量中含有的是文字, 相当于本文所说的变量.
                    SAT  求解器的输入是以      CNF  公式形式, 因此组合电路的相应描述需要以子句集形式表示. 根据图                    3  中  c17  电
                 路进行进一步说明基于冲突集求解诊断. 图              3(a) 和图  3(b) 描述了  c17  电路中组件门的性质及连接关系, 图       3(c) 是
                 c17  电路的  CNF  编码及求诊断算法     [26] . 在国际基准电路   ISCAS-85  中  [24,28,29] , c17  电路的所有组件都是与非门
                 (N 1 –N 6 ), 系统输入  (i 7 –i 11 ) 和输出  (o 14 、o 15 ) 是可观测的, 其余都是不可观测的. 在编码时用正文字表示高电平, 负
                 文字表示低电平. 对于组件, 用正文字表示组件故障, 负文字表示组件正常                     (使用  1–17  分别表示电路中对应的下标
   154   155   156   157   158   159   160   161   162   163   164