我有这种情况,我需要让用户根据给定条件的数量来定义决策。例如我的节目需要自动生成矩阵如下面给出的,有两个条件(IsMale和IsSmoker):以编程方式在C#中生成决策表?
IsMale: YES YES NO NO
IsSmoker: YES NO YES NO
而deicsion由用户定义的,因此任何下列的可以是有效的:
IsMale: YES YES NO NO
IsSmoker: YES NO YES NO
Decision: T F T F
IsMale: YES YES NO NO
IsSmoker: YES NO YES NO
Decision: F F F F
IsMale: YES YES NO NO
IsSmoker: YES NO YES NO
Decision: T T T T
对于每个条件只能有两种状态,真和假。这样的组合的总数被计算如下:
没有可能状态(S)到的没有条件(C) S上的功率^ C =总无组合
4种可能性(2^2 = 4)
Condition A T T F F
Condition B T F T F
8种可能性(2^3 = 8)
Condition A T T T T F F F F
Condition B T T F F T F T F
Condition C T F T F T T F F
希望我已经解释了自己比原来的问题好一点。
更新: 根据Guffa给出的答案。下面是他的算法来生成不同组合的手工计算。
4 possibilities (2^2=4)
索引= 0,(右移位0)
binary 8 4 2 1 Value
original 0 0 0 1 1
& 1 0 0 0 1 1 T
original 0 0 1 0 2
& 1 0 0 0 1 0 F
original 0 0 1 1 3
& 1 0 0 0 1 1 T
original 0 1 0 0 4
& 1 0 0 0 1 0 F
索引= 1,(右移1)
binary 8 4 2 1 Value
original 0 0 0 1 1
shift 0 0 0 0 0
& 1 0 0 0 1 0 F
original 0 0 1 0 2
shift 0 0 0 1 1
& 1 0 0 0 1 1 T
original 0 0 1 1 3
shift 0 0 0 1 1
& 1 0 0 0 1 1 T
original 0 1 0 0 4
shift 0 0 1 0 2
& 1 0 0 0 1 0 F
组合:
Condition 1: TFTF
Condition 2: FTTF
看来你应该在每一列上都有一些标签,这样才有意义? – ScottS 2009-08-10 07:00:22
Martin Fowler写的关于决策表:http://martinfowler.com/dslwip/DecisionTable.html – 2009-08-10 07:12:21
在手计算结果的原始值应该介于0到3而不是1到4. – Guffa 2009-08-10 09:01:52