在二维空间中找到两倍最佳位置成本

时间:2015-05-06 18:15:09

标签: c algorithm math geometry

我有一个200维100维的网格。网格中的每个点(x,y)都有相关的成本,并且在整个空间中单调非递减。相关费用事先不知道。

我无法找到所有地点的费用。所以我所做的是找到最顶层的成本(100,100)。称之为成本C.然后在此2d网格上识别精确选择成本值的 iso-cost contours 。设C为成本位置(100,100)。轮廓的成本是经过精心选择的,最后轮廓(轮廓k)将是成本C(网格中的最大成本),轮廓k-1将是成本C / 2,轮廓k-2将像几何系列中的成本C / 4。等成本轮廓以黑色曲线显示。通过首先在左/上边缘定位种子然后沿其邻域探索来识别它们。

现在对于轮廓上的任何位置(x,y),最近轮廓的成本将给出位置成本(x,y)的近似值。也就是说,我们得到的成本值小于位置(x,y)的实际成本的两倍。轮廓上的每个位置(x,y)覆盖其第三象限中的区域。例如,位置M由成本C / 8的轮廓覆盖。 contour diagram 因此,对于任何给定的位置(x,y),我可以通过查看谁是其上方最近的轮廓及其成本来说明成本是多少。这给出了最接近的成本但不是位置(x,y)的确切成本,这足以满足我的需要。但它需要我 a)找到C,C / 2,C / 4到Cmin的完整isocost轮廓。 b)存储所有上述等高轮廓位置,即每个轮廓100个位置。

如何在探索和存储的空间中极少数点,并且仍能实现两倍最优成本的此属性?

注意:需要降低成本计算的位置数量。目前我正在计算所有isocost轮廓位置。 100乘100的分辨率用于解释问题。实际分辨率非常高。

2 个答案:

答案 0 :(得分:0)

您需要测试的最差情况下的位置有一个下限,它与您通过定位等概率轮廓得到的上限相差不远。

想象一下,除了*:

之外的每个值都知道
.  2  .
1  *  2
.  1  .

这个值可能是1或2.(如果这种歧义是可以接受的,那么你可以用2.001替换2.)所以,你需要对它进行抽样。您无法从其他站点的成本中确定价值。

设k = log_2(cost(n,n)/ cost(1,1))。您可以构建一个成本函数,以便在几乎nk个站点(大约k(n-k / 2)),您无法在不对该站点进行采样的情况下将成本确定为2。我将举例说明k = 3。

      8 8 8 8 8 8
    4 * 8 8 8 8 8
  2 * 4 * 8 8 8 8
1 * 2 * 4 * 8 8 8
1 1 * 2 * 4 * 8 8
1 1 1 * 2 * 4 * 8
1 1 1 1 * 2 * 4
1 1 1 1 1 * 2 
1 1 1 1 1 1

因此,您需要测试的网站数量是n>> k的theta(nk)。如果您有成本函数的概率模型,那么平均可以做得更好,而k与n相比较小。

答案 1 :(得分:-1)

即使我不清楚你的意思是“在整个空间中单调地不减少”,我理解这是对两个变量函数的约束最小化。

如果您的意思是成本在x和y方向上都是单调递减的。那就是:

成本(x1,y)< =成本(x2,y)对于任何x1< x2和任何y

成本(x,y1)< =成本(x,y1)对于任何y1< y2和任何x

如果是这种情况,解决方案是(1,1)。

如果我对约束的假设不正确,无论如何,从图中看起来解决方案就在边界上。在这种情况下,您不需要使用任何复杂算法进行约束最小化:只需在两个方向上从(1,1)开始探索边界,增加x并增加y。这从n ^ 2问题转移到n问题。