我有這種情況,我需要讓用戶根據給定條件的數量來定義決策。例如我的節目需要自動生成矩陣如下面給出的,有兩個條件(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