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








滿



——

考慮一個單峯函數,在區間[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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章