什麼是hill-climbing演算法??
簡介爬山演算法是一種區域性擇優的方法,採用啟發式方法,是對深度優先搜尋的一種改進,它利用反饋資訊幫助生成解的決策。 屬於人工智慧演算法的一種。
演算法:
function HILL-CLIMBING(problem) returns a state that is a local maximum
inputs: problem, a problem
local variables: current, a node
neighbor, a node
current <- MAKE-NODE(INITIAL-STATE[problem])
loop do
neighbor <- a highest-valued successor of current
if VALUE[neighbor]<= VALUE[current] then return STATE[current]
current <- neighbor
演算法解釋:
從當前的節點開始,和周圍的鄰居節點的值進行比較。 如果當前節點是最大的,那麼返回當前節點,作為最大值 (既山峰最高點);反之就用最高的鄰居節點來,替換當前節點,從而實現向山峰的高處攀爬的目的。如此迴圈直到達到最高點。
演算法優缺點
優點
避免遍歷,通過啟發選擇部分節點,從而達到提高效率的目的。
缺點
因為不是全面搜尋,所以結果可能不是最佳。
爬山演算法一般存在以下問題:
1)、區域性最大:某個節點比周圍任何一個鄰居都高,但是它卻不是整個問題的最高點。
2)、高地:也稱為平頂,搜尋一旦到達高地,就無法確定搜尋最佳方向,會產生隨機走動,使得搜尋效率降低。
3)、山脊:搜尋可能會在山脊的兩面來回震盪,前進步伐很小。
演算法解釋:
從當前的節點開始,和周圍的鄰居節點的值進行比較。 如果當前節點是最大的,那麼返回當前節點,作為最大值 (既山峰最高點);反之就用最高的鄰居節點來,替換當前節點,從而實現向山峰的高處攀爬的目的。如此迴圈直到達到最高點。
演算法優缺點
優點
避免遍歷,通過啟發選擇部分節點,從而達到提高效率的目的。
缺點
因為不是全面搜尋,所以結果可能不是最佳。
爬山演算法一般存在以下問題:
1)、區域性最大:某個節點比周圍任何一個鄰居都高,但是它卻不是整個問題的最高點。
2)、高地:也稱為平頂,搜尋一旦到達高地,就無法確定搜尋最佳方向,會產生隨機走動,使得搜尋效率降低。
3)、山脊:搜尋可能會在山脊的兩面來回震盪,前進步伐很小。
---------------------