我們可以使用什麼算法來找到隨機生成的長度爲10的值數組中的局部最大值?找到值序列中的局部最大值
我目前的策略是打破數組爲3,並找到每個子集數組的最大元素,但不包括所有的最大值。
理想情況下,我想第一點也被確定爲局部最大值,並且左三紅不應該被標註。
我們可以使用什麼算法來找到隨機生成的長度爲10的值數組中的局部最大值?找到值序列中的局部最大值
我目前的策略是打破數組爲3,並找到每個子集數組的最大元素,但不包括所有的最大值。
理想情況下,我想第一點也被確定爲局部最大值,並且左三紅不應該被標註。
只需遍歷所有索引並將該元素與任一側的兩個元素進行比較,跳過檢查它是否位於邊緣。
僞代碼:
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
}
哥們你的答案是簡單化的人格化。非常感謝。 –
要查找本地最大值,通常可以使用hill climbing。此外,您可以通過應用simulated annealing來避免停在局部最大值而不是最大值之後。
我將在現實生活中使用它,所以問題是它是否可以優化到那個水平? –
這不僅僅是爲了找到全球最大值嗎?它通過達到本地最大值,然後在其他地方隨機重新啓動。 OP想要找到所有本地最大值。 – rafalio
@rafalio不是所有爬山都傾向於找到局部最大值,並採用特殊的啓發式方法避免停在局部最大值處。然而,該算法不能保證將找到哪個最大值。 –
其實我填寫三個組的陣列,並找到其中最大的。 –
您可以在logn時間內找到任何本地最大值。你爲什麼要找左邊的第一個和第三個? –