Grundlagen der Theoretischen Informatik

Aus Hochschule Darmstadt - Fachschaft Informatik Wiki
Wechseln zu: Navigation, Suche

Graph endlicher Automaten erstellen

Mit Graphviz können Graphen sehr einfach erzeugt werden.

Beispiel:

Fsm.png

Zugehöriger Quellcode:

digraph finite_state_machine {
	rankdir=LR;
	size="8,5"
	node [shape = doublecircle]; LR_0 LR_3 LR_4 LR_8;
	node [shape = circle];
	LR_0 -> LR_2 [ label = "SS(B)" ];
	LR_0 -> LR_1 [ label = "SS(S)" ];
	LR_1 -> LR_3 [ label = "S($end)" ];
	LR_2 -> LR_6 [ label = "SS(b)" ];
	LR_2 -> LR_5 [ label = "SS(a)" ];
	LR_2 -> LR_4 [ label = "S(A)" ];
	LR_5 -> LR_7 [ label = "S(b)" ];
	LR_5 -> LR_5 [ label = "S(a)" ];
	LR_6 -> LR_6 [ label = "S(b)" ];
	LR_6 -> LR_5 [ label = "S(a)" ];
	LR_7 -> LR_8 [ label = "S(b)" ];
	LR_7 -> LR_5 [ label = "S(a)" ];
	LR_8 -> LR_6 [ label = "S(b)" ];
	LR_8 -> LR_5 [ label = "S(a)" ];
}

Erstellt werden kann der Graph sehr einfach über die Shell:

dot -T$format -o$outfile $infile

$format kann svg, svgz, png oder gif (und noch einige mehr) verwendet werden
$infile beschreibt die Eingabedatei (z.B.: fsm.vz)
$outfile beschreibt die Ausgabedatei (z.B.: fsm.png)

Für die Ausgabe der Datei "fsm.vz" als PNG in die Datei "fsm.png" würde der Aufruf also

dot -Tpng -ofsm.png fsm.vz

lauten. Weitere Informationen kann man der Dokumentation entnehmen.

Meine Werkzeuge