以下是類CArcLink設計的主要屬性。
Class CArcLink
{int Impedance ; //轉向阻抗,如耗費時間等//例如30s
bool Enabled ; //是否能夠轉向,如路口分時段禁行,可設置此開關變量//例如1
CNode* pNode ; //兩弧段之間的節點指針//例如節點1
CArc* pNextArc ; //所連的弧段(出)指針//例如弧段11
};
弧段1可以轉向至弧段6、7和11,但是不可以轉向至弧段12。
2.2 關於本文算法實現的幾點說明
關於要實現本文算法的幾點說明如下:
(1)根據起始點坐標確定起始弧段。在最短路徑搜索過程中,定義沿著起點到終點的方向為空間有效方向,相反的方向為空間無效方向。在實際應用中,由於受客觀因素的限製,可能需要在無效方向上的一定距離內搜索,因此一般情況下,如果起始路徑是雙向的,則起始弧段有兩條,設為S1和S2,一並初始化。
(2)本文從減少計算最短路徑時的路徑轉向判斷以及降低內存耗費考慮,取消轉向表,單獨設置一個時態參數表,根據實測的交通量可將一天24小時劃分為若幹離散時段,各時段不一定等長,以及劃分的時段密度也可以不一致,利用定時器根據預先定義的時段來設置類CArc和類CArcLink的與時態有關的屬性,實現靜態觸發修改(經驗值修改)。也可以根據實測值或者人工智能推理預測值動態實時觸發修改。
(3)查找最短路徑和查找最小時間耗費的問題在理論上是等價的。查找最小時間耗費,除了要加上弧段的權值(該路段上耗費的時間),還要加上弧段之間的轉向阻抗(轉向耗費時間),即在改進算法的第(3)步,把dj=di+lij修改為dj=di+lij+Iij,其中Iij是從弧段i到弧段j的轉向阻抗。
3 結 語
本文在分析總結Dijkstra算法的基礎上,對此算法進行了改進,提出了一個新的最短路徑快速實現算法,使時間複雜度由O(n2)降低到O(n)。在算法的實現上,提出了一種區別於傳統方法的弧段—弧段存儲結構,使路徑之間的關係更加清晰直接;把路徑與時態有關的屬性信息分開存儲,並通過觸發器來修改屬性,提高了算法的實現效率,減小了執行算法所需的運行空間。本文提出的快速實現算法已成功的應用於上海黃頁基於掌上電腦的電子地圖的最短路徑實現中,取得了令人滿意的效果。
參考文獻
[1] R.K.Ahuja,K.Mehhorn,J.B.Orlin. Faster Algorithms for the Shorest Path Problem. Technical Report[J]. CS-TR-154—88,Department of Computer Science,Princeton University,1988.
[2] D.P.Bertsekas. The Auction Algorithm for Shortest Path SIAM J[J].Opt., 1991(1):425-447.
[3] A.V.Goldberg. Scaling Algorithms for the Shortest Paths Problem[J]. In Proc. 4nd ACM-SIAM Symposium on Discrete Algorithms,Pages 1993:222-231.
[4]樂陽. Dijkstra最短路徑算法的一種高效率實現[J]. 武漢測繪科技大學學報,1999,24(3):209-211.
[5] 韓俊卿.基於GIS的城市道路網最短路徑算法探討[J]. 科技傳播, 2010(8): 110-111.
[6] 徐業昌, 李樹祥, 朱建民,等. 基於地理信息係統的最短路徑搜索算法[J]. 中國圖象圖形學報,1998(1): 43-47.
[7] 陸鋒, 盧冬梅, 崔偉宏. 交通網絡限製搜索區域時間最短路徑算法[J]. 中國圖象圖形學報, 1999(10):47-51.
[8] 陳述彭. 城市化與城市地理信息係統[M].北京:科學出版社,1999.