【发布时间】:2011-10-04 06:48:26
【问题描述】:
在过去的几天里,我一直在思考这个问题,但没有找到最佳解决方案,因此提出了这个问题。
假设我们有一组 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) 这样的输入并返回正确的操作。 到目前为止,我唯一的想法是划分变量空间并查看输入状态适合的位置,但这似乎是一个缓慢的解决方案:有人知道可能更快的方法吗?
【问题讨论】:
-
问题定义似乎不太清楚。例如,如果
V_1 == 3它符合两条规则,Turn left和Continue straight,这两个规则似乎相互矛盾。 -
对不起,我写的很快,我搞砸了那个规则。我会在一秒钟内更正它。
-
变量空间有多大?
-
这主要取决于用户,但我认为 10 个变量是一个很好的近似值。 “最小”变量可以取 5 个值, 52x52 空间的随机子集越宽。
-
规则是否总是对单个变量不等式或对多个变量等式,或者您可以有任意线性约束?甚至是非线性的?