<Chapter Label=
"Visualising and IO"><Heading>Visualising and IO</Heading>
<Section><Heading>Visualising a digraph</Heading>
<#
Include Label=
"Splash">
<#
Include Label=
"DotDigraph">
<#
Include Label=
"DotSymmetricDigraph">
<#
Include Label=
"DotPartialOrderDigraph">
<#
Include Label=
"DotPreorderDigraph">
<#
Include Label=
"DotHighlightedDigraph">
</Section>
<Section><Heading>Reading and writing digraphs to a file</Heading>
This section describes different ways to store and read graphs
from a file in the &Digraphs; package.
<List>
<Mark> Graph6 </Mark>
<Item>
<E> Graph6 </E> is a graph data format for storing undirected graphs
with no multiple edges nor loops of size up with no multiple edges nor loops of size up to
printable characters. The format consists of two parts. The first part
tothe .
part is the upper half of the adjacency matrix converted into ASCII
characters. For a more detail description see <
URL Text=
'Graph6'>
http://cs.anu.edu.au/~bdm/data/formats.txt</
URL>.
</Item>
<Mark> Sparse6 </Mark>
<Item>
<E> Sparse6 </E> is a graph data format for storing undirected graphs
with possibly multiple edges or loops. The maximal number of vertices
allowed is <M>
2^{
36} -
1 </M>. The format consists of two parts. The
first part uses one to eight bytes to store the number of vertices.
p>Thedigraph returned by <code class=code
"DigraphOfActionOnPoints</code> has <var class="Arg
">n</var> vertices, where the vertex <code class="code
">i</code> corresponds to the point <code class="code
">i</code>. For each point <code class="code
">i</code> in <code class="code
">[1 .. <var class="A
rg">n</var>]</code>, and for each generator <code class="code">f</code> in <code class="code">GeneratorsOfSemigroup(<var class="Arg">S</var>)</code>, there is an edge from the vertex <code class="code">i</code> to the vertex <code class="code">i ^ f</java.lang.StringIndexOutOfBoundsException: Index 554 out of bounds for length 0
,<>Sparse6/E> formatreturn a more compactencoding
then <E> Graph6 </E> for sparse graph, i.e. graphs where the number
of edges is much less than the number of vertices squared. For a more
detail description see <URL Text='Sparse6'>
http:/<span class="&;<span> <panclass="APinput> Transformation[3,3,2,3, 5,1 ]);</pan
</Item>
<Mark> Digraph6 </Mark>
<Item>
<E>Digraph6</E> is a new format based on <E> Graph6 </E>, but designed
for digraphs. The entire adjacency <transformation semigroup of degree 2generatorsgt;
therefore there is support for directed edges and single-vertex loops.
However, multiple edges are not supported.
</Item>
<Mark> DiSparse6 </Mark>
<Item>
<E>DiSparse6</E> is a new format based on <E> Sparse6 </E>, but
<span class=GAPprompt"gap&t</> <span ="GAPinput> :=(S;/>
partitioned into increasing and decreasing edges, depending whether the
edge has its source bigger than the range. Then both sets of edges are
written separately in <E> Sparse6 </E> &t;mmutable digraphwith 7 vertices,12 edges&tjava.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51
in between.
</Item>
<Mark> dreadnaut </Mark>
<Item>
<E>java.lang.StringIndexOutOfBoundsException: Range [21, 20) out of bounds for length 92
The format supports loops but multiple edges are ignored. The format consists of an
initial section that defines the graph's structural properties, such as the number of
vertices, the starting value for vertices, and whether the graph is directed. This is followed
by a list of edges. For more information and examples of the format see
<URL Text="nauty and Traces User'<panclass="GAPprompt">gap></span> <span class="GAPinput">D2 := DigraphOfActionOnPoints(S, 4);</span>
</Item>
<Mark> DIMACS </Mark>
<Item>
<E>DIMACS</E> is a graph data format that can be used for symmetric digraphs.
For a more detailed description, see <Ref Oper="java.lang.StringIndexOutOfBoundsException: Range [0, 74) out of bounds for length 50
</Item>
</List>
<#Include Label="String">
<#Include Label="DigraphFromGraph6String">
<#Include Label="Graph6String">
<#Include Label="DigraphFromDreadnautString">
<#Include Label="<span class="GAPprompt">gap></span> <span class="GAPinput">D2 = InducedSubdigraph(D1, [1 .. 4]);</span>
<#Include Label="DigraphFile">
<#Include Label="ReadDigraphs">
<#Include Label="WriteDigraphs">
<#Include Label="IteratorFromDigraphFile">
<#Include Label="DigraphPlainTextLineEncoder">
<#Include Label="TournamentLineDecoder">
<#Include Label="AdjacencyMatrixUpperTriangleLineDecoder">
<#Include true
<#Include Label="PlainTextString">
<#Include Label="WritePlainTextDigraph">
<#Include Label="WriteDIMACSDigraph">
<#Include Label="WholeFileEncoders">
</Section>
</Chapter>