A 演算法介紹

2021-10-12 17:45:57 字數 655 閱讀 1855

參考:

在最短路徑演算法中

dijkstra演算法:每次貪心選擇當前更新的點中距離最近的進行更新。

貪心演算法:每次選擇離終點評估最近的點進行更新

a*演算法:綜合了dijkstra和貪心,相當於即考慮了起點到此點的距離,又評估了此點到終點的距離。

a*演算法通過下面這個函式來計算每個節點的優先順序。

其中:

a*演算法在運算過程中,每次從優先佇列中選取f(n)值最小(優先順序最高)的節點作為下乙個待遍歷的節點。

上面已經提到,啟發函式會影響a*演算法的行為。

由上面這些資訊我們可以知道,通過調節啟發函式我們可以控制演算法的速度和精確度。因為在一些情況,我們可能未必需要最短路徑,而是希望能夠盡快找到乙個路徑即可。這也是a*演算法比較靈活的地方。

對於網格形式的圖,有以下這些啟發函式可以使用:

如果圖形中只允許朝上下左右四個方向移動,則可以使用曼哈頓距離(manhattan distance)。

如果圖形中允許朝八個方向移動,則可以使用對角距離。

如果圖形中允許朝任何方向移動,則可以使用歐幾里得距離(euclidean distance)。

容易發現,對於網格圖,h(n)始終小於等於n到終點的代價,故在此a*演算法保證一定能夠找到最短路徑,且比dijkstra優(dijkstra在網格圖中等價於bfs演算法)

A 演算法介紹

不得不嘆服,強大演算法背後,都是簡單得不能再簡單的邏輯。普林斯頓的演算法課程作業裡,要讓用a 演算法。什麼都沒接觸到過,看到後有種想哭的感覺!於是網上查閱資料,漸漸的明白了怎麼回事。通過對a 演算法的學習的個人感悟 計算乙個代價函式,評估每一步的代價,並找到代價最小的方向。最終得到的解可能不是最優,...

雜湊演算法 介紹

1 概念 在資訊保安技術中,經常需要驗證訊息的完整性,雜湊 hash 函式提供了這一服務,它對不同長度的輸入訊息,產生固定長度的輸出。這個固定長度的輸出稱為原輸入訊息的 雜湊 或 訊息摘要 message digest 乙個安全的雜湊函式h必須具有以下屬性 l h能夠應用到大小不一的資料上。2 h能...

ECC演算法介紹

ecc elliptic curves cryptography 加密演算法是一種公鑰加密演算法,與主流的rsa演算法相比,ecc演算法可以使用較短的金鑰達到相同的安全程度。近年來,人們對ecc的認識已經不再處於研究階段,開始逐步進入實際應用,如國家密碼管理局頒布的sm2演算法就是基於ecc演算法的...