Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Ich habe einen Problem. Habt ihr schon mal was von Graphen gehört, nicht als Linie einer Funktion sondern als kürzester Weg zwischen zwei Punkten. Wenn nicht dann schaut mal unter Wikipedia.
Wir sollen damit einiges Programmieren aber ich finde schon keinen passenden Datentyp. Dieser Datentyp müsste beliebig viele Knoten haben können, die wieder beliebig viele Vorgänger und Nachfolger haben können und dann muss ich noch zu jedem Vorgänger oder Nachfolger einen double für den Abstand speichern.
Wie baue ich das am besten auf.
Soll ich zum Beispiel für einen Knoten wieder eine extra Klasse schreiben. Es gibt auf jeden Fall verschiedene Möglichkeiten aber was ist den am besten.
Die Idee ich die auf jeden Fall funktioniert ist eine Art Tabelle. Die soviele Spalten und Zeilen hat, wie die Anzahl der Knoten ist. Dann hat man eine Verknüpfung von jedem Knoten mit einen anderen. Natürlich trifft der Knoten in der tabelle auch einmal auf sich. Da steht dann null in der Zelle und wenn keine verbindung besteht ebenfalls oder ein negativer Wert und ansonsten der Abstand zwischen den beiden Knoten.
Verwirklichen könnte man diese Tabelle nun mit double[][] zum Beispiel.
Willkommen in der wunderbaren Welt der objektorientierten Programmierung! Hier heißen die Datentypen "Klassen" und wenn man nichts passendes findet, schreibt man sie sich selbst.
Graph-Libs gibts schon einige. Mit der Low-Level-Umsetzung (Adjazenzmatrix oder -listen, oder doch anders und bla und blub) muss man sich dabei meist nicht mehr rumschlagen. Wenn es um Visualisierung geht ist prefuse mein Favorite: http://prefuse.sourceforge.net/
Umsetzung mit einem Feld von Feldern ist Bockmist, weil du nicht dynamisch die Größe ändern kannst. Adjazenzmatrix ist meist Overkill, weil die schnell riesig wird...
Wir haben sowas Ähnliches gemacht, aber bei uns ging's um Stacks & Co. Der Clou ist, dass man sich sein eigenes Objekt selber definiert - mit den Eigenschaften die verlangt werden. Beispielsweise würde ein Element eines Stacks so aussehen:
Code:
class Node {
Node next;
Object data;
}
Es enthält sowohl einen Verweis zum darauf folgenden Element, als auch den eigentlichen Inhalt. Für deinen Graphen wäre jedoch noch einiges mehr nötig. Etwa ein Stack / eine Liste (im Knoten selbst) für die Nachbaren, von denen jedes Element dann den Abstand zu deinem Knoten enthält.