如何使用Dijkstra算法表示图形,将.txt文件作为输入

时间:2016-05-06 16:56:36

标签: java dijkstra

在给定此格式的文本文件时,我无法使用Dijkstra算法。

第一行表示顶点数。我应该将此值存储为二维数组吗?

我在想,我可以让2D数组的第二部分成为每个顶点所拥有的实际值。

例如,顶点3保持78.顶点4保持87 ......等等。

我遇到的问题是必须存储边缘。 1 4 98 其中1是顶点1,4是顶点4,它们之间的距离是98.我如何存储98的这个值?

我只是难倒在这里,任何建议都会非常感激。

以下是输入

Number of Vertexes Number of Edges Vertex NumValue Vertex Vertex NumValue

如果有两个顶点,则后面的NumValue是两者之间的距离。

输入

5 7 3 78 4 87 5 98 1 4 98 5 4 45 1 5 140 4 3 87 2 5 150 3 5 109 3 2 73

输出

388

2 个答案:

答案 0 :(得分:0)

有很多方法可以做到这一点,这里有一些:

public class Edge {
    private class Node {
        private int value;
    }

    private Node from, to;
    private double distance;
}

有了这个,您可以使用Edges的arraylist来表示图形

public class Graph {
    private class Node {
        private Node adjacent;
        private double distance;
        private int value;
    }

    private Node[] nodes;
}

在这里,您可以创建一个包含节点列表

的图表类
public class Graph {
    private double[][] matrix;
}

同样,这是一个图表类,但使用矩阵。如果节点1具有距离为75.9的节点5的边缘,则matrix[1][5] == 75.9

答案 1 :(得分:0)