2017-06-22 244 views
0

我有一個電子表格設置了一堆到不同餐館的距離。爲了簡單起見,可以說所有列A都有餐廳名稱/代碼(假設代碼是一個數字,2到XXX)。然後,在BXXX - 1之間,有一個數字顯示A中的餐廳與其代碼是列號的餐廳之間的距離。在VBA中實現dijkstra算法

我將如何去執行dijkstra的算法來找到2個用戶輸入的最短路徑?

請參閱以下的例子電子表格的截圖: Screenshot of the Spreadsheet

+0

將它寫入純VBA中。輸入可以是開始節點,目標節點和二維VBA陣列的距離,返回值可以是距離,也可以是最短路徑本身。當您執行Dijkstra時,電子表格的佈局在某種程度上與您無關。只有當你需要調用你的VBA函數時才重要。 –

回答

3

你會做什麼是編寫一個遍歷所有具有距離信息,並將其存儲在適當的圖形數據結構的數據VBA代碼。我不確定你的數據是否代表無向圖,或者只是巧合,你有一個較低的三角形矩陣表示。

無論如何,在將數據轉換爲適當的VBA數據結構之後,您可以採用現有解決方案並使其適用於您的數據結構。或者,首先,確保數據結構適合現有的解決方案。你可以找到一個VBA Dijkstra執行here

如果您想自己實現它,可以在網上找到許多說明性示例,例如here,以幫助您理解算法本身。