Graph Visualizition

Nico1999

Aktives Mitglied
Hi ich möchte mal alle Graph Algorithmen wie tiefen, breiten suche netzwerk flow usw mir in einem Graphen bildlich zum besseren verständis progammieren.
Java:
record Edge(from, to, cost){
    
}
class graphAlgorithmus{
    ArrayList<Edge> graph;
    
    graphAlgotithmus(ArrayList<Edge> graph){
        this.graph=graph
    }
}
das ist mal mein grundgerüst ich wollte nur fragen wie ich das mit der graphischen Ausgabe machen soll die Algorithmen möchte ich mir selber erarbeiten.
 

httpdigest

Top Contributor
Das "einfachste" wäre vermutlich, .dot Dateien für Graphviz zu generieren für jeden Zustand eines Graphen bzw. einer Traversierung durch den Graphen und dann jedes Bild mittels Graphviz layouten und als z.B. svg oder png rendern zu lassen.
 

looparda

Top Contributor
Ich habe gute Erfahrungen gemacht ein dot File zu generieren und es in https://dreampuf.github.io/GraphvizOnline/ zu pasten zur Darstellung. Einen einfachen Graphen kann man so erstellen, aber man kann auch Label und Farben hinzufügen und mit dot darstellen:
Java:
// based on https://github.com/google/guava/issues/3809#issuecomment-595464875
public class GraphDotWriter {

   public static <N extends MyModel> String write(final Graph<N> graph) {
      StringBuilder sb = new StringBuilder();
      sb.append("strict digraph G {\n");

      for(N n : graph.nodes()) {
         sb.append("  \"").append(n.getId()).append("\"\n");
      }

      for(EndpointPair<N> e : graph.edges()) {
         sb.append("  \"")
               .append(e.source().getId())
               .append("\" -> \"")
               .append(e.target().getId())
               .append("\" ").append("\n");
      }

      sb.append("}");
      return sb.toString();
   }

}
Ich habe aber auch schon dot files lokal zu png konvertiert mit Java. Zu sehr guten Utility-Klassen rund um Graphen und Dot kann man sich hier inspirieren lassen: https://github.com/ferstl/depgraph-...in/java/com/github/ferstl/depgraph/dependency
Außerdem ist das Framework JUNG sehr gut zur Darstellung von Graphen geeignet inkl. Interaktionen und Animationen.
 

Nico1999

Aktives Mitglied
wie heißt den das package(hab nämlich noch net so viel erfahrung) dass ich mir mal am besten ein video angucken kann zum verständnis
 

Ähnliche Java Themen

Neue Themen


Oben