设多输出函数的初始覆盖为C,目标解为无冗余覆盖N。利用阵列变换从C中分离出CON。即输出部分凡取值为0者一律改为u,并删去输出部分取值全部为u的立方体。然后执行以下步骤: 第一步 N = S[CON] 第二步 对N中每一元素e作如下运算: (1) 通过反复对e求余面,把e转化为质立方体z。从N中删去e。 如何把e转化为质立方体z,详见下文。 (2)删去N中被z包含的立方体。 (3) N = N ∪ z 第三步 删去N中冗余立方体。设e是N的元素,若: {e#(N-e)}∩CON=φ 则把e从N中删去。 第四步 删除多余连线。 如何删除多余连线,详见下文。 第五步 当第四步中没能删除任何一根多余连线时,则结束运算。否则应对在第四步中发生过变化的每一立方体重新加工。设变化之前的立方体为e,变化之后的立方体为e′。 (1) 通过反复对e′求余面,把e′转化为质立方体z,且z ≠ e。(为了避免陷入死循环,条件z 1 e是必要的,而且z还应当和前面转化过的质立方体都不同。) (2) 用z代替e′ N = ( N - e' ) ∪ z (3) 删去N中被z包含的立方体。转入第三步。 如何把立方体e转化为质立方体z 设 e = x1x2…xi…xn | y1y2…yj…ym 第一步 i从1到n重复以下步骤: (1) 令 p = e (2) 若xi ≠ X则用X置换p中xi原来的取值。 (3) 若p和C一致,则令e = p (p是余面) 。 第二步 j从1到m重复以下步骤: (1) 令p = e (2) 若yj = u则用1置换p中yj原来取值。 (3) 若p和C一致,则令e = p(p是余面)。最后得到的p就是质立方体。值得一提的是, 当i和j变化的顺序不同时,将得到不同的质立方体。
|