Package pi.dsa.graph

Class Graph

java.lang.Object
pi.dsa.graph.Graph
Direct Known Subclasses:
GraphArrayMatrix

public abstract class Graph extends Object
Ein Graph.

Eine abstrakte Basisklasse als Grundlage zum Vererben für unterschiedliche Graph-Implementationen, z. B. eine Implementation eines Graphen durch eine Adjazenzmatrix oder durch eine Adjazenzliste. Diese Klasse wird auch als Datenbasis zum grafischen Zeichnen des Graphen verwendet.

Since:
0.36.0
Author:
Josef Friedrich
See Also:
  • Constructor Details

    • Graph

      public Graph()
  • Method Details

    • importGraph

      public void importGraph(Graph graph)
      Importiert alle Knoten und Kanten eines anderen Graphen.
      Parameters:
      graph - Der Graph der importiert werden soll.
    • nodeCount

      @Getter public int nodeCount()
      Gibt die Anzahl der Knoten des Graphen zurück.
      Returns:
      Die Anzahl der Knoten.
    • edgeCount

      @Getter public int edgeCount()
      Gibt die Anzahl der Kanten des Graphen zurück.
      Returns:
      Die Anzahl der Kanten.
    • nodeIndex

      @Getter public int nodeIndex(String label)
      Gibt den Index bzw . die interne Nummer des Knotens zurück.
      Parameters:
      label - Der Bezeichner des Knotens, der gesucht wird.
      Returns:
      Die Indexnummer des Knotens im Knotenarray; 0 <= x <= anzahl-1
      Throws:
      RuntimeException - Falls kein Knoten über den gegeben Bezeichner gefunden werden konnte.
    • nodeIndex

      @Getter public int nodeIndex(GraphNode node)
      Since:
      0.37.0
    • nodeIndexSafe

      @Getter public int nodeIndexSafe(String label)
      Gibt den Index bzw. die interne Nummer des Knotens zurück oder -1 falls der Knoten nicht gefunden werden konnte.
      Parameters:
      label - Der Bezeichner des Knotens, der gesucht wird.
      Returns:
      Die Indexnummer des Knotens im Knotenarray; 0 <= x <= anzahl-1 bzw. -1
    • node

      @Getter public GraphNode node(String label)
    • node

      @Getter public GraphNode node(int index)
    • nodeLabel

      @Getter public String nodeLabel(int index)
      Gibt die Bezeichnung eines Knotens mit der internen Knotennummer.
      Parameters:
      index - Indexnummer des Knotens im Knotenarray; 0 <= x <= anzahl-1
      Returns:
      Der Bezeichner des Knotens.
    • addNodeIntoDataStructure

      protected abstract void addNodeIntoDataStructure(String label, double x, double y)
      Fügt einen neuen Knoten in den Datenstruktur (z. B. Matrix oder Liste) der aktuellen Graph-Implementation ein.

      Diese Methode wird aufgerufen, wenn bereits ein neuer Knoten vom Datentyp GraphNode erzeugt wurde. Außerdem ist schon überprüft worden, ob der Bezeichner des Knotens eindeutig ist.

      Parameters:
      label - Der Bezeichner des neuen Knotens, der dem Graphen hinzugefügt wird.
      x - Die x-Koordinate des Knotens in Meter.
      y - Die y-Koordinate des Knotens in Meter.
    • addNode

      public void addNode(String label, double x, double y)
      Fügt einen neuen Knoten in den Graphen ein.
      Parameters:
      label - Der Bezeichner des neuen Knotens, der dem Graphen hinzugefügt wird.
      x - Die x-Koordinate des Knotens in Meter.
      y - Die y-Koordinate des Knotens in Meter.
      Throws:
      RuntimeException - Wenn die Bezeichnung des Knotens bereits existiert.
    • addNode

      public void addNode(String label)
      Fügt einen neuen Knoten in den Graphen ein.
      Parameters:
      label - Der Bezeichner des neuen Knotens, der dem Graphen hinzugefügt wird.
      Throws:
      RuntimeException - Wenn die Bezeichnung des Knotens bereits existiert.
    • addNode

      public void addNode(GraphNode node)
      Fügt eine Kopie des übergebenen GraphNode-Objekt dem Graphen hinzu.
      Parameters:
      node - der einzufügende Knoten; darf nicht null sein
      Throws:
      NullPointerException - wenn node null ist
      See Also:
    • addEdgeIntoDataStructure

      protected abstract void addEdgeIntoDataStructure(String from, String to, int weight, boolean directed)
      Einfügen einer Kante in den Graphen.

      Die Kante ist durch einen Anfangsknoten und einen Endknoten festgelegt, hat eine Gewichtung und kann gerichtet sein.

      Parameters:
      from - Der Bezeichner des Anfangsknotens.
      to - Der Bezeichner des Endknotens.
      weight - Die Gewichtung der Kante.
      directed - Ist die Kante gerichtet?
    • addEdge

      public void addEdge(String from, String to, int weight, boolean directed)
      Einfügen einer Kante in den Graphen.

      Die Kante ist durch einen Anfangsknoten und einen Endknoten festgelegt, hat eine Gewichtung und kann gerichtet sein.

      Parameters:
      from - Der Bezeichner des Anfangsknotens.
      to - Der Bezeichner des Endknotens.
      weight - Die Gewichtung der Kante.
      directed - Ist die Kante gerichtet?
    • addEdge

      public void addEdge(String from, String to, int weight)
      Einfügen einer Kante in den Graphen.

      Die Kante ist durch einen Anfangsknoten, einen Endknoten festgelegt, hat eine Gewichtung und ist ungerichtet.

      Parameters:
      from - Der Bezeichner des Anfangsknotens.
      to - Der Bezeichner des Endknotens.
      weight - Die Gewichtung der Kante.
    • addEdge

      public void addEdge(String from, String to)
      Einfügen einer Kante in den Graphen.

      Die Kante ist durch einen Anfangsknoten und einen Endknoten festgelegt, hat eine Gewichtung von 1 und ist ungerichtet.

      Parameters:
      from - Der Bezeichner des Anfangsknotens.
      to - Der Bezeichner des Endknotens.
    • addEdge

      public void addEdge(GraphEdge edge)
    • Nodes

      @Getter public ArrayList<GraphNode> Nodes()
    • edge

      @Getter public GraphEdge edge(int index)
      Gibt die Kante anhand des Indexes zurück.
      Parameters:
      index - Der 0-basierte Index der gewünschten Kante.
      Returns:
      Die Kante
      Throws:
      IndexOutOfBoundsException - wenn der Index außerhalb des gültigen Bereichs liegt
    • edges

      @Getter public ArrayList<GraphEdge> edges()
      Gibt die Liste aller Kanten dieses Graphen zurück.
      Returns:
      Die Liste aller Kanten dieses Graphen.
    • generateJavaCode

      public String generateJavaCode()
      Exportiert den Graphen, indem eine Zeichenkette generiert wird, die als Java-Code verwendet werden kann.
      Since:
      0.37.0