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

2021-06-22 18:43:57 字數 925 閱讀 4049

今天做題遇到了乙個演算法題目,「請描述意思下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*

演算法都是參照乙個國外的人寫得,並且引用了裡面的和**,說明這個演算法學習難度還是有點大。只能說他是路徑搜尋演算法中最優的,非常有用。在遊戲中經常可以看到。

什麼是演算法

演算法 algorithm 是指解題方 而完整的描述,是一系列解決問題的清晰指令,演算法代表著用系統的方法描述解決問題的策略機制。演算法的有窮性是指演算法必須能在執行有限個步驟之後終止 演算法的每一步驟必須有確切的定義 乙個演算法有 0 個或多個輸入,以刻畫運算物件的初始情況,所謂 0 個輸入是指演...

演算法入門 什麼是演算法

而對於這些特殊的需求,於是在這行業 現了新的一批人,他們負責設計解決各種問題的演算法。不過也正所謂沒有最好用的,只有最合適的方案,不同的演算法能夠適配的是不同的環境,就好比不同的場景也要使用不同的服務架構模式。所以演算法是什麼,答案已經出來了 演算法就是對問題一系列的分析得出的資料進行數學建模,用程...

什麼是好的演算法?

衡量兩個演算法誰好誰壞,我們有兩個指標。空間複雜度 s n 就是 space。時間複雜度 t n 也就是 time 的縮寫。為什麼要把它們寫成是乙個關於 n 的函式呢?因為這兩個指標其實和我們要處理的資料的規模,是直接相關的。舉個例子說 我如果要你列印十個整數,你的程式可能瞬間就給出結果了。如果我讓...