1. 程式人生 > >什麼是hill-climbing演算法??

什麼是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)、山脊:搜尋可能會在山脊的兩面來回震盪,前進步伐很小。
---------------------