在高维空间中以最优方式计算成本

Posted

技术标签:

【中文标题】在高维空间中以最优方式计算成本【英文标题】:computing cost in optimum way in high dimensional space 【发布时间】:2014-06-24 17:44:03 【问题描述】:

如果函数值沿所有维度单调非递减,如何以最优方式在高维空间上找到相等函数值的轮廓。

【问题讨论】:

【参考方案1】:

由于您的函数在 X 和 Y 中都是单调的,因此可以直接找到轮廓。让我们找到 f(x,y)-K = 0 的解。

步骤 1. 计算四个角的函数。这将告诉您轮廓相交的边缘。

第 2 步。选择具有解决方案的边之一。使用细分算法在该边上找到解决方案。首先找到中点并计算那里的值。这将边缘一分为二,恰好一个将有符号更改,选择该边缘并重复。这个过程将在边缘提供独特的解决方案。

第 3 步。从终点开始使用零跟随技术。我们从一个正方形开始,一个边有解,两个角有已知值。评估其他两个角的功能。比较标志并找到具有解决方案的另一边。获取相邻的正方形并重复。

这将遵循曲线,直到我们到达边界上的另一个解决方案。单调意味着没有棘手的情况需要处理。


关于第 3 步的更多信息:我们有一个包含两个已知点的矩形

+ ____ -
|      |
|      |
? ____ ?

有三种可能

+ ____ -
|      |
|      |    take the right hand side
+ ____ +

+ ____ -
|      |    take the bottom side
|      |
+ ____ -

+ ____ -
|      |
|      |    take the left hand side
- ____ -

一个选项不能出现,因为函数是单调的

+ ____ -
|      |     impossible
|      |   
- ____ +

【讨论】:

是的,我的意思是与我们当前所在的方格相邻的直接方格。重复此过程将一次跟随一个正方形的曲线。您可以显示此过程将返回起点或到达边界。如果您需要一组等高线,只需使用不同的 K 值重复即可。您可以将计算值存储在某些数据结构中,以节省重新计算函数的麻烦。 缺乏单调性会使事情变得非常复杂。现在可能会发生上述不可能的情况,因此您可以获得轮廓上的交叉点。更糟糕的是,你会得到不跨越边界的小闭环。你对肿块有什么了解吗?如果您可以对凹凸的大小进行一些限制,那么您可以排除域的某些部分。如果说函数的变化不超过a 超过一个正方形的大小,这意味着一个角大于2a 的正方形不能包含轮廓。 感谢 Salix alba。我对颠簸没有任何具体的界限。但在空间的某些位置单调性并不均匀。我可以同意轮廓中存在一定程度的误差,但检查的点数必须最少。【参考方案2】:

如果您在正方形的四个角处评估函数,四个值将告诉您正方形是否与 iso-K 曲线相交。

现在将正方形细分为四个子正方形,并检查新角处的函数值(这需要 5 次函数评估)。由于单调性,您可以确保至少有一个正方形可以被丢弃。

如果递归地继续这个过程,每个阶段的点数至少减少 25%,32 个阶段就足以从 10000 减少到 1(0.75^32 = 0.000100...),总共需要不超过 32 x 5 = 160 次函数评估。

【讨论】:

以上是关于在高维空间中以最优方式计算成本的主要内容,如果未能解决你的问题,请参考以下文章

关于代理模型的一些理解

支持向量机-- 核函数

阿里云万郁香:多样付费选择构筑成本最优的弹性体验

以最优方式在二叉搜索树中找到第 k 个最小元素

如何以最优方式移动大型阵列 n 发生次数

如何在 Rust 中以最惯用的方式将 Option<&T> 转换为 Option<T>?