【问题标题】:Why is ternary search used to find the max/min of an unimodal function?为什么使用三元搜索来查找单峰函数的最大值/最小值?
【发布时间】: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


    【解决方案1】:

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

    这里有一个resource,可以帮助你详细了解。

    【讨论】:

      【解决方案2】:

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

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

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

      但答案是x = 0

      【讨论】:

      • 如果Epsilon 是允许的错误界限,那么-1 的答案在这种情况下是否可以接受,因为它距离真正的正确答案小于2,即@ 987654330@?
      • @Telescope OP 在问题描述中声明:“我们可以通过二分搜索来完成找到单峰函数的最大值/最小值。”您的建议不是“最大/最小”。
      猜你喜欢
      • 2013-09-28
      • 2021-01-24
      • 2012-11-21
      • 1970-01-01
      • 1970-01-01
      • 2018-10-26
      • 1970-01-01
      • 2016-01-14
      相关资源
      最近更新 更多