【发布时间】:2021-04-03 22:36:21
【问题描述】:
我有一组元组 (a, b) 和 a > 0 和 b > 0。
每个元组代表一个函数f,使得f(x, a, b) = a * min(b, x)。
对于给定的x,是否有已知算法可以找到哪个元组返回最大值?
我不想评估每个函数来检查最大值,因为我会针对不同的x 查询这个数组任意次数。
例子:
array = [ (1, 10), (2, 3) ]
x < 6 -> choose (2, 3)
x = 6 (intersection point) -> either (1, 10) or (2, 3) doesn't matter
x > 6 -> choose (1, 10)
所以问题是这些元组可以按a 或b 排序。但是它们之间可能有很多交叉点(如果我们将它们可视化为图形)。所以我想避免任何 O(n^2) 排序算法来检查x 的某些范围,这是最好的功能。我的意思是我不想将每个函数与所有其他函数进行比较,以找出从哪个点x'(交点)和我应该选择一个而不是另一个。
【问题讨论】:
-
“因为我会查询这个数组任意次数的不同” - 你可以记住结果。
-
f(x) = a * min( b, x )是 实际 函数定义吗? -
f(x)实际上是f( x, a, b ),因为a和b也是参数,即使它们是常量。只是说。如果您使用柯里化,则 @987654338@ 返回一个函数,而不是一个值。 -
@Dai 我编辑了我的帖子并添加了
a和b作为f的参数。 -
参数
a和b的域是什么?总是整数?总是积极的?
标签: algorithm sorting optimization convex-hull convex-optimization