当前位置: 首页 > 知识库问答 >
问题:

使用Dijkstra算法从加权图文本文件创建矩阵的最佳方法?

拓拔浩阔
2023-03-14

我一直在研究图论和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

输入/输出示例:输入文件包含表示网络图形的零行或多行。每条线代表由两个顶点(路由器)和与它们之间的链路(通信线路)相关联的成本组成的双向边。一个或多个空白(空白、制表符等)将分隔每一行上的数据,节点名可能是一个字符串而不是一个字符。请注意,路由矩阵行和列是按字母顺序列出的。

输入:

输出:

我的主要问题是,对于这个特殊的问题,是否有必要将输入文件的内容存储在它自己的数据结构中,如图或邻接列表,以及我如何在Java中用顶点/节点和边来实现这些,使我能够执行Dijsktra的算法?

我假设指定的路由矩阵与邻接矩阵是同义词,这样做是否正确?

注意:我不是在钓代码,只是朝着正确的方向迈出了一步。

共有1个答案

冯元魁
2023-03-14

我认为在你的例子中,路由矩阵可以用二维数组来表示。Dijkstra的算法找到从一个源到任何目的地的最短路径。您可以先使用'A'作为源,然后使用'B',依此类推,根据需要得到从每个点到每一个其他点的路由矩阵。您可以再次使用邻接列表或数组来表示图形信息,以便从每个源执行dijkstra。

希望这有帮助!

 类似资料:
  • 本文向大家介绍Python中矩阵创建和矩阵运算方法,包括了Python中矩阵创建和矩阵运算方法的使用技巧和注意事项,需要的朋友参考一下 矩阵创建 1、from numpyimport *; a1=array([1,2,3]) a2=mat(a1) 矩阵与方块列表的区别如下: 2、data2=mat(ones((2,4))) 创建一个2*4的1矩阵,默认是浮点型的数据,如果需要时int类型,可以使用

  • 问题内容: 将包含JSON的文件加载到JSONObject的最简单方法是什么。 目前,我正在使用json-lib。 这是我所拥有的,但是会引发异常: 输出为: 问题答案: 试试这个: 这是您的sample-json.txt,应为json格式

  • 问题内容: 关于这个问题,我有一个类似的问题),但不是相同的问题。 在途中,我将有一些文本文件,其结构如下: 我需要python读取文件,然后创建一个名为var_a的变量,其值为’home’,依此类推。 例: 我的意思是,甚至可以保留var类型吗? 请注意,我对文本文件结构拥有完全的自由,如果我建议的格式不是最好的,我可以使用自己喜欢的格式。 编辑 :ConfigParser可以是一个解决方案,但

  • null 下面是构造函数: 问题:当试图为特定的行/行添加值时,我在下面的方法中得到以下错误:未为Integer类型定义方法add(int)

  • 嗨,我在纠结这个问题。其内容如下: 首先,我们如何知道图中有多少个循环,以及如何检查这些循环? 还有,为什么是evlogv?根据我的理解,你应该遍历所有的顶点,因此使它成为vlogv。 这是我个人的学习,所以如果任何人有一个例子,他们可以使用,它将大大帮助我!我并不是真的在寻找伪代码--只是一个通用算法来理解如何使用从一个节点到所有节点的最短路径来帮助我们解决这个问题。谢谢你!

  • 问题内容: 对于我的School项目,我必须证明我可以在程序中利用文件处理功能。为此,我做了一个非常简单的登录过程,您可以在该过程中创建一个帐户,该帐户将用户名和密码写入位于资源文件夹中的文本文件。显然,这根本没有安全性,因为它并不是为了展示文件处理而设计的,但是我的老师说我也应该尝试对文件添加一些加密以取得更好的成绩。 我已经进行了一些研究,许多人都推荐使用DES。 我遇到的问题是我的项目没有太