单调布尔函数中的有效搜索策略,其中解决方案位置的概率是先验已知的

计算科学 优化 算法 计算几何 搜索
2021-12-28 17:31:20

布尔值单调函数在正整数集合中定义,Z.

f(n)={0,nminn<n1,nnnmax;nZ

目标是寻找n. 界限nminnmax是先验已知的。

的一个显着属性n是它有更高的概率位于周围的区域n^(已知的先验)。确切的概率分布,虽然未知,(可能无关紧要)可以被认为是连续的 CDF,具有更高的权重因子n^

我已经实现了一个简单的二进制搜索,但我正在寻找更有效的解决方案,以某种方式解释给定的概率信息(即n集中在周围n^),我正在寻找一种有效的算法来找到n. 不失准确性。

我知道二进制搜索是最坏的情况O(log n), 但f(n)计算量如此之大,以至于我连这个都买不起。

1个回答

由于您的函数没有导数,因此您无法在某种渐近意义上击败二分搜索。但是您可以尝试为二分搜索找到好的起点。

例如,找到x0以便F(x0)=12-- 即最可能的切换点。那么,如果f(x0)=0, 采用x0作为二分搜索起始区间的左端点;否则,将其用作正确的起点。在任何情况下,x0很可能接近最终解决方案。

对于间隔的另一个起点,让我们假设您有f(x0)=1-- 即,我们正在寻找一个左端点a0区间的,与b0=x0是正确的。试一下,例如,α作为一个标准偏差的点b0,即选择α以便F(α)=(10.95)=0.05. 如果确实f(α)=0,然后设置a0=α你知道切换点在区间内[a0,b0]. 另一方面,如果f(α)=1,那么切换点实际上是在左边α,你会设置b0=α然后再试一次α以便F(α)=(10.95)2=0.052. 然后重复直到你最终有一个起始间隔f(a0)f(b0). 有了这个,你就可以开始你的二分搜索了。