基本概念
上图表示了算法中找最小值的一个步骤。 的函数值位于垂直坐标轴上,参数x位于水平坐标轴。已经有三个位于函数 上的点的值被计算出来。: , ,和 。可见 小于 和 ,所以很明显的,最小值处于 和 之间。
接下来的步骤是通过计算函数位于另一个点 的值。在最大的区间选择 会更有效率,例如: 和 之间。从图中我们可以看出,如果函数的值落在 的话,最小值落于 和 之间,并且新的一组点将会是 和 和 。然而如果函数的值为 的话,新的一组点将会是 和 和 。因此,无论是哪种情况,我们都可以建立一个新的更狭窄的区间,用于搜索函数的最小值。
点的选择
由图可知,新的区间会介于 和 ,长度为a+c,或者介于 和 ,长度为 。黄金分割搜索要求这些区间是相等的。若不是如此,较宽的区间会被使用很多次,降低了收敛率。为了确保 = + ,算法应确保 = - + 。
然而 的确定仍是一个问题。我们避免了 非常接近 或者 的情况,确保了每一次迭代区间宽度会缩小同样的比例。
为了确保计算 后的值与之间的成比例,假设 的值为 ,且我们新的一组点为 , 和 ,则必须使:
- 。然而,如果 的值为 ,并且我们新的一组点为 , 和 ,则必须使:
- 。结合 = + 可解得
-
而φ就是黄金比例:
-
这就是这个算法被称为黄金分割搜索的原因。
3.终止条件
4.递归算法
5.斐波那契搜索
6.参阅