標籤:pdf hive 無法 提前 根據 運用 csdn 語言 神經網路
5 導航/路徑規劃
智能手機的定位和導航功能:
1、利用衛星定位;
2、地址的識別;
3、根據使用者輸入的起點和終點,在地圖上規劃最短路線和最快路線。
5.1衛星定位
5.2地址分析和有限狀態機器
地址的描述雖然看上去簡單,但是他依然是比較複雜的上下文有關的文法。有許多識別和分析的方法,最有效是有限狀態機器。
有限狀態機器是一個特殊的有向圖,它包括一些狀態(節點)和串連這些狀態的有向弧。所示是一個識別中國地址的有限狀態機器的簡單例子。
每一個有限狀態機器都有一個開始狀態和一個終止狀態,以及若干中間狀態。每一條弧上帶有從一個狀態進入下一個狀態的條件。如果一條地址能從狀態機器的開始狀態經過狀態機器的若干中間狀態,走到終止狀態,則這條地址有效,否則無效。
使用有限狀態機器識別地址,關鍵要解決兩個問題,即通過一些有效地址建立狀態機器,以及給定一個有限狀態機器後,地址字串的匹配演算法。這兩個問題都有現成的方法。
上述方法在實用中會有一些問題:當使用者輸入的地址不太標準或有錯別字時,有限狀態機器會束手無策,因為它只能進行嚴格匹配。
為瞭解決這個問題,我們希望看到可以進行模糊比對,並給出一個字串為正確地址的可能性。為了實現這一目的,科學家們提出了基於機率的有限狀態機器。這種基於機率的有限狀態機器和離散的馬爾可夫鏈基本上等效。
AT&T 的三位科學家編寫成一個通用的基於機率的有限狀態機器 C 語言工具庫,後來開放了原始碼。另外,Google Now 的引擎和 AT&T 的有限狀態機器工具庫從功能上講完全等價。
www.cs.nyu.edu/~mohri/pub/csl01.pdf
5.3全球導航和動態規劃
全球導航的關鍵演算法是動態規划算法。
5.4演算法列舉
感覺DP解路徑規劃問題劃分一直是個大麻煩,相對於經典的路徑規划算法,也沒體現出巨大優勢。
早上在cnki下了一些相關論文(只討論主幹方法,因為學術界喜歡在演算法上做最佳化以及幾種演算法的橋接,比如基於dijkstra與遺傳免疫演算法的XX研究當做為dijkstra)
1.對於靜態路徑規劃,大多採用dijkstra,A,floyd,dp等
2.對於NP難問題,如TSP及變形(物流配送等),則採用遺傳演算法,蟻群演算法,類比退火,神經網路等
問題:
1.在實際的商業應用中,採用的是哪些演算法或者理論呢?
2.路徑規劃是提前規劃好以後儲存(像網頁的索引),還是收到請求後即時規劃的結果?
1、
明確一點,基本的圖搜尋演算法dijkstra是無法滿足互連網地圖檢索即時響應這種效能要求,所以各家公司都有各自的預先處理方法:分層或者預計算。具體採用何種方式,這取決於採取的加速演算法相關。在2008年前後,以KIT(http://algo2.iti.kit.edu/routeplanning.php)為主的研究院產出了多個路徑規劃加速演算法,其中以contraction hierarchies 和 highway hierarchies較出名,加之微軟研究院提出的Customizable Route Planning,與傳統的A-star,基本上支撐了目前工業界地圖產品的路徑規劃服務。
A-star:https://en.wikipedia.org/wiki/A*_search_algorithm
CH:http://algo2.iti.kit.edu/schultes/hwy/contract.pdf
HH:http://algo2.iti.kit.edu/documents/routeplanning/esa06HwyHierarchies.pdf
CRP:http://research.microsoft.com/pubs/145688/crp-sea.pdf
2、
題主提到的那些主要是路徑規劃最基礎的演算法,在實際商業運用中,這些公司會在它們的基礎上作一些改進,下面簡單補充兩點。
由於請求量巨大,一些比較經典的路徑規劃請求(如天安門-鳥巢)就沒有必要再即時規劃,而是直接使用別的使用者請求過的、已經儲存好的規劃結果。(典型的空間換時間,為了使用者的響應速度,google等公司是捨得花這點硬碟錢的)
再考慮一下路徑的最佳化問題。由於現實中的道路情況還要考慮路況、環境等更多的因素,基礎演算法單純基於圖得到的“最優”路徑,往往不一定是使用者最想要的。這時候導航供應商可能會給出一些次優的路徑,加入到檢索結果中,供給使用者選擇。再通過使用者的反饋進行學習,從而得到更加符合使用者需求的路徑規劃結果。一個例子是,google map會同時給出不同的幾條線路,供給使用者選擇,其中包含了路徑最短、轉乘最少等等。還有,google map中得到檢索結果後,使用者可以在地圖上“拖動”路線,以得到更合適的路線,這些使用者“拖動”的資訊,都是會發送到伺服器的
3、
Dijkstra是一種非常經典的方法,這種方法已經很成熟。通過對權值的計算,可以一次性計算出所有出發點到目的地的所有路徑資訊,目前在一個城市裡,基本使用這種方法已經足夠。但是,實現路徑規劃只是基本的,想要將導航做的精確,需要對行駛在路段上的車輛進行統計,故障路段進行判斷,並即時調整路徑。
5.4.1Dijkstra 演算法
http://www.cnblogs.com/biyeymyhjob/archive/2012/07/31/2615833.html
5.4.2A* 演算法
http://blog.csdn.net/zgwangbo/article/details/52078338
http://blog.csdn.net/hitwhylz/article/details/23089415
http://blog.csdn.net/b2b160/article/details/4057781
5.4.3Floyd 演算法
http://developer.51cto.com/art/201403/433874.htm
5.4.4SPFA 演算法
http://www.cnblogs.com/bofengyu/p/5004398.html
演算法系列:導航/路徑規划算法