【发布时间】:2021-02-26 00:22:33
【问题描述】:
我了解到可以使用ternary search 找到单峰函数的最小值/最大值,这是一种在O(logN) 时间内运行的算法(其中N 是给定搜索范围的大小)。
但是,我最近想到也许我们也可以通过二分搜索来找到单峰函数的最大值/最小值。具体来说,对于具有确定最大值的函数,我们可以找到并返回f(x) >= f(x+Epsilon) 的第一个 x 值(其中 Epsilon 是允许的错误界限)。另一方面,对于具有明确最小值的函数,我们可以找到并返回第一个 x 值,使得 f(x) <= f(x+Epsilon)。
总的来说,我的问题是,如果二进制搜索可以完成相同的应用程序,为什么要在此搜索操作中使用三元搜索?我在这里遗漏了什么,还是我犯了其他一些逻辑错误?
【问题讨论】:
标签: algorithm search binary ternary-search