A*演算法及其應用__演算法

來源:互聯網
上載者:User
一.引言 圖論是電腦科學中的一個重要研究工具,它產生於歐拉(Euler)對圖的連通性的研究,但直到本世紀電腦誕生以後才得最迅猛的發展。 圖論中的最短路徑問題在電腦中有著廣泛的應用,例如網路通訊中最短路由的選擇,人工智慧中搜尋演算法的研究等。 本文對幾種常見最短路徑的演算法進行介紹,尤其是在1968年發展起來的A*演算法。 二. 常用演算法簡介 為敘述的方便,本文中假定所有圖均以鄰接矩陣表示,並將圖論中的常用符號列於下: G---------------------無向圖或有向圖 A=[aij]----------------圖G的鄰接矩陣表示 V(G)------------------圖G的頂點數 ε(G)-----------------圖G的邊數。 1. Floyd演算法 這是幾種最短路徑演算法中最簡單的一種,本文不詳細介紹,僅給出演算法描述。 演算法: For k:=1 to n do For i:=1 to n do For j:=1 to n do If A[i,j]+A[k,j] =0將意味著估價函數是有效,反之亦然),常量C為從一個結點到相鄰結點的權的最大改變。同時我們用一些“容器”來儲存估價函數值的子集(這正如o(n)的排序演算法的思想),例如,當有10個“容器”時,堆將平均只包含1/10的估價值。因而這將比用堆更為有效。 4. 估價函數(Heuristic Function) 估價函數的正確選取將直接關係到A*演算法的成功與否,而函數的確定卻與實際情形有著密切的關係。在本文中,僅對網格狀地圖的估價函數作部分討論,而在其它情形中,需要作不同的分析,但至少估價函數應為連續函數。 a. Manhattan Distance 這是一種標準的估價函數, h(A) = 10 * (abs(A.x-goal.x) + abs(A.y-goal.y)) b. Diagonal Distance 如果在地圖上允許作斜線方向的運動,則Mahattan Distance修正為Diagonal Distance h(A) = max(abs(A.x-goal.x), abs(A.y-goal.y)) 5. 估價函數的判優 一般情形下,我們只需對估價函數的值進行比較而取其大者即可,但在幾個結點的估價函數值相同的情形下,我們需要採取一定的策略來決定這幾者誰更優,從而避免對多個點的搜尋。從而如下代碼可實現之: double dx1 = currentX - goalX; double dy1 = currentY - goalY; double dx2 = startX - goalX; double dy2 = startY - goalY; cross = dx1*dy2 - dx2*dy1; if( cross<0 ) cross = -cross; ... add cross*0.001 to the heuristic ... 這段代碼計算始點、當前點和終點的向量積,從而可以判斷這三點是否共線(或近似共線),這樣不同點間即使有微小的差別也會被放大,從而更利於判斷。 6. 改進的A*演算法 a. Beam Search 在A*演算法中需要保留所有的結點,這將使得時間和空間的消耗都很大,而Beam Search方法對結點數作出限期,當結點數過多時,它會將一些不(大)可能為最優的點排除,從而降低時間和空間的要求,但需要說明的是,由於在排除結點後需對結點排序,當排序的工作量大於排除點後所節省的工作量,則該方法無意義。 b. Iterative deepening 這是一種在人工智慧中常使用的方法,它首先產生一近似值,然後對它進行修正而逐步接近最優解。這其實在一種博奕演算法的變形。 c. Dynamic weighting 這種演算法是基於這樣的考慮,即在搜尋初期以速度優先,在搜尋後期以準確度優先(這可通過對搜尋初、後期賦予不同的權值來實現)。即: f(p) = g(p) + w(p) * h(p) d. Bidirectional search 這種演算法從起點和終點同時應用A*演算法,直到有結點相遇。其缺點在於複雜度太大,一般僅用於複雜的圖形。 e. Hierarchical A* 這種演算法思想是將搜尋過程化,對每個簡單過程求解從而得全域較優解。正如當我們到另一城市時,可分解為從家裡“搜尋”一條路徑至車站,再從車站“搜尋”一條路徑到另一城市,當我們從家裡出發時,需要考慮的是怎樣儘快地到達車站,而不是怎樣儘快地到另一城市。 f. Dynamic A*(D*) 這種演算法主要用於人工智慧和機器人技術。由於A*演算法一開始要求獲得全部資訊,而這在實際中有時是不可能的,而D*演算法就是在假定資訊不完整的前提下應用A*演算法,但它會隨著得到資訊的增多而不斷改進結果,這就決定了它對空間的要求相當高,因為它需要保留以前的所有獲得資訊及運算情形。 四. 結論 A*演算法作為解決最優路徑的一種高效演算法,自從1968年誕生以來,得到了廣泛的應用,而其的多種改進演算法也在許多領域發揮著作用。可以預見,在更優的演算法發現以前,A*演算法將會得到更廣泛的應用,並會由於圖論、人工智慧、機器人技術、自動控制等多學科的融合而得到更大的發展。 參考文獻: [ 1 ] 盧開澄、盧華明,圖論及其應用(第二版),北京,清華大學出版社,1982 [ 2 ] Computer Networks(Third Edition),Andrew S. Tanenbaum,Prentice Hall International, Inc.,1998 [ 3 ] Russell & Norvig,AI: A Modern Approach [ 4 ] Ginsberg,Essentials of Artificial Intelligence

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.