我们可以使用什么算法在随机生成的长度为10的值数组中找到局部最大值?
我目前的策略是将数组分解为3并找到每个子集数组的最大元素,但不包括所有最大值。
理想情况下,我希望第一个点也被识别为局部最大值,左边的第三个红点不应该被标记为。
答案 0 :(得分:8)
只需浏览所有索引并将该元素与两侧的两个元素进行比较,跳过检查是否在边缘。
的伪代码:
for each index
if (index == 0 or array[index-1] < array[index])
and (index == array.length-1 or array[index+1] < array[index])
{
store index
}
答案 1 :(得分:2)
要查找本地最大值,通常可以使用hill climbing。另外,您可以通过应用simulated annealing来改善它,以避免在本地最大值停止而不是在它之后的最大值。