我了解到,可以通过三元搜索来找到单峰函数的最小值/最大值,这是一种及时运行的算法(给定搜索范围的大小在O(logN)
哪里)。N
然而,我最近想到也许我们也可以通过二分搜索来找到单峰函数的最大值/最小值。具体来说,对于具有确定最大值的函数,我们可以找到并返回第一个 x 值f(x) >= f(x+Epsilon)
(其中 Epsilon 是允许的误差界限)。另一方面,对于具有确定最小值的函数,我们可以找到并返回第一个 x 值,使得f(x) <= f(x+Epsilon)
.
总的来说,我的问题是,如果二进制搜索可以完成相同的应用程序,为什么要在此搜索操作中使用三元搜索?我在这里遗漏了什么,还是我犯了其他一些逻辑错误?