A 演算法介紹

2021-09-23 14:27:50 字數 816 閱讀 5617

不得不嘆服,強大演算法背後,都是簡單得不能再簡單的邏輯。普林斯頓的演算法課程作業裡,要讓用a*演算法。什麼都沒接觸到過,看到後有種想哭的感覺!於是網上查閱資料,漸漸的明白了怎麼回事。

通過對a*演算法的學習的個人感悟:計算乙個代價函式,評估每一步的代價,並找到代價最小的方向。最終得到的解可能不是最優,但每一步都是最佳的策略,總是會非常接近最優解。即常見尋優演算法中,全域性最優和區域性最優之間的抉擇問題。

有的文章寫得很透徹,看一遍就能讓你理解——今後繼續向著這個方向去努力,不光自己懂了,還能讓其他人明白。

a*演算法,又稱為啟發式搜尋。

假設情況如下有乙個當前狀態s,期望的目標狀態d。我們要做的就是找到從s->d的最佳路徑。那麼如何破案呢?

搜尋策略簡單得不能再簡單,分為兩步走:

判斷從s邁出一步的代價,記為g

從s的某部位到d需要直接步數,記為h

計算並儲存各個方向上的f=g+h值,找到f最小的即可。其中當h=0時,為dijkstra演算法(權值為正);

具體計算g和h的方法有很多種。其中,計算h的常見的評估函式有——歐幾里得距離、曼哈頓距離、切比雪夫距離等;

a*演算法固然強大,但有一定的約束條件,一種具有f=g+h策略的啟發式演算法能成為a*演算法的充分條件是:

1、搜尋樹上存在著從起始點到終了點的最優路徑。

2、問題域是有限的。

3、所有結點的子結點的搜尋代價值》0。

4、h(n)=

從圖中綠點a,到紅點b的最優路徑搜尋就可以使用a*演算法。——>見參考的csdn

1. a星演算法詳解(個人認為最詳細,最通俗易懂的乙個版本)

2. a*搜尋演算法

A 演算法介紹

參考 在最短路徑演算法中 dijkstra演算法 每次貪心選擇當前更新的點中距離最近的進行更新。貪心演算法 每次選擇離終點評估最近的點進行更新 a 演算法 綜合了dijkstra和貪心,相當於即考慮了起點到此點的距離,又評估了此點到終點的距離。a 演算法通過下面這個函式來計算每個節點的優先順序。其中...

雜湊演算法 介紹

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

ECC演算法介紹

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