Ein tolles Tool für und mit Graphen. Mit diesem Tool können verschiedene Eigenschaften von Graphen ermittelt und ausgegeben werden. Die Ergebnisse werden übersichtlich dargestellt und können in verschiedenen Ausgabeformaten ausgegeben werden. Achte bei den Optionen auf Groß- und Kleinschreibung.
OPTIONS EINGABE -i --input-csv (1) Liest die Adjazenzmatrix des Graphen aus der angegebenen CSV-Datei aus. -iml --input-matlab (1) Erzeugt einen Graphen aus der in Matlab-Notation angegebenen Adjazenzmatrix. -ima --input-mathematica (1) Erzeugt einen Graphen aus der in Mathematica-Notation angegebenen Adjazenzmatrix. -ivn --input-vertices-name (1) Übergibt Namen der Knoten. Diese werden bei der Ausgabe anstelle der Knotennummer angegeben. AUSGABE -o --output-csv (1) Speichert die Adjazenzmatrix des Graphen in der angegebenen Datei -oj --output-json (1) Speichert den Graphen - als JSON im Format von sigmajs.org - in der angegebenen Datei. -og --output-graphviz (1) Speichert den Graphen in der angegebenen Datei im Format von Graphviz (hier: DOT). -v --verbose (1) Aktiviert den wortreichen Modus FUNKTIONEN OHNE ARGUMENTE -h --help (0) Zeigt die Hilfe an. -na --no-args (0) Ruft alle Funktionen auf, die keine Argumente benötigen und gibt die Ergebnisse aus. -V --vertices-count (0) Gibt die Anzahl der Knoten |V| aus. -E --edges-count (0) Gibt die Anzahl der Kanten |E| aus. -d --is-directed (0) Gibt an, ob der Graph gerichtet ist. -c --is-complete (0) Gibt an, ob der Graph vollstaendig ist. Ein vollständiger Graph ist ein Begriff aus der Graphentheorie und bezeichnet einen einfachen Graph, in dem jeder Knoten mit jedem anderen Knoten durch eine Kante verbunden ist (Wikipedia). -mg --is-multigraph (0) Gibt an, ob der Graph ein Multigraph ist. In sogenannten Multigraphen können zwei Knoten auch durch mehrere Kanten verbunden sein, was in einfachen Graphen nicht erlaubt ist(Wikipedia). -r --is-regular (0) Gibt an, ob der Graph regulaer ist. In der Graphentheorie heißt ein Graph regulär, falls alle seine Knoten gleich viele Nachbarn haben, also den gleichen Grad besitzen. Bei einem regulären gerichteten Graphen muss weiter die stärkere Bedingung gelten, dass alle Knoten den gleichen Eingangs- und Ausgangsgrad besitzen (Wikipedia). -s --is-simple (0) Gibt an, ob der Graph einfach ist. Ein einfacher Graph (auch schlichter Graph) ist in der Graphentheorie ein ungerichteter Graph ohne Mehrfachkanten und ohne Schleifen (Wikipedia). -cy --has-cycle (0) Gibt an, ob der gerichtete Graph einen Kreis hat. -fol --is-free-of-loops (0) Gibt an, ob der Graph schleifenfrei ist (z.B. von Knoten 1 zu Knoten 1). -for --is-directed-forest (0) Gibt an, ob der Graph ein gerichteter Wald ist. Als Wald bezeichnet man in der Graphentheorie einen ungerichteten Graphen ohne Zyklus. Ist dieser zusammenhängend, so spricht man von einem (ungerichteten) Baum. Jede Zusammenhangskomponente eines Waldes ist ein Baum. Eine Verallgemeinerung auf gerichtete Graphen kann man erklären, indem man diese auf die zugrundeliegenden Ungerichteten zurückführt (Wikipedia). FUNKTIONEN MIT ARGUMENTEN -ideg --indegree (1) Gibt die Anzahl der eingehenden Kanten eines Knoten (Parameter = Nummern zwischen 0 und |V| - 1) aus. -odeg --outdegree (1) Gibt die Anzahl der ausgehenden Kanten eines Knoten (Parameter = Nummern zwischen 0 und |V| - 1) aus. -an --are-neighbours (2) Gibt an, ob zwei Knoten (Parameter = Nummern zwischen 0 und |V| - 1) Nachbarn sind. -hc --has-connectivity (2) Gibt an, ob es zwischen den beiden Knoten (Parameter = Nummern zwischen 0 und |V| - 1) einen Weg gibt. -he --has-edge (2) Gibt an, ob es den Knoten mit der gegebenen Nummer zwischen 0 und |V| - 1 gibt. -hp --has-path (1) Gibt an, ob die übergebene Kantenfolge (Mindestens ein Parameter = Nummern zwischen 0 und |V| - 1) im Graph existiert.
Eine Matrix in Matlab-Notation und alle Funktionen ausführt, die keine Argumente benötigen:
`graphs -iml "[1 1 0; 1 0 1; 1 1 0]" -na -oj example.json
graphs -iml "[0 1 1 1 1 0 0 0 0 0 0; 1 0 0 0 0 0 0 0 0 0 0; 1 0 0 0 0 0 0 0 0 0 0; 1 0 0 0 0 0 0 1 1 1 0; 1 0 0 0 0 1 1 0 0 0 0; 0 0 0 0 1 0 0 0 0 0 0; 0 0 0 0 1 0 0 0 0 0 0; 0 0 0 1 0 0 0 0 0 0 0; 0 0 0 1 0 0 0 0 0 0 0; 0 0 0 1 0 0 0 0 0 0 1; 0 0 0 0 0 0 0 0 0 1 0]" "[0 1 1 1 1 0 0 0 0 0 0; 0 0 0 0 0 0 0 0 0 0 0; 0 0 0 0 0 0 0 0 0 0 0; 0 0 0 0 0 0 0 1 1 1 0; 0 0 0 0 0 1 1 0 0 0 0; 0 0 0 0 0 0 0 0 0 0 0; 0 0 0 0 0 0 0 0 0 0 0; 0 0 0 0 0 0 0 0 0 0 0; 0 0 0 0 0 0 0 0 0 0 0; 0 0 0 0 0 0 0 0 0 0 1; 0 0 0 0 0 0 0 0 0 0 0 ]" "[0 0 1 0 0; 1 0 0 0 0; 0 0 0 1 0; 0 0 0 0 1; 1 0 0 0 0]" -na -ideg 0 -odeg 0 -an 0 3 -hc 1 3 -hp 0 2 3 4 0 -oj example.json -og example.dot
Eigenschaft | Graph 0 | Graph 1 | Graph 2 |
---|---|---|---|
Anzahl Knoten | 11 | 11 | 5 |
Anzahl Kanten | 10 | 10 | 5 |
Ist gerichtet | nein | ja | ja |
Ist vollstaendig | nein | nein | nein |
Ist ein Multigraph | nein | nein | nein |
Ist regulaer | nein | nein | nein |
Ist einfach | ja | nein | nein |
Hat einen Kreis | Bisher nur für Digraphen implementiert. | nein | ja |
Ist schleifenfrei | ja | ja | ja |
Ist Wald | Bisher nur für Digraphen implementiert. | ja | nein |
in degree(0) | 4 | 0 | 2 |
out degree(0) | 4 | 4 | 1 |
Sind 0 und 3 Nachbarn | ja | ja | nein |
Weg zw. 1 und 3 existiert | ja | nein | ja |
Pfad {0, 2, 3, 4, 0} existiert | nein | nein | ja |
neato -Tpng 0_example.dot > 0_output.png; neato -Tpng 1_example.dot > 1_output.png; neato -Tpng 2_example.dot > 2_output.png