簡體   English   中英

使用Dijkstra算法從加權圖形文本文件創建矩陣的最佳方法?

[英]Best way to create matrix from a weighted graph text file using Dijkstra's Algorithm?

我一直在研究圖論和Dijsktra,卻發現自己有太多解決此問題的方法,而且我不確定該解決特定問題的方法。 要求如下:

在集中式路由中,所有路由信息都生成並維護在一個集中位置。 集中維護路由信息的常用方法是通過路由矩陣。 路由矩陣對於網絡中的每個節點都有一行和一列,其中一行對應於源節點,而列對應於目標節點。 第i行j列中的條目是一對(x,y),其中x是從i到j的最短路徑上的第一個節點,而y是從i到j的最短路徑的成本。

編寫一個程序,讀取表示網絡的加權圖,並找到並輸出相應的路由矩陣。 路由矩陣將同時寫入屏幕和輸出文件。 使用Dijkstra的算法查找節點之間的最短成本和路徑。 該程序從命令行運行,帶有兩個可選的命令行參數。 使用以下命令行選項來指示命令行參數的存在:-i(用於輸入文件名)和-o(用於輸出文件名)。 如果沒有命令行參數,則程序分別使用“ xy_input.txt”和“ xy_output.txt”作為默認輸入和輸出文件名。 請參閱以下示例:

  • java xy_rmatrix
  • java xy_rmatrix –i xy_rmatrixi.txt –o xy-rmatrixo.txt

輸入/輸出樣本:輸入文件包含零個或多個代表網絡圖形的線。 每條線表示一個雙向邊,該邊由兩個頂點(路由器)和與它們之間的鏈接(通信線)關聯的成本組成。 一個或多個空格(空白,制表符等)將分隔每一行上的數據,並且節點名稱可能是字符串而不是單個字符。 請注意,路由矩陣的行和列以字母順序列出。

輸入:

https://i.stack.imgur.com/08zpC.png

輸出:

在此處輸入圖片說明

我的主要問題是,對於此特定問題,有必要將輸入文件的內容存儲在其自己的數據結構中,例如圖形或鄰接列表,以及如何在Java中使用頂點/節點和邊來實現這些內容?一種執行Dijsktra算法的方法?

我是否還正確地假設指定的路由矩陣與鄰接矩陣同義?

注意:我不是在尋找代碼,只是朝着正確方向邁出了一步。

我認為在您的情況下,路由矩陣可以用二維數組表示。 Dijkstra的算法可找到從一個來源到任何目的地的最短路徑。 您可以根據需要首先使用“ A”作為源,然后使用“ B”,依此類推,以獲得從每個點到每個其他點的路由矩陣。 您可以再次使用鄰接列表或數組來表示圖信息,以便從每個源執行dijkstra。

希望這可以幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM