Можно ли сделать бинарный поиск путем поиска между неизвестными значениями? - PullRequest
0 голосов
/ 09 мая 2019

У меня есть функция (мы можем назвать ее f (x)), которая даст мне номер. Значение x находится в диапазоне от 0 до 1: f (0) найдет наибольшее число, f (1) - наименьшее. Но я не знаю, даст ли, например, f (0.2) число, отличное от f (0); поэтому я должен провести исследование, чтобы найти все числа с помощью бинарного поиска. Я знаю, что могу выполнять итерацию от x = 0 до x = 1, но я хочу сделать меньше вызовов функций. Вы предлагаете?

Я могу начать с вызова f (0), f (1), f (0.5), а затем f (0.25) или f (0.75) и так далее, и так далее. (Математически я могу делить x бесконечно, здесь я могу выбрать предел точности)

1 Ответ

3 голосов
/ 09 мая 2019

Сначала вы должны быть уверены, что функция монотонна.Если вы не уверены, что вы не можете использовать бинарный поиск.

Во-вторых, определите желаемую точность.
Чем выполните бинарный поиск, пока не будет достигнуто улучшение или пока не будет достигнута желаемая точность.

...