漫步最优化二十四——二分搜索

来源:互联网 发布:水杉软件下载 编辑:程序博客网 时间:2024/05/29 10:37












——

考虑一个单峰函数,在区间[xL,xU]内有最小值,这个区间称为不确定范围,通过不断缩小这个不确定范围可以得出f(x)的最小值x。在搜索方法中,使用f(x)在合适点处的值就能确定出来。

如果f(x)在点xa处的值是已知的,其中xL<xa<xU,那么点x可能在xLxa之间,或者xaxU之间,如图1所示,因此获得信息不足以进一步缩小不确定范围。然而,如果我们知道f(x)在两个点xa,xb处的值,那就可以缩小了,这时候会有三种情况:

  • f(xa)<f(xb)
  • f(xa)>f(xb)
  • f(xa)=f(xb)

对于第一种情况,x的范围可能是xL<x<xa或者xa<x<xb,即xL<x<xb,如图1所示。xb<x<xU的情况被排除了,否则的话f(x)会有两个极小值:一个在xb的左边,一个在xb的右边。同样的,对于第二种情况,我们肯定有xa<x<xU,如图2所示。对于第三种情况,我们有xa<x<xb,即不等式xL<x<xbxa<x<xU都满足,如图3所示。


这里写图片描述
图1


这里写图片描述
图2

一种缩小不确定范围的基本策略是二分搜索。对于这个方法,首先计算f(x)在两点xa=x1ε/2xb=x1+ε/2的值,其中ε是很小的正数,然后根据f(xa)<f(xb)还是f(xa)>f(xb),判断范围是xLx1+ε/2还是x1ε/2xU,如果f(xa)=f(xb),那么两者都可以。假设x1xL=xUx1,即x1=(xL+xU)/2,那么不确定范围立刻减半,不断重复这个过程直到满足要求为止。例如,如果二分查找应用到图4所示的函数上,那么不确定范围在四次迭代后从0<x<1减小到9/16+ε/2<x<5/8ε/2

这里写图片描述
图3


这里写图片描述
图4

原创粉丝点击