Провёл опрос среди коллег и учеников. Посмеялся.
Часто, рассказывая о бинарном поиске (дихотомии) авторы, преподаватели, учителя, менторы и тьюторы упоминают что существует вариант при котором отрезок поиска делится не пополам а в отношении "золотого сечения". Правда не припомню, чтобы они объясняли в каких случаях и зачем это нужно.
А вы знаете?
Можете просто ответить - знаете или нет. Объяснение я хотел под катом привести, но он как-то не очень работает.
Однако если вы не знаете объяснения - попробуйте догадаться. Пожалуй стоит намекнуть что область применения - поиск не по массиву значений (вспомните когда ещё нужен двоичный поиск).
Хотя тернарный поиск при делении на 3 очевидно не даёт выигрыша в количестве вычислений функции.
Тернарный поиск применяется для нахождение экстремума в унимодальной функции (имеющей ровно 1 максимум/минимум).
Но часто бывает так, что функция задана в виде, не предполагающем дифференцирования, или просто продифференцировать сложнее, чем сделать тернарный поиск.
Одна из фишек нормально написанного "золотого сечения" это то, что на каждом шаге выполняется только одно вычисление функции, вместо двух (как в тернарном поиске (хотя у нас в ВУЗе препод его называл двоичным)). И сходится он чуток быстрее.
Но у него есть недостаток - у него может слишком быстро расти погрешность из-за того, что в вычислениях используется вычисление квадратного корня.
В общем делая лабы по этим алгоритмам я для себя решил, что "зотолое сечение" нафиг не сдалось.
2.162.37,если я ничего не перепуталтаки перепутал.Откуда взялось число 2.16? :)
Почему не 1.1868...?
Мне почему-то кажется, что сходится он в раза быстрее.
Соответственно, в ≈ 2.3736 раза меньше вычислений.
И обратим внимание что мы точку находим без вычисления квадратного корня вообще! Просто как отношение!
Для олимпиады имело бы смысл, ха-ха, составить задачу так чтобы медленные поиски вылетали по TLE...
А спойлеров здесь пока ещё нет. Кстати, кто хочет их - согласитесь с идеей пожалуйста.
UPD. Интересно, что в этом сообщении не понравилось.
-->Суперсекретный текст<--
-->Супер-пупер секретный текст<--
Вот это прикольно!
А --> <-- в теле поста не использовать никак - видимо только как автор этого поста - в первом сообщении после темы.