• 沒有找到結果。

最短路徑演算法在汽車導航上之應用

最短路徑演算法顧名思義是尋找路徑上的最短值,但其運用卻非僅能用於路徑上 取其最短者。為了必免誤會,許多人將最短路徑的說法改為最小成本,在進行最短路 徑計算之前,必須先建立成本矩陣,用以儲存道路路徑之成本。這些成本可考量路徑 長度、道路寬度、道路速限、紅綠燈多寡甚至駕駛人行為等因素,並對各項因素付予 不同權值,以綜合計算一個符合現時狀況之路徑成本值。唯本系統之路段物件,目前 僅建立路徑長度資料,故其路徑成本即為路徑長度,因本系統之路段是以物件方式建 立,未來僅需在路段類別內加入其他屬性值,再以合理的成本函式計算路段總成本,

代入成本矩陣即可依此成本值,計算符合實際狀況的最佳路徑。有關成本矩陣儲存方 式如圖 7.7 所示,其中各節點間如果沒有路徑直接到達,則在成本矩陣中設為無限大

(∞),另圖點 A 到 B 及圖點 C 到 E 為單向路徑,其在成本矩陣中逆方向之位置亦設 為無限大,以此方式即可解決交通路徑中單行道的問題。如此運用就廣泛了,而最小 成本可以是許多參數,加上不同的權值所做之組合。如用於道路行駛上,若僅考量道 路長度,則所得出的是最短路徑,若僅考量行駛時間,則所得出的是最短時間路徑。

而如何選取道路屬性項目及付予何種權值,以建立一個合理的計算模式,將是另一門 高深的技術與藝術。另外由於道路節點數量龐大,再加上道路屬性繁多、計算模式繁 雜等,相對的顯現出最短路徑演算法的重要,為了縮短最短路徑演算時間,不少學者

也進行運用平行演算法來解決最短路徑的問題。而目前工作站級的電腦,甚至個人電 腦也漸漸朝向多處理器的系統發展,所以未來汽車導航系統內,所用以計算最佳路徑 的演算法,將會是平行演算法的天下。

5

2 1 3 4 8

A B C D E













0 3

3 0

5

8 0

1 4

5 1

0

4 2

0

E D C B A

圖 7.7 成本矩陣儲存格式示意圖 A

B

D

E C

Dijkstra's 演算法,是求得某點到其他所有點的最短路徑,而非所有點到所有 點的最短路徑。在本系統的實作中,則建立一個迴圈重複執行 Dijkstra's 演算法,

以求得所有點到所有點的最短路徑,並儲存運算結果,以利在點選最短路徑之起訖點 後,可直接讀取運算結果,並將最短路徑繪製出來。圖 7.8、7.9、7.10 是以新竹市 為例,一開始我們輸入起點與所要到達的終點路名,系統就會幫我們找出到達的最短 路徑,並描繪在地圖上,讓我們可以輕而易舉的獲知該如何到達目的地。本系統在計 算最短路徑時尚未加入即時的路況資訊,因此未來可以結合無線網路,擷取目前各項 擁塞路段之代碼,並在成本矩陣中,將擁塞路段之相對位置設為無限大(設定為沒有 通路 ),再經過重新計算最短路徑,即可求得避開擁塞路段之最佳路徑。

圖 7.8 最短路徑輸入圖控介面

圖 7.9 最短路徑搜尋結果

圖 7.10 最短路徑顯示在地圖上