<?xmlversion="1.0"encoding="UTF-8"?>
<Chapter>
<Heading>
Drawings of semigroups
</Heading>
There are some pictures that may give a lot of information about a semigroup.
This is the case of the egg-box picture of the D-classes,
the right Cayley graph of a finite monoid and the Schützenberger graphs
of a finite inverse monoid.
<Section>
<Heading>
Drawing the D-class of an element of a semigroup
</Heading>
<ManSection>
<Func Arg="arg" Name="DrawDClassOfElement" />
<Description>
This function uses <Ref Func="DotForDrawingDClassOfElement" /> to compute the dot code to produce the image that is then displayed. It takes as arguments a semigroup followed by a transformation which is the element whose D-class will be drawn. Optionally we can then specify n lists of elements and the elements of each list will be drawn in different colours. Finally, if the last argument is the integer <C>1</C> then the elements will appear as transformations, otherwise they will appear as words. The idempotents will be marked with a * before them.
<P/>
This last optional argument may also be the integer <C>2</C> and in this case
the elements will appear as integers, where <C>i</C> represents the element <C>Elements(S)[i]</C>.
</Description>
</ManSection>
<Example><![CDATA[
gap> DrawDClassOfElement(poi3, Transformation([1,4,3,4]));
gap> DrawDClassOfElement(poi3, Transformation([1,4,3,4]),1);
gap> DrawDClassOfElement(poi3, Transformation([1,4,3,4]),
[Transformation( [ 2, 3, 4, 4 ] )],1);
gap> DrawDClassOfElement(poi3, Transformation([1,4,3,4]),
[Transformation( [ 2, 3, 4, 4 ] ), Transformation( [ 2, 4, 3, 4 ] )],
[Transformation( [ 2, 4, 3, 4 ] )],1);
gap> DrawDClassOfElement(poi3, Transformation([1,4,3,4]),
[Transformation( [ 2, 4, 3, 4 ] )],"Dclass",1);
]]></Example>
This is the image produced by the first command in the previous example:
<Alt Only="LaTeX">
\begin{center}
\includegraphics[width=0.35\textwidth]{images/dclass1.png}
\end{center}
</Alt>
<Alt Only="HTML"> 60;br62;60;center62;60;img src=pan style='color: green'>34;images/dclass1.png34;tyle='color: green'>62;60;/center62;60;br62;
</Alt>
This is the image produced by the fourth command in the previous example:
<Alt Only="LaTeX">
\begin{center}
\includegraphics[width=0.5\textwidth]{images/dclass2.png}
\end{center}
</Alt>
<Alt Only="HTML"> 60;br62;60;center62;60;img src=pan style='color: green'>34;images/dclass2.png34;tyle='color: green'>62;60;/center62;60;br62;
</Alt>
This is the image produced by the last command in the previous example:
<Alt Only="LaTeX">
\begin{center}
\includegraphics[width=0.5\textwidth]{images/dclass3.png}
\end{center}
</Alt>
<Alt Only="HTML"> 60;br62;60;center62;60;img src=pan style='color: green'>34;images/dclass3.png34;tyle='color: green'>62;60;/center62;60;br62;
</Alt>
<ManSection>
<Func Arg="arg" Name="DotForDrawingDClassOfElement" />
<Description>
This function computes the dot code that can be used to produce a drawing for the D-class of an element of a semigroup. This can be done by using the function <Ref Func="DrawDClassOfElement" /> (if the system is properly configured) or by the user in some independent way. The arguments and options are the same than those of <Ref Func="DrawDClassOfElement" />.
</Description>
</ManSection>
<Example><![CDATA[
gap> DotForDrawingDClassOfElement(poi3,Transformation([1,4,3,4])); "digraph DClassOfElement {\ngraph [center=yes,ordering=out];\nnode [shape=pla\
intext];\nedge [color=cornflowerblue,arrowhead=none];\n1 [label=<\n<TABLE BORD\
ER=\"0\" CELLBORDER=\"0\" CELLPADDING=\"0\" CELLSPACING=\"0\" PORT=\"1\">\n<TR\
><TD BORDER=\"0\"><TABLE CELLSPACING=\"0\"><TR><TD BGCOLOR=\"white\" BORDER=\"\ 0\">*abc</TD></TR>\n</TABLE></TD><TD BORDER=\"0\"><TABLE CELLSPACING=\"0\"><TR\
><TD BGCOLOR=\"white\" BORDER=\"0\">a</TD></TR>\n</TABLE></TD><TD BORDER=\"0\"\
><TABLE CELLSPACING=\"0\"><TR><TD BGCOLOR=\"white\" BORDER=\"0\">ab</TD></TR>\
\n</TABLE></TD></TR>\n<TR><TD BORDER=\"0\"><TABLE CELLSPACING=\"0\"><TR><TD BG\
COLOR=\"white\" BORDER=\"0\">bc</TD></TR>\n</TABLE></TD><TD BORDER=\"0\"><TABL\
E CELLSPACING=\"0\"><TR><TD BGCOLOR=\"white\" BORDER=\"0\">*bca</TD></TR>\n</T\
ABLE></TD><TD BORDER=\"0\"><TABLE CELLSPACING=\"0\"><TR><TD BGCOLOR=\"white\" \
BORDER=\"0\">b</TD></TR>\n</TABLE></TD></TR>\n<TR><TD BORDER=\"0\"><TABLE CELL\
SPACING=\"0\"><TR><TD BGCOLOR=\"white\" BORDER=\"0\">c</TD></TR>\n</TABLE></TD\
><TD BORDER=\"0\"><TABLE CELLSPACING=\"0\"><TR><TD BGCOLOR=\"white\" BORDER=\"\ 0\">ca</TD></TR>\n</TABLE></TD><TD BORDER=\"0\"><TABLE CELLSPACING=\"0\"><TR><\
TD BGCOLOR=\"white\" BORDER=\"0\">*cab</TD></TR>\n</TABLE></TD></TR>\n</TABLE>\
>];\n}\n"
]]></Example>
By using Print (or PrinTo, if one wants to print to a file) the string is displayed as follows:
<Example><![CDATA[
gap> Print(last);
digraph DClassOfElement {
graph [center=yes,ordering=out];
node [shape=plaintext];
edge [color=cornflowerblue,arrowhead=none]; 1 [label=<
<TABLE BORDER="0" CELLBORDER="0" CELLPADDING="0" CELLSPACING="0" PORT="1">
<TR><TD BORDER="0"><TABLE CELLSPACING="0"><TR><TD BGCOLOR="white" BORDER="0">*\
abc</TD></TR>
</TABLE></TD><TD BORDER="0"><TABLE CELLSPACING="0"><TR><TD BGCOLOR="white" BOR\
DER="0">a</TD></TR>
</TABLE></TD><TD BORDER="0"><TABLE CELLSPACING="0"><TR><TD BGCOLOR="white" BOR\
DER="0">ab</TD></TR>
</TABLE></TD></TR>
<TR><TD BORDER="0"><TABLE CELLSPACING="0"><TR><TD BGCOLOR="white" BORDER="0">b\
c</TD></TR>
</TABLE></TD><TD BORDER="0"><TABLE CELLSPACING="0"><TR><TD BGCOLOR="white" BOR\
DER="0">*bca</TD></TR>
</TABLE></TD><TD BORDER="0"><TABLE CELLSPACING="0"><TR><TD BGCOLOR="white" BOR\
DER="0">b</TD></TR>
</TABLE></TD></TR>
<TR><TD BORDER="0"><TABLE CELLSPACING="0"><TR><TD BGCOLOR="white" BORDER="0">c\
</TD></TR>
</TABLE></TD><TD BORDER="0"><TABLE CELLSPACING="0"><TR><TD BGCOLOR="white" BOR\
DER="0">ca</TD></TR>
</TABLE></TD><TD BORDER="0"><TABLE CELLSPACING="0"><TR><TD BGCOLOR="white" BOR\
DER="0">*cab</TD></TR>
</TABLE></TD></TR>
</TABLE>>];
}
]]></Example>
</Section>
<Section>
<Heading>
Drawing the D-classes of a semigroup
</Heading>
<ManSection>
<Func Arg="arg" Name="DrawDClasses" />
<Description>
This function is similar to the previous one, except that this one draws all the D-classes of the semigroup given as the first argument. It then takes optionally n lists of elements and the elements of each list will be drawn in different colours. It also accepts, as an optional argument, the integer <C>1</C>, to specify whether the elements will appear as words or as transformations as in the previous function. The idempotents will be marked with a * before them.
<P/>
The dot code is computed by <Ref Func="DotForDrawingDClasses"/>.
<P/>
This last optional argument may also be the integer <C>2</C> and in this case
the elements will appear as integers, where <C>i</C> represents the element <C>Elements(S)[i]</C>.
</Description>
</ManSection>
<Example><![CDATA[
gap> DrawDClasses(poi3);
gap> DrawDClasses(poi3, [Transformation( [ 2, 3, 4, 4 ] ),
Transformation( [ 2, 4, 3, 4 ] )],
[Transformation( [ 2, 4, 3, 4 ] )],1);
]]></Example>
This is the image produced by the first command in the previous example:
<Alt Only="LaTeX">
\begin{center}
\includegraphics[width=0.4\textwidth]{images/dclasses1.png}
\end{center}
</Alt>
<Alt Only="HTML"> 60;br62;60;center62;60;img src=pan style='color: green'>34;images/dclasses1.png34; style='color: green'>62;60;/center62;60;br62;
</Alt>
This is the image produced by the second command in the previous example:
<Alt Only="LaTeX">
\begin{center}
\includegraphics[width=0.4\textwidth]{images/dclasses2.png}
\end{center}
</Alt>
<Alt Only="HTML"> 60;br62;60;center62;60;img src=pan style='color: green'>34;images/dclasses2.png34; style='color: green'>62;60;/center62;60;br62;
</Alt>
<ManSection>
<Func Arg="arg" Name="DotForDrawingDClasses" />
<Description>
This function computes the dot code that can be used to produce a drawing for the D-class of an element of a semigroup. This can be done by using the function <Ref Func="DrawDClasses" /> (if the system is properly configured) or by the user in some independent way. The arguments and options are the same than those of <Ref Func="DrawDClasses" />.
</Description>
</ManSection>
<Example><![CDATA[
gap> Print(DotForDrawingDClasses(poi3));
digraph DClasses {
graph [center=yes,ordering=out];
node [shape=plaintext];
edge [color=cornflowerblue,arrowhead=none];
## ... many more lines ...
</TABLE></TD></TR>
</TABLE>>]; 4:4 -> 3:3; 3:3 -> 2:2; 2:2 -> 1:1;
}
]]></Example>
</Section>
<Section>
<Heading>Cayley graphs</Heading>
<ManSection>
<Func Arg="S" Name="DrawRightCayleyGraph" />
<Description>Draws the right Cayley graph of a finite monoid or semigroup <Arg>S</Arg>.
</Description>
</ManSection>
<ManSection>
<Func Arg="S" Name="DrawCayleyGraph" />
<Description>This function is a synonym of
<Ref Func="DrawRightCayleyGraph" />.
</Description>
</ManSection>
For example, the command <C>DrawCayleyGraph(b21);</C> would produce the following image
(where state <C>i</C> represents the element <C>Elements(S)[i]</C>, the neutral element is
coloured in "light blue" and all other idempotents are coloured in "light coral"):
<Alt Only="LaTeX">
\begin{center}
\includegraphics[width=0.4\textwidth]{images/cgb21.png}
\end{center}
</Alt>
<Alt Only="HTML"> 60;br62;60;center62;60;img src=pan style='color: green'>34;images/cgb21.png34;le='color: green'>62;60;/center62;60;br62;
</Alt>
<ManSection>
<Func Arg="S" Name="DotForDrawingRightCayleyGraph" />
<Description>This function computes the dot code that is used by the previous function and can also be used by the reader in some independent way.
</Description>
</ManSection>
<ManSection>
<Func Arg="S" Name="DrawSchutzenbergerGraphs" />
<Description>Draws the Schützenberger graphs of the inverse
semigroup <Arg>S</Arg>.</Description>
</ManSection>
For example, <Code>DrawSchutzenbergerGraphs(poi3);</Code> would produce
the following:
<P />
<Alt Only="LaTeX">
\begin{center}
\includegraphics[width=0.45\textwidth]{images/schutzenberger.pdf}
\end{center}
</Alt>
<Alt Only="HTML"> 60;br62;60;center62;60;img src=pan style='color: green'>34;images/schutzenberger.png34;62;60;/center62;60;br62;
</Alt>
<ManSection>
<Func Arg="arg" Name="DotForDrawingSchutzenbergerGraphs" />
<Description>
This function computes the dot code that can be used to produce a drawing for the Schutzenberger Graphs of an inverse semigroup. This can be done by using the function <Ref Func="DrawSchutzenbergerGraphs" /> (if the system is properly configured) or by the user in some independent way. The argument is an inverse semigroup.
</Description>
</ManSection>
<Example><![CDATA[
gap> DotForDrawingSchutzenbergerGraphs(poi3); "digraph SchutzenbergerGraphs{\ncompound=true;\nsubgraph cluster4{\n1 [shape=\
circle];\n}\nsubgraph cluster3{\n2 -> 4 [label=\"a\",color=red];\n3 -> 2 [labe\
l=\"c\",color=green];\n4 -> 3 [label=\"b\",color=blue];\n2 [shape=circle];\n3 \
[shape=circle];\n4 [shape=circle];\n}\nsubgraph cluster2{\n5 -> 5 [label=\"b\"\
,color=blue];\n5 -> 6 [label=\"c\",color=green];\n6 -> 5 [label=\"a\",color=re\
d];\n6 -> 7 [label=\"c\",color=green];\n7 -> 7 [label=\"a\",color=red];\n7 -> \ 6 [label=\"b\",color=blue];\n5 [shape=circle];\n6 [shape=circle];\n7 [shape=ci\
rcle];\n}\nsubgraph cluster1{\n8 -> 8 [label=\"a\",color=red];\n8 -> 8 [label=\
\"b\",color=blue];\n8 -> 8 [label=\"c\",color=green];\n8 [shape=circle];\n}\n1\
-> 2 [lhead=cluster3,ltail=cluster4,color=cornflowerblue];\n2 -> 5 [lhead=clu\
ster2,ltail=cluster3,color=cornflowerblue];\n5 -> 8 [lhead=cluster1,ltail=clus\
ter2,color=cornflowerblue];\n}\n"
]]></Example>
By using Print (or PrinTo, if one wants to print to a file) the string is displayed as follows:
<Example><![CDATA[
gap> Print(last);
digraph SchutzenbergerGraphs{
compound=true;
subgraph cluster4{ 1 [shape=circle];
}
subgraph cluster3{ 2 -> 4 [label="a",color=red]; 3 -> 2 [label="c",color=green]; 4 -> 3 [label="b",color=blue]; 2 [shape=circle]; 3 [shape=circle]; 4 [shape=circle];
}
subgraph cluster2{ 5 -> 5 [label="b",color=blue]; 5 -> 6 [label="c",color=green]; 6 -> 5 [label="a",color=red]; 6 -> 7 [label="c",color=green]; 7 -> 7 [label="a",color=red]; 7 -> 6 [label="b",color=blue]; 5 [shape=circle]; 6 [shape=circle]; 7 [shape=circle];
}
subgraph cluster1{ 8 -> 8 [label="a",color=red]; 8 -> 8 [label="b",color=blue]; 8 -> 8 [label="c",color=green]; 8 [shape=circle];
} 1 -> 2 [lhead=cluster3,ltail=cluster4,color=cornflowerblue]; 2 -> 5 [lhead=cluster2,ltail=cluster3,color=cornflowerblue]; 5 -> 8 [lhead=cluster1,ltail=cluster2,color=cornflowerblue];
}
]]></Example>
</Section>
</Chapter>
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.16 Sekunden
(vorverarbeitet am 2026-06-29)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.