# Skript-API für das Backend „Graph“

Im Dialog Eigenschaften der Datenstruktur finden Sie die die Einstellungen für ein bestimmtes Graphen-Backend. Mit Graphentyp können Sie den Typ eines Graphen auswählen. Die Typen haben folgende Bedeutung:

- Graph: Ein Graph, bei dem dieselben Kanten unter Berücksichtigung von Start- und Endpunkt nur einmal vorkommen dürfen.

- Multigraph: Ein Graph, bei dem dieselben Kanten unter Berücksichtigung von Start- und Endpunkt auch mehrfach vorkommen dürfen.

## Graph-Datenstruktur

Ein Graphenobjekt enthält Informationen über eine Datenstruktur vom Typ Graph.

### Eigenschaften

- name :

  Der eindeutige Name dieser Datenstruktur.

### Methoden

nodes()

  Gibt eine Liste aller Knoten des Graphen zurück.

      array nodes

nodes(type)

  Gibt eine Liste aller Knoten des Graphen vom angegebenen Typ zurück.

      array nodes int type

edges()

  Gibt eine Liste aller Kanten des Graphen zurück.

      array edges

edges(type)

  Gibt eine Liste aller Kanten des Graphen vom angegebenen Typ zurück.

      array edges int type

createNode(type)

  Erstellt einen neuen Knoten vom angegebenen Typ und gibt den erzeugten Knoten zurück. Ist der Typ nicht registriert, wird kein Knoten erzeugt.

      GraphNode createNode int type

createNode()

  Erstellt einen neuen Knoten vom Standardtyp und gibt den erzeugten Knoten zurück.

      GraphNode createNode

createEdge(from, to, type)

  Erstellt einen Kante vom Knoten „from“ zum Knoten „to“ vom angegebenen Typ und gibt die erzeugte Kante zurück. Ist der Typ nicht registriert, wird keine Kante erzeugt.

      GraphEdge createEdge GraphNode from GraphNode to int type

createEdge(from, to)

  Erstellt einen Kante vom Knoten „from“ zum Knoten „to“ als Standardtyp und gibt die erzeugte Kante zurück.

      GraphEdge createEdge GraphNode from GraphNode to

distances(from)

  Gibt ein Feld mit den kürzesten Pfadlängen von diesem Knoten zu jedem anderen Knoten im Graphen zurück.

      Array distances GraphNode from

## Graph-Knoten

Ein Knoten ist ein Datenelement eines Graphen.

### Eigenschaften

- width :

  Die Größe dieses Datenelements.

- x :

  Die X-Koordinate dieses Datenelements.

- y :

  Die y-Koordinate dieses Datenelements.

- id :

  Der eindeutige Bezeichner für dieses Datenelement.

- color :

  Die Farbe dieses Datenelements als Hexadezimalwert.

### Methoden

neighbors()

  Gibt eine Liste aller Knoten zurück, die mit diesem Knoten verbunden sind. Dabei wird berücksichtigt, ob Kanten gerichtet sind.

      array neighbors

edges()

  Gibt eine Liste aller Kanten (eingehend und ausgehend) dieses Knotens zurück.

      array edges

edges(type)

  Gibt eine Liste aller Kanten (eingehend und ausgehend) des angegebenen Typs dieses Knotens zurück.

      array edges int type

inEdges()

  Gibt eine Liste von eingehenden Kanten dieses Knotens zurück.

      array inEdges

inEdges(type)

  Gibt eine Liste von eingehenden Kanten des angegebenen Typs zu diesem Knoten zurück.

      array inEdges int type

outEdges()

  Gibt eine Liste aller ausgehenden Kanten dieses Knotens zurück.

      array outEdges

outEdges(type)

  Gibt eine Liste von ausgehenden Kanten des angegebenen Typs von diesem Knoten zurück.

      array outEdges int type

edgesTo(target)

  Gibt eine Liste aller Kanten des angegebenen Typs dieses Knotens zurück.

      array edgesTo GraphNode target

## Graph-Kante

Eine Kante ist eine Verbindung zwischen zwei Knoten eines Graphen. Kanten können abhängig vom Typ gerichtet oder ungerichtet sein.

### Eigenschaften

- width :

  Die Breite der Verbindung.

- directed :

  Falls wahr, ist die Verbindung gerichtet, andernfalls ist sie ungerichtet.

- from :

  Der Start der Verbindung.

- to :

  Das Ende der Verbindung

- color :

  Kennung des Verbindungstyps.

### Methoden

remove()

  Entfernt diese Verbindung.

      void remove

add_property(name, value)

  Fügt der Verbindung eine neue Eigenschaft hinzu.

      void add_property string name string value

remove_property(name)

  Entfernt eine bestehende Eigenschaft der Verbindung.

      void remove_property string name