使用红黑树进行非线性优化

时间:2014-06-28 12:41:03

标签: optimization data-structures red-black-tree

假设我们有有限的数据集{x_i, y_i}

我正在寻找一个有效的数据集数据结构,以便给定ab,可以有效地找到xy这样x > ay > bx*y是最小的。

可以用红黑树完成吗?

我们可以用复杂度O(log n)来做吗?

1 个答案:

答案 0 :(得分:0)

好吧,没有预处理步骤,当然你不能在O(log n)中使用任何数据结构,因为没有足够的时间来查看所有数据。所以我假设你的意思是“经过预处理”。

红黑树用于单维排序,因此在这里不太可能有太多帮助。我希望kD树在这里运行良好,使用最近邻居式查询:您执行树的深度优先遍历,跳过其边界矩形违反x和y条件或不能包含较低产品的分支比已经找到的最低允许产品。为了进一步加快速度,kD树中的每个节点还可以在其任何后代中保持最低的产品;直观地说,我希望能够获得实际的好处,但不能改善最坏情况下的时间复杂度。

顺便提一下,红黑树通常不适用于预处理数据。它们专为高效的动态更新而设计,当然,您不会在每个查询的基础上进行更新。它们提供与其他排序树相同的渐近深度保证,但具有更高的常数因子。