Dijkstra算法的实现[我对格式问题感到困惑]

时间:2015-03-25 02:41:55

标签: algorithm graph dijkstra binary-heap

我目前正在做家庭作业,要求我:

  

实施DIJKSTRA的单源最短路径问题算法   与BINARY堆。运行时间应为O(ElogV)。

够简单!但是,必须通过代码解决问题。在此之前,这个概念仍然不是那么困难:

  

您的程序应该从文件中读取数据(参见下面的示例)并输出   单个数字=从节点0到节点的最短路径长度之和   每个节点。 INPUT FORMAT:下面每个文件的第一行包含   图中的顶点数和边数(在   格式" n = XXXX m = XXXXX")。文件的其余部分组织为   如下:每个顶点我自己出现在一条线上,然后是一个   i的每个邻居j> i的行(包含j和边缘的长度)   (I,J))。每个邻居列表以空行结束。顶点i   哪个没有索引大于i的邻居不是   表示。注意:顶点索引从0到n-1。注意:每个   edge只有较小的数字端点SAMPLE才会被提及一次   INPUT:   1. first input   2. second input最短路径树的长度应分别为10721073和625349。程序应该在3-10中输出   第一次输入的秒数,第二次输入的秒数小于1秒。

我的问题:我不太了解教授对文件格式的解释以及它们应如何在代码中翻译。我也不了解我应该想象的图形类型,我是在二叉树上找到最短路径还是在具有许多顶点和边缘的图形(不是二叉树)上找到最短路径? (我感到困惑,因为他提到了二元堆,所以我不确定在这里想象什么)

我不明白的文件怎么样:查看图表我们有类似的内容:

n=25000 m=576014
0
   176     67
   665    185
  1129     26
  1414    114
  1748    205
  2027    264
  2714    212
  2743    132 ...

根据他的解释,我理解n = number of verticesm = number of edges。我不明白的是,顶点0之后的数字对代表的是我应该使用Dijkstra的图表。此外,如果您查看其中一个文件的末尾,您会注意到此格式中列出的顶点数不是n ='s的名称编号。这是为什么?

0 个答案:

没有答案