1. 程式人生 > >Dijkstra演算法和A*演算法講解

Dijkstra演算法和A*演算法講解

目前ROS中可以使用的global planner主要包括:A*和Dijkstra。local planner主要有:dwa、trajectory、teb和eband等。目前、teb local planner效果可能會好點。

一、Dijkstra演算法   http://blog.51cto.com/ahalei/1387799

       Dijkstra演算法也即:單源最短路徑 演算法。演算法的基本思想是:每次找到離源點最近的一個頂點,然後以該頂點為中心進行擴充套件,最終得到源點到其餘所有點的最短路徑。

二、A*演算法  

https://blog.csdn.net/denghecsdn/article/details/78778769

      1968年發明的A*演算法就是把啟發式方法(heuristic approaches)如BFS( 廣度優先演算法 Breadth-First Search ),和常規方法如Dijsktra演算法結合在一起的演算法。結合二者的優點,A*能保證找到一條最短路徑。

      A*演算法 :它把Dijkstra演算法(靠近初始點的結點)和BFS演算法(靠近目標點的結點)的資訊塊結合起來。在討論A*的標準術語中,g(n)表示從初始結點到任意結點n的代價,h(n)表示從結點n到目標點的啟發式評估代價(heuristic estimated cost)。當從初始點向目標點移動時,A*權衡這兩者。每次進行主迴圈時,它檢查f(n)最小的結點n,其中f(n) = g(n) + h(n)。

     啟發式函式h(n)告訴A*從任意結點n到目標結點的最小代價評估值。選擇一個好的啟發式函式是重要的。