# Das Handbuch zu &rocs;

## Einführung

&rocs; ist eine Entwicklungsumgebung für Graphen-Theorie für Alle, die an der Entwicklung und Analyse von Graphen-Algorithmen arbeiten, unter anderem:

- Lehrer, die Ihren Studenten Algorithmen demonstrieren möchten,

- Studenten, die verstehen und sehen möchten, wie ein Algorithmus funktioniert,

- und für Alle, die Graphen-Algorithmen entwickeln und ein Werkzeug zum Testen von Prototypen brauchen.

Für alle diese Benutzer stellt &rocs; einen einfach zu bedienenden grafischen Editor für die Erstellung von Graphen, ein leistungsfähiges Skriptmodul für Qt Script zur Ausführung von Algorithmen und mehrere Hilfswerkzeuge zur Einrichtung von Graphen und Datenstrukturen für Ihre Experimente bereit. Der normale Arbeitsablauf beginnt mit dem Schreiben eines Algorithmus, dann folgt die Erstellung eines Graphen. Jetzt können Sie in Echtzeit sehen, wie der Algorithmus mit diesem Graphen funktioniert.

Bildschirmphoto von &rocs; Bildschirmphoto von &rocs;

## Die Benutzerschnittstelle von &rocs;

### Standardelemente der Benutzeroberfläche

Die Benutzerschnittstelle besteht aus mehreren logischen Teilen, die im folgenden Bildschirmfoto gezeigt werden.

Bedienungselemente der &rocs;-Benutzeroberfläche Bedienungselemente der &rocs;-Benutzeroberfläche

Werkzeugleiste für den visuellen Graphen-Editor

- Um Graphen im Zeichenfläche des visuellen Graphen-Editors zeichnen und bearbeiten zu können, müssen Sie zuerst ein Werkzeug auswählen.

Visueller Graphen-Editor

- Dies ist der Bereich, in dem Sie Ihre Graphen zeichnen können. Ein Klick mit der &RMB; auf die Zeichenfläche, ein Graphenelement oder ausgewählte Graphenelemente öffnet ein Kontextmenü mit passenden Aktionen für das Objekt.

Eigenschaften eines Graphen

- Hier wird eine vollständige Liste aller verschiedenen Graphen auf der Zeichenfläche angezeigt. Es kann ⪚ der Name des Graphen, sichtbare Eigenschaften wie Namen oder Werte von Knoten geändert und die Standardfarbe der Elemente eines Graphen eingestellt werden.

Skripteditor

- In diesem Texteditor können Sie Algorithmen in Qt-Script schreiben, was sich für diese Anwendung im wesentlichen kaum von JavaScript unterscheidet. Sie können gleichzeitig an mehreren Algorithmen arbeiten, indem Sie neue Skript-Unterfenster mit Neue Skriptdatei im Menü Projekt verwenden. Enthält eine Karteikarte noch nicht gespeicherte Änderungen, dann wird ein kleines Diskettensymbol auf dem Karteireiter angezeigt.

Fehler- und Skriptausgabe

- In diesem Textfeld werden Fehlermeldungen oder Skriptausgaben Ihres Algorithmus angezeigt, abhängig von der gewählten Ausgabeeinstellung. Tritt ein Fehler in Ihrem Skript auf, wird automatisch die Fehlerausgabe gewählt. Zusätzlich werden in der Fehlerausgabe alle Meldungen des Programms angezeigt.

Skriptausführung

- In diesem Bereich können Sie die Ausführung der Algorithmen steuern. Mit dem Knopf Ausführen starten Sie den Algorithmus und führen das Skript aus, das gerade im Skripteditor für den Graphen auf der Zeichenfläche des visuellen Graphen-Editors geöffnet ist. Wird ein Skript ausgeführt, können Sie es mit Anhalten stoppen.

### Werkzeugleisten

Es gibt mehrere verschiedene Werkzeugleisten für den visuellen Graphen-Editor, die den Zugriff auf alle Aktion mit einem Mausklick ermöglichen. In der Voreinstellung werden folgende Werkzeugleisten angezeigt:

- Haupt-Werkzeugleiste

- Layout-Werkzeugleiste

#### Haupt-Werkzeugleiste

Die Haupt-Werkzeugleiste enthält die im Folgenden genannten Aktionen. Klicken Sie auf den Knopf für eine Aktion, dann können Sie diese Aktion anschließend mit dem Mauszeiger auf die Elemente auf der Zeichenfläche anwenden.

- Verschieben: Um Elemente auszuwählen, klicken Sie entweder mit der &LMBn; auf eine freie Stelle auf der Zeichenfläche, halten die Maustaste gedrückt und ziehen ein Rechteck um Knoten und/oder Kanten, um sie auszuwählen oder klicken Sie sonst zur Auswahl auf ein nicht ausgewähltes Element. Klicken Sie dann auf ein oder mehrere ausgewählte Elemente und verschieben sie mit gerückter Maustaste. Ausgewählte Element können auch mit den Pfeiltasten verschoben werden.

- Knoten hinzufügen: Klicken Sie mit der &LMB; auf eine beliebige Position auf der Zeichenfläche, um einen neuen Knoten für den gerade ausgewählten Graphen zu erstellen.

- Kante hinzufügen: Klicken Sie mit der &LMBn; auf einen Knoten, halten Sie die Maustaste gerückt und ziehen Sie eine Linie zu einem anderen Knoten. Diese Aktion kann nur dann ausgeführt werden, wenn beim aktuellen Graphen diese Kante hinzugefügt werden kann. In einem ungerichteten Graphen dürfen Sie ⪚ nicht mehrere Kanten zwischen zwei Knoten einfügen.

- Löschen: Klicken Sie auf ein Element, um es zu löschen. Löschen Sie einen Knoten, dann werden alle anliegenden Kanten ebenfalls gelöscht.

- Vergrößerung: Klicken Sie auf die Zeichenfläche, halten Sie die &LMB; gedrückt und zeichnen Sie ein Rechteck. Die Zeichenfläche wird auf diesen gewählten Bereich vergrößert. Mit dem Mausrad können Sie die Ansicht ebenfalls vergrößern bzw. verkleinern. Doppelklicken mit der &LMBn; stellt die ursprüngliche Vergrößerung wieder her.

Die Haupt-Werkzeugleiste Die Haupt-Werkzeugleiste

#### Layout-Werkzeugleiste

Weiterhin gibt es noch die zusätzliche Layout-Werkzeugleiste. Drücken Sie einen Knopf in dieser Werkzeugleiste, dann wird die Aktion direkt an aktuell ausgewählten Knoten ausgeführt:

- Oben: Richtet die Knoten an der senkrechten Position des obersten Knotens aus. Die waagerechte Position bleibt unverändert.

- Mittig: Richtet die Knoten an der senkrechten Position aus, die durch die Mitte der senkrechten Positionen aller ausgewählten Knoten bestimmt wird. Die waagerechte Position bleibt unverändert.

- Unten: Richtet die Knoten an der senkrechten Position des untersten Knotens aus. Die waagerechte Position bleibt unverändert.

- Links: Richtet die Knoten an der waagerechten Position des linken Knotens aus. Die senkrechte Position bleibt unverändert.

- Rechts: Richtet die Knoten an der waagerechten Position des rechten Knotens aus. Die senkrechte Position bleibt unverändert.

- Rechts: Richtet die Knoten an der waagerechten Position des rechten Knotens aus. Die senkrechte Position bleibt unverändert.

- Kreis: Richtet die Knoten auf einem Kreis mit dem größten Abstand der Knoten als Durchmesser aus. Die Knoten werden in der Reihenfolge angeordnet, die sich aus der Sicht des Schwerpunkts der durch die Knoten gebildeten Fläche ergibt.

- Kreuzende Kanten minimieren: Verwendet den Fruchterman-Reingold-Algorithmus, um die Anzahl der kreuzenden Kanten annähernd zu minimieren.

Die Layout-Werkzeugleiste Die Layout-Werkzeugleiste

### Eigenschaften eines Graphen

Auf der linken Seite des Hauptfensters werden alle Einstellungen der geöffneten Graphen angezeigt. Diese Einstellungen gelten global für jeden Graphen. Die einzelnen Knoten und Kanten können in den Dialogen Knoteneigenschaften und Kanteneigenschaften geändert werden.

- Name: Diesen Namen muss Ihr Algorithmus zum Zugriff auf den Graphen benutzen.

- Datenfarbe der neu erstellten Knoten. Um die Farbe für alle aktuellen Knoten zu ändern, wählen Sie den Knopf Alle.

- Zeigerfarbe

Die letzte Teil der Optionen besteht aus umschaltbaren Knöpfen:

- Namen anzeigen in: Daten oder Zeiger.

- Werte anzeigen in: Knoten oder Kanten.

## Arbeiten mit &rocs;

Normalerweise erstellen Sie als erstes einen Graphen mit dem visuellen Editor. Den Graphen können Sie von Hand erstellen, indem Sie Knoten hinzufügen und sie verbinden. Alternativ können Sie einen der Hilfsalgorithmen aus dem Menu Extras Graphen erstellen verwenden. Mit Extras Werte zuweisen ist es möglich, den Knoten und Kanten eines Graphen Anfangswerte zuzuweisen. Zum Schluß müssen Sie für den Graphen einen Namen eingeben. Dieser Name dient als Bezeichner, der im Skriptmodul verwendet werden muss.

### Skriptunterstützung

&rocs; benutzt eine Skriptsprache ähnlich wie JavaScript. Im Wesentlichen erfolgt die Definition von Variablen und Funktionen und deren Anwendung genauso wie in JavaScript. Zusätzlich bietet &rocs; weitere Funktionen, die den Zugriff auf den Graphen auf der Zeichenfläche und dessen Elemente ermöglicht.

#### Zugriff auf einen Graphen

In der Skriptschnittstelle können Sie durch Angabe des Namens auf einen Graphen zugreifen und das dann als Objekt mit den folgenden Funktionen benutzen. Um auf einen Knoten oder Kante zuzugreifen, müssen Sie einen Bezeichner vom Graphen-Objekt ermitteln.

Graphenobjekte

-     // functions
           array list_nodes();
           array list_edges();
           node add_node(name);
           edge add_edge(from, to);
           node node_byname(QString& name);
           node begin_node();
           array end_nodes();

      // variables
           bool directed
           bool automate
           string name
           string nodeDefaultColor // in HEXA
           string edgeDefaultColor  // in HEXA

Knotenobjekte

-     // functions
           array adj_nodes();
           array adj_edges();
           array input_edges();
           array output_edges();
           array loop_edges();
           array connected_edges(Node *n);
           void self_remove();

      // variables
          double x
          double y
          double width
          string value
          string name
          string color  // in HEXA
          bool begin
          bool end

Kantenobjekte

-     string color ( em hexa )
          string value
          string name
          double width
          string style ( dot, dash, dash dot, solid )

          node start();
          node  end();

          void self_remove();

#### Graphen-Algorithmen

Manchmal ist es nützlich, Funktionen für Standardaufgaben zu benutzen, wie zum Beispiel die Berechnung des kürzesten Wegs. Zurzeit stehen die folgenden Algorithmen zu Verfügung und können vom Skriptmodul mit Knoten aus demselben Graphen aufgerufen werden.

Berechnung des kürzesten Wegs

- Berechnet den kürzesten Weg zwischen dem Start- und Endknoten. Beide Knoten müssen auf demselben Graphen liegen. Bei dieser Berechnung wird berücksichtigt, ob der Graph gerichtet oder ungerichtet ist.

      	array dijkstra_shortest_path Node* start Node* end

### Ein Beispiel

Hier ist ein einfaches Beispielskript, das die Farben der ersten 4 Knoten im ersten Graphen festlegt:

    /* Ein einfaches Beispiel, das die Farben der ersten 4 Knoten im ersten Graphen festlegt: */

    var colors = new Array("red", "green", "blue", "yellow");

    /* graphs ist ein Feld von Graphen, Zugriff auf einen Graph ist über den Index im
    Feld oder über den Namen möglich. Wenn der erste Graph Untitled0 genannt wurde,
    können Sie auf folgende Art auf den Graphen zugreifen  */
    var list1= graphs[0].list_nodes();   //  Erste Form.
    var list2=Untitled0.list_nodes();     // Zweite Form

     for ( var i = 0; i < colors.length; i++){
            if (i
    > list2.length) break;
            list2[i].color = colors[i]
     }

### Importieren und Exportieren

&rocs; unterstützt zurzeit den Import und Export folgender Dateiformate:

- DOT-Dateien, auch als Graphviz-Dateien bekannt.

- GML-Dateien

- Einfache Textdateien.

Derzeit werden nur einige wenige Werte aus diesen Dateien importiert. Knoten und die zugehörigen Verbindungen, die Namen aller Elemente, Werte und, sofern angegeben, auch Koordinaten werden importiert.

## Danksagungen und Lizenz

&rocs;

Copyright für das Programm:

- Copyright 2008 Ugo Sangiori (ugorox AT gmail.com)

- Copyright 2008-2011 Tomaz Canabrava (tcanabrava AT kde.org)

- Copyright 2008-2011 Wagner Reck (wagner.reck AT gmail.com)

- Copyright 2011 Andreas Cord-Landwehr (cordlandwehr AT googlemail.com)

Copyright der Dokumentation:

- Dokumentation Copyright 2009 &Anne-Marie.Mahfouf; &Anne-Marie.Mahfouf.mail;

- Dokumentation Copyright 2009 Tomaz Canabrava (tcanabrava AT kde.org)

- Dokumentation copyright 2011 Andreas Cord-Landwehr (cordlandwehr AT googlemail.com)

Übersetzung Burkhard Lück lueck@hube-lueck.de

&underFDL; &underGPL;

## Installation

### Wie Sie &rocs; erhalten

&install.intro.documentation;

### Kompilierung und Installation

&install.compile.documentation;
&documentation.index;