第四章 系統實現與案例展示
4.2 系統實現
本研究是以孤島識別為主,基於 Prim 演算法的基本概念,雖有搜尋最小生 成樹,但是會以實際在識別孤島上做改變。實作的方法為建立一個矩陣 M×M 的 矩陣,該矩陣存放的是已經經過篩選的資料,篩選的標準以當道路預設風險值大 於或大於等於道路中斷門檻值時,在矩陣中的表示方式會以 0 表示沒有連接或是 重疊。以圖 10 網路為例說明本研究將孤島區域加以識別,其中,數字僅代表風 險數值。
32
圖 10 說明本研究如何識別孤島
根據圖 9 可以建立一張表格,如表 3 所示。
表 3 根據圖 9 建立之表格
A B 0.1
A C 0.2
A D 0.3
B C 0.5
B E 0.4
C D 0.6
C E 0.8
D E 0.9
D F 0.8
E F 0.7
使用者先根據道路中斷門檻值給予一數值之後,程式會先判斷是否該數值大 於或等於道路預設的風險值,此以道路中斷門檻值 0.5 為例,說明如何跑出最小 生成樹之結果。從表 3 可以清楚知道,B 點到 C 點的風險值為 0.5,等於道路中 斷門檻值,因此,將風險數值以 0 放入矩陣當中,用以顯示 B 點與 C 點是不能 相連接的,以此類推我們可以得到 M×M 的矩陣,如表 4 所示。
33
表 4 根據門檻值與風險值相比較得出的矩陣
A B C D E F
A 0 0.1 0.2 0.3 0 0
B 0.1 0 0 0 0.4 0
C 0.2 0 0 0 0 0
D 0.3 0 0 0 0 0
E 0 0.4 0 0 0 0
F 0 0 0 0 0 0
接著,我們使用 Prim 演算法的流程來找出是否有節點與其他節點是沒有相 互連接而形成孤立的節點。首先,從 A 點開始搜尋。
表 5 A 點搜尋過程
B C D E F
A 0.1 0.2 0.3 0 0
從 A 點搜尋的過程如表 5 所示,可以發現,A 點與 B、C、D 三點皆可以相 互連接,但本研究中取風險值最小,因此,將(A,B)放入生成樹當中。
從節點集合{A,B}開始搜尋是否有風險最小可以連接。
表 6 節點集合{A,B}搜尋過程
C D E F
A 0.2 0.3 0 0
B 0 0 0.4 0
在節點集合{A,B}的搜尋過程中,如表 6 所示,可以發現 A 點與 C、D 兩點 可以連接,B 點與 E 點可以連接,取風險值最小的連接,所以將(A,C)選入生成 樹中,節點集合{A,B,C}三個節點。
34
從節點集合{A,B,C}開始搜尋是否有風險最小可以連接。
表 7 節點集合{A,B,C}搜尋過程
D E F
A 0.3 0 0
B 0 0.4 0
C 0 0 0
在節點集合{A,B,C}的搜尋過程中,如表 7 所示,可以發現 A 點與 D 點可以 連接,B 點與 E 點可以連接,取風險值最小的連接,所以將(A,D)選入生成樹中。
節點集合{A,B,C,D}四個節點。
從節點集合{A,B,C,D}開始搜尋是否有風險最小可以連接。
表 8 節點集合{A,B,C,D}搜尋過程
E F
A 0 0
B 0.4 0
C 0 0
D 0 0
在節點集合{A,B,C,D}的搜尋過程中,如表 8 所示,可以發現 B 點與 E 點可 以連接,故將(B,E)選入生成樹中。節點集合{A,B,C,D,E}五個節點。
從節點集合{A,B,C,D,E}開始搜尋是否有風險最小可以連接。
表 9 節點集合{A,B,C,D,E}搜尋過程
F
A 0
B 0
C 0
D 0
E 0
在節點集合{A,B,C,D,E}的搜尋過程中,如表 9 所示,發現並沒有節點可以
35
相互連接,故停止演算,最小生成樹為{(A,B),(A,C),(A,D),(B,E)}。從最小生成樹 可以得知,F 點與其他點無法相連接,F 點為孤立的點。
在整體的系統實現上如圖 11 所示,根據周力沛(2011)提及之鄉鎮自然脆弱 度結合道路、橋梁與災害潛勢建立一個 CSV 資料檔交由 C#執行 Prim 演算法,
在執行完畢後會產生文字視窗介面,而人口資料與土地資料也會匯集成一個人口 與土地 CSV 資料檔,由 JavaScript 將這些資料包含土地面積(KM2)、村里數、鄰 數、戶數、人口數以及人口密度傳給 Google Map 讀取,在文字視窗介面點選地 圖功能後,將會產生地圖視窗介面顯示相關資料而使用者介面接包含了文字視窗 介面與地圖視窗介面。
圖 11 本研究系統實現圖
36