优化二维搜索

时间:2015-06-16 19:40:17

标签: search math optimization 2d

假设我们有两个正整数变量:

x = [1, W]
y = [1, H]

功能:

F(x, y)

任务是找到 x y ,它给出了函数的最大输出值(在范围内)。

F 功能的一部分已知为区域

F(x, y) = (x * y) * T(x, y)

现在另一个函数 T(x,y)有一些有趣的属性:

T(x + c, y) <= T(x, y)
T(x, y + c) <= T(x, y)

其中 c 是任何大于零的正整数(间接使 T(x + c,y + d)为真,其中 d 具有与 c )相同的约束。

通过测试所有可能的 x / y 组合,可以轻松找到可行的解决方案,但复杂性为 O(W * H)

有没有办法利用上述属性来降低复杂性?

2D或类似二元搜索等价的东西?

以某种方式走边界?

你们中任何一个聪明的人都有任何有趣的想法或指示吗?

T(x,y)的输出示例:

9 7 7 4 2
8 7 6 4 2
8 7 5 4 1
6 5 3 3 0
3 3 2 1 0

在此示例中, x = 4 y = 3 给出最大值: 4 * 3 * T(4,3)< / strong> = 4 * 3 * 4 = 48

1 个答案:

答案 0 :(得分:0)

R(x,y)成为满足

的函数

R(x,y) >= 1

以及以下Lipschitz条件:适用于(x,y)中的所有[1,W]x[1,H]

  • |R(x,y)-R(x+1,y)| <= 0.5 * 1/(W*H)^2

  • |R(x,y+1)-R(x,y)| <= 0.5 * 1/(W*H)^2

然后,这是一个简单的微积分练习,表明R(x,y)/(x*y)xy的递减函数。

因此,我们可以通过T(x,y) = R(x,y)/(x*y)提出您的问题。我们得到F(x,y) = R(x,y)的最大化问题。由于没有快速获取Lipschitz连续函数的最大方法,因此您的问题并不能承认比穷举搜索更好的解决方案。