Поиск с помощью золотого сечения
Поиск с помощью золотого сечения (Golden section search) - это улучшение наивной реализации троичного поиска, служащий для поиска минимума/максимума функции. При простом троичном поиске на каждой итерации функция вычисляется в двух точках. Метод же золотого сечения требует вычисления лишь в одной точке (за исключением первой итерации). За счет этого достигается выйгрыш в производительности.
Алгоритм
Рассмотрим одну итерацию алгоритма троичного поиска. Попробуем подобрать такое разбиение отрезка на три части, чтобы на следующей итерации одна из точек нового разбиения совпала с одной из точек текущего разбиения. Тогда в следующий раз не придется считать функцию в двух точках, так как в одной она уже была посчитана.
Точки
и разбивают отрезок на три части. Потребуем, чтобы одновременно выполнялось:
Где
- это некоторое отношение, в котором делим отрезок (точки и разбивают отрезок симметрично).Тогда:
, откуда получаем (тот корень уравнения, который меньше нуля, по понятным причнам отбросили)
Это число совпадает с золотым сечением. Отсюда название метода.
Формально для поиска минимума (для максимума - делается аналогично) функции :
- Шаг 1:
- Определяем границы поиска и , затем устанавливаем текущее разбиение:
- и вычислем функцию на них:
- Шаг 2:
- если
- Шаг 3: