3

在过去的几天里,我一直在考虑这个问题,但没有找到最佳解决方案,因此提出了这个问题。

假设我们有一组 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) 这样的输入并返回正确的操作。到目前为止,我唯一的想法是划分变量空间并查看输入状态适合的位置,但这似乎是一个缓慢的解决方案:有人知道可能更快的东西吗?

4

1 回答 1

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
于 2011-07-13T09:17:37.167 回答