在最近几天,我一直在考虑这个问题而没有找到最佳解决方案,因此这个问题。
假设我们有一组N个变量,用户可以编写这些变量来创建规则列表和以下操作,例如:
variables V_1,V_2,V_3
V_1 > 5 -> "Turn left"
V_2 < 6 -> "Turn right"
1 < V_1 < 4 -> "Continue straight"
V_1 = 0 AND V_2 > 6 AND V3 > 5 -> "Go backwards"
default -> "Stay"
变量不一定是整数,并且假设规则都是由一个AND子句列表后跟一个动作组成的。
我想要做的是构建一个决策树,允许我快速处理像(0,7,9)这样的输入并返回正确的操作。 截至目前,我唯一的想法是分割变量空间和看看输入状态适合的位置,但似乎是一个缓慢的解决方案:任何人都知道可能更快的东西?
答案 0 :(得分:0)
是什么让它变慢?很多规则?长期规则?很多变数?缓慢的规则处理?
如果您还没有很多变量 规则,我显然会选择哈希表。
这是您所述问题的树(不一定是最佳)的示例。
variables V_1,V_2,V_3
V_1 > 5 -> "Turn left"
V_2 < 6 -> "Turn right"
1 < V_1 < 4 -> "Continue straight"
V_1 = 0 AND V_2 > 6 AND V3 > 5 -> "Go backwards"
default -> "Stay"
V1 V2 V3
<0 ------- <6 --------------- Right
>=6 -------------- Stay
0 -------- <6 --------------- Right
6 --------------- Stay
>6 ---- <=5 ------ Stay
>5 ------- Backwards
]0-1] ---- <6 --------------- Right
>=6 -------------- Stay
]1-4[ ----------------------- Straight
[4-5] ---- <6 --------------- Right
>=6 -------------- Stay
>5 ------- <6 --------------- Right
>=6 -------------- Stay