峰值查找算法如何正常工作?

时间:2016-05-06 19:45:23

标签: algorithm time-complexity

我来自这里:Peak finding algorithm

我还在MIT OCW频道观看了youtube video

根据我的理解,算法是找到一个LOCAL峰值。

该帖子的最高评论称,峰值不一定是全球最大值......但不是全球最大峰值?这种说法不正确吗?

如果我从这个算法开始,则INITIAL中间元素决定找到峰值的方向。另一边的任何峰值(LOCAL或GLOBAL)都将被忽略。

同样在讲座中说,"如果它存在"。那是什么意思?它如何依赖于> =符号?

P.S:指出我错的地方。

2 个答案:

答案 0 :(得分:3)

  

该帖子的最高评论称,峰值不一定是全球最大值......但不是全球最大峰值?这种说法不正确吗?

局部最大值不一定是全局最大值,而全局最大值局部最大值之一。实际上我曾经在一次采访中遇到过这个问题,我的采访者通过画图来帮助我理解这个概念。

enter image description here

请参见此处局部最大值如何也是全局最大值,但还有其他局部峰值不是全局最大值。

  

如果我从这个算法开始,则INITIAL中间元素决定找到峰值的方向。另一边的任何峰值(LOCAL或GLOBAL)都将被忽略。

这是正确的,此算法仅查找局部最大值。任何其他人都被忽略了。

如果你想找到本地最大值的所有然后决定哪一个是全局最大值,你必须迭代并查看每个元素,然后变成一个更简单的O(n)遍历数组。

答案 1 :(得分:0)

该算法不承诺找到最大元素,只是一个峰值,这是一个比其邻居更大的元素,所以:

  

不是全球最大峰值?这种说法不正确吗?

你是对的,全局最大值是一个峰值,但反过来并不总是正确的。

  

INITIAL中间元素决定峰值的找到方式

同样,你是对的,但这正是算法所做的,它承诺找到一个峰值,而不是最大值。如果你想要最大值,迭代所有峰值并找到最大值。