2

我了解到,可以通过三元搜索来找到单峰函数的最小值/最大值,这是一种及时运行的算法(给定搜索范围的大小在O(logN)哪里)。N

然而,我最近想到也许我们也可以通过二分搜索来找到单峰函数的最大值/最小值。具体来说,对于具有确定最大值的函数,我们可以找到并返回第一个 x 值f(x) >= f(x+Epsilon)(其中 Epsilon 是允许的误差界限)。另一方面,对于具有确定最小值的函数,我们可以找到并返回第一个 x 值,使得f(x) <= f(x+Epsilon).

总的来说,我的问题是,如果二进制搜索可以完成相同的应用程序,为什么要在此搜索操作中使用三元搜索?我在这里遗漏了什么,还是我犯了其他一些逻辑错误?

4

2 回答 2

0

在某些情况下,二进制搜索不会有帮助,但三元搜索可以产生所需的结果。

这是一个资源,可以帮助您详细了解它。

于 2020-11-14T05:18:45.237 回答
0

f(x) = -x^2 + 3. 让Epsilon = 2.

第一个值为 -1的x值:f(x) >= f(x+Epsilon)

f(-1) = 2 = f(-1 + 2) = f(1) = 2

但答案是x = 0

于 2020-11-15T08:57:01.420 回答