背景
二进制决策树是一个根树,其中每个内部节点(根)由索引标记这样从根到叶子的路径都不会重复索引,叶子用的输出标记,每个边用标记左孩子,用标记右边孩子。要将树应用于输入:0 1 x
- 从根开始
- 如果您在叶子上,则输出叶子标签或并终止乙
- 读取当前节点的标签,如果则移至左子级;如果则移至右子级。x j = 0 x j = 1
- 跳至步骤(2)
将树用作评估函数的一种方式,特别是如果对每个我们有则树表示总函数。树的查询复杂度是其深度,函数的查询复杂度是表示该树的最小树的深度。˚F X ∈ { 0 ,1 } Ñ Ť (X )= ˚F (X )
问题
给定二元决策树T,输出最小深度的二元决策树T',使得T和T'表示相同的函数。
题
最知名的算法是什么?是否知道下界?如果我们知道怎么办?如果我们仅要求具有大约最小深度该怎么办?T '
天真的方法
给出的幼稚方法,以递归枚举深度为所有二进制决策树,同时测试它们是否与T评估相同。这似乎需要O (d 2 n n !d − 1步骤(假设花费步骤检查任意x的计算结果)。有没有更好的方法?
动机
这个问题是由先前在查询复杂度和时间复杂度之间进行权衡取舍的问题引起的。特别是,目标是限制所有功能的时间间隔。我们可以从运行时间为t的时间最优算法中生成树,然后将其转换为查询最优算法的树T '。不幸的是,如果牛逼∈ Ø (ñ !/(ñ - d )!)(通常d ∈ Θ (ñ ))的瓶颈在于转化。如果可以替换,那就太好了!/(n - d )!大约2 d。