試題中的A*算法,什麼是A*算法??

今天做題遇到了一個算法題目,“請描述意思下A*算法,它是什麼類型的算法??”,當時我看的時候,隱約記得以前好像看過這個算法,因爲印象不是很深刻,就直接寫了深度優先,最短路徑算法。這個寫得不嚴謹,回來之後查了一下A*算法是啥東西。首先第一條出來的是百度百科,A*是一種靜態路由的中求解最有效的算法。我記得以前學習過路由算法就是深度優先,遍歷每個與他連接的節點,取最小權值的節點,把遍歷的節點保存到已經遍歷的對象中或者鏈表中,說明已經標誌過了,然後繼續遍歷未被訪問的對象。今天看了A*算法,也是類似這種型的算法。他的公式表示爲 f(n) = g(n)+h(n);其中f(n)表示從初始節點到目標節點的估價函數,g(n)是實際代價函數,h(n)是到達目標的估價。而廣度優先只有f(n)=g(n)沒有估價,就是沒有方向的意思。A*算法的優異程度取決於這個兩個函數的值,如果估價h(n)取得好,遍歷的節點就減少,那麼計算量就會大大的減少,少走彎路。所以h(n)是關鍵。那h(n)去多少合適呢。在路徑搜索中兩個節點的距離可以通過歐幾里得距離計算的出。這個就要說道啓發式算法,要做到最好,一項工夫可能不能,必須多備技能才行。什麼是啓發算法,我也是第一次聽說的,原諒我算法瞭解的少。不懂就網上查找唄,簡要說明一下什麼啓發式算法。他是爲最優解而提出的,在路徑一樣的情況,在可接受的花費情況下給出可行解,有點類似線性規劃的,最優解,但是是針對數學,我們要做的是遊俠算法,幫助我們的角色hero找到最好的路徑,完成任務。我看了幾個bloger寫得A*算法都是參照一個國外的人寫得,並且引用了裏面的圖片和代碼,說明這個算法學習難度還是有點大。只能說他是路徑搜索算法中最優的,非常有用。在遊戲中經常可以看到。


發佈了46 篇原創文章 · 獲贊 5 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章