Hallo zusammen,
ich habe den Djikstra-Algorithmus programmiert und die Eingabe im Quellcode erfolgte bis jetzt folgendermaßen:
Für einen Knoten
Für eine Kante
Ein wenig Hintergrundwissen: Der Dijkstra sucht der kürzesten Weg zwischen zwei Knoten.
Natürlich können und sind in der Regel mehrere Knoten zwischen zwei Knoten und es gibt mehrere Wege dorthin.
Jedenfalls habe ich jetzt eine GUI, die mir eine nxn Matrix (zu Demozwecken) eine 5 x 5 Matrix ausliest.
public static double [][] aMatrix;
Diese kann man sich so vorstellen
A B C D E
A 5
B 6
C 3
D 6
E
Werte sind zufällig.
Die spalten Links sind "von" Spalten und oben "zu" Spalten.
A->B = 5 bedeutet es gibt eine Kante von A nach B mit dem Gewicht / den Kosten 5.
Müsste quasi übersetzt werden zu:
Jetzt ist die Frage wie ich das anstelle.
Meine Idee:
Ich muss erstmal cool bleiben (bei sowas ist es immer besser, wenn man erstmal cool bleibt).
Dann schaue ich, wie groß das Kanten Array für die verschiedenen Knoten sein muss.
Idee war hier so etwas wie zwei verschachtelte for Schleifen. Um zu lesen wie viele Nachbaren ein Knoten hat.
Dann muss ich ich Werte irgenwie geschickt durch weitere Schleifen in die Kantenarrays übergeben.
Seht ihr vielleicht eine einfachere Möglichkeit?
Vielen Dank!
ich habe den Djikstra-Algorithmus programmiert und die Eingabe im Quellcode erfolgte bis jetzt folgendermaßen:
Für einen Knoten
Code:
Knoten v0 = new Knoten("A");
Knoten v1 = new Knoten("B");
Code:
v0.nachbarn = new Kante[] { new Kante(v2, 2.0) };
v1.nachbarn = new Kante[] { new Kante(v0, 3.0), new Kante(v2, 4.0), new Kante(v4, 2.0), new Kante(v3, 1.0), };
Ein wenig Hintergrundwissen: Der Dijkstra sucht der kürzesten Weg zwischen zwei Knoten.
Natürlich können und sind in der Regel mehrere Knoten zwischen zwei Knoten und es gibt mehrere Wege dorthin.
Jedenfalls habe ich jetzt eine GUI, die mir eine nxn Matrix (zu Demozwecken) eine 5 x 5 Matrix ausliest.
public static double [][] aMatrix;
Diese kann man sich so vorstellen
A B C D E
A 5
B 6
C 3
D 6
E
Werte sind zufällig.
Die spalten Links sind "von" Spalten und oben "zu" Spalten.
A->B = 5 bedeutet es gibt eine Kante von A nach B mit dem Gewicht / den Kosten 5.
Müsste quasi übersetzt werden zu:
Code:
v0.nachbarn = new Kante[] { new Kante(v1, 5.0) }
Jetzt ist die Frage wie ich das anstelle.
Meine Idee:
Ich muss erstmal cool bleiben (bei sowas ist es immer besser, wenn man erstmal cool bleibt).
Dann schaue ich, wie groß das Kanten Array für die verschiedenen Knoten sein muss.
Idee war hier so etwas wie zwei verschachtelte for Schleifen. Um zu lesen wie viele Nachbaren ein Knoten hat.
Dann muss ich ich Werte irgenwie geschickt durch weitere Schleifen in die Kantenarrays übergeben.
Seht ihr vielleicht eine einfachere Möglichkeit?
Vielen Dank!