作者dalie (新竹到台北的共乘)
看板perl
标题[问题] boolean state 比对
时间Tue Nov 21 01:14:27 2006
跟上篇文章很像
给定 3 个 input: A, B, C
假设每个 input 的值, 不是 0 就是 1,
所以 3 个 input 共有 8 种组合
今天要做的,
是检查另一组输入, 看看是否 cover 以上的 8 种组合
举例来说,
输入两个 state : "A" 与 "!A"
"A" 表示 A=1, 而其他 input (B, C) 没有给值, 表示 0 或 1, 所以我们有
A B C
1 0 0
1 0 1
1 1 0
1 1 1
"!A" 表示 A=0, 而其他 input (B, C) 没有给值, 表示 0 或 1, 所以我们有
A B C
0 0 0
0 0 1
0 1 0
0 1 1
以上两种组合做联集, 刚好就 cover 了 A, B, C 的 full state,
如果今天输入的是 : "A" 与 "B"
"A" 表示 A=1, 而其他 input (B, C) 没有给值, 表示 0 或 1
A B C
1 0 0
1 0 1
1 1 0
1 1 1
"B" 表示 B=1, 而其他 input (A, C, D) 没有给值, 表示 0 或 1
A B C
0 1 0
0 1 1
1 1 0
1 1 1
以上两种组合的联集, 并没有 cover 到 A, B, C 的 full state
(有重复两个, 只交集了 6 个 state)
目前我打算用 hash 或是 array, 先把 input 的全部 state 给储存起来
然後针对待测试的 input state, 展开, 一个一个回头去查表
如果能 100% match, 就 return true, 不然就是 false
只是这样, 当我的 input 很多个时候, 就会变得很慢 (2^n大小的 table)
不知道有没有比较好的作法呢?
谢谢各位:)
--
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.230.219.132
※ 编辑: dalie 来自: 61.230.219.132 (11/21 01:14)