2016-05-06 11 views
0

Ich habe Probleme mit Dijkstras Algorithmus, wenn ich eine Textdatei in diesem Format bekomme.Wie man einen Graphen mit dem Algorithmus von Dijkstra darstellt, mit einer .txt-Datei als Eingabe

Die erste Zeile repräsentiert die Anzahl der Scheitelpunkte. Soll ich diesen Wert als 2-dimensionalen Array speichern?

Ich dachte, dass ich den zweiten Teil des 2D-Arrays den tatsächlichen Wert haben könnte, den jeder Knoten hält.

Zum Beispiel Vertex 3 hält 78. Vertex 4 hält 87 ... etc.

Das Problem in I ausgeführt wird, die um die Kanten zu speichern. 1 4 98 Wo 1 Vertex 1 ist, 4 ist Vertex 4, und der Abstand zwischen ihnen ist 98. Wie würde ich diesen Wert von 98 speichern?

Ich bin nur hier ratlos, jeder Rat würde sehr geschätzt werden.

Unten ist der Eingang

Number of Vertexes Number of Edges Vertex NumValue Vertex Vertex NumValue

Wo, wenn es zwei Eckpunkten, die NumValue, die nach kommt, ist die Entfernung zwischen den beiden.

Eingang

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

Ausgabe

388

+1

Betrachten Sie den Titel dieser Frage etwas zu ändern, wie „wie ein Diagramm für Dijkstra-Algorithmus darzustellen "oder besser", wie man einen gewichteten Graphen darstellt, da dies enger mit dem zusammenhängt, was Sie zu tun versuchen. Und ... könnte es auch einige Suchvorgänge vorschlagen, die Sie tun könnten, um eine Antwort zu erhalten. – davidbak

Antwort

0

Es gibt viele Möglichkeiten, dies zu tun, sind hier einige:

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

    private Node from, to; 
    private double distance; 
} 

Mit diesem können Sie eine Arraylist von Kanten haben das Diagramm

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

    private Node[] nodes; 
} 

Hier finden Sie eine grafische Darstellung der Klasse erstellen, um darzustellen, die eine Liste von Knoten

public class Graph { 
    private double[][] matrix; 
} 

Wiederum enthält diese ein Graph Klasse ist jedoch unter Verwendung von eine Matrix. Wenn der Knoten 1 eine Kante zu Knoten 5 mit Abstand 75,9 hat, dann matrix[1][5] == 75.9

+0

Ich möchte mit dem Erstellen einer Grafikklasse, die eine Liste von Knoten enthält, gehen, würde es Ihnen etwas ausmachen, weiter zu erklären, wie ich in der Textdatei in der Befehlszeile lesen kann, um diese Werte in der Matrix so zu speichern? – SweetJD14

+0

@ SweetJD14 Sie möchten vielleicht entweder eine neue Frage stellen oder [diese Antwort] ansehen (http://stackoverflow.com/a/304061/2089675) – smac89